@coreui/angular-pro 4.1.0 → 4.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/README.md +174 -174
  2. package/esm2020/lib/accordion/accordion/accordion.component.mjs +3 -3
  3. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +3 -3
  4. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +3 -3
  5. package/esm2020/lib/accordion/accordion.module.mjs +4 -4
  6. package/esm2020/lib/accordion/accordion.service.mjs +3 -3
  7. package/esm2020/lib/alert/alert-heading.directive.mjs +3 -3
  8. package/esm2020/lib/alert/alert-link.directive.mjs +3 -3
  9. package/esm2020/lib/alert/alert.component.mjs +3 -3
  10. package/esm2020/lib/alert/alert.module.mjs +4 -4
  11. package/esm2020/lib/avatar/avatar.component.mjs +3 -3
  12. package/esm2020/lib/avatar/avatar.module.mjs +4 -4
  13. package/esm2020/lib/backdrop/backdrop.service.mjs +3 -3
  14. package/esm2020/lib/badge/badge.component.mjs +3 -3
  15. package/esm2020/lib/badge/badge.module.mjs +4 -4
  16. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +3 -3
  17. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +3 -3
  18. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  19. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +3 -3
  20. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +4 -4
  21. package/esm2020/lib/button/button-close.directive.mjs +3 -3
  22. package/esm2020/lib/button/button.directive.mjs +3 -3
  23. package/esm2020/lib/button/button.module.mjs +4 -4
  24. package/esm2020/lib/button-group/button-group/button-group.component.mjs +3 -3
  25. package/esm2020/lib/button-group/button-group.module.mjs +4 -4
  26. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +3 -3
  27. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +19 -0
  28. package/esm2020/lib/calendar/calendar/calendar.component.mjs +366 -0
  29. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +28 -0
  30. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +21 -0
  31. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +21 -0
  32. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +81 -0
  33. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +18 -0
  34. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +320 -0
  35. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +20 -0
  36. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +79 -0
  37. package/esm2020/lib/calendar/calendar.module.mjs +59 -0
  38. package/esm2020/lib/calendar/calendar.service.mjs +60 -0
  39. package/esm2020/lib/calendar/calendar.utils.mjs +273 -0
  40. package/esm2020/lib/calendar/index.mjs +2 -0
  41. package/esm2020/lib/calendar/public_api.mjs +5 -0
  42. package/esm2020/lib/callout/callout.component.mjs +3 -3
  43. package/esm2020/lib/callout/callout.module.mjs +4 -4
  44. package/esm2020/lib/card/card-body.component.mjs +3 -3
  45. package/esm2020/lib/card/card-footer.component.mjs +3 -3
  46. package/esm2020/lib/card/card-group.component.mjs +3 -3
  47. package/esm2020/lib/card/card-header-actions.component.mjs +3 -3
  48. package/esm2020/lib/card/card-header.component.mjs +3 -3
  49. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +3 -3
  50. package/esm2020/lib/card/card-img.directive.mjs +3 -3
  51. package/esm2020/lib/card/card-link.directive.mjs +3 -3
  52. package/esm2020/lib/card/card-subtitle.directive.mjs +3 -3
  53. package/esm2020/lib/card/card-text.directive.mjs +3 -3
  54. package/esm2020/lib/card/card-title.directive.mjs +3 -3
  55. package/esm2020/lib/card/card.component.mjs +3 -3
  56. package/esm2020/lib/card/card.module.mjs +4 -4
  57. package/esm2020/lib/carousel/carousel/carousel.component.mjs +3 -3
  58. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +3 -3
  59. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +3 -3
  60. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  61. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +3 -3
  62. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +3 -3
  63. package/esm2020/lib/carousel/carousel-state.mjs +3 -3
  64. package/esm2020/lib/carousel/carousel.config.mjs +3 -3
  65. package/esm2020/lib/carousel/carousel.module.mjs +4 -4
  66. package/esm2020/lib/carousel/carousel.service.mjs +3 -3
  67. package/esm2020/lib/collapse/collapse.directive.mjs +3 -3
  68. package/esm2020/lib/collapse/collapse.module.mjs +4 -4
  69. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +503 -0
  70. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +57 -0
  71. package/esm2020/lib/date-range-picker/end-date.directive.mjs +17 -0
  72. package/esm2020/lib/date-range-picker/index.mjs +2 -0
  73. package/esm2020/lib/date-range-picker/public_api.mjs +3 -0
  74. package/esm2020/lib/date-range-picker/start-date.directive.mjs +17 -0
  75. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +6 -6
  76. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +3 -3
  77. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +3 -3
  78. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +3 -3
  79. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +3 -3
  80. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +3 -3
  81. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +3 -3
  82. package/esm2020/lib/dropdown/dropdown.module.mjs +4 -4
  83. package/esm2020/lib/dropdown/dropdown.service.mjs +3 -3
  84. package/esm2020/lib/element-cover/element-cover.component.mjs +3 -3
  85. package/esm2020/lib/element-cover/element-cover.module.mjs +4 -4
  86. package/esm2020/lib/footer/footer.component.mjs +3 -3
  87. package/esm2020/lib/footer/footer.module.mjs +4 -4
  88. package/esm2020/lib/form/form/form.directive.mjs +3 -3
  89. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +3 -3
  90. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +3 -3
  91. package/esm2020/lib/form/form-check/form-check.component.mjs +3 -3
  92. package/esm2020/lib/form/form-control/form-control.directive.mjs +3 -3
  93. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +3 -3
  94. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +3 -3
  95. package/esm2020/lib/form/form-label/form-label.directive.mjs +3 -3
  96. package/esm2020/lib/form/form-select/form-select.directive.mjs +3 -3
  97. package/esm2020/lib/form/form-text/form-text.directive.mjs +3 -3
  98. package/esm2020/lib/form/form.module.mjs +4 -4
  99. package/esm2020/lib/form/input-group/input-group.component.mjs +3 -3
  100. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +3 -3
  101. package/esm2020/lib/grid/col.component.mjs +3 -3
  102. package/esm2020/lib/grid/col.directive.mjs +3 -3
  103. package/esm2020/lib/grid/container.component.mjs +3 -3
  104. package/esm2020/lib/grid/grid.module.mjs +4 -4
  105. package/esm2020/lib/grid/gutter.directive.mjs +3 -3
  106. package/esm2020/lib/grid/row.component.mjs +3 -3
  107. package/esm2020/lib/grid/row.directive.mjs +3 -3
  108. package/esm2020/lib/header/header/header.component.mjs +3 -3
  109. package/esm2020/lib/header/header-brand/header-brand.component.mjs +3 -3
  110. package/esm2020/lib/header/header-divider/header-divider.component.mjs +3 -3
  111. package/esm2020/lib/header/header-nav/header-nav.component.mjs +3 -3
  112. package/esm2020/lib/header/header-text/header-text.component.mjs +3 -3
  113. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +3 -3
  114. package/esm2020/lib/header/header.module.mjs +4 -4
  115. package/esm2020/lib/image/img.directive.mjs +3 -3
  116. package/esm2020/lib/image/img.module.mjs +4 -4
  117. package/esm2020/lib/list-group/list-group-item.directive.mjs +3 -3
  118. package/esm2020/lib/list-group/list-group.directive.mjs +3 -3
  119. package/esm2020/lib/list-group/list-group.module.mjs +4 -4
  120. package/esm2020/lib/loading-button/loading-button.component.mjs +3 -3
  121. package/esm2020/lib/loading-button/loading-button.module.mjs +4 -4
  122. package/esm2020/lib/modal/modal/modal.component.mjs +3 -3
  123. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +3 -3
  124. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +3 -3
  125. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +3 -3
  126. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +3 -3
  127. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +3 -3
  128. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +3 -3
  129. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +3 -3
  130. package/esm2020/lib/modal/modal.module.mjs +4 -4
  131. package/esm2020/lib/modal/modal.service.mjs +3 -3
  132. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +3 -3
  133. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +3 -3
  134. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +3 -3
  135. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +3 -3
  136. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +3 -3
  137. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +3 -3
  138. package/esm2020/lib/multi-select/multi-select.module.mjs +4 -4
  139. package/esm2020/lib/multi-select/multi-select.service.mjs +3 -3
  140. package/esm2020/lib/nav/nav-item.component.mjs +3 -3
  141. package/esm2020/lib/nav/nav-link.directive.mjs +3 -3
  142. package/esm2020/lib/nav/nav.component.mjs +3 -3
  143. package/esm2020/lib/nav/nav.module.mjs +4 -4
  144. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +3 -3
  145. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +3 -3
  146. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +3 -3
  147. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +3 -3
  148. package/esm2020/lib/navbar/navbar.component.mjs +3 -3
  149. package/esm2020/lib/navbar/navbar.module.mjs +4 -4
  150. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +3 -3
  151. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +3 -3
  152. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +3 -3
  153. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +3 -3
  154. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +3 -3
  155. package/esm2020/lib/offcanvas/offcanvas.module.mjs +4 -4
  156. package/esm2020/lib/offcanvas/offcanvas.service.mjs +3 -3
  157. package/esm2020/lib/pagination/page-item/page-item.component.mjs +3 -3
  158. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +3 -3
  159. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +3 -3
  160. package/esm2020/lib/pagination/pagination/pagination.component.mjs +3 -3
  161. package/esm2020/lib/pagination/pagination.module.mjs +4 -4
  162. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +3 -3
  163. package/esm2020/lib/placeholder/placeholder.directive.mjs +3 -3
  164. package/esm2020/lib/placeholder/placeholder.module.mjs +4 -4
  165. package/esm2020/lib/popover/popover/popover.component.mjs +3 -3
  166. package/esm2020/lib/popover/popover.directive.mjs +3 -3
  167. package/esm2020/lib/popover/popover.module.mjs +4 -4
  168. package/esm2020/lib/progress/progress-bar.component.mjs +3 -3
  169. package/esm2020/lib/progress/progress.component.mjs +3 -3
  170. package/esm2020/lib/progress/progress.module.mjs +4 -4
  171. package/esm2020/lib/services/class-toggle.service.mjs +3 -3
  172. package/esm2020/lib/services/intersection.service.mjs +3 -3
  173. package/esm2020/lib/services/listeners.service.mjs +3 -3
  174. package/esm2020/lib/shared/html-attr.directive.mjs +3 -3
  175. package/esm2020/lib/shared/shared.module.mjs +4 -4
  176. package/esm2020/lib/shared/template-id.directive.mjs +3 -3
  177. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +3 -3
  178. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +3 -3
  179. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  180. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
  181. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  182. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +3 -3
  183. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +3 -3
  184. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +3 -3
  185. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +3 -3
  186. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  187. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +6 -6
  188. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +3 -3
  189. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +3 -3
  190. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +6 -6
  191. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  192. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +3 -3
  193. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +3 -3
  194. package/esm2020/lib/sidebar/sidebar.module.mjs +4 -4
  195. package/esm2020/lib/sidebar/sidebar.service.mjs +3 -3
  196. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +3 -3
  197. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +4 -4
  198. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +3 -3
  199. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +3 -3
  200. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +3 -3
  201. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +3 -3
  202. package/esm2020/lib/smart-table/smart-table.module.mjs +4 -4
  203. package/esm2020/lib/spinner/spinner.component.mjs +3 -3
  204. package/esm2020/lib/spinner/spinner.module.mjs +4 -4
  205. package/esm2020/lib/table/table-active.directive.mjs +3 -3
  206. package/esm2020/lib/table/table-color.directive.mjs +3 -3
  207. package/esm2020/lib/table/table.directive.mjs +3 -3
  208. package/esm2020/lib/table/table.module.mjs +4 -4
  209. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +3 -3
  210. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +3 -3
  211. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +3 -3
  212. package/esm2020/lib/tabs/tab.service.mjs +3 -3
  213. package/esm2020/lib/tabs/tabs.module.mjs +4 -4
  214. package/esm2020/lib/time-picker/index.mjs +2 -0
  215. package/esm2020/lib/time-picker/public_api.mjs +3 -0
  216. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -0
  217. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -0
  218. package/esm2020/lib/time-picker/time-picker.component.mjs +434 -0
  219. package/esm2020/lib/time-picker/time-picker.module.mjs +50 -0
  220. package/esm2020/lib/time-picker/time.utils.mjs +645 -0
  221. package/esm2020/lib/toast/toast/toast.component.mjs +3 -3
  222. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +3 -3
  223. package/esm2020/lib/toast/toast-close.directive.mjs +3 -3
  224. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +3 -3
  225. package/esm2020/lib/toast/toast.module.mjs +4 -4
  226. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +3 -3
  227. package/esm2020/lib/toast/toaster/toaster.component.mjs +3 -3
  228. package/esm2020/lib/toast/toaster/toaster.service.mjs +3 -3
  229. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +3 -3
  230. package/esm2020/lib/tooltip/tooltip.directive.mjs +3 -3
  231. package/esm2020/lib/tooltip/tooltip.module.mjs +4 -4
  232. package/esm2020/lib/utilities/align.directive.mjs +3 -3
  233. package/esm2020/lib/utilities/bg-color.directive.mjs +3 -3
  234. package/esm2020/lib/utilities/border.directive.mjs +3 -3
  235. package/esm2020/lib/utilities/rounded.directive.mjs +3 -3
  236. package/esm2020/lib/utilities/text-color.directive.mjs +3 -3
  237. package/esm2020/lib/utilities/utilities.module.mjs +4 -4
  238. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +3 -3
  239. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +3 -3
  240. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +3 -3
  241. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +3 -3
  242. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +3 -3
  243. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +3 -3
  244. package/esm2020/lib/widget/widget.module.mjs +4 -4
  245. package/esm2020/public-api.mjs +4 -1
  246. package/fesm2015/coreui-angular-pro.mjs +5009 -1813
  247. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  248. package/fesm2020/coreui-angular-pro.mjs +4989 -1828
  249. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  250. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +7 -0
  251. package/lib/calendar/calendar/calendar.component.d.ts +155 -0
  252. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +15 -0
  253. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +7 -0
  254. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +7 -0
  255. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +29 -0
  256. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +8 -0
  257. package/lib/calendar/calendar-month/calendar-month.component.d.ts +121 -0
  258. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +8 -0
  259. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +30 -0
  260. package/lib/calendar/calendar.module.d.ts +18 -0
  261. package/lib/calendar/calendar.service.d.ts +33 -0
  262. package/lib/calendar/calendar.utils.d.ts +26 -0
  263. package/lib/calendar/index.d.ts +1 -0
  264. package/lib/calendar/public_api.d.ts +4 -0
  265. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +235 -0
  266. package/lib/date-range-picker/date-range-picker.module.d.ts +16 -0
  267. package/lib/date-range-picker/end-date.directive.d.ts +8 -0
  268. package/lib/date-range-picker/index.d.ts +1 -0
  269. package/lib/date-range-picker/public_api.d.ts +2 -0
  270. package/lib/date-range-picker/start-date.directive.d.ts +8 -0
  271. package/lib/time-picker/index.d.ts +1 -0
  272. package/lib/time-picker/public_api.d.ts +2 -0
  273. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -0
  274. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -0
  275. package/lib/time-picker/time-picker.component.d.ts +169 -0
  276. package/lib/time-picker/time-picker.module.d.ts +14 -0
  277. package/lib/time-picker/time.utils.d.ts +57 -0
  278. package/package.json +8 -2
  279. package/public-api.d.ts +3 -0
@@ -0,0 +1,645 @@
1
+ import { isValid } from 'date-fns';
2
+ export const getSupportedLocale = (locale = 'default') => {
3
+ let supportedLocale;
4
+ try {
5
+ supportedLocale = Intl.DateTimeFormat.supportedLocalesOf(locale).length ? locale : 'default';
6
+ }
7
+ catch (e) {
8
+ supportedLocale = 'default';
9
+ }
10
+ return supportedLocale;
11
+ };
12
+ export const isHour12 = (locale = 'default') => {
13
+ const supportedLocale = getSupportedLocale(locale);
14
+ const hour12 = Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).resolvedOptions().hour12;
15
+ return hour12 ?? false;
16
+ };
17
+ export const convert12hTo24h = (abbr, hour) => {
18
+ if (abbr === 'am' && hour === 12) {
19
+ return 0;
20
+ }
21
+ if (abbr === 'am') {
22
+ return hour;
23
+ }
24
+ if (abbr === 'pm' && hour === 12) {
25
+ return 12;
26
+ }
27
+ return hour + 12;
28
+ };
29
+ export const convert24hTo12h = (hour) => hour % 12 || 12;
30
+ export const convertTimeToDate = (time) => time ? (time instanceof Date ? new Date(time) : new Date(`1970-01-01 ${time}`)) : null;
31
+ // export const getAmPm = (date: Date, locale: string) => {
32
+ // if (date.toLocaleTimeString(locale).includes('AM')) {
33
+ // return 'am'
34
+ // }
35
+ // if (date.toLocaleTimeString(locale).includes('PM')) {
36
+ // return 'pm'
37
+ // }
38
+ // return date.getHours() >= 12 ? 'pm' : 'am'
39
+ // }
40
+ export const getAmPm = (date, locale, options = {}) => {
41
+ const dayPeriods = getDayPeriods('en-US', options);
42
+ const time = new Intl.DateTimeFormat('en-US', { timeStyle: "short", hour12: true }).format(date);
43
+ const dayPeriod = dayPeriods.find(element => time.includes(element.label));
44
+ return (dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));
45
+ };
46
+ export const isAm = (date) => {
47
+ return date.getHours() < 12;
48
+ };
49
+ export const isPm = (date) => {
50
+ return date.getHours() > 11;
51
+ };
52
+ export const isValidTimeZone = (timeZone) => {
53
+ try {
54
+ if (timeZone === undefined) {
55
+ return false;
56
+ }
57
+ if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {
58
+ throw new Error('Time zones not supported.');
59
+ }
60
+ if (typeof timeZone !== 'string') {
61
+ throw new Error(`Invalid timeZone type specified: ${timeZone}`);
62
+ }
63
+ try {
64
+ // throws an error if timezone is not valid
65
+ Intl.DateTimeFormat(undefined, { timeZone: timeZone });
66
+ }
67
+ catch (error) {
68
+ throw new Error(`Invalid timeZone string specified: ${timeZone}`);
69
+ }
70
+ return true;
71
+ }
72
+ catch (error) {
73
+ console.warn(error);
74
+ return false;
75
+ }
76
+ };
77
+ export const getListOfHours = (locale, options = {}) => {
78
+ const hour12 = isHour12(locale);
79
+ const time = new Date(0);
80
+ return Array.from({ length: 24 }, (_, i) => {
81
+ time.setHours(i);
82
+ const dayPeriod = getAmPm(time, locale);
83
+ return {
84
+ value: i,
85
+ dayPeriod: dayPeriod,
86
+ label: time.toLocaleTimeString(locale, {
87
+ hour: '2-digit',
88
+ hour12: hour12,
89
+ minute: '2-digit',
90
+ second: '2-digit',
91
+ }).split(':')[0],
92
+ };
93
+ });
94
+ };
95
+ export const getListOfMinutes = (locale, options = {}, valueAsString = false) => {
96
+ const d = new Date(0);
97
+ return Array.from({ length: 60 }, (_, i) => {
98
+ d.setMinutes(i);
99
+ return {
100
+ value: i,
101
+ // value: valueAsString ? i.toString() : i,
102
+ label: d.toLocaleTimeString(locale, {
103
+ // ...options,
104
+ hour: '2-digit',
105
+ hour12: false,
106
+ minute: '2-digit',
107
+ second: '2-digit',
108
+ }).split(':')[1],
109
+ };
110
+ });
111
+ };
112
+ export const getListOfSeconds = (locale, options = {}, valueAsString = false) => Array.from({ length: 60 }, (_, i) => {
113
+ const d = new Date(0);
114
+ d.setSeconds(i);
115
+ return {
116
+ value: i,
117
+ // value: valueAsString ? i.toString() : i,
118
+ label: d.toLocaleTimeString(locale, {
119
+ // ...options,
120
+ hour: '2-digit',
121
+ hour12: false,
122
+ minute: '2-digit',
123
+ second: '2-digit',
124
+ }).split(':')[2],
125
+ };
126
+ });
127
+ export const getSelectedHour = (date, locale) => date instanceof Date ? (isHour12(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
128
+ export const getSelectedMinutes = (date) => (date ? date.getMinutes() : '');
129
+ export const getSelectedSeconds = (date) => (date ? date.getSeconds() : '');
130
+ // export const isAmPm = (locale: string) =>
131
+ // ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))
132
+ export const isAmPm = (locale = 'default') => {
133
+ const supportedLocale = getSupportedLocale(locale);
134
+ const date = new Date();
135
+ const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: "short" }).format(date);
136
+ const isAmPm = time.match(/(?:\p{L}\p{M}\p{P}*)+|(?:\p{L}\p{P}*)+/gu) ?? [];
137
+ return isAmPm.length > 0;
138
+ };
139
+ export const isValidTime = (time) => {
140
+ if (typeof time === 'string') {
141
+ return isValid(time) || isValid(new Date(`1970-01-01 ${time}`));
142
+ }
143
+ return isValid(time);
144
+ // const d = new Date(`1970-01-01 ${time}`)
145
+ // return d instanceof Date && d.getTime()
146
+ };
147
+ // export const _getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {
148
+ // const supportedLocale = getSupportedLocale(locale);
149
+ //
150
+ // const dayPeriods = { am: 'am', pm: 'pm' };
151
+ //
152
+ // const hour12 = isHour12(supportedLocale);
153
+ // if (!hour12) {
154
+ // return dayPeriods;
155
+ // }
156
+ //
157
+ // const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
158
+ // const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
159
+ //
160
+ // const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
161
+ // dayPeriods.am = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
162
+ // dayPeriods.pm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm'
163
+ // return dayPeriods;
164
+ // };
165
+ export const getDayPeriods = (locale = 'default', options = {}) => {
166
+ const supportedLocale = getSupportedLocale(locale);
167
+ const dayPeriods = [
168
+ { value: 'am', label: 'am' },
169
+ { value: 'pm', label: 'pm' },
170
+ ];
171
+ const hour12 = isHour12(supportedLocale);
172
+ if (!hour12) {
173
+ return dayPeriods;
174
+ }
175
+ const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
176
+ const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
177
+ const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
178
+ const formattedAm = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
179
+ const formattedPm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm';
180
+ dayPeriods.forEach((element, index, dayPeriods) => {
181
+ dayPeriods[index].label = element.value === 'am' ? (formattedAm ?? 'am') : (formattedPm ?? 'pm');
182
+ });
183
+ return dayPeriods;
184
+ };
185
+ // testing
186
+ // const langs = [
187
+ // ['Abkhazian', 'ab'],
188
+ // ['Afar', 'aa'],
189
+ // ['Afrikaans', 'af'],
190
+ // ['Akan', 'ak'],
191
+ // ['Albanian', 'sq'],
192
+ // ['Amharic', 'am'],
193
+ // ['Arabic', 'ar'],
194
+ // ['Aragonese', 'an'],
195
+ // ['Argentina', 'es-ar'],
196
+ // ['Armenian', 'hy'],
197
+ // ['Assamese', 'as'],
198
+ // ['Avaric', 'av'],
199
+ // ['Avestan', 'ae'],
200
+ // ['Aymara', 'ay'],
201
+ // ['Azerbaijani', 'az'],
202
+ // ['Bambara', 'bm'],
203
+ // ['Bashkir', 'ba'],
204
+ // ['Basque', 'eu'],
205
+ // ['Belarusian', 'be'],
206
+ // ['Bengali (Bangla)', 'bn'],
207
+ // ['Bihari', 'bh'],
208
+ // ['Bislama', 'bi'],
209
+ // ['Bosnian', 'bs'],
210
+ // ['Breton', 'br'],
211
+ // ['Bulgarian', 'bg'],
212
+ // ['Burmese', 'my'],
213
+ // ['Catalan', 'ca'],
214
+ // ['Chamorro', 'ch'],
215
+ // ['Chechen', 'ce'],
216
+ // ['Chichewa, Chewa, Nyanja', 'ny'],
217
+ // ['Chinese', 'zh'],
218
+ // ['Chinese (Simplified)', 'zh-Hans'],
219
+ // ['Chinese (Traditional)', 'zh-Hant'],
220
+ // ['Chuvash', 'cv'],
221
+ // ['Cornish', 'kw'],
222
+ // ['Corsican', 'co'],
223
+ // ['Cree', 'cr'],
224
+ // ['Croatian', 'hr'],
225
+ // ['Czech', 'cs'],
226
+ // ['Danish', 'da'],
227
+ // ['Divehi, Dhivehi, Maldivian', 'dv'],
228
+ // ['Dutch', 'nl'],
229
+ // ['Dzongkha', 'dz'],
230
+ // ['English', 'en'],
231
+ // ['Esperanto', 'eo'],
232
+ // ['Estonian', 'et'],
233
+ // ['Ewe', 'ee'],
234
+ // ['Faroese', 'fo'],
235
+ // ['Fijian', 'fj'],
236
+ // ['Finnish', 'fi'],
237
+ // ['French', 'fr'],
238
+ // ['Fula, Fulah, Pulaar, Pular', 'ff'],
239
+ // ['Galician', 'gl'],
240
+ // ['Gaelic (Scottish)', 'gd'],
241
+ // ['Gaelic (Manx)', 'gv'],
242
+ // ['Georgian', 'ka'],
243
+ // ['German', 'de'],
244
+ // ['Greek', 'el'],
245
+ // ['Greenlandic', 'kl'],
246
+ // ['Guarani', 'gn'],
247
+ // ['Gujarati', 'gu'],
248
+ // ['Haitian Creole', 'ht'],
249
+ // ['Hausa', 'ha'],
250
+ // ['Hebrew', 'he'],
251
+ // ['Herero', 'hz'],
252
+ // ['Hindi', 'hi'],
253
+ // ['Hiri Motu', 'ho'],
254
+ // ['Hungarian', 'hu'],
255
+ // ['Icelandic', 'is'],
256
+ // ['Ido', 'io'],
257
+ // ['Igbo', 'ig'],
258
+ // ['Indonesian', 'id', 'in'],
259
+ // ['Interlingua', 'ia'],
260
+ // ['Interlingue', 'ie'],
261
+ // ['Inuktitut', 'iu'],
262
+ // ['Inupiak', 'ik'],
263
+ // ['Irish', 'ga'],
264
+ // ['Italian', 'it'],
265
+ // ['Japanese', 'ja'],
266
+ // ['Javanese', 'jv'],
267
+ // ['Kalaallisut, Greenlandic', 'kl'],
268
+ // ['Kannada', 'kn'],
269
+ // ['Kanuri', 'kr'],
270
+ // ['Kashmiri', 'ks'],
271
+ // ['Kazakh', 'kk'],
272
+ // ['Khmer', 'km'],
273
+ // ['Kikuyu', 'ki'],
274
+ // ['Kinyarwanda (Rwanda)', 'rw'],
275
+ // ['Kirundi', 'rn'],
276
+ // ['Kyrgyz', 'ky'],
277
+ // ['Komi', 'kv'],
278
+ // ['Kongo', 'kg'],
279
+ // ['Korean', 'ko'],
280
+ // ['Kurdish', 'ku'],
281
+ // ['Kwanyama', 'kj'],
282
+ // ['Lao', 'lo'],
283
+ // ['Latin', 'la'],
284
+ // ['Latvian (Lettish)', 'lv'],
285
+ // ['Limburgish (Limburger)', 'li'],
286
+ // ['Lingala', 'ln'],
287
+ // ['Lithuanian', 'lt'],
288
+ // ['Luga-Katanga', 'lu'],
289
+ // ['Luganda, Ganda', 'lg'],
290
+ // ['Luxembourgish', 'lb'],
291
+ // ['Manx', 'gv'],
292
+ // ['Macedonian', 'mk'],
293
+ // ['Malagasy', 'mg'],
294
+ // ['Malay', 'ms'],
295
+ // ['Malayalam', 'ml'],
296
+ // ['Maltese', 'mt'],
297
+ // ['Maori', 'mi'],
298
+ // ['Marathi', 'mr'],
299
+ // ['Marshallese', 'mh'],
300
+ // ['Moldavian', 'mo'],
301
+ // ['Mongolian', 'mn'],
302
+ // ['Nauru', 'na'],
303
+ // ['Navajo', 'nv'],
304
+ // ['Ndonga', 'ng'],
305
+ // ['Northern Ndebele', 'nd'],
306
+ // ['Nepali', 'ne'],
307
+ // ['Norwegian', 'no'],
308
+ // ['Norwegian bokmål', 'nb'],
309
+ // ['Norwegian nynorsk', 'nn'],
310
+ // ['Nuosu', 'ii'],
311
+ // ['Occitan', 'oc'],
312
+ // ['Ojibwe', 'oj'],
313
+ // ['Old Church Slavonic, Old Bulgarian', 'cu'],
314
+ // ['Oriya', 'or'],
315
+ // ['Oromo (Afaan Oromo)', 'om'],
316
+ // ['Ossetian', 'os'],
317
+ // ['Pāli', 'pi'],
318
+ // ['Pashto, Pushto', 'ps'],
319
+ // ['Persian (Farsi)', 'fa'],
320
+ // ['Polish', 'pl'],
321
+ // ['Portuguese', 'pt'],
322
+ // ['Punjabi (Eastern)', 'pa'],
323
+ // ['Quechua', 'qu'],
324
+ // ['Romansh', 'rm'],
325
+ // ['Romanian', 'ro'],
326
+ // ['Russian', 'ru'],
327
+ // ['Sami', 'se'],
328
+ // ['Samoan', 'sm'],
329
+ // ['Sango', 'sg'],
330
+ // ['Sanskrit', 'sa'],
331
+ // ['Serbian', 'sr'],
332
+ // ['Serbo-Croatian', 'sh'],
333
+ // ['Sesotho', 'st'],
334
+ // ['Setswana', 'tn'],
335
+ // ['Shona', 'sn'],
336
+ // ['Sichuan Yi', 'ii'],
337
+ // ['Sindhi', 'sd'],
338
+ // ['Sinhalese', 'si'],
339
+ // ['Siswati', 'ss'],
340
+ // ['Slovak', 'sk'],
341
+ // ['Slovenian', 'sl'],
342
+ // ['Somali', 'so'],
343
+ // ['Southern Ndebele', 'nr'],
344
+ // ['Spanish', 'es'],
345
+ // ['Sundanese', 'su'],
346
+ // ['Swahili (Kiswahili)', 'sw'],
347
+ // ['Swati', 'ss'],
348
+ // ['Swedish', 'sv'],
349
+ // ['Tagalog', 'tl'],
350
+ // ['Tahitian', 'ty'],
351
+ // ['Tajik', 'tg'],
352
+ // ['Tamil', 'ta'],
353
+ // ['Tatar', 'tt'],
354
+ // ['Telugu', 'te'],
355
+ // ['Thai', 'th'],
356
+ // ['Tibetan', 'bo'],
357
+ // ['Tigrinya', 'ti'],
358
+ // ['Tonga', 'to'],
359
+ // ['Tsonga', 'ts'],
360
+ // ['Turkish', 'tr'],
361
+ // ['Turkmen', 'tk'],
362
+ // ['Twi', 'tw'],
363
+ // ['Uyghur', 'ug'],
364
+ // ['Ukrainian', 'uk'],
365
+ // ['Urdu', 'ur'],
366
+ // ['Uzbek', 'uz'],
367
+ // ['Venda', 've'],
368
+ // ['Vietnamese', 'vi'],
369
+ // ['Volapük', 'vo'],
370
+ // ['Wallon', 'wa'],
371
+ // ['Welsh', 'cy'],
372
+ // ['Wolof', 'wo'],
373
+ // ['Western Frisian', 'fy'],
374
+ // ['Xhosa', 'xh'],
375
+ // ['Yiddish', 'yi', 'ji'],
376
+ // ['Yoruba', 'yo'],
377
+ // ['Zhuang, Chuang', 'za'],
378
+ // ['Zulu', 'zu'],
379
+ // ]
380
+ //
381
+ // langs.forEach(lang => {const period = getDayPeriods(lang[1]); if (period.am === 'AM') return; console.log(lang[1], period )})
382
+ // Chrome / Opera
383
+ // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
384
+ // Arabic ar {am: 'ص', pm: 'م'}
385
+ // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
386
+ // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
387
+ // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
388
+ // Hindi hi {am: 'am', pm: 'pm'}
389
+ // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
390
+ // Korean ko {am: '오전', pm: '오후'}
391
+ // Malay ms {am: 'PG', pm: 'PTG'}
392
+ // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
393
+ // Edge Chromium
394
+ // Albanian sq {am: 'e paradites', pm: 'e pasdites'}
395
+ // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
396
+ // Arabic ar {am: 'ص', pm: 'م'}
397
+ // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
398
+ // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
399
+ // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
400
+ // Hindi hi {am: 'am', pm: 'pm'}
401
+ // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
402
+ // Korean ko {am: '오전', pm: '오후'}
403
+ // Malay ms {am: 'PG', pm: 'PTG'}
404
+ // Punjabi (Eastern) pa {am: 'ਪੂ.ਦੁ.', pm: 'ਬਾ.ਦੁ.'}
405
+ // Sindhi sd {am: 'صبح، منجهند', pm: 'منجهند، شام'}
406
+ // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
407
+ // Firefox
408
+ // Akan ak { am: "AN", pm: "EW" }
409
+ // Albanian sq { am: "e paradites", pm: "e pasdites" }
410
+ // Amharic am { am: "ጥዋት", pm: "ከሰዓት" }
411
+ // Arabic ar { am: "ص", pm: "م" }
412
+ // Assamese as { am: "পূৰ্বাহ্ন", pm: "অপৰাহ্ন" }
413
+ // Bulgarian bg { am: "пр.об.", pm: "сл.об." }
414
+ // Chinese (Traditional) zh-Hant { am: "上午", pm: "下午" }
415
+ // Dzongkha dz { am: "སྔ་ཆ་", pm: "ཕྱི་ཆ་" }
416
+ // Ewe ee { am: "ŋdi", pm: "ɣetrɔ" }
417
+ // Greek el { am: "π.μ.", pm: "μ.μ." }
418
+ // Hindi hi { am: "am", pm: "pm" }
419
+ // Kannada kn { am: "ಪೂರ್ವಾಹ್ನ", pm: "ಅಪರಾಹ್ನ" }
420
+ // Korean ko { am: "오전", pm: "오후" }
421
+ // Malay ms { am: "PG", pm: "PTG" }
422
+ // Oromo (Afaan Oromo) om { am: "WD", pm: "WB" }
423
+ // Punjabi (Eastern) pa { am: "ਪੂ.ਦੁ.", pm: "ਬਾ.ਦੁ." }
424
+ // Sanskrit sa { am: "पूर्वाह्न", pm: "अपराह्न" }
425
+ // Sindhi sd { am: "صبح، منجهند", pm: "منجهند، شام" }
426
+ // Somali so { am: "GH", pm: "GD" }
427
+ // Tamil ta { am: "முற்பகல்", pm: "பிற்பகல்" }
428
+ // Tigrinya ti { am: "ቅ.ቀ.", pm: "ድ.ቀ." }
429
+ // Tonga to { am: "hengihengi", pm: "efiafi" }
430
+ // Twi tw { am: "AN", pm: "EW" }
431
+ // const formats = {
432
+ // "ar-SA" : "dd/MM/yy",
433
+ // "bg-BG" : "dd.M.yyyy",
434
+ // "ca-ES" : "dd/MM/yyyy",
435
+ // "zh-TW" : "yyyy/M/d",
436
+ // "cs-CZ" : "d.M.yyyy",
437
+ // "da-DK" : "dd-MM-yyyy",
438
+ // "de-DE" : "dd.MM.yyyy",
439
+ // "el-GR" : "d/M/yyyy",
440
+ // "en-US" : "M/d/yyyy",
441
+ // "fi-FI" : "d.M.yyyy",
442
+ // "fr-FR" : "dd/MM/yyyy",
443
+ // "he-IL" : "dd/MM/yyyy",
444
+ // "hu-HU" : "yyyy. MM. dd.",
445
+ // "is-IS" : "d.M.yyyy",
446
+ // "it-IT" : "dd/MM/yyyy",
447
+ // "ja-JP" : "yyyy/MM/dd",
448
+ // "ko-KR" : "yyyy-MM-dd",
449
+ // "nl-NL" : "d-M-yyyy",
450
+ // "nb-NO" : "dd.MM.yyyy",
451
+ // "pl-PL" : "yyyy-MM-dd",
452
+ // "pt-BR" : "d/M/yyyy",
453
+ // "ro-RO" : "dd.MM.yyyy",
454
+ // "ru-RU" : "dd.MM.yyyy",
455
+ // "hr-HR" : "d.M.yyyy",
456
+ // "sk-SK" : "d. M. yyyy",
457
+ // "sq-AL" : "yyyy-MM-dd",
458
+ // "sv-SE" : "yyyy-MM-dd",
459
+ // "th-TH" : "d/M/yyyy",
460
+ // "tr-TR" : "dd.MM.yyyy",
461
+ // "ur-PK" : "dd/MM/yyyy",
462
+ // "id-ID" : "dd/MM/yyyy",
463
+ // "uk-UA" : "dd.MM.yyyy",
464
+ // "be-BY" : "dd.MM.yyyy",
465
+ // "sl-SI" : "d.M.yyyy",
466
+ // "et-EE" : "d.MM.yyyy",
467
+ // "lv-LV" : "yyyy.MM.dd.",
468
+ // "lt-LT" : "yyyy.MM.dd",
469
+ // "fa-IR" : "MM/dd/yyyy",
470
+ // "vi-VN" : "dd/MM/yyyy",
471
+ // "hy-AM" : "dd.MM.yyyy",
472
+ // "az-Latn-AZ" : "dd.MM.yyyy",
473
+ // "eu-ES" : "yyyy/MM/dd",
474
+ // "mk-MK" : "dd.MM.yyyy",
475
+ // "af-ZA" : "yyyy/MM/dd",
476
+ // "ka-GE" : "dd.MM.yyyy",
477
+ // "fo-FO" : "dd-MM-yyyy",
478
+ // "hi-IN" : "dd-MM-yyyy",
479
+ // "ms-MY" : "dd/MM/yyyy",
480
+ // "kk-KZ" : "dd.MM.yyyy",
481
+ // "ky-KG" : "dd.MM.yy",
482
+ // "sw-KE" : "M/d/yyyy",
483
+ // "uz-Latn-UZ" : "dd/MM yyyy",
484
+ // "tt-RU" : "dd.MM.yyyy",
485
+ // "pa-IN" : "dd-MM-yy",
486
+ // "gu-IN" : "dd-MM-yy",
487
+ // "ta-IN" : "dd-MM-yyyy",
488
+ // "te-IN" : "dd-MM-yy",
489
+ // "kn-IN" : "dd-MM-yy",
490
+ // "mr-IN" : "dd-MM-yyyy",
491
+ // "sa-IN" : "dd-MM-yyyy",
492
+ // "mn-MN" : "yy.MM.dd",
493
+ // "gl-ES" : "dd/MM/yy",
494
+ // "kok-IN" : "dd-MM-yyyy",
495
+ // "syr-SY" : "dd/MM/yyyy",
496
+ // "dv-MV" : "dd/MM/yy",
497
+ // "ar-IQ" : "dd/MM/yyyy",
498
+ // "zh-CN" : "yyyy/M/d",
499
+ // "de-CH" : "dd.MM.yyyy",
500
+ // "en-GB" : "dd/MM/yyyy",
501
+ // "es-MX" : "dd/MM/yyyy",
502
+ // "fr-BE" : "d/MM/yyyy",
503
+ // "it-CH" : "dd.MM.yyyy",
504
+ // "nl-BE" : "d/MM/yyyy",
505
+ // "nn-NO" : "dd.MM.yyyy",
506
+ // "pt-PT" : "dd-MM-yyyy",
507
+ // "sr-Latn-CS" : "d.M.yyyy",
508
+ // "sv-FI" : "d.M.yyyy",
509
+ // "az-Cyrl-AZ" : "dd.MM.yyyy",
510
+ // "ms-BN" : "dd/MM/yyyy",
511
+ // "uz-Cyrl-UZ" : "dd.MM.yyyy",
512
+ // "ar-EG" : "dd/MM/yyyy",
513
+ // "zh-HK" : "d/M/yyyy",
514
+ // "de-AT" : "dd.MM.yyyy",
515
+ // "en-AU" : "d/MM/yyyy",
516
+ // "es-ES" : "dd/MM/yyyy",
517
+ // "fr-CA" : "yyyy-MM-dd",
518
+ // "sr-Cyrl-CS" : "d.M.yyyy",
519
+ // "ar-LY" : "dd/MM/yyyy",
520
+ // "zh-SG" : "d/M/yyyy",
521
+ // "de-LU" : "dd.MM.yyyy",
522
+ // "en-CA" : "dd/MM/yyyy",
523
+ // "es-GT" : "dd/MM/yyyy",
524
+ // "fr-CH" : "dd.MM.yyyy",
525
+ // "ar-DZ" : "dd-MM-yyyy",
526
+ // "zh-MO" : "d/M/yyyy",
527
+ // "de-LI" : "dd.MM.yyyy",
528
+ // "en-NZ" : "d/MM/yyyy",
529
+ // "es-CR" : "dd/MM/yyyy",
530
+ // "fr-LU" : "dd/MM/yyyy",
531
+ // "ar-MA" : "dd-MM-yyyy",
532
+ // "en-IE" : "dd/MM/yyyy",
533
+ // "es-PA" : "MM/dd/yyyy",
534
+ // "fr-MC" : "dd/MM/yyyy",
535
+ // "ar-TN" : "dd-MM-yyyy",
536
+ // "en-ZA" : "yyyy/MM/dd",
537
+ // "es-DO" : "dd/MM/yyyy",
538
+ // "ar-OM" : "dd/MM/yyyy",
539
+ // "en-JM" : "dd/MM/yyyy",
540
+ // "es-VE" : "dd/MM/yyyy",
541
+ // "ar-YE" : "dd/MM/yyyy",
542
+ // "en-029" : "MM/dd/yyyy",
543
+ // "es-CO" : "dd/MM/yyyy",
544
+ // "ar-SY" : "dd/MM/yyyy",
545
+ // "en-BZ" : "dd/MM/yyyy",
546
+ // "es-PE" : "dd/MM/yyyy",
547
+ // "ar-JO" : "dd/MM/yyyy",
548
+ // "en-TT" : "dd/MM/yyyy",
549
+ // "es-AR" : "dd/MM/yyyy",
550
+ // "ar-LB" : "dd/MM/yyyy",
551
+ // "en-ZW" : "M/d/yyyy",
552
+ // "es-EC" : "dd/MM/yyyy",
553
+ // "ar-KW" : "dd/MM/yyyy",
554
+ // "en-PH" : "M/d/yyyy",
555
+ // "es-CL" : "dd-MM-yyyy",
556
+ // "ar-AE" : "dd/MM/yyyy",
557
+ // "es-UY" : "dd/MM/yyyy",
558
+ // "ar-BH" : "dd/MM/yyyy",
559
+ // "es-PY" : "dd/MM/yyyy",
560
+ // "ar-QA" : "dd/MM/yyyy",
561
+ // "es-BO" : "dd/MM/yyyy",
562
+ // "es-SV" : "dd/MM/yyyy",
563
+ // "es-HN" : "dd/MM/yyyy",
564
+ // "es-NI" : "dd/MM/yyyy",
565
+ // "es-PR" : "dd/MM/yyyy",
566
+ // "am-ET" : "d/M/yyyy",
567
+ // "tzm-Latn-DZ" : "dd-MM-yyyy",
568
+ // "iu-Latn-CA" : "d/MM/yyyy",
569
+ // "sma-NO" : "dd.MM.yyyy",
570
+ // "mn-Mong-CN" : "yyyy/M/d",
571
+ // "gd-GB" : "dd/MM/yyyy",
572
+ // "en-MY" : "d/M/yyyy",
573
+ // "prs-AF" : "dd/MM/yy",
574
+ // "bn-BD" : "dd-MM-yy",
575
+ // "wo-SN" : "dd/MM/yyyy",
576
+ // "rw-RW" : "M/d/yyyy",
577
+ // "qut-GT" : "dd/MM/yyyy",
578
+ // "sah-RU" : "MM.dd.yyyy",
579
+ // "gsw-FR" : "dd/MM/yyyy",
580
+ // "co-FR" : "dd/MM/yyyy",
581
+ // "oc-FR" : "dd/MM/yyyy",
582
+ // "mi-NZ" : "dd/MM/yyyy",
583
+ // "ga-IE" : "dd/MM/yyyy",
584
+ // "se-SE" : "yyyy-MM-dd",
585
+ // "br-FR" : "dd/MM/yyyy",
586
+ // "smn-FI" : "d.M.yyyy",
587
+ // "moh-CA" : "M/d/yyyy",
588
+ // "arn-CL" : "dd-MM-yyyy",
589
+ // "ii-CN" : "yyyy/M/d",
590
+ // "dsb-DE" : "d. M. yyyy",
591
+ // "ig-NG" : "d/M/yyyy",
592
+ // "kl-GL" : "dd-MM-yyyy",
593
+ // "lb-LU" : "dd/MM/yyyy",
594
+ // "ba-RU" : "dd.MM.yy",
595
+ // "nso-ZA" : "yyyy/MM/dd",
596
+ // "quz-BO" : "dd/MM/yyyy",
597
+ // "yo-NG" : "d/M/yyyy",
598
+ // "ha-Latn-NG" : "d/M/yyyy",
599
+ // "fil-PH" : "M/d/yyyy",
600
+ // "ps-AF" : "dd/MM/yy",
601
+ // "fy-NL" : "d-M-yyyy",
602
+ // "ne-NP" : "M/d/yyyy",
603
+ // "se-NO" : "dd.MM.yyyy",
604
+ // "iu-Cans-CA" : "d/M/yyyy",
605
+ // "sr-Latn-RS" : "d.M.yyyy",
606
+ // "si-LK" : "yyyy-MM-dd",
607
+ // "sr-Cyrl-RS" : "d.M.yyyy",
608
+ // "lo-LA" : "dd/MM/yyyy",
609
+ // "km-KH" : "yyyy-MM-dd",
610
+ // "cy-GB" : "dd/MM/yyyy",
611
+ // "bo-CN" : "yyyy/M/d",
612
+ // "sms-FI" : "d.M.yyyy",
613
+ // "as-IN" : "dd-MM-yyyy",
614
+ // "ml-IN" : "dd-MM-yy",
615
+ // "en-IN" : "dd-MM-yyyy",
616
+ // "or-IN" : "dd-MM-yy",
617
+ // "bn-IN" : "dd-MM-yy",
618
+ // "tk-TM" : "dd.MM.yy",
619
+ // "bs-Latn-BA" : "d.M.yyyy",
620
+ // "mt-MT" : "dd/MM/yyyy",
621
+ // "sr-Cyrl-ME" : "d.M.yyyy",
622
+ // "se-FI" : "d.M.yyyy",
623
+ // "zu-ZA" : "yyyy/MM/dd",
624
+ // "xh-ZA" : "yyyy/MM/dd",
625
+ // "tn-ZA" : "yyyy/MM/dd",
626
+ // "hsb-DE" : "d. M. yyyy",
627
+ // "bs-Cyrl-BA" : "d.M.yyyy",
628
+ // "tg-Cyrl-TJ" : "dd.MM.yy",
629
+ // "sr-Latn-BA" : "d.M.yyyy",
630
+ // "smj-NO" : "dd.MM.yyyy",
631
+ // "rm-CH" : "dd/MM/yyyy",
632
+ // "smj-SE" : "yyyy-MM-dd",
633
+ // "quz-EC" : "dd/MM/yyyy",
634
+ // "quz-PE" : "dd/MM/yyyy",
635
+ // "hr-BA" : "d.M.yyyy.",
636
+ // "sr-Latn-ME" : "d.M.yyyy",
637
+ // "sma-SE" : "yyyy-MM-dd",
638
+ // "en-SG" : "d/M/yyyy",
639
+ // "ug-CN" : "yyyy-M-d",
640
+ // "sr-Cyrl-BA" : "d.M.yyyy",
641
+ // "es-US" : "M/d/yyyy"
642
+ // };
643
+ //
644
+ // Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})
645
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBZ0NuQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBRSxFQUFFO0lBQy9ELElBQUksZUFBdUIsQ0FBQztJQUM1QixJQUFJO1FBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUM5RjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUM3QjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBVyxFQUFFO0lBQzlELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ25HLE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxFQUFFO0lBQ2pFLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxDQUFBO0tBQ1Q7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SUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUN2RyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUV2RyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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O0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsS0FBSztBQUNMLEVBQUU7QUFDRix5SUFBeUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIGxvY2FsZU1hdGNoZXI/OiBcImJlc3QgZml0XCIgfCBcImxvb2t1cFwiIHwgdW5kZWZpbmVkO1xuICB3ZWVrZGF5PzogXCJsb25nXCIgfCBcInNob3J0XCIgfCBcIm5hcnJvd1wiIHwgdW5kZWZpbmVkO1xuICBlcmE/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIHllYXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtb250aD86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIGRheT86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCB1bmRlZmluZWQ7XG4gIGhvdXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtaW51dGU/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBzZWNvbmQ/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICB0aW1lWm9uZU5hbWU/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0TWF0Y2hlcj86IFwiYmVzdCBmaXRcIiB8IFwiYmFzaWNcIiB8IHVuZGVmaW5lZDtcbiAgaG91cjEyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgdGltZVpvbmU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIERheVBlcmlvZCA9ICgnYW0nIHwgJ3BtJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVWYWx1ZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRheVBlcmlvZD86IERheVBlcmlvZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXlQZXJpb2RzIHtcbiAgYW06IHN0cmluZztcbiAgcG06IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldFN1cHBvcnRlZExvY2FsZSA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JykgPT4ge1xuICBsZXQgc3VwcG9ydGVkTG9jYWxlOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgc3VwcG9ydGVkTG9jYWxlID0gSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlKS5sZW5ndGggPyBsb2NhbGUgOiAnZGVmYXVsdCc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzdXBwb3J0ZWRMb2NhbGUgPSAnZGVmYXVsdCc7XG4gIH1cbiAgcmV0dXJuIHN1cHBvcnRlZExvY2FsZTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzSG91cjEyID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBob3VyMTIgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogJ3Nob3J0J30pLnJlc29sdmVkT3B0aW9ucygpLmhvdXIxMjtcbiAgcmV0dXJuIGhvdXIxMiA/PyBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnQxMmhUbzI0aCA9IChhYmJyOiAnYW0nIHwgJ3BtJywgaG91cjogbnVtYmVyKSA9PiB7XG4gIGlmIChhYmJyID09PSAnYW0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAoYWJiciA9PT0gJ2FtJykge1xuICAgIHJldHVybiBob3VyXG4gIH1cbiAgaWYgKGFiYnIgPT09ICdwbScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICByZXR1cm4gMTJcbiAgfVxuICByZXR1cm4gaG91ciArIDEyXG59XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0MjRoVG8xMmggPSAoaG91cjogbnVtYmVyKSA9PiBob3VyICUgMTIgfHwgMTJcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUaW1lVG9EYXRlID0gKHRpbWU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICB0aW1lID8gKHRpbWUgaW5zdGFuY2VvZiBEYXRlID8gbmV3IERhdGUodGltZSkgOiBuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpIDogbnVsbFxuXG4vLyBleHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuLy8gICBpZiAoZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlKS5pbmNsdWRlcygnQU0nKSkge1xuLy8gICAgIHJldHVybiAnYW0nXG4vLyAgIH1cbi8vICAgaWYgKGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoJ1BNJykpIHtcbi8vICAgICByZXR1cm4gJ3BtJ1xuLy8gICB9XG4vLyAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJ1xuLy8gfVxuXG5leHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pOiBEYXlQZXJpb2QgPT4ge1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKCdlbi1VUycsIG9wdGlvbnMpO1xuICBjb25zdCB0aW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge3RpbWVTdHlsZTogXCJzaG9ydFwiLCBob3VyMTI6IHRydWV9KS5mb3JtYXQoZGF0ZSk7XG5cbiAgY29uc3QgZGF5UGVyaW9kID0gZGF5UGVyaW9kcy5maW5kKGVsZW1lbnQgPT4gdGltZS5pbmNsdWRlcyhlbGVtZW50LmxhYmVsKSk7XG5cbiAgcmV0dXJuIDxEYXlQZXJpb2Q+KGRheVBlcmlvZD8udmFsdWUgPz8gKGRhdGUuZ2V0SG91cnMoKSA+PSAxMiA/ICdwbScgOiAnYW0nKSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0FtID0gKGRhdGU6IERhdGUpID0+IHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKSA8IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzUG0gPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID4gMTE7XG59XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZVpvbmUgPSAodGltZVpvbmU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAodGltZVpvbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghSW50bCB8fCAhSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWUgem9uZXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRpbWVab25lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVab25lIHR5cGUgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyB0aHJvd3MgYW4gZXJyb3IgaWYgdGltZXpvbmUgaXMgbm90IHZhbGlkXG4gICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KHVuZGVmaW5lZCwgeyB0aW1lWm9uZTogdGltZVpvbmUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSBzdHJpbmcgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mSG91cnMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKGxvY2FsZSk7XG4gIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiB7XG4gICAgdGltZS5zZXRIb3VycyhpKTtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIGxvY2FsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgZGF5UGVyaW9kOiA8RGF5UGVyaW9kPmRheVBlcmlvZCxcbiAgICAgIGxhYmVsOiB0aW1lLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBob3VyMTI6IGhvdXIxMixcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgfSkuc3BsaXQoJzonKVswXSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaXN0T2ZNaW51dGVzID0gKGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSwgdmFsdWVBc1N0cmluZyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgZC5zZXRNaW51dGVzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMV0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mU2Vjb25kcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sICB2YWx1ZUFzU3RyaW5nID0gZmFsc2UpID0+XG4gIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKDApXG4gICAgZC5zZXRTZWNvbmRzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMl0sXG4gICAgfVxuICB9KVxuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRIb3VyID0gKGRhdGU6IERhdGUgfCBudWxsLCBsb2NhbGU6IHN0cmluZykgPT5cbiAgZGF0ZSBpbnN0YW5jZW9mIERhdGUgPyAoaXNIb3VyMTIobG9jYWxlKSA/IGNvbnZlcnQyNGhUbzEyaChkYXRlLmdldEhvdXJzKCkpIDogZGF0ZS5nZXRIb3VycygpKSA6ICcnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRNaW51dGVzID0gKGRhdGU6IERhdGUgfCBudWxsKSA9PiAoZGF0ZSA/IGRhdGUuZ2V0TWludXRlcygpIDogJycpXG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFNlY29uZHMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRTZWNvbmRzKCkgOiAnJylcblxuLy8gZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZykgPT5cbi8vICAgWydhbScsICdBTScsICdwbScsICdQTSddLnNvbWUoKGVsKSA9PiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoZWwpKVxuXG5leHBvcnQgY29uc3QgaXNBbVBtID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgdGltZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogXCJzaG9ydFwifSkuZm9ybWF0KGRhdGUpO1xuICBjb25zdCBpc0FtUG0gPSB0aW1lLm1hdGNoKC8oPzpcXHB7TH1cXHB7TX1cXHB7UH0qKSt8KD86XFxwe0x9XFxwe1B9KikrL2d1KSA/PyBbXTtcbiAgcmV0dXJuIGlzQW1QbS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRpbWUgPSAodGltZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IGFueSkgPT4ge1xuICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlzVmFsaWQodGltZSkgfHwgaXNWYWxpZChuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpO1xuICB9XG4gIHJldHVybiBpc1ZhbGlkKHRpbWUpO1xuICAvLyBjb25zdCBkID0gbmV3IERhdGUoYDE5NzAtMDEtMDEgJHt0aW1lfWApXG4gIC8vIHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBkLmdldFRpbWUoKVxufVxuXG4vLyBleHBvcnQgY29uc3QgX2dldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4vLyAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuLy9cbi8vICAgY29uc3QgZGF5UGVyaW9kcyA9IHsgYW06ICdhbScsIHBtOiAncG0nIH07XG4vL1xuLy8gICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xuLy8gICBpZiAoIWhvdXIxMikge1xuLy8gICAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gICB9XG4vL1xuLy8gICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbi8vICAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuLy9cbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcbi8vICAgZGF5UGVyaW9kcy5hbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4vLyAgIGRheVBlcmlvZHMucG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nXG4vLyAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBbXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcbiAgICB7IHZhbHVlOiAncG0nLCBsYWJlbDogJ3BtJyB9LFxuICBdO1xuXG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKHN1cHBvcnRlZExvY2FsZSk7XG4gIGlmICghaG91cjEyKSB7XG4gICAgcmV0dXJuIGRheVBlcmlvZHM7XG4gIH1cblxuICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbiAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHsgaG91cjEyOiBob3VyMTIsIGhvdXI6ICdudW1lcmljJywgdGltZVpvbmU6ICdVVEMnIH0pO1xuICBjb25zdCBmb3JtYXR0ZWRBbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4gIGNvbnN0IGZvcm1hdHRlZFBtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMocG0pLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWUgPz8gJ3BtJztcblxuICBkYXlQZXJpb2RzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4LCBkYXlQZXJpb2RzKSA9PiB7XG4gICAgZGF5UGVyaW9kc1tpbmRleF0ubGFiZWwgPSBlbGVtZW50LnZhbHVlID09PSAnYW0nID8gKGZvcm1hdHRlZEFtID8/ICdhbScpIDogKGZvcm1hdHRlZFBtID8/ICdwbScpO1xuICB9KVxuXG4gIHJldHVybiBkYXlQZXJpb2RzO1xufTtcblxuXG5cbi8vIHRlc3Rpbmdcbi8vIGNvbnN0IGxhbmdzID0gW1xuLy8gICBbJ0Fia2hhemlhbicsICdhYiddLFxuLy8gICBbJ0FmYXInLCAnYWEnXSxcbi8vICAgWydBZnJpa2FhbnMnLCAnYWYnXSxcbi8vICAgWydBa2FuJywgJ2FrJ10sXG4vLyAgIFsnQWxiYW5pYW4nLCAnc3EnXSxcbi8vICAgWydBbWhhcmljJywgJ2FtJ10sXG4vLyAgIFsnQXJhYmljJywgJ2FyJ10sXG4vLyAgIFsnQXJhZ29uZXNlJywgJ2FuJ10sXG4vLyAgIFsnQXJnZW50aW5hJywgJ2VzLWFyJ10sXG4vLyAgIFsnQXJtZW5pYW4nLCAnaHknXSxcbi8vICAgWydBc3NhbWVzZScsICdhcyddLFxuLy8gICBbJ0F2YXJpYycsICdhdiddLFxuLy8gICBbJ0F2ZXN0YW4nLCAnYWUnXSxcbi8vICAgWydBeW1hcmEnLCAnYXknXSxcbi8vICAgWydBemVyYmFpamFuaScsICdheiddLFxuLy8gICBbJ0JhbWJhcmEnLCAnYm0nXSxcbi8vICAgWydCYXNoa2lyJywgJ2JhJ10sXG4vLyAgIFsnQmFzcXVlJywgJ2V1J10sXG4vLyAgIFsnQmVsYXJ1c2lhbicsICdiZSddLFxuLy8gICBbJ0JlbmdhbGkgKEJhbmdsYSknLCAnYm4nXSxcbi8vICAgWydCaWhhcmknLCAnYmgnXSxcbi8vICAgWydCaXNsYW1hJywgJ2JpJ10sXG4vLyAgIFsnQm9zbmlhbicsICdicyddLFxuLy8gICBbJ0JyZXRvbicsICdiciddLFxuLy8gICBbJ0J1bGdhcmlhbicsICdiZyddLFxuLy8gICBbJ0J1cm1lc2UnLCAnbXknXSxcbi8vICAgWydDYXRhbGFuJywgJ2NhJ10sXG4vLyAgIFsnQ2hhbW9ycm8nLCAnY2gnXSxcbi8vICAgWydDaGVjaGVuJywgJ2NlJ10sXG4vLyAgIFsnQ2hpY2hld2EsIENoZXdhLCBOeWFuamEnLCAnbnknXSxcbi8vICAgWydDaGluZXNlJywgJ3poJ10sXG4vLyAgIFsnQ2hpbmVzZSAoU2ltcGxpZmllZCknLCAnemgtSGFucyddLFxuLy8gICBbJ0NoaW5lc2UgKFRyYWRpdGlvbmFsKScsICd6aC1IYW50J10sXG4vLyAgIFsnQ2h1dmFzaCcsICdjdiddLFxuLy8gICBbJ0Nvcm5pc2gnLCAna3cnXSxcbi8vICAgWydDb3JzaWNhbicsICdjbyddLFxuLy8gICBbJ0NyZWUnLCAnY3InXSxcbi8vICAgWydDcm9hdGlhbicsICdociddLFxuLy8gICBbJ0N6ZWNoJywgJ2NzJ10sXG4vLyAgIFsnRGFuaXNoJywgJ2RhJ10sXG4vLyAgIFsnRGl2ZWhpLCBEaGl2ZWhpLCBNYWxkaXZpYW4nLCAnZHYnXSxcbi8vICAgWydEdXRjaCcsICdubCddLFxuLy8gICBbJ0R6b25na2hhJywgJ2R6J10sXG4vLyAgIFsnRW5nbGlzaCcsICdlbiddLFxuLy8gICBbJ0VzcGVyYW50bycsICdlbyddLFxuLy8gICBbJ0VzdG9uaWFuJywgJ2V0J10sXG4vLyAgIFsnRXdlJywgJ2VlJ10sXG4vLyAgIFsnRmFyb2VzZScsICdmbyddLFxuLy8gICBbJ0ZpamlhbicsICdmaiddLFxuLy8gICBbJ0Zpbm5pc2gnLCAnZmknXSxcbi8vICAgWydGcmVuY2gnLCAnZnInXSxcbi8vICAgWydGdWxhLCBGdWxhaCwgUHVsYWFyLCBQdWxhcicsICdmZiddLFxuLy8gICBbJ0dhbGljaWFuJywgJ2dsJ10sXG4vLyAgIFsnR2FlbGljIChTY290dGlzaCknLCAnZ2QnXSxcbi8vICAgWydHYWVsaWMgKE1hbngpJywgJ2d2J10sXG4vLyAgIFsnR2VvcmdpYW4nLCAna2EnXSxcbi8vICAgWydHZXJtYW4nLCAnZGUnXSxcbi8vICAgWydHcmVlaycsICdlbCddLFxuLy8gICBbJ0dyZWVubGFuZGljJywgJ2tsJ10sXG4vLyAgIFsnR3VhcmFuaScsICdnbiddLFxuLy8gICBbJ0d1amFyYXRpJywgJ2d1J10sXG4vLyAgIFsnSGFpdGlhbiBDcmVvbGUnLCAnaHQnXSxcbi8vICAgWydIYXVzYScsICdoYSddLFxuLy8gICBbJ0hlYnJldycsICdoZSddLFxuLy8gICBbJ0hlcmVybycsICdoeiddLFxuLy8gICBbJ0hpbmRpJywgJ2hpJ10sXG4vLyAgIFsnSGlyaSBNb3R1JywgJ2hvJ10sXG4vLyAgIFsnSHVuZ2FyaWFuJywgJ2h1J10sXG4vLyAgIFsnSWNlbGFuZGljJywgJ2lzJ10sXG4vLyAgIFsnSWRvJywgJ2lvJ10sXG4vLyAgIFsnSWdibycsICdpZyddLFxuLy8gICBbJ0luZG9uZXNpYW4nLCAnaWQnLCAnaW4nXSxcbi8vICAgWydJbnRlcmxpbmd1YScsICdpYSddLFxuLy8gICBbJ0ludGVybGluZ3VlJywgJ2llJ10sXG4vLyAgIFsnSW51a3RpdHV0JywgJ2l1J10sXG4vLyAgIFsnSW51cGlhaycsICdpayddLFxuLy8gICBbJ0lyaXNoJywgJ2dhJ10sXG4vLyAgIFsnSXRhbGlhbicsICdpdCddLFxuLy8gICBbJ0phcGFuZXNlJywgJ2phJ10sXG4vLyAgIFsnSmF2YW5lc2UnLCAnanYnXSxcbi8vICAgWydLYWxhYWxsaXN1dCwgR3JlZW5sYW5kaWMnLCAna2wnXSxcbi8vICAgWydLYW5uYWRhJywgJ2tuJ10sXG4vLyAgIFsnS2FudXJpJywgJ2tyJ10sXG4vLyAgIFsnS2FzaG1pcmknLCAna3MnXSxcbi8vICAgWydLYXpha2gnLCAna2snXSxcbi8vICAgWydLaG1lcicsICdrbSddLFxuLy8gICBbJ0tpa3V5dScsICdraSddLFxuLy8gICBbJ0tpbnlhcndhbmRhIChSd2FuZGEpJywgJ3J3J10sXG4vLyAgIFsnS2lydW5kaScsICdybiddLFxuLy8gICBbJ0t5cmd5eicsICdreSddLFxuLy8gICBbJ0tvbWknLCAna3YnXSxcbi8vICAgWydLb25nbycsICdrZyddLFxuLy8gICBbJ0tvcmVhbicsICdrbyddLFxuLy8gICBbJ0t1cmRpc2gnLCAna3UnXSxcbi8vICAgWydLd2FueWFtYScsICdraiddLFxuLy8gICBbJ0xhbycsICdsbyddLFxuLy8gICBbJ0xhdGluJywgJ2xhJ10sXG4vLyAgIFsnTGF0dmlhbiAoTGV0dGlzaCknLCAnbHYnXSxcbi8vICAgWydMaW1idXJnaXNoIChMaW1idXJnZXIpJywgJ2xpJ10sXG4vLyAgIFsnTGluZ2FsYScsICdsbiddLFxuLy8gICBbJ0xpdGh1YW5pYW4nLCAnbHQnXSxcbi8vICAgWydMdWdhLUthdGFuZ2EnLCAnbHUnXSxcbi8vICAgWydMdWdhbmRhLCBHYW5kYScsICdsZyddLFxuLy8gICBbJ0x1eGVtYm91cmdpc2gnLCAnbGInXSxcbi8vICAgWydNYW54JywgJ2d2J10sXG4vLyAgIFsnTWFjZWRvbmlhbicsICdtayddLFxuLy8gICBbJ01hbGFnYXN5JywgJ21nJ10sXG4vLyAgIFsnTWFsYXknLCAnbXMnXSxcbi8vICAgWydNYWxheWFsYW0nLCAnbWwnXSxcbi8vICAgWydNYWx0ZXNlJywgJ210J10sXG4vLyAgIFsnTWFvcmknLCAnbWknXSxcbi8vICAgWydNYXJhdGhpJywgJ21yJ10sXG4vLyAgIFsnTWFyc2hhbGxlc2UnLCAnbWgnXSxcbi8vICAgWydNb2xkYXZpYW4nLCAnbW8nXSxcbi8vICAgWydNb25nb2xpYW4nLCAnbW4nXSxcbi8vICAgWydOYXVydScsICduYSddLFxuLy8gICBbJ05hdmFqbycsICdudiddLFxuLy8gICBbJ05kb25nYScsICduZyddLFxuLy8gICBbJ05vcnRoZXJuIE5kZWJlbGUnLCAnbmQnXSxcbi8vICAgWydOZXBhbGknLCAnbmUnXSxcbi8vICAgWydOb3J3ZWdpYW4nLCAnbm8nXSxcbi8vICAgWydOb3J3ZWdpYW4gYm9rbcOlbCcsICduYiddLFxuLy8gICBbJ05vcndlZ2lhbiBueW5vcnNrJywgJ25uJ10sXG4vLyAgIFsnTnVvc3UnLCAnaWknXSxcbi8vICAgWydPY2NpdGFuJywgJ29jJ10sXG4vLyAgIFsnT2ppYndlJywgJ29qJ10sXG4vLyAgIFsnT2xkIENodXJjaCBTbGF2b25pYywgT2xkIEJ1bGdhcmlhbicsICdjdSddLFxuLy8gICBbJ09yaXlhJywgJ29yJ10sXG4vLyAgIFsnT3JvbW8gKEFmYWFuIE9yb21vKScsICdvbSddLFxuLy8gICBbJ09zc2V0aWFuJywgJ29zJ10sXG4vLyAgIFsnUMSBbGknLCAncGknXSxcbi8vICAgWydQYXNodG8sIFB1c2h0bycsICdwcyddLFxuLy8gICBbJ1BlcnNpYW4gKEZhcnNpKScsICdmYSddLFxuLy8gICBbJ1BvbGlzaCcsICdwbCddLFxuLy8gICBbJ1BvcnR1Z3Vlc2UnLCAncHQnXSxcbi8vICAgWydQdW5qYWJpIChFYXN0ZXJuKScsICdwYSddLFxuLy8gICBbJ1F1ZWNodWEnLCAncXUnXSxcbi8vICAgWydSb21hbnNoJywgJ3JtJ10sXG4vLyAgIFsnUm9tYW5pYW4nLCAncm8nXSxcbi8vICAgWydSdXNzaWFuJywgJ3J1J10sXG4vLyAgIFsnU2FtaScsICdzZSddLFxuLy8gICBbJ1NhbW9hbicsICdzbSddLFxuLy8gICBbJ1NhbmdvJywgJ3NnJ10sXG4vLyAgIFsnU2Fuc2tyaXQnLCAnc2EnXSxcbi8vICAgWydTZXJiaWFuJywgJ3NyJ10sXG4vLyAgIFsnU2VyYm8tQ3JvYXRpYW4nLCAnc2gnXSxcbi8vICAgWydTZXNvdGhvJywgJ3N0J10sXG4vLyAgIFsnU2V0c3dhbmEnLCAndG4nXSxcbi8vICAgWydTaG9uYScsICdzbiddLFxuLy8gICBbJ1NpY2h1YW4gWWknLCAnaWknXSxcbi8vICAgWydTaW5kaGknLCAnc2QnXSxcbi8vICAgWydTaW5oYWxlc2UnLCAnc2knXSxcbi8vICAgWydTaXN3YXRpJywgJ3NzJ10sXG4vLyAgIFsnU2xvdmFrJywgJ3NrJ10sXG4vLyAgIFsnU2xvdmVuaWFuJywgJ3NsJ10sXG4vLyAgIFsnU29tYWxpJywgJ3NvJ10sXG4vLyAgIFsnU291dGhlcm4gTmRlYmVsZScsICduciddLFxuLy8gICBbJ1NwYW5pc2gnLCAnZXMnXSxcbi8vICAgWydTdW5kYW5lc2UnLCAnc3UnXSxcbi8vICAgWydTd2FoaWxpIChLaXN3YWhpbGkpJywgJ3N3J10sXG4vLyAgIFsnU3dhdGknLCAnc3MnXSxcbi8vICAgWydTd2VkaXNoJywgJ3N2J10sXG4vLyAgIFsnVGFnYWxvZycsICd0bCddLFxuLy8gICBbJ1RhaGl0aWFuJywgJ3R5J10sXG4vLyAgIFsnVGFqaWsnLCAndGcnXSxcbi8vICAgWydUYW1pbCcsICd0YSddLFxuLy8gICBbJ1RhdGFyJywgJ3R0J10sXG4vLyAgIFsnVGVsdWd1JywgJ3RlJ10sXG4vLyAgIFsnVGhhaScsICd0aCddLFxuLy8gICBbJ1RpYmV0YW4nLCAnYm8nXSxcbi8vICAgWydUaWdyaW55YScsICd0aSddLFxuLy8gICBbJ1RvbmdhJywgJ3RvJ10sXG4vLyAgIFsnVHNvbmdhJywgJ3RzJ10sXG4vLyAgIFsnVHVya2lzaCcsICd0ciddLFxuLy8gICBbJ1R1cmttZW4nLCAndGsnXSxcbi8vICAgWydUd2knLCAndHcnXSxcbi8vICAgWydVeWdodXInLCAndWcnXSxcbi8vICAgWydVa3JhaW5pYW4nLCAndWsnXSxcbi8vICAgWydVcmR1JywgJ3VyJ10sXG4vLyAgIFsnVXpiZWsnLCAndXonXSxcbi8vICAgWydWZW5kYScsICd2ZSddLFxuLy8gICBbJ1ZpZXRuYW1lc2UnLCAndmknXSxcbi8vICAgWydWb2xhcMO8aycsICd2byddLFxuLy8gICBbJ1dhbGxvbicsICd3YSddLFxuLy8gICBbJ1dlbHNoJywgJ2N5J10sXG4vLyAgIFsnV29sb2YnLCAnd28nXSxcbi8vICAgWydXZXN0ZXJuIEZyaXNpYW4nLCAnZnknXSxcbi8vICAgWydYaG9zYScsICd4aCddLFxuLy8gICBbJ1lpZGRpc2gnLCAneWknLCAnamknXSxcbi8vICAgWydZb3J1YmEnLCAneW8nXSxcbi8vICAgWydaaHVhbmcsIENodWFuZycsICd6YSddLFxuLy8gICBbJ1p1bHUnLCAnenUnXSxcbi8vIF1cbi8vXG4vLyBsYW5ncy5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZ1sxXSk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZ1sxXSwgcGVyaW9kICl9KVxuXG5cbi8vIENocm9tZSAvIE9wZXJhXG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gVGFtaWwgdGEge2FtOiAn4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NJywgcG06ICfgrqrgrr/grrHgr43grqrgrpXgrrLgr40nfVxuXG4vLyBFZGdlIENocm9taXVtXG4vLyBBbGJhbmlhbiBzcSB7YW06ICdlIHBhcmFkaXRlcycsIHBtOiAnZSBwYXNkaXRlcyd9XG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gUHVuamFiaSAoRWFzdGVybikgcGEge2FtOiAn4Kiq4KmCLuCopuCpgS4nLCBwbTogJ+CorOCovi7gqKbgqYEuJ31cbi8vIFNpbmRoaSBzZCB7YW06ICfYtdio2K3YjCDZhdmG2KzZh9mG2K8nLCBwbTogJ9mF2YbYrNmH2YbYr9iMINi02KfZhSd9XG4vLyBUYW1pbCB0YSB7YW06ICfgrq7gr4HgrrHgr43grqrgrpXgrrLgr40nLCBwbTogJ+CuquCuv+CuseCvjeCuquCuleCusuCvjSd9XG5cblxuLy8gRmlyZWZveFxuLy8gQWthbiBhayB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuLy8gQWxiYW5pYW4gc3EgeyBhbTogXCJlIHBhcmFkaXRlc1wiLCBwbTogXCJlIHBhc2RpdGVzXCIgfVxuLy8gQW1oYXJpYyBhbSB7IGFtOiBcIuGMpeGLi+GJtVwiLCBwbTogXCLhiqjhiLDhi5PhibVcIiB9XG4vLyBBcmFiaWMgYXIgeyBhbTogXCLYtVwiLCBwbTogXCLZhVwiIH1cbi8vIEFzc2FtZXNlIGFzIHsgYW06IFwi4Kaq4KeC4Kew4KeN4Kas4Ka+4Ka54KeN4KaoXCIsIHBtOiBcIuCmheCmquCnsOCmvuCmueCnjeCmqFwiIH1cbi8vIEJ1bGdhcmlhbiBiZyB7IGFtOiBcItC/0YAu0L7QsS5cIiwgcG06IFwi0YHQuy7QvtCxLlwiIH1cbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHsgYW06IFwi5LiK5Y2IXCIsIHBtOiBcIuS4i+WNiFwiIH1cbi8vIER6b25na2hhIGR6IHsgYW06IFwi4L2m4L6U4LyL4L2G4LyLXCIsIHBtOiBcIuC9leC+seC9suC8i+C9huC8i1wiIH1cbi8vIEV3ZSBlZSB7IGFtOiBcIsWLZGlcIiwgcG06IFwiyaNldHLJlFwiIH1cbi8vIEdyZWVrIGVsIHsgYW06IFwiz4AuzrwuXCIsIHBtOiBcIs68Ls68LlwiIH1cbi8vIEhpbmRpIGhpIHsgYW06IFwiYW1cIiwgcG06IFwicG1cIiB9XG4vLyBLYW5uYWRhIGtuIHsgYW06IFwi4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoXCIsIHBtOiBcIuCyheCyquCysOCyvuCyueCzjeCyqFwiIH1cbi8vIEtvcmVhbiBrbyB7IGFtOiBcIuyYpOyghFwiLCBwbTogXCLsmKTtm4RcIiB9XG4vLyBNYWxheSBtcyB7IGFtOiBcIlBHXCIsIHBtOiBcIlBUR1wiIH1cbi8vIE9yb21vIChBZmFhbiBPcm9tbykgb20geyBhbTogXCJXRFwiLCBwbTogXCJXQlwiIH1cbi8vIFB1bmphYmkgKEVhc3Rlcm4pIHBhIHsgYW06IFwi4Kiq4KmCLuCopuCpgS5cIiwgcG06IFwi4Kis4Ki+LuCopuCpgS5cIiB9XG4vLyBTYW5za3JpdCBzYSB7IGFtOiBcIuCkquClguCksOCljeCkteCkvuCkueCljeCkqFwiLCBwbTogXCLgpIXgpKrgpLDgpL7gpLngpY3gpKhcIiB9XG4vLyBTaW5kaGkgc2QgeyBhbTogXCLYtdio2K3YjCDZhdmG2KzZh9mG2K9cIiwgcG06IFwi2YXZhtis2YfZhtiv2Iwg2LTYp9mFXCIgfVxuLy8gU29tYWxpIHNvIHsgYW06IFwiR0hcIiwgcG06IFwiR0RcIiB9XG4vLyBUYW1pbCB0YSB7IGFtOiBcIuCuruCvgeCuseCvjeCuquCuleCusuCvjVwiLCBwbTogXCLgrqrgrr/grrHgr43grqrgrpXgrrLgr41cIiB9XG4vLyBUaWdyaW55YSB0aSB7IGFtOiBcIuGJhS7hiYAuXCIsIHBtOiBcIuGLtS7hiYAuXCIgfVxuLy8gVG9uZ2EgdG8geyBhbTogXCJoZW5naWhlbmdpXCIsIHBtOiBcImVmaWFmaVwiIH1cbi8vIFR3aSB0dyB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuXG5cblxuLy8gY29uc3QgZm9ybWF0cyA9IHtcbi8vICAgXCJhci1TQVwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJnLUJHXCIgOiBcImRkLk0ueXl5eVwiLFxuLy8gICBcImNhLUVTXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1UV1wiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImNzLUNaXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZGEtREtcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImRlLURFXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbC1HUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImVuLVVTXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZmktRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJmci1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaGUtSUxcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh1LUhVXCIgOiBcInl5eXkuIE1NLiBkZC5cIixcbi8vICAgXCJpcy1JU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIml0LUlUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJqYS1KUFwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwia28tS1JcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcIm5sLU5MXCIgOiBcImQtTS15eXl5XCIsXG4vLyAgIFwibmItTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInBsLVBMXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJwdC1CUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInJvLVJPXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJydS1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiaHItSFJcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzay1TS1wiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwic3EtQUxcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInN2LVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJ0aC1USFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInRyLVRSXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJ1ci1QS1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaWQtSURcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInVrLVVBXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJiZS1CWVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwic2wtU0lcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJldC1FRVwiIDogXCJkLk1NLnl5eXlcIixcbi8vICAgXCJsdi1MVlwiIDogXCJ5eXl5Lk1NLmRkLlwiLFxuLy8gICBcImx0LUxUXCIgOiBcInl5eXkuTU0uZGRcIixcbi8vICAgXCJmYS1JUlwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwidmktVk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh5LUFNXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJhei1MYXRuLUFaXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJldS1FU1wiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwibWstTUtcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFmLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJrYS1HRVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZm8tRk9cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImhpLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtcy1NWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwia2stS1pcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImt5LUtHXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ctS0VcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJ1ei1MYXRuLVVaXCIgOiBcImRkL01NIHl5eXlcIixcbi8vICAgXCJ0dC1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicGEtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJndS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJ0ZS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImtuLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwibXItSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInNhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtbi1NTlwiIDogXCJ5eS5NTS5kZFwiLFxuLy8gICBcImdsLUVTXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwia29rLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJzeXItU1lcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImR2LU1WXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYXItSVFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZGUtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1NWFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQkVcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwiaXQtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcIm5sLUJFXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcIm5uLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJwdC1QVFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1DU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInN2LUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiYXotQ3lybC1BWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibXMtQk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInV6LUN5cmwtVVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFyLUVHXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1IS1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImRlLUFUXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbi1BVVwiIDogXCJkL01NL3l5eXlcIixcbi8vICAgXCJlcy1FU1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQ0FcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInNyLUN5cmwtQ1NcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhci1MWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiemgtU0dcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJkZS1MVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tQ0FcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYXItRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInpoLU1PXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZGUtTElcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLU5aXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcImVzLUNSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1MVVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItTUFcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImVuLUlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1QQVwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwiZnItTUNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVROXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJlbi1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwiZXMtRE9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLU9NXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1KTVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtVkVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi0wMjlcIiA6IFwiTU0vZGQveXl5eVwiLFxuLy8gICBcImVzLUNPXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1TWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tQlpcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1KT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tVFRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUFSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1MQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tWldcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJlcy1FQ1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItS1dcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLVBIXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZXMtQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImFyLUFFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1VWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItQkhcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1RQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVNWXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1ITlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtTklcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhbS1FVFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInR6bS1MYXRuLURaXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpdS1MYXRuLUNBXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcInNtYS1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibW4tTW9uZy1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImdkLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1NWVwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInBycy1BRlwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJuLUJEXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwid28tU05cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInJ3LVJXXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwicXV0LUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzYWgtUlVcIiA6IFwiTU0uZGQueXl5eVwiLFxuLy8gICBcImdzdy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiY28tRlJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcIm9jLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJtaS1OWlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZ2EtSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNlLVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJici1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic21uLUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibW9oLUNBXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiYXJuLUNMXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpaS1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImRzYi1ERVwiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwiaWctTkdcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJrbC1HTFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibGItTFVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImJhLVJVXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwibnNvLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJxdXotQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInlvLU5HXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiaGEtTGF0bi1OR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImZpbC1QSFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInBzLUFGXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiZnktTkxcIiA6IFwiZC1NLXl5eXlcIixcbi8vICAgXCJuZS1OUFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInNlLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJpdS1DYW5zLUNBXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1SU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNpLUxLXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJzci1DeXJsLVJTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibG8tTEFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImttLUtIXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJjeS1HQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYm8tQ05cIiA6IFwieXl5eS9NL2RcIixcbi8vICAgXCJzbXMtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhcy1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibWwtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJlbi1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwib3ItSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJibi1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRrLVRNXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwiYnMtTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIm10LU1UXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzci1DeXJsLU1FXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic2UtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ6dS1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwieGgtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcInRuLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJoc2ItREVcIiA6IFwiZC4gTS4geXl5eVwiLFxuLy8gICBcImJzLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ0Zy1DeXJsLVRKXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ItTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNtai1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicm0tQ0hcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNtai1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwicXV6LUVDXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJxdXotUEVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImhyLUJBXCIgOiBcImQuTS55eXl5LlwiLFxuLy8gICBcInNyLUxhdG4tTUVcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzbWEtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImVuLVNHXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidWctQ05cIiA6IFwieXl5eS1NLWRcIixcbi8vICAgXCJzci1DeXJsLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZXMtVVNcIiA6IFwiTS9kL3l5eXlcIlxuLy8gfTtcbi8vXG4vLyBPYmplY3Qua2V5cyhmb3JtYXRzKS5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZyk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZywgcGVyaW9kICl9KVxuIl19