@coreui/angular-pro 4.7.3 → 5.0.0-alpha.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 (301) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +3 -3
  2. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
  3. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
  4. package/esm2022/lib/accordion/accordion.module.mjs +4 -4
  5. package/esm2022/lib/accordion/accordion.service.mjs +3 -3
  6. package/esm2022/lib/alert/alert-heading.directive.mjs +3 -3
  7. package/esm2022/lib/alert/alert-link.directive.mjs +3 -3
  8. package/esm2022/lib/alert/alert.component.mjs +3 -3
  9. package/esm2022/lib/alert/alert.module.mjs +4 -4
  10. package/esm2022/lib/avatar/avatar.component.mjs +10 -7
  11. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  12. package/esm2022/lib/backdrop/backdrop.service.mjs +3 -3
  13. package/esm2022/lib/badge/badge.component.mjs +10 -6
  14. package/esm2022/lib/badge/badge.module.mjs +4 -4
  15. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +3 -3
  17. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  18. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +9 -9
  19. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  20. package/esm2022/lib/button/button-close.directive.mjs +11 -5
  21. package/esm2022/lib/button/button.directive.mjs +3 -3
  22. package/esm2022/lib/button/button.module.mjs +4 -4
  23. package/esm2022/lib/button-group/button-group/button-group.component.mjs +3 -3
  24. package/esm2022/lib/button-group/button-group.module.mjs +4 -4
  25. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
  26. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +3 -3
  27. package/esm2022/lib/calendar/calendar/calendar.component.mjs +150 -71
  28. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +5 -4
  29. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +5 -5
  30. package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +26 -0
  31. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +3 -3
  32. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +3 -3
  33. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +102 -59
  34. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +3 -3
  35. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +255 -92
  36. package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +117 -0
  37. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +3 -3
  38. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +28 -24
  39. package/esm2022/lib/calendar/calendar.module.mjs +10 -7
  40. package/esm2022/lib/calendar/calendar.service.mjs +8 -5
  41. package/esm2022/lib/calendar/calendar.utils.mjs +100 -17
  42. package/esm2022/lib/callout/callout.component.mjs +3 -3
  43. package/esm2022/lib/callout/callout.module.mjs +4 -4
  44. package/esm2022/lib/card/card-body.component.mjs +3 -3
  45. package/esm2022/lib/card/card-footer.component.mjs +3 -3
  46. package/esm2022/lib/card/card-group.component.mjs +3 -3
  47. package/esm2022/lib/card/card-header-actions.component.mjs +3 -3
  48. package/esm2022/lib/card/card-header.component.mjs +3 -3
  49. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
  50. package/esm2022/lib/card/card-img.directive.mjs +3 -3
  51. package/esm2022/lib/card/card-link.directive.mjs +3 -3
  52. package/esm2022/lib/card/card-subtitle.directive.mjs +3 -3
  53. package/esm2022/lib/card/card-text.directive.mjs +3 -3
  54. package/esm2022/lib/card/card-title.directive.mjs +3 -3
  55. package/esm2022/lib/card/card.component.mjs +12 -8
  56. package/esm2022/lib/card/card.module.mjs +4 -4
  57. package/esm2022/lib/carousel/carousel/carousel.component.mjs +37 -36
  58. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
  59. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +3 -3
  60. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  61. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +3 -3
  62. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +3 -3
  63. package/esm2022/lib/carousel/carousel-state.mjs +3 -3
  64. package/esm2022/lib/carousel/carousel.config.mjs +3 -3
  65. package/esm2022/lib/carousel/carousel.module.mjs +4 -4
  66. package/esm2022/lib/carousel/carousel.service.mjs +3 -3
  67. package/esm2022/lib/collapse/collapse.directive.mjs +3 -3
  68. package/esm2022/lib/collapse/collapse.module.mjs +4 -4
  69. package/esm2022/lib/coreui.types.mjs +1 -1
  70. package/esm2022/lib/date-picker/date-picker.component.mjs +8 -12
  71. package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
  72. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +3 -3
  73. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +168 -163
  74. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  75. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +10 -23
  76. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +3 -3
  77. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
  78. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
  79. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
  80. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +13 -5
  81. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +77 -41
  82. package/esm2022/lib/dropdown/dropdown.module.mjs +4 -4
  83. package/esm2022/lib/dropdown/dropdown.service.mjs +5 -5
  84. package/esm2022/lib/element-cover/element-cover.component.mjs +3 -3
  85. package/esm2022/lib/element-cover/element-cover.module.mjs +4 -4
  86. package/esm2022/lib/footer/footer.component.mjs +3 -3
  87. package/esm2022/lib/footer/footer.module.mjs +4 -4
  88. package/esm2022/lib/form/form/form.directive.mjs +3 -3
  89. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +3 -3
  90. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +3 -3
  91. package/esm2022/lib/form/form-check/form-check.component.mjs +3 -3
  92. package/esm2022/lib/form/form-control/form-control.directive.mjs +3 -3
  93. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +3 -3
  94. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +3 -3
  95. package/esm2022/lib/form/form-label/form-label.directive.mjs +3 -3
  96. package/esm2022/lib/form/form-select/form-select.directive.mjs +3 -3
  97. package/esm2022/lib/form/form-text/form-text.directive.mjs +3 -3
  98. package/esm2022/lib/form/form.module.mjs +4 -4
  99. package/esm2022/lib/form/input-group/input-group.component.mjs +3 -3
  100. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
  101. package/esm2022/lib/grid/col.component.mjs +3 -3
  102. package/esm2022/lib/grid/col.directive.mjs +3 -3
  103. package/esm2022/lib/grid/container.component.mjs +3 -3
  104. package/esm2022/lib/grid/grid.module.mjs +4 -4
  105. package/esm2022/lib/grid/gutter.directive.mjs +3 -3
  106. package/esm2022/lib/grid/row.component.mjs +3 -3
  107. package/esm2022/lib/grid/row.directive.mjs +3 -3
  108. package/esm2022/lib/header/header/header.component.mjs +3 -3
  109. package/esm2022/lib/header/header-brand/header-brand.component.mjs +3 -3
  110. package/esm2022/lib/header/header-divider/header-divider.component.mjs +3 -3
  111. package/esm2022/lib/header/header-nav/header-nav.component.mjs +3 -3
  112. package/esm2022/lib/header/header-text/header-text.component.mjs +3 -3
  113. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +3 -3
  114. package/esm2022/lib/header/header.module.mjs +4 -4
  115. package/esm2022/lib/image/img.directive.mjs +3 -3
  116. package/esm2022/lib/image/img.module.mjs +4 -4
  117. package/esm2022/lib/list-group/list-group-item.directive.mjs +3 -3
  118. package/esm2022/lib/list-group/list-group.directive.mjs +3 -3
  119. package/esm2022/lib/list-group/list-group.module.mjs +4 -4
  120. package/esm2022/lib/loading-button/loading-button.component.mjs +3 -3
  121. package/esm2022/lib/loading-button/loading-button.module.mjs +4 -4
  122. package/esm2022/lib/modal/modal/modal.component.mjs +4 -4
  123. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +3 -3
  124. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +3 -3
  125. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
  126. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
  127. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
  128. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +3 -3
  129. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +3 -3
  130. package/esm2022/lib/modal/modal.module.mjs +4 -4
  131. package/esm2022/lib/modal/modal.service.mjs +3 -3
  132. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +3 -3
  133. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +111 -85
  134. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +3 -3
  135. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
  136. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +3 -3
  137. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +3 -3
  138. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +5 -5
  139. package/esm2022/lib/multi-select/multi-select.module.mjs +4 -4
  140. package/esm2022/lib/multi-select/multi-select.service.mjs +3 -3
  141. package/esm2022/lib/multi-select/multi-select.type.mjs +1 -1
  142. package/esm2022/lib/nav/nav-item.component.mjs +3 -3
  143. package/esm2022/lib/nav/nav-link.directive.mjs +3 -3
  144. package/esm2022/lib/nav/nav.component.mjs +5 -5
  145. package/esm2022/lib/nav/nav.module.mjs +4 -4
  146. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
  147. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
  148. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
  149. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +3 -3
  150. package/esm2022/lib/navbar/navbar.component.mjs +9 -13
  151. package/esm2022/lib/navbar/navbar.module.mjs +4 -4
  152. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +10 -6
  153. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
  154. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
  155. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
  156. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
  157. package/esm2022/lib/offcanvas/offcanvas.module.mjs +4 -4
  158. package/esm2022/lib/offcanvas/offcanvas.service.mjs +3 -3
  159. package/esm2022/lib/pagination/page-item/page-item.component.mjs +3 -3
  160. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +3 -3
  161. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +3 -3
  162. package/esm2022/lib/pagination/pagination/pagination.component.mjs +3 -3
  163. package/esm2022/lib/pagination/pagination.module.mjs +4 -4
  164. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +3 -3
  165. package/esm2022/lib/placeholder/placeholder.directive.mjs +3 -3
  166. package/esm2022/lib/placeholder/placeholder.module.mjs +4 -4
  167. package/esm2022/lib/popover/popover/popover.component.mjs +3 -3
  168. package/esm2022/lib/popover/popover.directive.mjs +5 -5
  169. package/esm2022/lib/popover/popover.module.mjs +4 -4
  170. package/esm2022/lib/progress/progress-bar.component.mjs +3 -3
  171. package/esm2022/lib/progress/progress.component.mjs +3 -3
  172. package/esm2022/lib/progress/progress.module.mjs +4 -4
  173. package/esm2022/lib/services/class-toggle.service.mjs +3 -3
  174. package/esm2022/lib/services/intersection.service.mjs +3 -3
  175. package/esm2022/lib/services/listeners.service.mjs +3 -3
  176. package/esm2022/lib/shared/html-attr.directive.mjs +3 -3
  177. package/esm2022/lib/shared/public_api.mjs +2 -1
  178. package/esm2022/lib/shared/shared.module.mjs +8 -15
  179. package/esm2022/lib/shared/template-id.directive.mjs +3 -3
  180. package/esm2022/lib/shared/theme.directive.mjs +44 -0
  181. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +6 -5
  182. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +3 -3
  183. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  184. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  185. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  186. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
  187. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
  188. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
  189. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
  190. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +3 -3
  191. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  192. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +8 -8
  193. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
  194. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +3 -3
  195. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +23 -19
  196. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  197. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
  198. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +13 -4
  199. package/esm2022/lib/sidebar/sidebar.module.mjs +4 -4
  200. package/esm2022/lib/sidebar/sidebar.service.mjs +3 -3
  201. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +3 -3
  202. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +4 -4
  203. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +90 -125
  204. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +3 -3
  205. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +3 -3
  206. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +3 -3
  207. package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +6 -14
  208. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +48 -37
  209. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -3
  210. package/esm2022/lib/smart-table/smart-table.module.mjs +4 -4
  211. package/esm2022/lib/smart-table/smart-table.type.mjs +1 -1
  212. package/esm2022/lib/smart-table/smart-table.utils.mjs +181 -0
  213. package/esm2022/lib/spinner/spinner.component.mjs +3 -3
  214. package/esm2022/lib/spinner/spinner.module.mjs +4 -4
  215. package/esm2022/lib/table/table-active.directive.mjs +3 -3
  216. package/esm2022/lib/table/table-color.directive.mjs +3 -3
  217. package/esm2022/lib/table/table.directive.mjs +3 -3
  218. package/esm2022/lib/table/table.module.mjs +4 -4
  219. package/esm2022/lib/table/table.type.mjs +1 -1
  220. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +3 -3
  221. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +3 -3
  222. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +5 -7
  223. package/esm2022/lib/tabs/tab.service.mjs +3 -3
  224. package/esm2022/lib/tabs/tabs.module.mjs +4 -4
  225. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +16 -10
  226. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +22 -15
  227. package/esm2022/lib/time-picker/time-picker.component.mjs +89 -115
  228. package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
  229. package/esm2022/lib/toast/toast/toast.component.mjs +3 -3
  230. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +3 -3
  231. package/esm2022/lib/toast/toast-close.directive.mjs +3 -3
  232. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +3 -3
  233. package/esm2022/lib/toast/toast.module.mjs +4 -4
  234. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +3 -3
  235. package/esm2022/lib/toast/toaster/toaster.component.mjs +3 -3
  236. package/esm2022/lib/toast/toaster/toaster.service.mjs +3 -3
  237. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +3 -3
  238. package/esm2022/lib/tooltip/tooltip.directive.mjs +5 -5
  239. package/esm2022/lib/tooltip/tooltip.module.mjs +4 -4
  240. package/esm2022/lib/utilities/align.directive.mjs +3 -3
  241. package/esm2022/lib/utilities/bg-color.directive.mjs +3 -3
  242. package/esm2022/lib/utilities/border.directive.mjs +3 -3
  243. package/esm2022/lib/utilities/rounded.directive.mjs +3 -3
  244. package/esm2022/lib/utilities/text-color.directive.mjs +3 -3
  245. package/esm2022/lib/utilities/utilities.module.mjs +4 -4
  246. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +5 -5
  247. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +6 -6
  248. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +17 -19
  249. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +5 -5
  250. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +5 -5
  251. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +5 -5
  252. package/esm2022/lib/widget/widget.module.mjs +4 -4
  253. package/fesm2022/coreui-angular-pro.mjs +2904 -2167
  254. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  255. package/lib/avatar/avatar.component.d.ts +4 -3
  256. package/lib/badge/badge.component.d.ts +5 -3
  257. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +1 -1
  258. package/lib/button/button-close.directive.d.ts +3 -1
  259. package/lib/calendar/calendar/calendar.component.d.ts +46 -19
  260. package/lib/calendar/calendar-month/calendar-class-row.pipe.d.ts +23 -0
  261. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +16 -26
  262. package/lib/calendar/calendar-month/calendar-month.component.d.ts +45 -27
  263. package/lib/calendar/calendar-month/calendar-row.directive.d.ts +44 -0
  264. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +7 -6
  265. package/lib/calendar/calendar.module.d.ts +2 -1
  266. package/lib/calendar/calendar.service.d.ts +5 -1
  267. package/lib/calendar/calendar.utils.d.ts +25 -6
  268. package/lib/card/card.component.d.ts +3 -1
  269. package/lib/carousel/carousel/carousel.component.d.ts +10 -14
  270. package/lib/coreui.types.d.ts +4 -1
  271. package/lib/date-picker/date-picker.component.d.ts +2 -2
  272. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +75 -41
  273. package/lib/dropdown/dropdown/dropdown.component.d.ts +2 -9
  274. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +5 -1
  275. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +13 -16
  276. package/lib/dropdown/dropdown.service.d.ts +0 -1
  277. package/lib/multi-select/multi-select/multi-select.component.d.ts +14 -16
  278. package/lib/multi-select/multi-select.type.d.ts +1 -1
  279. package/lib/nav/nav.component.d.ts +2 -2
  280. package/lib/navbar/navbar.component.d.ts +2 -5
  281. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +2 -1
  282. package/lib/shared/public_api.d.ts +1 -0
  283. package/lib/shared/shared.module.d.ts +2 -1
  284. package/lib/shared/theme.directive.d.ts +19 -0
  285. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +5 -2
  286. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +1 -0
  287. package/lib/smart-table/smart-table/smart-table.component.d.ts +36 -51
  288. package/lib/smart-table/smart-table-head/smart-table-column-label.pipe.d.ts +0 -1
  289. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +21 -11
  290. package/lib/smart-table/smart-table.type.d.ts +49 -34
  291. package/lib/smart-table/smart-table.utils.d.ts +29 -0
  292. package/lib/table/table.type.d.ts +5 -6
  293. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +2 -1
  294. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +3 -2
  295. package/lib/time-picker/time-picker.component.d.ts +17 -28
  296. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
  297. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +3 -3
  298. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +15 -13
  299. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
  300. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
  301. package/package.json +3 -2
@@ -1,13 +1,59 @@
1
+ export const convertIsoWeekToDate = (isoWeek) => {
2
+ const [year, week] = isoWeek.split(/w/i);
3
+ // Get date for 4th of January for year
4
+ const date = new Date(Number(year), 0, 4);
5
+ // Get previous Monday, add 7 days for each week after first
6
+ date.setDate(date.getDate() - (date.getDay() || 7) + 1 + (Number(week) - 1) * 7);
7
+ return date;
8
+ };
9
+ export const convertToDateObject = (date, selectionType) => {
10
+ if (date instanceof Date) {
11
+ return date;
12
+ }
13
+ if (selectionType === 'week') {
14
+ return convertIsoWeekToDate(date);
15
+ }
16
+ return new Date(Date.parse(date));
17
+ };
1
18
  export const convertToLocalDate = (d, locale, options = {}) => d.toLocaleDateString(locale, options);
2
19
  export const convertToLocalTime = (d, locale, options = {}) => d.toLocaleTimeString(locale, options);
3
20
  export const createGroupsInArray = (arr, numberOfGroups) => {
4
21
  const perGroup = Math.ceil(arr.length / numberOfGroups);
5
- return new Array(numberOfGroups)
22
+ return Array.from({ length: numberOfGroups })
6
23
  .fill('')
7
24
  .map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
8
25
  };
26
+ export const getCalendarDate = (calendarDate, order, view) => {
27
+ if (order !== 0 && view === 'days') {
28
+ return new Date(Date.UTC(calendarDate.getFullYear(), calendarDate.getMonth() + order, 1));
29
+ }
30
+ if (order !== 0 && view === 'months') {
31
+ return new Date(Date.UTC(calendarDate.getFullYear() + order, calendarDate.getMonth(), 1));
32
+ }
33
+ if (order !== 0 && view === 'years') {
34
+ return new Date(Date.UTC(calendarDate.getFullYear() + (12 * order), calendarDate.getMonth(), 1));
35
+ }
36
+ return calendarDate;
37
+ };
9
38
  export const getCurrentYear = () => new Date().getFullYear();
10
39
  export const getCurrentMonth = () => new Date().getMonth();
40
+ export const getDateBySelectionType = (date, selectionType) => {
41
+ if (date === null) {
42
+ return null;
43
+ }
44
+ if (selectionType === 'week') {
45
+ return `${date.getFullYear()}W${getWeekNumber(date)}`;
46
+ }
47
+ if (selectionType === 'month') {
48
+ const monthNumber = `0${date.getMonth() + 1}`.slice(-2);
49
+ return `${date.getFullYear()}-${monthNumber}`;
50
+ }
51
+ if (selectionType === 'year') {
52
+ return `${date.getFullYear()}`;
53
+ }
54
+ return date;
55
+ };
56
+ //
11
57
  export const getLocalDateFromString = (string, locale, time) => {
12
58
  const date = new Date(2013, 11, 31, 17, 19, 22);
13
59
  let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
@@ -37,13 +83,13 @@ export const getMonthName = (month, locale) => {
37
83
  d.setMonth(month);
38
84
  return d.toLocaleString(locale, { month: 'long' });
39
85
  };
40
- export const getMonthsNames = (locale) => {
86
+ export const getMonthsNames = (locale, year) => {
41
87
  const months = [];
42
- const d = new Date();
88
+ const d = new Date(year);
43
89
  d.setDate(1);
44
90
  for (let i = 0; i < 12; i++) {
45
91
  d.setMonth(i);
46
- months.push(d.toLocaleDateString(locale, { month: 'short' }));
92
+ months.push({ year, month: d.toLocaleDateString(locale, { month: 'short' }) });
47
93
  }
48
94
  return months;
49
95
  };
@@ -93,6 +139,11 @@ const getTrailingDays = (year, month, leadingDays, monthDays) => {
93
139
  }
94
140
  return dates;
95
141
  };
142
+ export const getDayNumber = (date) => Math.ceil((Number(date) - Number(new Date(date.getFullYear(), 0, 0))) / 1000 / 60 / 60 / 24);
143
+ export const getWeekNumber = (date) => {
144
+ const week1 = new Date(date.getFullYear(), 0, 4);
145
+ return (1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + ((week1.getDay() + 6) % 7)) / 7));
146
+ };
96
147
  export const getMonthDetails = (year, month, firstDayOfWeek) => {
97
148
  const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
98
149
  const daysThisMonth = getMonthDays(year, month);
@@ -101,11 +152,14 @@ export const getMonthDetails = (year, month, firstDayOfWeek) => {
101
152
  const weeks = [];
102
153
  days.forEach((day, index) => {
103
154
  if (index % 7 === 0 || weeks.length === 0) {
104
- weeks.push([]);
155
+ weeks.push({ weekNumber: -1, days: [] });
105
156
  }
106
- weeks[weeks.length - 1].push(day);
157
+ if ((index + 1) % 7 === 0) {
158
+ weeks[weeks.length - 1].weekNumber = getWeekNumber(day.date);
159
+ }
160
+ weeks[weeks.length - 1].days.push(day);
107
161
  });
108
- return weeks;
162
+ return [...weeks];
109
163
  };
110
164
  export const isDateDisabled = (date, min, max, dates) => {
111
165
  if (!date) {
@@ -114,35 +168,58 @@ export const isDateDisabled = (date, min, max, dates) => {
114
168
  if (!min && !max && (!dates || !dates.length)) {
115
169
  return false;
116
170
  }
117
- let disabled;
171
+ if (min && date < min) {
172
+ return true;
173
+ }
174
+ if (max && date > max) {
175
+ return true;
176
+ }
177
+ let disabled = false;
118
178
  if (dates) {
119
- dates.forEach((_date) => {
179
+ for (const _date of dates) {
120
180
  if (Array.isArray(_date)) {
121
181
  if (isDateInRange(date, _date[0], _date[1])) {
122
182
  disabled = true;
183
+ break;
123
184
  }
124
185
  }
125
186
  if (_date instanceof Date) {
126
187
  if (isSameDateAs(date, _date)) {
127
188
  disabled = true;
189
+ break;
128
190
  }
129
191
  }
130
- });
131
- }
132
- if (min && date < min) {
133
- disabled = true;
134
- }
135
- if (max && date > max) {
136
- disabled = true;
192
+ }
137
193
  }
138
194
  return disabled;
139
195
  };
140
196
  export const isDateInRange = (date, start, end) => {
141
197
  return date && start && end && start <= date && date <= end;
142
198
  };
199
+ export const isYearInRange = (date, start, end) => {
200
+ return date && start && end && start.getFullYear() <= date.getFullYear() && date.getFullYear() <= end.getFullYear();
201
+ };
202
+ export const isDateBetweenMinMax = (date, min, max) => {
203
+ if (date && min && max) {
204
+ return min <= date && date <= max;
205
+ }
206
+ if (date && min) {
207
+ return min <= date;
208
+ }
209
+ if (date && max) {
210
+ return date <= max;
211
+ }
212
+ return true;
213
+ };
143
214
  export const isDateSelected = (date, start, end) => {
144
215
  return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));
145
216
  };
217
+ export const isMonthSelected = (date, start, end) => {
218
+ return date && ((start && isSameMonthAs(start, date)) || (end && isSameMonthAs(end, date)));
219
+ };
220
+ export const isYearSelected = (date, start, end) => {
221
+ return date && ((start && isSameYearAs(start, date)) || (end && isSameYearAs(end, date)));
222
+ };
146
223
  export const isEndDate = (date, start, end) => {
147
224
  return date && start && end && isSameDateAs(end, date) && start < end;
148
225
  };
@@ -155,6 +232,12 @@ export const isLastDayOfMonth = (date) => {
155
232
  export const isSameDateAs = (date, date2) => {
156
233
  return (date.getDate() == date2.getDate() && date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
157
234
  };
235
+ export const isSameMonthAs = (date, date2) => {
236
+ return (date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
237
+ };
238
+ export const isSameYearAs = (date, date2) => {
239
+ return (date.getFullYear() == date2.getFullYear());
240
+ };
158
241
  export const isStartDate = (date, start, end) => {
159
242
  return date && start && end && isSameDateAs(start, date) && start < end;
160
243
  };
@@ -283,4 +366,4 @@ export const isDateInRangeDisabled = (startDate, endDate, dates) => {
283
366
  // // }
284
367
  //
285
368
  // // getDate('12/07/1997');
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBTyxFQUFFLE1BQWMsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5ILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBTyxFQUFFLE1BQWMsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRW5ILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsR0FBVSxFQUFFLGNBQXNCLEVBQUUsRUFBRTtJQUN4RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDeEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNSLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFjLEVBQUUsRUFBRTtJQUN2RixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLEtBQUssR0FBRyxLQUFLO1NBQ1YsT0FBTyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQztTQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDO1NBQ3JDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUV2QyxJQUFJLElBQUksRUFBRTtRQUNSLEtBQUssR0FBRyxLQUFLO2FBQ1YsT0FBTyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzthQUNuQyxPQUFPLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDO2FBQ3BDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUM7YUFDdEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7S0FDdkM7SUFFRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkMsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1FBQ3JCLE9BQU87S0FDUjtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM2YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWMsRUFB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RDtBQUMzRCw4Q0FBOEM7QUFDOUMsT0FBTztBQUNQLEVBQUU7QUFDRiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29udmVydFRvTG9jYWxEYXRlID0gKGQ6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBvcHRpb25zID0ge30pID0+IGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgb3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbFRpbWUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdyb3Vwc0luQXJyYXkgPSAoYXJyOiBhbnlbXSwgbnVtYmVyT2ZHcm91cHM6IG51bWJlcikgPT4ge1xuICBjb25zdCBwZXJHcm91cCA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gbnVtYmVyT2ZHcm91cHMpO1xuICByZXR1cm4gbmV3IEFycmF5KG51bWJlck9mR3JvdXBzKVxuICAgIC5maWxsKCcnKVxuICAgIC5tYXAoKF8sIGkpID0+IGFyci5zbGljZShpICogcGVyR3JvdXAsIChpICsgMSkgKiBwZXJHcm91cCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudE1vbnRoID0gKCkgPT4gbmV3IERhdGUoKS5nZXRNb250aCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0TG9jYWxEYXRlRnJvbVN0cmluZyA9IChzdHJpbmc6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcsIHRpbWU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDEzLCAxMSwgMzEsIDE3LCAxOSwgMjIpO1xuICBsZXQgcmVnZXggPSB0aW1lID8gZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUpIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcbiAgcmVnZXggPSByZWdleFxuICAgIC5yZXBsYWNlKCcyMDEzJywgJyg/PHllYXI+WzAtOV17Miw0fSknKVxuICAgIC5yZXBsYWNlKCcxMicsICcoPzxtb250aD5bMC05XXsxLDJ9KScpXG4gICAgLnJlcGxhY2UoJzMxJywgJyg/PGRheT5bMC05XXsxLDJ9KScpO1xuXG4gIGlmICh0aW1lKSB7XG4gICAgcmVnZXggPSByZWdleFxuICAgICAgLnJlcGxhY2UoJzUnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXG4gICAgICAucmVwbGFjZSgnMTcnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXG4gICAgICAucmVwbGFjZSgnMTknLCAnKD88bWludXRlPlswLTldezEsMn0pJylcbiAgICAgIC5yZXBsYWNlKCcyMicsICcoPzxzZWNvbmQ+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJ1BNJywgJyg/PGFtcG0+W0EtWl17Mn0pJyk7XG4gIH1cblxuICBjb25zdCByZ3ggPSBSZWdFeHAoYCR7cmVnZXh9YCk7XG4gIGNvbnN0IHBhcnRpYWxzID0gc3RyaW5nLm1hdGNoKHJneCk7XG5cbiAgaWYgKHBhcnRpYWxzID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbmV3RGF0ZSA9IHBhcnRpYWxzLmdyb3VwcyAmJiAodGltZSA/IG5ldyBEYXRlKE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3llYXInXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ21vbnRoJ10pIC0gMSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snZGF5J10pLCBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA/IHBhcnRpYWxzLmdyb3Vwc1snYW1wbSddID09PSAnUE0nID8gTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snaG91ciddKSArIDEyIDogTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snaG91ciddKSA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ21pbnV0ZSddKSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snc2Vjb25kJ10pKSA6IG5ldyBEYXRlKE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3llYXInXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ21vbnRoJ10pIC0gMSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snZGF5J10pKSk7XG5cbiAgcmV0dXJuIG5ld0RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9udGhOYW1lID0gKG1vbnRoOiBudW1iZXIsIGxvY2FsZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICBkLnNldERhdGUoMSk7XG4gIGQuc2V0TW9udGgobW9udGgpO1xuICByZXR1cm4gZC50b0xvY2FsZVN0cmluZyhsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNb250aHNOYW1lcyA9IChsb2NhbGU6IHN0cmluZykgPT4ge1xuICBjb25zdCBtb250aHMgPSBbXTtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gIGQuc2V0RGF0ZSgxKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICBkLnNldE1vbnRoKGkpO1xuICAgIG1vbnRocy5wdXNoKGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KSk7XG4gIH1cblxuICByZXR1cm4gbW9udGhzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFllYXJzID0gKHllYXI6IG51bWJlcikgPT4ge1xuICBjb25zdCB5ZWFycyA9IFtdO1xuICBmb3IgKGxldCBfeWVhciA9IHllYXIgLSA2OyBfeWVhciA8IHllYXIgKyA2OyBfeWVhcisrKSB7XG4gICAgeWVhcnMucHVzaChfeWVhcik7XG4gIH1cblxuICByZXR1cm4geWVhcnM7XG59O1xuXG5jb25zdCBnZXRMZWFkaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpID0+IHtcbiAgLy8gMDogc3VuZGF5XG4gIC8vIDE6IG1vbmRheVxuICBjb25zdCBkYXRlcyA9IFtdO1xuICBjb25zdCBkID0gbmV3IERhdGUoeWVhciwgbW9udGgpO1xuICBjb25zdCB5ID0gZC5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtID0gZC5nZXRNb250aCgpO1xuICBjb25zdCBmaXJzdFdlZWtkYXkgPSBuZXcgRGF0ZSh5LCBtLCAxKS5nZXREYXkoKTtcbiAgbGV0IGxlYWRpbmdEYXlzID0gNiAtICg2IC0gZmlyc3RXZWVrZGF5KSAtIGZpcnN0RGF5T2ZXZWVrO1xuXG4gIGlmIChmaXJzdERheU9mV2Vlaykge1xuICAgIGxlYWRpbmdEYXlzID0gbGVhZGluZ0RheXMgPCAwID8gNyArIGxlYWRpbmdEYXlzIDogbGVhZGluZ0RheXM7XG4gIH1cblxuICBmb3IgKGxldCBpID0gbGVhZGluZ0RheXMgKiAtMTsgaSA8IDA7IGkrKykge1xuICAgIGRhdGVzLnB1c2goe1xuICAgICAgZGF0ZTogbmV3IERhdGUoeSwgbSwgaSArIDEpLCBtb250aDogJ3ByZXZpb3VzJ1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGRhdGVzO1xufTtcblxuY29uc3QgZ2V0TW9udGhEYXlzID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcikgPT4ge1xuICBjb25zdCBkYXRlcyA9IFtdO1xuICBjb25zdCBsYXN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IGxhc3REYXk7IGkrKykge1xuICAgIGRhdGVzLnB1c2goe1xuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGgsIGkpLCBtb250aDogJ2N1cnJlbnQnXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGRhdGVzO1xufTtcblxuY29uc3QgZ2V0VHJhaWxpbmdEYXlzID0gKFxuICB5ZWFyOiBudW1iZXIsXG4gIG1vbnRoOiBudW1iZXIsXG4gIGxlYWRpbmdEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdLFxuICBtb250aERheXM6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11cbikgPT4ge1xuICBjb25zdCBkYXRlcyA9IFtdO1xuICBjb25zdCBkYXlzID0gNDIgLSAobGVhZGluZ0RheXMubGVuZ3RoICsgbW9udGhEYXlzLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IGRheXM7IGkrKykge1xuICAgIGRhdGVzLnB1c2goe1xuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBpKSwgbW9udGg6ICduZXh0J1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGRheXNQcmV2TW9udGggPSBnZXRMZWFkaW5nRGF5cyh5ZWFyLCBtb250aCwgZmlyc3REYXlPZldlZWspO1xuICBjb25zdCBkYXlzVGhpc01vbnRoID0gZ2V0TW9udGhEYXlzKHllYXIsIG1vbnRoKTtcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XG4gIGNvbnN0IGRheXMgPSBbLi4uZGF5c1ByZXZNb250aCwgLi4uZGF5c1RoaXNNb250aCwgLi4uZGF5c05leHRNb250aF07XG5cbiAgY29uc3Qgd2Vla3M6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11bXSA9IFtdO1xuXG4gIGRheXMuZm9yRWFjaCgoZGF5LCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB3ZWVrcy5wdXNoKFtdKTtcbiAgICB9XG4gICAgd2Vla3Nbd2Vla3MubGVuZ3RoIC0gMV0ucHVzaChkYXkpO1xuICB9KTtcblxuICByZXR1cm4gd2Vla3M7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiAoRGF0ZSB8IERhdGVbXSlbXSkgPT4ge1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFtaW4gJiYgIW1heCAmJiAoIWRhdGVzIHx8ICFkYXRlcy5sZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGxldCBkaXNhYmxlZDtcbiAgaWYgKGRhdGVzKSB7XG4gICAgZGF0ZXMuZm9yRWFjaCgoX2RhdGU6IERhdGUgfCBEYXRlW10pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xuICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlLCBfZGF0ZVswXSwgX2RhdGVbMV0pKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoX2RhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG4gIHJldHVybiBkaXNhYmxlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIHN0YXJ0IDw9IGRhdGUgJiYgZGF0ZSA8PSBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRlU2VsZWN0ZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiBzdGFydCAmJiBlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXN0RGF5T2ZNb250aCA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRlc3QgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xuXG4gIHRlc3Quc2V0RGF0ZSh0ZXN0LmdldERhdGUoKSArIDEpO1xuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSBkYXRlMi5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IGRhdGUyLmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IGRhdGUyLmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RhcnREYXRlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUb2RheSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSB0b2RheS5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc01vbnRoID0gKGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuICh5ZWFyID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWREYXRlID0gKGRhdGU6IG51bWJlciB8IHN0cmluZyB8IERhdGUpOiBib29sZWFuID0+IHtcblxuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIGRhdGUgPT09ICdudW1iZXInIHx8IHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgIC8vIFRyeSB0byBjcmVhdGUgYSBEYXRlIG9iamVjdCBmcm9tIERhdGUgb3IgdGltZXN0YW1wIG9yIHN0cmluZ1xuICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXR1cm4gIWlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKTtcbiAgfVxuXG4gIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgYXJlIG1ldCwgaXQncyBub3QgYSB2YWxpZCBkYXRlXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cnlEYXRlID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBwcm9wTmFtZTogc3RyaW5nID0gJ2RhdGUnKSA9PiB7XG4gIGxldCBfdmFsdWU7XG4gIHRyeSB7XG4gICAgaWYgKCFpc1ZhbGlkRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IHZhbHVlO1xuICAgIH1cbiAgICBfdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCAke3Byb3BOYW1lfWAsIGVycik7XG4gICAgX3ZhbHVlID0gbmV3IERhdGUoKTtcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cbiAgcmV0dXJuIF92YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlRGlzYWJsZWQgPSAoc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIGVuZERhdGU/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiAoRGF0ZSB8IERhdGVbXSlbXSkgPT4ge1xuICBpZiAoIWRhdGVzIHx8ICFkYXRlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoZGF0ZSA8IGVuZERhdGUpIHtcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgaWYgKGlzRGF0ZURpc2FibGVkKGRhdGUsIG51bGwsIG51bGwsIGRhdGVzKSkge1xuICAgICAgICBkaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzYWJsZWQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gZXhwb3J0IGNvbnN0IHN0cmluZ1RvRGF0ZUNvbnZlcnQgPSAoZGF0ZTogc3RyaW5nLCBsb2NhbGVzOiBzdHJpbmcpID0+IHtcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2ZyLUZSJyk7XG4vLyAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoKTtcbi8vICAgY29uc29sZS5sb2coZGF0ZSwgcGFydHMsIGZvcm1hdHRlci5mb3JtYXQoKSwgZm9ybWF0dGVyLnJlc29sdmVkT3B0aW9ucygpLCBmb3JtYXR0ZXIuZm9ybWF0KCkpO1xuLy8gfTtcblxuLy8gZGVjbGFyZSBuYW1lc3BhY2UgSW50bCB7XG4vLyAgIHR5cGUgRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMgPSBcImRheVwiIHwgXCJkYXlQZXJpb2RcIiB8IFwiZXJhXCIgfCBcImZyYWN0aW9uYWxTZWNvbmRcIiB8IFwiaG91clwiIHwgXCJsaXRlcmFsXCIgfCBcIm1pbnV0ZVwiIHwgXCJtb250aFwiIHwgXCJzZWNvbmRcIiB8IFwidGltZVpvbmVOYW1lXCIgfCBcIndlZWtkYXlcIiB8IFwieWVhclwiO1xuLy9cbi8vICAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0UGFydCB7XG4vLyAgICAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XG4vLyAgICAgdmFsdWU6IHN0cmluZztcbi8vICAgfVxuLy9cbi8vICAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0IHtcbi8vICAgICBmb3JtYXRUb1BhcnRzKGRhdGU/OiBEYXRlIHwgbnVtYmVyKTogRGF0ZVRpbWVGb3JtYXRQYXJ0W107XG4vLyAgIH1cbi8vIH1cblxudHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9XG4gICdkYXknXG4gIHwgJ2RheVBlcmlvZCdcbiAgfCAnZXJhJ1xuICB8ICdmcmFjdGlvbmFsU2Vjb25kJ1xuICB8ICdob3VyJ1xuICB8ICdsaXRlcmFsJ1xuICB8ICdtaW51dGUnXG4gIHwgJ21vbnRoJ1xuICB8ICdzZWNvbmQnXG4gIHwgJ3RpbWVab25lTmFtZSdcbiAgfCAnd2Vla2RheSdcbiAgfCAneWVhcic7XG50eXBlIERhdGVGb3JtYXRQYXJ0VHlwZXMgPSAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnbGl0ZXJhbCc7XG5cbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xuLy8gICBba2V5IGluIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzXT86IHN0cmluZztcbi8vIH07XG5cbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xuLy8gICB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyLCBsaXRlcmFsOiBzdHJpbmdcbi8vIH07XG4vL1xuLy8gZXhwb3J0IGNvbnN0IGN2dERhdGUgPSAoZGF0ZUFzU3RyaW5nOiBzdHJpbmcsIGxvY2FsZSA9ICdwbC1QTCcpID0+IHtcbi8vICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGVBc1N0cmluZyA/PyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuLy8gICBjb25zdCBkYXRlU3BsaXQgPSBkYXRlU3RyaW5nLnNwbGl0KC9bLlxcLVxcL1xcc1xcRF0vZ2kpLmZpbHRlcihpdGVtID0+ICEhaXRlbS5sZW5ndGgpO1xuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUpO1xuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCkuZmlsdGVyKHBhcnQgPT4gWyd5ZWFyJywgJ21vbnRoJywgJ2RheSddLmluY2x1ZGVzKHBhcnQudHlwZSkpO1xuLy8gICBjb25zdCBkYXRlU2hpbSA9IHtcbi8vICAgICBkYXk6IHVuZGVmaW5lZCwgbW9udGg6IHVuZGVmaW5lZCwgeWVhcjogdW5kZWZpbmVkXG4vLyAgIH07XG4vLyAgIHBhcnRzLmZvckVhY2goKHBhcnQsIGluZGV4KSA9PiB7XG4vLyAgICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0geyAuLi5wYXJ0IH07XG4vLyAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgIGRhdGVTaGltW3R5cGVdID0gZGF0ZVNwbGl0W2luZGV4XTtcbi8vICAgfSk7XG4vL1xuLy8gICByZXR1cm4gZGF0ZVNoaW07XG4vL1xuLy8gICAvLyBjb25zdCBkYXRlUGFydHM6IERhdGVQYXJ0cyA9IHtcbi8vICAgLy8gICB5ZWFyOiAwLFxuLy8gICAvLyAgIG1vbnRoOiAwLFxuLy8gICAvLyAgIGRheTogMCxcbi8vICAgLy8gICBsaXRlcmFsOiAnLydcbi8vICAgLy8gfTtcbi8vICAgLy9cbi8vICAgLy8gY29uc3QgbGl0ZXJhbCA9IHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdsaXRlcmFsJyk/LnZhbHVlID8/ICcvJztcbi8vICAgLy8gLy8gY29uc3QgeWVhciA9IHBhcnNlSW50KHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICd5ZWFyJyk/LnZhbHVlID8/ICcwJyk7XG4vLyAgIC8vIC8vIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy8gLy8gY29uc3QgZGF5ID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy9cbi8vICAgLy8gY29uc3QgZGF0ZUFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChsaXRlcmFsKTtcbi8vICAgLy9cbi8vICAgLy8gcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xuLy8gICAvLyAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuLy8gICAvL1xuLy8gICAvLyAgIH1cbi8vICAgLy8gfSlcbi8vICAgLy9cbi8vICAgLy8gcGFydHMuZmlsdGVyKHBhcnQgPT4gcGFydC50eXBlIGluIGRhdGVQYXJ0cykubWFwKHBhcnQgPT4ge1xuLy8gICAvLyAgIGNvbnN0IHt0eXBlLCB2YWx1ZX0gPSB7Li4ucGFydH07XG4vLyAgIC8vICAgLy8gQHRzLWlnbm9yZVxuLy8gICAvLyAgIGRhdGVQYXJ0c1t0eXBlXSA9IHBhcnNlSW50KHBhcnQudmFsdWUpO1xuLy8gICAvLyAgIC8vXG4vLyAgIC8vICAgLy8gc3dpdGNoICh0eXBlKSB7XG4vLyAgIC8vICAgLy8gICBjYXNlICdkYXknOlxuLy8gICAvLyAgIC8vICAgICBkYXkgPSBwYXJzZUludCh2YWx1ZSk7XG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xuLy8gICAvLyAgIC8vICAgY2FzZSAnbW9udGgnOlxuLy8gICAvLyAgIC8vICAgICBtb250aCA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gICBjYXNlICd5ZWFyJzpcbi8vICAgLy8gICAvLyAgICAgeWVhciA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gfVxuLy8gICAvLyB9KVxuLy8gICAvLyAvLyBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IHsuLi5kYXRlUGFydHN9XG4vLyAgIC8vIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4vLyB9O1xuLy9cbi8vIC8vIGZ1bmN0aW9uIGdldERhdGVYKGRhdGVBc1N0cmluZykge1xuLy8gLy8gICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlQXNTdHJpbmcuc3BsaXQoJy8nKTtcbi8vIC8vICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbi8vIC8vIH1cbi8vXG4vLyAvLyBnZXREYXRlKCcxMi8wNy8xOTk3Jyk7XG4iXX0=
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLHVDQUF1QztJQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLDREQUE0RDtJQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakYsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUNqQyxJQUFtQixFQUNuQixhQUE2QixFQUM3QixFQUFFO0lBRUYsSUFBSSxJQUFJLFlBQVksSUFBSSxFQUFFO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLGFBQWEsS0FBSyxNQUFNLEVBQUU7UUFDNUIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFjLENBQUMsQ0FBQztLQUM3QztJQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBTyxFQUFFLE1BQWMsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FDMUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUV4QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQU8sRUFBRSxNQUFjLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQzFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBSSxHQUFRLEVBQUUsY0FBc0IsRUFBUyxFQUFFO0lBQ2hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUM7U0FDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNSLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFlBQWtCLEVBQUUsS0FBYSxFQUFFLElBQWlDLEVBQUUsRUFBRTtJQUN0RyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMzRjtJQUVELElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzNGO0lBRUQsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7UUFDbkMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNsRztJQUVELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRTNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLElBQWlCLEVBQ2pCLGFBQTRCLEVBQzVCLEVBQUU7SUFDRixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUksYUFBYSxLQUFLLE1BQU0sRUFBRTtRQUM1QixPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0tBQ3ZEO0lBRUQsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFO1FBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUM7S0FDL0M7SUFFRCxJQUFJLGFBQWEsS0FBSyxNQUFNLEVBQUU7UUFDNUIsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixFQUFFO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDckIsT0FBTztLQUNSO0lBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FB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QUFPO0FBQ1AscUNBQXFDO0FBQ3JDLDJDQUEyQztBQUMzQyxvQkFBb0I7QUFDcEIseUNBQXlDO0FBQ3pDLFFBQVE7QUFDUixFQUFFO0FBQ0YscUJBQXFCO0FBQ3JCLEVBQUU7QUFDRixzQ0FBc0M7QUFDdEMsa0JBQWtCO0FBQ2xCLG1CQUFtQjtBQUNuQixpQkFBaUI7QUFDakIsc0JBQXNCO0FBQ3RCLFVBQVU7QUFDVixPQUFPO0FBQ1Asa0ZBQWtGO0FBQ2xGLHlGQUF5RjtBQUN6RiwwRkFBMEY7QUFDMUYsd0ZBQXdGO0FBQ3hGLE9BQU87QUFDUCxvREFBb0Q7QUFDcEQsT0FBTztBQUNQLCtCQUErQjtBQUMvQiwwQ0FBMEM7QUFDMUMsK0JBQStCO0FBQy9CLE9BQU87QUFDUCxXQUFXO0FBQ1gsVUFBVTtBQUNWLE9BQU87QUFDUCxrRUFBa0U7QUFDbEUsMENBQTBDO0FBQzFDLHVCQUF1QjtBQUN2QixpREFBaUQ7QUFDakQsWUFBWTtBQUNaLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsdUNBQXVDO0FBQ3ZDLHVCQUF1QjtBQUN2Qiw0QkFBNEI7QUFDNUIseUNBQXlDO0FBQ3pDLHVCQUF1QjtBQUN2QiwyQkFBMkI7QUFDM0Isd0NBQXdDO0FBQ3hDLHVCQUF1QjtBQUN2QixjQUFjO0FBQ2QsVUFBVTtBQUNWLHNEQUFzRDtBQUN0RCw4Q0FBOEM7QUFDOUMsS0FBSztBQUNMLEVBQUU7QUFDRix1Q0FBdUM7QUFDdkMsMkRBQTJEO0FBQzNELDhDQUE4QztBQUM5QyxPQUFPO0FBQ1AsRUFBRTtBQUNGLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvblR5cGUgfSBmcm9tICcuL2NhbGVuZGFyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgY29udmVydElzb1dlZWtUb0RhdGUgPSAoaXNvV2Vlazogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFt5ZWFyLCB3ZWVrXSA9IGlzb1dlZWsuc3BsaXQoL3cvaSk7XG4gIC8vIEdldCBkYXRlIGZvciA0dGggb2YgSmFudWFyeSBmb3IgeWVhclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoTnVtYmVyKHllYXIpLCAwLCA0KTtcbiAgLy8gR2V0IHByZXZpb3VzIE1vbmRheSwgYWRkIDcgZGF5cyBmb3IgZWFjaCB3ZWVrIGFmdGVyIGZpcnN0XG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSAtIChkYXRlLmdldERheSgpIHx8IDcpICsgMSArIChOdW1iZXIod2VlaykgLSAxKSAqIDcpO1xuICByZXR1cm4gZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9EYXRlT2JqZWN0ID0gKFxuICBkYXRlOiBEYXRlIHwgc3RyaW5nLFxuICBzZWxlY3Rpb25UeXBlPzogU2VsZWN0aW9uVHlwZVxuKSA9PiB7XG5cbiAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpZiAoc2VsZWN0aW9uVHlwZSA9PT0gJ3dlZWsnKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRJc29XZWVrVG9EYXRlKGRhdGUgYXMgc3RyaW5nKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKGRhdGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbERhdGUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT5cbiAgZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0xvY2FsVGltZSA9IChkOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9ucyA9IHt9KSA9PlxuICBkLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlR3JvdXBzSW5BcnJheSA9IDxUPihhcnI6IFRbXSwgbnVtYmVyT2ZHcm91cHM6IG51bWJlcik6IFRbXVtdID0+IHtcbiAgY29uc3QgcGVyR3JvdXAgPSBNYXRoLmNlaWwoYXJyLmxlbmd0aCAvIG51bWJlck9mR3JvdXBzKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IG51bWJlck9mR3JvdXBzIH0pXG4gICAgLmZpbGwoJycpXG4gICAgLm1hcCgoXywgaSkgPT4gYXJyLnNsaWNlKGkgKiBwZXJHcm91cCwgKGkgKyAxKSAqIHBlckdyb3VwKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJEYXRlID0gKGNhbGVuZGFyRGF0ZTogRGF0ZSwgb3JkZXI6IG51bWJlciwgdmlldzogJ2RheXMnIHwgJ21vbnRocycgfCAneWVhcnMnKSA9PiB7XG4gIGlmIChvcmRlciAhPT0gMCAmJiB2aWV3ID09PSAnZGF5cycpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoY2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCksIGNhbGVuZGFyRGF0ZS5nZXRNb250aCgpICsgb3JkZXIsIDEpKTtcbiAgfVxuXG4gIGlmIChvcmRlciAhPT0gMCAmJiB2aWV3ID09PSAnbW9udGhzJykge1xuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhjYWxlbmRhckRhdGUuZ2V0RnVsbFllYXIoKSArIG9yZGVyLCBjYWxlbmRhckRhdGUuZ2V0TW9udGgoKSwgMSkpO1xuICB9XG5cbiAgaWYgKG9yZGVyICE9PSAwICYmIHZpZXcgPT09ICd5ZWFycycpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoY2FsZW5kYXJEYXRlLmdldEZ1bGxZZWFyKCkgKyAoMTIgKiBvcmRlciksIGNhbGVuZGFyRGF0ZS5nZXRNb250aCgpLCAxKSk7XG4gIH1cblxuICByZXR1cm4gY2FsZW5kYXJEYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudE1vbnRoID0gKCkgPT4gbmV3IERhdGUoKS5nZXRNb250aCgpO1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0ZUJ5U2VsZWN0aW9uVHlwZSA9IChcbiAgZGF0ZTogRGF0ZSB8IG51bGwsXG4gIHNlbGVjdGlvblR5cGU6IFNlbGVjdGlvblR5cGVcbikgPT4ge1xuICBpZiAoZGF0ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICd3ZWVrJykge1xuICAgIHJldHVybiBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9VyR7Z2V0V2Vla051bWJlcihkYXRlKX1gO1xuICB9XG5cbiAgaWYgKHNlbGVjdGlvblR5cGUgPT09ICdtb250aCcpIHtcbiAgICBjb25zdCBtb250aE51bWJlciA9IGAwJHtkYXRlLmdldE1vbnRoKCkgKyAxfWAuc2xpY2UoLTIpO1xuICAgIHJldHVybiBgJHtkYXRlLmdldEZ1bGxZZWFyKCl9LSR7bW9udGhOdW1iZXJ9YDtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25UeXBlID09PSAneWVhcicpIHtcbiAgICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfWA7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn07XG5cbi8vXG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbERhdGVGcm9tU3RyaW5nID0gKHN0cmluZzogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZT86IGJvb2xlYW4pID0+IHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDIwMTMsIDExLCAzMSwgMTcsIDE5LCAyMik7XG4gIGxldCByZWdleCA9IHRpbWUgPyBkYXRlLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuICByZWdleCA9IHJlZ2V4XG4gICAgLnJlcGxhY2UoJzIwMTMnLCAnKD88eWVhcj5bMC05XXsyLDR9KScpXG4gICAgLnJlcGxhY2UoJzEyJywgJyg/PG1vbnRoPlswLTldezEsMn0pJylcbiAgICAucmVwbGFjZSgnMzEnLCAnKD88ZGF5PlswLTldezEsMn0pJyk7XG5cbiAgaWYgKHRpbWUpIHtcbiAgICByZWdleCA9IHJlZ2V4XG4gICAgICAucmVwbGFjZSgnNScsICcoPzxob3VyPlswLTldezEsMn0pJylcbiAgICAgIC5yZXBsYWNlKCcxNycsICcoPzxob3VyPlswLTldezEsMn0pJylcbiAgICAgIC5yZXBsYWNlKCcxOScsICcoPzxtaW51dGU+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJzIyJywgJyg/PHNlY29uZD5bMC05XXsxLDJ9KScpXG4gICAgICAucmVwbGFjZSgnUE0nLCAnKD88YW1wbT5bQS1aXXsyfSknKTtcbiAgfVxuXG4gIGNvbnN0IHJneCA9IFJlZ0V4cChgJHtyZWdleH1gKTtcbiAgY29uc3QgcGFydGlhbHMgPSBzdHJpbmcubWF0Y2gocmd4KTtcblxuICBpZiAocGFydGlhbHMgPT09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBuZXdEYXRlID0gcGFydGlhbHMuZ3JvdXBzICYmICh0aW1lID8gbmV3IERhdGUoTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1sneWVhciddKSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snbW9udGgnXSkgLSAxLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydkYXknXSksIHBhcnRpYWxzLmdyb3Vwc1snYW1wbSddID8gcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPT09ICdQTScgPyBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pICsgMTIgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pIDogTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snaG91ciddKSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snbWludXRlJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydzZWNvbmQnXSkpIDogbmV3IERhdGUoTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1sneWVhciddKSwgTnVtYmVyKHBhcnRpYWxzLmdyb3Vwc1snbW9udGgnXSkgLSAxLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydkYXknXSkpKTtcblxuICByZXR1cm4gbmV3RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGg6IG51bWJlciwgbG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKCk7XG4gIGQuc2V0RGF0ZSgxKTtcbiAgZC5zZXRNb250aChtb250aCk7XG4gIHJldHVybiBkLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1vbnRoc05hbWVzID0gKGxvY2FsZTogc3RyaW5nLCB5ZWFyOiBudW1iZXIpID0+IHtcbiAgY29uc3QgbW9udGhzID0gW107XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyKTtcbiAgZC5zZXREYXRlKDEpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgIGQuc2V0TW9udGgoaSk7XG4gICAgbW9udGhzLnB1c2goeyB5ZWFyLCBtb250aDogZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnc2hvcnQnIH0pIH0pO1xuICB9XG5cbiAgcmV0dXJuIG1vbnRocztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZZWFycyA9ICh5ZWFyOiBudW1iZXIpID0+IHtcbiAgY29uc3QgeWVhcnMgPSBbXTtcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xuICAgIHllYXJzLnB1c2goX3llYXIpO1xuICB9XG5cbiAgcmV0dXJuIHllYXJzO1xufTtcblxuY29uc3QgZ2V0TGVhZGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XG4gIC8vIDA6IHN1bmRheVxuICAvLyAxOiBtb25kYXlcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoKTtcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbSA9IGQuZ2V0TW9udGgoKTtcbiAgY29uc3QgZmlyc3RXZWVrZGF5ID0gbmV3IERhdGUoeSwgbSwgMSkuZ2V0RGF5KCk7XG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcblxuICBpZiAoZmlyc3REYXlPZldlZWspIHtcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHksIG0sIGkgKyAxKSwgbW9udGg6ICdwcmV2aW91cydcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBpKSwgbW9udGg6ICdjdXJyZW50J1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldFRyYWlsaW5nRGF5cyA9IChcbiAgeWVhcjogbnVtYmVyLFxuICBtb250aDogbnVtYmVyLFxuICBsZWFkaW5nRGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH1bXSxcbiAgbW9udGhEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdXG4pID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZGF5cyA9IDQyIC0gKGxlYWRpbmdEYXlzLmxlbmd0aCArIG1vbnRoRGF5cy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaSksIG1vbnRoOiAnbmV4dCdcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF5TnVtYmVyID0gKGRhdGU6IERhdGUpID0+XG4gIE1hdGguY2VpbCgoTnVtYmVyKGRhdGUpIC0gTnVtYmVyKG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMCkpKSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpO1xuXG5leHBvcnQgY29uc3QgZ2V0V2Vla051bWJlciA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHdlZWsxID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCA0KTtcbiAgcmV0dXJuICgxICsgTWF0aC5yb3VuZCgoKGRhdGUuZ2V0VGltZSgpIC0gd2VlazEuZ2V0VGltZSgpKSAvIDg2NDAwMDAwIC0gMyArICgod2VlazEuZ2V0RGF5KCkgKyA2KSAlIDcpKSAvIDcpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IGRheXNQcmV2TW9udGggPSBnZXRMZWFkaW5nRGF5cyh5ZWFyLCBtb250aCwgZmlyc3REYXlPZldlZWspO1xuICBjb25zdCBkYXlzVGhpc01vbnRoID0gZ2V0TW9udGhEYXlzKHllYXIsIG1vbnRoKTtcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XG4gIGNvbnN0IGRheXMgPSBbLi4uZGF5c1ByZXZNb250aCwgLi4uZGF5c1RoaXNNb250aCwgLi4uZGF5c05leHRNb250aF07XG5cbiAgY29uc3Qgd2Vla3M6IHsgd2Vla051bWJlcjogbnVtYmVyOyBkYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdIH1bXSA9IFtdO1xuXG4gIGRheXMuZm9yRWFjaCgoZGF5LCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB3ZWVrcy5wdXNoKHsgd2Vla051bWJlcjogLTEsIGRheXM6IFtdIH0pO1xuICAgIH1cblxuICAgIGlmICgoaW5kZXggKyAxKSAlIDcgPT09IDApIHtcbiAgICAgIHdlZWtzW3dlZWtzLmxlbmd0aCAtIDFdLndlZWtOdW1iZXIgPSBnZXRXZWVrTnVtYmVyKGRheS5kYXRlKTtcbiAgICB9XG5cbiAgICB3ZWVrc1t3ZWVrcy5sZW5ndGggLSAxXS5kYXlzLnB1c2goZGF5KTtcbiAgfSk7XG5cbiAgcmV0dXJuIFsuLi53ZWVrc107XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiAoRGF0ZSB8IERhdGVbXSlbXSkgPT4ge1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFtaW4gJiYgIW1heCAmJiAoIWRhdGVzIHx8ICFkYXRlcy5sZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGV0IGRpc2FibGVkID0gZmFsc2U7XG4gIGlmIChkYXRlcykge1xuICAgIGZvciAoY29uc3QgX2RhdGUgb2YgZGF0ZXMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xuICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlLCBfZGF0ZVswXSwgX2RhdGVbMV0pKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoX2RhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpc2FibGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiBzdGFydCAmJiBlbmQgJiYgc3RhcnQgPD0gZGF0ZSAmJiBkYXRlIDw9IGVuZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1llYXJJblJhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIHN0YXJ0LmdldEZ1bGxZZWFyKCkgPD0gZGF0ZS5nZXRGdWxsWWVhcigpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA8PSBlbmQuZ2V0RnVsbFllYXIoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVCZXR3ZWVuTWluTWF4ID0gKGRhdGU6IERhdGUgfCBudWxsLCBtaW46IERhdGUgfCBudWxsLCBtYXg6IERhdGUgfCBudWxsKSA9PiB7XG4gIGlmIChkYXRlICYmIG1pbiAmJiBtYXgpIHtcbiAgICByZXR1cm4gbWluIDw9IGRhdGUgJiYgZGF0ZSA8PSBtYXg7XG4gIH1cbiAgaWYgKGRhdGUgJiYgbWluKSB7XG4gICAgcmV0dXJuIG1pbiA8PSBkYXRlO1xuICB9XG4gIGlmIChkYXRlICYmIG1heCkge1xuICAgIHJldHVybiBkYXRlIDw9IG1heDtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVTZWxlY3RlZCA9IChkYXRlOiBEYXRlIHwgbnVsbCwgc3RhcnQ6IERhdGUgfCBudWxsLCBlbmQ6IERhdGUgfCBudWxsKSA9PiB7XG4gIHJldHVybiBkYXRlICYmICgoc3RhcnQgJiYgaXNTYW1lRGF0ZUFzKHN0YXJ0LCBkYXRlKSkgfHwgKGVuZCAmJiBpc1NhbWVEYXRlQXMoZW5kLCBkYXRlKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTW9udGhTZWxlY3RlZCA9IChkYXRlOiBEYXRlIHwgbnVsbCwgc3RhcnQ6IERhdGUgfCBudWxsLCBlbmQ6IERhdGUgfCBudWxsKSA9PiB7XG4gIHJldHVybiBkYXRlICYmICgoc3RhcnQgJiYgaXNTYW1lTW9udGhBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lTW9udGhBcyhlbmQsIGRhdGUpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNZZWFyU2VsZWN0ZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZVllYXJBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lWWVhckFzKGVuZCwgZGF0ZSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiBzdGFydCAmJiBlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXN0RGF5T2ZNb250aCA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRlc3QgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xuXG4gIHRlc3Quc2V0RGF0ZSh0ZXN0LmdldERhdGUoKSArIDEpO1xuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSBkYXRlMi5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IGRhdGUyLmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IGRhdGUyLmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2FtZU1vbnRoQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcbiAgcmV0dXJuIChkYXRlLmdldE1vbnRoKCkgPT0gZGF0ZTIuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNTYW1lWWVhckFzID0gKGRhdGU6IERhdGUsIGRhdGUyOiBEYXRlKSA9PiB7XG4gIHJldHVybiAoZGF0ZS5nZXRGdWxsWWVhcigpID09IGRhdGUyLmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RhcnREYXRlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUb2RheSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSB0b2RheS5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc01vbnRoID0gKGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuICh5ZWFyID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWREYXRlID0gKGRhdGU6IG51bWJlciB8IHN0cmluZyB8IERhdGUpOiBib29sZWFuID0+IHtcblxuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIGRhdGUgPT09ICdudW1iZXInIHx8IHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykge1xuICAgIC8vIFRyeSB0byBjcmVhdGUgYSBEYXRlIG9iamVjdCBmcm9tIERhdGUgb3IgdGltZXN0YW1wIG9yIHN0cmluZ1xuICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlKTtcbiAgICByZXR1cm4gIWlzTmFOKGRhdGVPYmouZ2V0VGltZSgpKTtcbiAgfVxuXG4gIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIGNvbmRpdGlvbnMgYXJlIG1ldCwgaXQncyBub3QgYSB2YWxpZCBkYXRlXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cnlEYXRlID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLCBwcm9wTmFtZTogc3RyaW5nID0gJ2RhdGUnKSA9PiB7XG4gIGxldCBfdmFsdWU7XG4gIHRyeSB7XG4gICAgaWYgKCFpc1ZhbGlkRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IHZhbHVlO1xuICAgIH1cbiAgICBfdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCAke3Byb3BOYW1lfWAsIGVycik7XG4gICAgX3ZhbHVlID0gbmV3IERhdGUoKTtcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cbiAgcmV0dXJuIF92YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlRGlzYWJsZWQgPSAoc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIGVuZERhdGU/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiAoRGF0ZSB8IERhdGVbXSlbXSkgPT4ge1xuICBpZiAoIWRhdGVzIHx8ICFkYXRlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHN0YXJ0RGF0ZSAmJiBlbmREYXRlKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHN0YXJ0RGF0ZSk7XG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAoZGF0ZSA8IGVuZERhdGUpIHtcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xuICAgICAgaWYgKGlzRGF0ZURpc2FibGVkKGRhdGUsIG51bGwsIG51bGwsIGRhdGVzKSkge1xuICAgICAgICBkaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzYWJsZWQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gZXhwb3J0IGNvbnN0IHN0cmluZ1RvRGF0ZUNvbnZlcnQgPSAoZGF0ZTogc3RyaW5nLCBsb2NhbGVzOiBzdHJpbmcpID0+IHtcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2ZyLUZSJyk7XG4vLyAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoKTtcbi8vICAgY29uc29sZS5sb2coZGF0ZSwgcGFydHMsIGZvcm1hdHRlci5mb3JtYXQoKSwgZm9ybWF0dGVyLnJlc29sdmVkT3B0aW9ucygpLCBmb3JtYXR0ZXIuZm9ybWF0KCkpO1xuLy8gfTtcblxuLy8gZGVjbGFyZSBuYW1lc3BhY2UgSW50bCB7XG4vLyAgIHR5cGUgRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMgPSBcImRheVwiIHwgXCJkYXlQZXJpb2RcIiB8IFwiZXJhXCIgfCBcImZyYWN0aW9uYWxTZWNvbmRcIiB8IFwiaG91clwiIHwgXCJsaXRlcmFsXCIgfCBcIm1pbnV0ZVwiIHwgXCJtb250aFwiIHwgXCJzZWNvbmRcIiB8IFwidGltZVpvbmVOYW1lXCIgfCBcIndlZWtkYXlcIiB8IFwieWVhclwiO1xuLy9cbi8vICAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0UGFydCB7XG4vLyAgICAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XG4vLyAgICAgdmFsdWU6IHN0cmluZztcbi8vICAgfVxuLy9cbi8vICAgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0IHtcbi8vICAgICBmb3JtYXRUb1BhcnRzKGRhdGU/OiBEYXRlIHwgbnVtYmVyKTogRGF0ZVRpbWVGb3JtYXRQYXJ0W107XG4vLyAgIH1cbi8vIH1cblxudHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9XG4gICdkYXknXG4gIHwgJ2RheVBlcmlvZCdcbiAgfCAnZXJhJ1xuICB8ICdmcmFjdGlvbmFsU2Vjb25kJ1xuICB8ICdob3VyJ1xuICB8ICdsaXRlcmFsJ1xuICB8ICdtaW51dGUnXG4gIHwgJ21vbnRoJ1xuICB8ICdzZWNvbmQnXG4gIHwgJ3RpbWVab25lTmFtZSdcbiAgfCAnd2Vla2RheSdcbiAgfCAneWVhcic7XG50eXBlIERhdGVGb3JtYXRQYXJ0VHlwZXMgPSAnZGF5JyB8ICdtb250aCcgfCAneWVhcicgfCAnbGl0ZXJhbCc7XG5cbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xuLy8gICBba2V5IGluIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzXT86IHN0cmluZztcbi8vIH07XG5cbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xuLy8gICB5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRheTogbnVtYmVyLCBsaXRlcmFsOiBzdHJpbmdcbi8vIH07XG4vL1xuLy8gZXhwb3J0IGNvbnN0IGN2dERhdGUgPSAoZGF0ZUFzU3RyaW5nOiBzdHJpbmcsIGxvY2FsZSA9ICdwbC1QTCcpID0+IHtcbi8vICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGVBc1N0cmluZyA/PyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuLy8gICBjb25zdCBkYXRlU3BsaXQgPSBkYXRlU3RyaW5nLnNwbGl0KC9bLlxcLVxcL1xcc1xcRF0vZ2kpLmZpbHRlcihpdGVtID0+ICEhaXRlbS5sZW5ndGgpO1xuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUpO1xuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCkuZmlsdGVyKHBhcnQgPT4gWyd5ZWFyJywgJ21vbnRoJywgJ2RheSddLmluY2x1ZGVzKHBhcnQudHlwZSkpO1xuLy8gICBjb25zdCBkYXRlU2hpbSA9IHtcbi8vICAgICBkYXk6IHVuZGVmaW5lZCwgbW9udGg6IHVuZGVmaW5lZCwgeWVhcjogdW5kZWZpbmVkXG4vLyAgIH07XG4vLyAgIHBhcnRzLmZvckVhY2goKHBhcnQsIGluZGV4KSA9PiB7XG4vLyAgICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0geyAuLi5wYXJ0IH07XG4vLyAgICAgLy8gQHRzLWlnbm9yZVxuLy8gICAgIGRhdGVTaGltW3R5cGVdID0gZGF0ZVNwbGl0W2luZGV4XTtcbi8vICAgfSk7XG4vL1xuLy8gICByZXR1cm4gZGF0ZVNoaW07XG4vL1xuLy8gICAvLyBjb25zdCBkYXRlUGFydHM6IERhdGVQYXJ0cyA9IHtcbi8vICAgLy8gICB5ZWFyOiAwLFxuLy8gICAvLyAgIG1vbnRoOiAwLFxuLy8gICAvLyAgIGRheTogMCxcbi8vICAgLy8gICBsaXRlcmFsOiAnLydcbi8vICAgLy8gfTtcbi8vICAgLy9cbi8vICAgLy8gY29uc3QgbGl0ZXJhbCA9IHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdsaXRlcmFsJyk/LnZhbHVlID8/ICcvJztcbi8vICAgLy8gLy8gY29uc3QgeWVhciA9IHBhcnNlSW50KHBhcnRzLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICd5ZWFyJyk/LnZhbHVlID8/ICcwJyk7XG4vLyAgIC8vIC8vIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy8gLy8gY29uc3QgZGF5ID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy9cbi8vICAgLy8gY29uc3QgZGF0ZUFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChsaXRlcmFsKTtcbi8vICAgLy9cbi8vICAgLy8gcGFydHMuZm9yRWFjaChwYXJ0ID0+IHtcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xuLy8gICAvLyAgIGlmICh0eXBlID09PSAnZGF5Jykge1xuLy8gICAvL1xuLy8gICAvLyAgIH1cbi8vICAgLy8gfSlcbi8vICAgLy9cbi8vICAgLy8gcGFydHMuZmlsdGVyKHBhcnQgPT4gcGFydC50eXBlIGluIGRhdGVQYXJ0cykubWFwKHBhcnQgPT4ge1xuLy8gICAvLyAgIGNvbnN0IHt0eXBlLCB2YWx1ZX0gPSB7Li4ucGFydH07XG4vLyAgIC8vICAgLy8gQHRzLWlnbm9yZVxuLy8gICAvLyAgIGRhdGVQYXJ0c1t0eXBlXSA9IHBhcnNlSW50KHBhcnQudmFsdWUpO1xuLy8gICAvLyAgIC8vXG4vLyAgIC8vICAgLy8gc3dpdGNoICh0eXBlKSB7XG4vLyAgIC8vICAgLy8gICBjYXNlICdkYXknOlxuLy8gICAvLyAgIC8vICAgICBkYXkgPSBwYXJzZUludCh2YWx1ZSk7XG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xuLy8gICAvLyAgIC8vICAgY2FzZSAnbW9udGgnOlxuLy8gICAvLyAgIC8vICAgICBtb250aCA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gICBjYXNlICd5ZWFyJzpcbi8vICAgLy8gICAvLyAgICAgeWVhciA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gfVxuLy8gICAvLyB9KVxuLy8gICAvLyAvLyBjb25zdCB7IHllYXIsIG1vbnRoLCBkYXkgfSA9IHsuLi5kYXRlUGFydHN9XG4vLyAgIC8vIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XG4vLyB9O1xuLy9cbi8vIC8vIGZ1bmN0aW9uIGdldERhdGVYKGRhdGVBc1N0cmluZykge1xuLy8gLy8gICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlQXNTdHJpbmcuc3BsaXQoJy8nKTtcbi8vIC8vICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbi8vIC8vIH1cbi8vXG4vLyAvLyBnZXREYXRlKCcxMi8wNy8xOTk3Jyk7XG4iXX0=
@@ -8,10 +8,10 @@ export class CalloutComponent {
8
8
  };
9
9
  }
10
10
  constructor() { }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalloutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CalloutComponent, isStandalone: true, selector: "c-callout, [cCallout]", inputs: { color: "color" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CalloutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CalloutComponent, isStandalone: true, selector: "c-callout, [cCallout]", inputs: { color: "color" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalloutComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CalloutComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{ selector: 'c-callout, [cCallout]', template: `<ng-content></ng-content>`, standalone: true, styles: [":host{display:block}\n"] }]
17
17
  }], ctorParameters: () => [], propDecorators: { color: [{
@@ -2,11 +2,11 @@ import { NgModule } from '@angular/core';
2
2
  import { CalloutComponent } from './callout.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export class CalloutModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalloutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.6", ngImport: i0, type: CalloutModule, imports: [CalloutComponent], exports: [CalloutComponent] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalloutModule }); }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CalloutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: CalloutModule, imports: [CalloutComponent], exports: [CalloutComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CalloutModule }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CalloutModule, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CalloutModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  exports: [CalloutComponent],
@@ -6,10 +6,10 @@ export class CardBodyComponent {
6
6
  'card-body': true,
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardBodyComponent, isStandalone: true, selector: "c-card-body, [c-card-body]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardBodyComponent, isStandalone: true, selector: "c-card-body, [c-card-body]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardBodyComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardBodyComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{
15
15
  selector: 'c-card-body, [c-card-body]',
@@ -6,10 +6,10 @@ export class CardFooterComponent {
6
6
  'card-footer': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardFooterComponent, isStandalone: true, selector: "c-card-footer, [c-card-footer]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardFooterComponent, isStandalone: true, selector: "c-card-footer, [c-card-footer]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardFooterComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardFooterComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{
15
15
  selector: 'c-card-footer, [c-card-footer]',
@@ -6,10 +6,10 @@ export class CardGroupComponent {
6
6
  'card-group': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardGroupComponent, isStandalone: true, selector: "c-card-group, [c-card-group]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardGroupComponent, isStandalone: true, selector: "c-card-group, [c-card-group]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardGroupComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardGroupComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{
15
15
  selector: 'c-card-group, [c-card-group]',
@@ -4,10 +4,10 @@ export class CardHeaderActionsComponent {
4
4
  constructor() {
5
5
  this.cardHeaderActions = true;
6
6
  }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardHeaderActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardHeaderActionsComponent, isStandalone: true, selector: "c-card-header-actions, [c-card-header-actions]", host: { properties: { "class.card-header-actions": "this.cardHeaderActions" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardHeaderActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardHeaderActionsComponent, isStandalone: true, selector: "c-card-header-actions, [c-card-header-actions]", host: { properties: { "class.card-header-actions": "this.cardHeaderActions" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardHeaderActionsComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardHeaderActionsComponent, decorators: [{
11
11
  type: Component,
12
12
  args: [{
13
13
  selector: 'c-card-header-actions, [c-card-header-actions]',
@@ -6,10 +6,10 @@ export class CardHeaderComponent {
6
6
  'card-header': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardHeaderComponent, isStandalone: true, selector: "c-card-header, [c-card-header]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardHeaderComponent, isStandalone: true, selector: "c-card-header, [c-card-header]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardHeaderComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardHeaderComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{
15
15
  selector: 'c-card-header, [c-card-header]',
@@ -6,10 +6,10 @@ export class CardImgOverlayComponent {
6
6
  'card-img-overlay': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardImgOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardImgOverlayComponent, isStandalone: true, selector: "c-card-img-overlay", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardImgOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardImgOverlayComponent, isStandalone: true, selector: "c-card-img-overlay", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardImgOverlayComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardImgOverlayComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: 'c-card-img-overlay', template: `<ng-content></ng-content>`, standalone: true, styles: [":host{display:block}\n"] }]
15
15
  }], propDecorators: { hostClasses: [{
@@ -7,10 +7,10 @@ export class CardImgDirective {
7
7
  [`card-img${suffix}`]: true
8
8
  };
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardImgDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: CardImgDirective, isStandalone: true, selector: "[cCardImg]", inputs: { orientation: ["cCardImg", "orientation"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardImgDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: CardImgDirective, isStandalone: true, selector: "[cCardImg]", inputs: { orientation: ["cCardImg", "orientation"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardImgDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardImgDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  selector: '[cCardImg]',
@@ -6,10 +6,10 @@ export class CardLinkDirective {
6
6
  'card-link': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: CardLinkDirective, isStandalone: true, selector: "[cCardLink]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: CardLinkDirective, isStandalone: true, selector: "[cCardLink]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardLinkDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardLinkDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cCardLink]',
@@ -6,10 +6,10 @@ export class CardSubtitleDirective {
6
6
  'card-subtitle': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: CardSubtitleDirective, isStandalone: true, selector: "[cCardSubtitle]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardSubtitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: CardSubtitleDirective, isStandalone: true, selector: "[cCardSubtitle]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardSubtitleDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardSubtitleDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cCardSubtitle]',
@@ -6,10 +6,10 @@ export class CardTextDirective {
6
6
  'card-text': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: CardTextDirective, isStandalone: true, selector: "[cCardText]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: CardTextDirective, isStandalone: true, selector: "[cCardText]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardTextDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardTextDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cCardText]',
@@ -6,10 +6,10 @@ export class CardTitleDirective {
6
6
  'card-title': true
7
7
  };
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.6", type: CardTitleDirective, isStandalone: true, selector: "[cCardTitle]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: CardTitleDirective, isStandalone: true, selector: "[cCardTitle]", host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardTitleDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardTitleDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[cCardTitle]',
@@ -1,23 +1,27 @@
1
1
  import { Component, HostBinding, Input } from '@angular/core';
2
+ import { TextColorDirective } from '../utilities';
2
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "../utilities/text-color.directive";
3
5
  export class CardComponent {
4
6
  get hostClasses() {
5
7
  return {
6
8
  card: true,
7
- [`bg-${this.color}`]: !!this.color,
8
- [`text-${this.textColor}`]: !!this.textColor,
9
+ [`bg-${this.color}`]: !!this.color
9
10
  };
10
11
  }
11
12
  constructor() { }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: CardComponent, isStandalone: true, selector: "c-card, [c-card]", inputs: { color: "color", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: CardComponent, isStandalone: true, selector: "c-card, [c-card]", inputs: { color: "color", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, hostDirectives: [{ directive: i1.TextColorDirective, inputs: ["cTextColor", "textColor"] }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
14
15
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: CardComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: CardComponent, decorators: [{
16
17
  type: Component,
17
18
  args: [{
18
19
  selector: 'c-card, [c-card]',
19
- template: `<ng-content></ng-content>`,
20
- standalone: true
20
+ template: '<ng-content></ng-content>',
21
+ standalone: true,
22
+ hostDirectives: [{
23
+ directive: TextColorDirective, inputs: ['cTextColor: textColor']
24
+ }]
21
25
  }]
22
26
  }], ctorParameters: () => [], propDecorators: { color: [{
23
27
  type: Input
@@ -27,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
27
31
  type: HostBinding,
28
32
  args: ['class']
29
33
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVE5RCxNQUFNLE9BQU8sYUFBYTtJQWF4QixJQUNJLFdBQVc7UUFDYixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQ2xDLENBQUMsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVM7U0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQzs4R0F0Qk4sYUFBYTtrR0FBYixhQUFhLHVMQUhkLDJCQUEyQjs7MkZBRzFCLGFBQWE7a0JBTHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3dEQU9VLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbG9ycywgVGV4dENvbG9ycyB9IGZyb20gJy4uL2NvcmV1aS50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2FyZCwgW2MtY2FyZF0nLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENhcmRDb21wb25lbnQge1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb2xvciBjb250ZXh0IG9mIHRoZSBjb21wb25lbnQgdG8gb25lIG9mIENvcmVVSeKAmXMgdGhlbWVkIGNvbG9ycy5cbiAgICogQHR5cGUgQ29sb3JzXG4gICAqL1xuICBASW5wdXQoKSBjb2xvcj86IENvbG9ycztcbiAgLyoqXG4gICAqIFNldHMgdGhlIHRleHQgY29sb3IgY29udGV4dCBvZiB0aGUgY29tcG9uZW50IHRvIG9uZSBvZiBDb3JlVUnigJlzIHRoZW1lZCBjb2xvcnMuXG4gICAqIEB0eXBlIFRleHRDb2xvcnNcbiAgICovXG4gIEBJbnB1dCgpIHRleHRDb2xvcj86IFRleHRDb2xvcnM7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgW2BiZy0ke3RoaXMuY29sb3J9YF06ICEhdGhpcy5jb2xvcixcbiAgICAgIFtgdGV4dC0ke3RoaXMudGV4dENvbG9yfWBdOiAhIXRoaXMudGV4dENvbG9yLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBVWxELE1BQU0sT0FBTyxhQUFhO0lBZXhCLElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSTtZQUNWLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQzs4R0F2Qk4sYUFBYTtrR0FBYixhQUFhLG9SQU5kLDJCQUEyQjs7MkZBTTFCLGFBQWE7a0JBUnpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxDQUFDOzRCQUNmLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzt5QkFDakUsQ0FBQztpQkFDSDt3REFPVSxLQUFLO3NCQUFiLEtBQUs7Z0JBT0csU0FBUztzQkFBakIsS0FBSztnQkFHRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2xvcnMsIFRleHRDb2xvcnMgfSBmcm9tICcuLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vdXRpbGl0aWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy1jYXJkLCBbYy1jYXJkXScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3REaXJlY3RpdmVzOiBbe1xuICAgIGRpcmVjdGl2ZTogVGV4dENvbG9yRGlyZWN0aXZlLCBpbnB1dHM6IFsnY1RleHRDb2xvcjogdGV4dENvbG9yJ11cbiAgfV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FyZENvbXBvbmVudCB7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbG9yIGNvbnRleHQgb2YgdGhlIGNvbXBvbmVudCB0byBvbmUgb2YgQ29yZVVJ4oCZcyB0aGVtZWQgY29sb3JzLlxuICAgKiBAdHlwZSBDb2xvcnNcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQ29sb3JzO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZXh0IGNvbG9yIGNvbnRleHQgb2YgdGhlIGNvbXBvbmVudCB0byBvbmUgb2YgQ29yZVVJ4oCZcyB0aGVtZWQgY29sb3JzLlxuICAgKiB2aWEgVGV4dENvbG9yRGlyZWN0aXZlXG4gICAqIEB0eXBlIFRleHRDb2xvcnNcbiAgICovXG4gIEBJbnB1dCgpIHRleHRDb2xvcj86IFRleHRDb2xvcnM7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjYXJkOiB0cnVlLFxuICAgICAgW2BiZy0ke3RoaXMuY29sb3J9YF06ICEhdGhpcy5jb2xvclxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG59XG4iXX0=