ngx-bootstrap 3.0.1 → 3.1.4

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 (1869) hide show
  1. package/CHANGELOG.md +298 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +24 -8
  4. package/accordion/accordion-group.component.d.ts +3 -3
  5. package/accordion/bundles/ngx-bootstrap-accordion.umd.js +264 -0
  6. package/accordion/bundles/ngx-bootstrap-accordion.umd.js.map +1 -0
  7. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js +2 -0
  8. package/accordion/bundles/ngx-bootstrap-accordion.umd.min.js.map +1 -0
  9. package/accordion/esm2015/accordion-group.component.js +140 -0
  10. package/accordion/esm2015/accordion.component.js +88 -0
  11. package/accordion/esm2015/accordion.config.js +35 -0
  12. package/accordion/esm2015/accordion.module.js +36 -0
  13. package/accordion/esm2015/ngx-bootstrap-accordion.js +10 -0
  14. package/accordion/esm2015/public_api.js +10 -0
  15. package/accordion/esm5/accordion-group.component.js +157 -0
  16. package/accordion/esm5/accordion.component.js +99 -0
  17. package/accordion/esm5/accordion.config.js +37 -0
  18. package/accordion/esm5/accordion.module.js +43 -0
  19. package/accordion/esm5/ngx-bootstrap-accordion.js +10 -0
  20. package/accordion/esm5/public_api.js +10 -0
  21. package/accordion/fesm2015/ngx-bootstrap-accordion.js +222 -0
  22. package/accordion/fesm2015/ngx-bootstrap-accordion.js.map +1 -0
  23. package/accordion/fesm5/ngx-bootstrap-accordion.js +255 -0
  24. package/accordion/fesm5/ngx-bootstrap-accordion.js.map +1 -0
  25. package/accordion/ngx-bootstrap-accordion.d.ts +4 -0
  26. package/accordion/ngx-bootstrap-accordion.metadata.json +1 -0
  27. package/accordion/package.json +19 -0
  28. package/accordion/{index.d.ts → public_api.d.ts} +0 -0
  29. package/alert/bundles/ngx-bootstrap-alert.umd.js +209 -0
  30. package/alert/bundles/ngx-bootstrap-alert.umd.js.map +1 -0
  31. package/alert/bundles/ngx-bootstrap-alert.umd.min.js +2 -0
  32. package/alert/bundles/ngx-bootstrap-alert.umd.min.js.map +1 -0
  33. package/alert/esm2015/alert.component.js +145 -0
  34. package/alert/esm2015/alert.config.js +50 -0
  35. package/alert/esm2015/alert.module.js +35 -0
  36. package/alert/esm2015/ngx-bootstrap-alert.js +10 -0
  37. package/alert/esm2015/public_api.js +9 -0
  38. package/alert/esm5/alert.component.js +157 -0
  39. package/alert/esm5/alert.config.js +52 -0
  40. package/alert/esm5/alert.module.js +42 -0
  41. package/alert/esm5/ngx-bootstrap-alert.js +10 -0
  42. package/alert/esm5/public_api.js +9 -0
  43. package/alert/fesm2015/ngx-bootstrap-alert.js +153 -0
  44. package/alert/fesm2015/ngx-bootstrap-alert.js.map +1 -0
  45. package/alert/fesm5/ngx-bootstrap-alert.js +171 -0
  46. package/alert/fesm5/ngx-bootstrap-alert.js.map +1 -0
  47. package/alert/ngx-bootstrap-alert.d.ts +4 -0
  48. package/alert/ngx-bootstrap-alert.metadata.json +1 -0
  49. package/alert/package.json +19 -0
  50. package/alert/{index.d.ts → public_api.d.ts} +0 -0
  51. package/bundles/ngx-bootstrap.es2015.js +20178 -12836
  52. package/bundles/ngx-bootstrap.es2015.js.map +1 -1
  53. package/bundles/ngx-bootstrap.umd.js +179 -21213
  54. package/bundles/ngx-bootstrap.umd.js.map +1 -1
  55. package/bundles/ngx-bootstrap.umd.min.js +1 -64
  56. package/bundles/ngx-bootstrap.umd.min.js.map +1 -1
  57. package/buttons/bundles/ngx-bootstrap-buttons.umd.js +479 -0
  58. package/buttons/bundles/ngx-bootstrap-buttons.umd.js.map +1 -0
  59. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js +2 -0
  60. package/buttons/bundles/ngx-bootstrap-buttons.umd.min.js.map +1 -0
  61. package/buttons/button-checkbox.directive.d.ts +10 -10
  62. package/buttons/button-radio-group.directive.d.ts +9 -10
  63. package/buttons/button-radio.directive.d.ts +12 -12
  64. package/buttons/esm2015/button-checkbox.directive.js +146 -0
  65. package/buttons/esm2015/button-radio-group.directive.js +90 -0
  66. package/buttons/esm2015/button-radio.directive.js +200 -0
  67. package/buttons/esm2015/buttons.module.js +33 -0
  68. package/buttons/esm2015/ngx-bootstrap-buttons.js +13 -0
  69. package/buttons/esm2015/public_api.js +10 -0
  70. package/buttons/esm5/button-checkbox.directive.js +184 -0
  71. package/buttons/esm5/button-radio-group.directive.js +105 -0
  72. package/buttons/esm5/button-radio.directive.js +239 -0
  73. package/buttons/esm5/buttons.module.js +40 -0
  74. package/buttons/esm5/ngx-bootstrap-buttons.js +13 -0
  75. package/buttons/esm5/public_api.js +10 -0
  76. package/buttons/fesm2015/ngx-bootstrap-buttons.js +376 -0
  77. package/buttons/fesm2015/ngx-bootstrap-buttons.js.map +1 -0
  78. package/buttons/fesm5/ngx-bootstrap-buttons.js +471 -0
  79. package/buttons/fesm5/ngx-bootstrap-buttons.js.map +1 -0
  80. package/buttons/ngx-bootstrap-buttons.d.ts +7 -0
  81. package/buttons/ngx-bootstrap-buttons.metadata.json +1 -0
  82. package/buttons/package.json +19 -0
  83. package/buttons/{index.d.ts → public_api.d.ts} +0 -0
  84. package/carousel/bundles/ngx-bootstrap-carousel.umd.js +567 -0
  85. package/carousel/bundles/ngx-bootstrap-carousel.umd.js.map +1 -0
  86. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js +2 -0
  87. package/carousel/bundles/ngx-bootstrap-carousel.umd.min.js.map +1 -0
  88. package/carousel/carousel.component.d.ts +3 -7
  89. package/carousel/esm2015/carousel.component.js +372 -0
  90. package/carousel/esm2015/carousel.config.js +59 -0
  91. package/carousel/esm2015/carousel.module.js +36 -0
  92. package/carousel/esm2015/ngx-bootstrap-carousel.js +10 -0
  93. package/carousel/esm2015/public_api.js +10 -0
  94. package/carousel/esm2015/slide.component.js +81 -0
  95. package/carousel/esm5/carousel.component.js +495 -0
  96. package/carousel/esm5/carousel.config.js +61 -0
  97. package/carousel/esm5/carousel.module.js +43 -0
  98. package/carousel/esm5/ngx-bootstrap-carousel.js +10 -0
  99. package/carousel/esm5/public_api.js +10 -0
  100. package/carousel/esm5/slide.component.js +86 -0
  101. package/carousel/fesm2015/ngx-bootstrap-carousel.js +423 -0
  102. package/carousel/fesm2015/ngx-bootstrap-carousel.js.map +1 -0
  103. package/carousel/fesm5/ngx-bootstrap-carousel.js +556 -0
  104. package/carousel/fesm5/ngx-bootstrap-carousel.js.map +1 -0
  105. package/carousel/ngx-bootstrap-carousel.d.ts +4 -0
  106. package/carousel/ngx-bootstrap-carousel.metadata.json +1 -0
  107. package/carousel/package.json +19 -0
  108. package/carousel/{index.d.ts → public_api.d.ts} +0 -0
  109. package/chronos/bundles/ngx-bootstrap-chronos.umd.js +8428 -0
  110. package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -0
  111. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +2 -0
  112. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -0
  113. package/chronos/esm2015/create/check-overflow.js +39 -0
  114. package/chronos/esm2015/create/clone.js +13 -0
  115. package/chronos/esm2015/create/date-from-array.js +38 -0
  116. package/chronos/esm2015/create/from-anything.js +131 -0
  117. package/chronos/esm2015/create/from-array.js +149 -0
  118. package/chronos/esm2015/create/from-object.js +25 -0
  119. package/chronos/esm2015/create/from-string-and-array.js +46 -0
  120. package/chronos/esm2015/create/from-string-and-format.js +120 -0
  121. package/chronos/esm2015/create/from-string.js +268 -0
  122. package/chronos/esm2015/create/local.js +23 -0
  123. package/chronos/esm2015/create/parsing-flags.js +38 -0
  124. package/chronos/esm2015/create/parsing.types.js +146 -0
  125. package/chronos/esm2015/create/valid.js +60 -0
  126. package/chronos/esm2015/duration/bubble.js +64 -0
  127. package/chronos/esm2015/duration/constructor.js +182 -0
  128. package/chronos/esm2015/duration/create.js +141 -0
  129. package/chronos/esm2015/duration/humanize.js +109 -0
  130. package/chronos/esm2015/duration/valid.js +54 -0
  131. package/chronos/esm2015/format/format.js +67 -0
  132. package/chronos/esm2015/format.js +71 -0
  133. package/chronos/esm2015/i18n/ar.js +155 -0
  134. package/chronos/esm2015/i18n/bg.js +101 -0
  135. package/chronos/esm2015/i18n/cs.js +215 -0
  136. package/chronos/esm2015/i18n/da.js +56 -0
  137. package/chronos/esm2015/i18n/de.js +80 -0
  138. package/chronos/esm2015/i18n/en-gb.js +72 -0
  139. package/chronos/esm2015/i18n/es-do.js +118 -0
  140. package/chronos/esm2015/i18n/es-us.js +111 -0
  141. package/chronos/esm2015/i18n/es.js +117 -0
  142. package/chronos/esm2015/i18n/fi.js +119 -0
  143. package/chronos/esm2015/i18n/fr.js +87 -0
  144. package/chronos/esm2015/i18n/gl.js +117 -0
  145. package/chronos/esm2015/i18n/he.js +129 -0
  146. package/chronos/esm2015/i18n/hi.js +150 -0
  147. package/chronos/esm2015/i18n/hu.js +140 -0
  148. package/chronos/esm2015/i18n/id.js +100 -0
  149. package/chronos/esm2015/i18n/it.js +79 -0
  150. package/chronos/esm2015/i18n/ja.js +95 -0
  151. package/chronos/esm2015/i18n/ko.js +82 -0
  152. package/chronos/esm2015/i18n/lt.js +155 -0
  153. package/chronos/esm2015/i18n/mn.js +108 -0
  154. package/chronos/esm2015/i18n/nb.js +59 -0
  155. package/chronos/esm2015/i18n/nl-be.js +97 -0
  156. package/chronos/esm2015/i18n/nl.js +97 -0
  157. package/chronos/esm2015/i18n/pl.js +156 -0
  158. package/chronos/esm2015/i18n/pt-br.js +65 -0
  159. package/chronos/esm2015/i18n/ro.js +73 -0
  160. package/chronos/esm2015/i18n/ru.js +218 -0
  161. package/chronos/esm2015/i18n/sk.js +193 -0
  162. package/chronos/esm2015/i18n/sl.js +202 -0
  163. package/chronos/esm2015/i18n/sv.js +74 -0
  164. package/chronos/esm2015/i18n/th.js +75 -0
  165. package/chronos/esm2015/i18n/tr.js +95 -0
  166. package/chronos/esm2015/i18n/zh-cn.js +136 -0
  167. package/chronos/esm2015/index.js +7 -0
  168. package/chronos/esm2015/locale/calendar.js +14 -0
  169. package/chronos/esm2015/locale/locale.class.js +841 -0
  170. package/chronos/esm2015/locale/locale.defaults.js +46 -0
  171. package/chronos/esm2015/locale/locales.js +272 -0
  172. package/chronos/esm2015/moment/add-subtract.js +61 -0
  173. package/chronos/esm2015/moment/calendar.js +81 -0
  174. package/chronos/esm2015/moment/diff.js +88 -0
  175. package/chronos/esm2015/moment/min-max.js +50 -0
  176. package/chronos/esm2015/ngx-bootstrap-chronos.js +11 -0
  177. package/chronos/esm2015/parse/regex.js +72 -0
  178. package/chronos/esm2015/parse/token.js +52 -0
  179. package/chronos/esm2015/public_api.js +50 -0
  180. package/chronos/esm2015/test/chain.js +1212 -0
  181. package/chronos/esm2015/types.js +76 -0
  182. package/chronos/esm2015/units/aliases.js +53 -0
  183. package/chronos/esm2015/units/constants.js +16 -0
  184. package/chronos/esm2015/units/day-of-month.js +39 -0
  185. package/chronos/esm2015/units/day-of-week.js +183 -0
  186. package/chronos/esm2015/units/day-of-year.js +55 -0
  187. package/chronos/esm2015/units/hour.js +153 -0
  188. package/chronos/esm2015/units/index.js +24 -0
  189. package/chronos/esm2015/units/millisecond.js +74 -0
  190. package/chronos/esm2015/units/minute.js +31 -0
  191. package/chronos/esm2015/units/month.js +75 -0
  192. package/chronos/esm2015/units/offset.js +227 -0
  193. package/chronos/esm2015/units/priorities.js +31 -0
  194. package/chronos/esm2015/units/quarter.js +57 -0
  195. package/chronos/esm2015/units/second.js +31 -0
  196. package/chronos/esm2015/units/timestamp.js +36 -0
  197. package/chronos/esm2015/units/timezone.js +33 -0
  198. package/chronos/esm2015/units/week-calendar-utils.js +94 -0
  199. package/chronos/esm2015/units/week-year.js +175 -0
  200. package/chronos/esm2015/units/week.js +83 -0
  201. package/chronos/esm2015/units/year.js +81 -0
  202. package/chronos/esm2015/utils/abs-ceil.js +13 -0
  203. package/chronos/esm2015/utils/abs-round.js +13 -0
  204. package/chronos/esm2015/utils/compare-arrays.js +27 -0
  205. package/chronos/esm2015/utils/date-compare.js +108 -0
  206. package/chronos/esm2015/utils/date-getters.js +157 -0
  207. package/chronos/esm2015/utils/date-setters.js +147 -0
  208. package/chronos/esm2015/utils/defaults.js +22 -0
  209. package/chronos/esm2015/utils/start-end-of.js +74 -0
  210. package/chronos/esm2015/utils/type-checks.js +114 -0
  211. package/chronos/esm2015/utils/zero-fill.js +21 -0
  212. package/chronos/esm2015/utils.js +21 -0
  213. package/chronos/esm5/create/check-overflow.js +39 -0
  214. package/chronos/esm5/create/clone.js +13 -0
  215. package/chronos/esm5/create/date-from-array.js +44 -0
  216. package/chronos/esm5/create/from-anything.js +131 -0
  217. package/chronos/esm5/create/from-array.js +149 -0
  218. package/chronos/esm5/create/from-object.js +25 -0
  219. package/chronos/esm5/create/from-string-and-array.js +46 -0
  220. package/chronos/esm5/create/from-string-and-format.js +120 -0
  221. package/chronos/esm5/create/from-string.js +268 -0
  222. package/chronos/esm5/create/local.js +23 -0
  223. package/chronos/esm5/create/parsing-flags.js +38 -0
  224. package/chronos/esm5/create/parsing.types.js +146 -0
  225. package/chronos/esm5/create/valid.js +60 -0
  226. package/chronos/esm5/duration/bubble.js +64 -0
  227. package/chronos/esm5/duration/constructor.js +205 -0
  228. package/chronos/esm5/duration/create.js +143 -0
  229. package/chronos/esm5/duration/humanize.js +109 -0
  230. package/chronos/esm5/duration/valid.js +54 -0
  231. package/chronos/esm5/format/format.js +68 -0
  232. package/chronos/esm5/format.js +73 -0
  233. package/chronos/esm5/i18n/ar.js +155 -0
  234. package/chronos/esm5/i18n/bg.js +101 -0
  235. package/chronos/esm5/i18n/cs.js +215 -0
  236. package/chronos/esm5/i18n/da.js +56 -0
  237. package/chronos/esm5/i18n/de.js +80 -0
  238. package/chronos/esm5/i18n/en-gb.js +72 -0
  239. package/chronos/esm5/i18n/es-do.js +118 -0
  240. package/chronos/esm5/i18n/es-us.js +111 -0
  241. package/chronos/esm5/i18n/es.js +117 -0
  242. package/chronos/esm5/i18n/fi.js +119 -0
  243. package/chronos/esm5/i18n/fr.js +87 -0
  244. package/chronos/esm5/i18n/gl.js +117 -0
  245. package/chronos/esm5/i18n/he.js +129 -0
  246. package/chronos/esm5/i18n/hi.js +150 -0
  247. package/chronos/esm5/i18n/hu.js +140 -0
  248. package/chronos/esm5/i18n/id.js +100 -0
  249. package/chronos/esm5/i18n/it.js +79 -0
  250. package/chronos/esm5/i18n/ja.js +95 -0
  251. package/chronos/esm5/i18n/ko.js +82 -0
  252. package/chronos/esm5/i18n/lt.js +155 -0
  253. package/chronos/esm5/i18n/mn.js +108 -0
  254. package/chronos/esm5/i18n/nb.js +59 -0
  255. package/chronos/esm5/i18n/nl-be.js +97 -0
  256. package/chronos/esm5/i18n/nl.js +97 -0
  257. package/chronos/esm5/i18n/pl.js +156 -0
  258. package/chronos/esm5/i18n/pt-br.js +65 -0
  259. package/chronos/esm5/i18n/ro.js +73 -0
  260. package/chronos/esm5/i18n/ru.js +218 -0
  261. package/chronos/esm5/i18n/sk.js +193 -0
  262. package/chronos/esm5/i18n/sl.js +202 -0
  263. package/chronos/esm5/i18n/sv.js +74 -0
  264. package/chronos/esm5/i18n/th.js +75 -0
  265. package/chronos/esm5/i18n/tr.js +95 -0
  266. package/chronos/esm5/i18n/zh-cn.js +136 -0
  267. package/chronos/esm5/index.js +7 -0
  268. package/chronos/esm5/locale/calendar.js +14 -0
  269. package/chronos/esm5/locale/locale.class.js +996 -0
  270. package/chronos/esm5/locale/locale.defaults.js +46 -0
  271. package/chronos/esm5/locale/locales.js +272 -0
  272. package/chronos/esm5/moment/add-subtract.js +61 -0
  273. package/chronos/esm5/moment/calendar.js +83 -0
  274. package/chronos/esm5/moment/diff.js +89 -0
  275. package/chronos/esm5/moment/min-max.js +58 -0
  276. package/chronos/esm5/ngx-bootstrap-chronos.js +11 -0
  277. package/chronos/esm5/parse/regex.js +72 -0
  278. package/chronos/esm5/parse/token.js +52 -0
  279. package/chronos/esm5/public_api.js +50 -0
  280. package/chronos/esm5/test/chain.js +1506 -0
  281. package/chronos/esm5/types.js +76 -0
  282. package/chronos/esm5/units/aliases.js +53 -0
  283. package/chronos/esm5/units/constants.js +16 -0
  284. package/chronos/esm5/units/day-of-month.js +39 -0
  285. package/chronos/esm5/units/day-of-week.js +188 -0
  286. package/chronos/esm5/units/day-of-year.js +55 -0
  287. package/chronos/esm5/units/hour.js +153 -0
  288. package/chronos/esm5/units/index.js +24 -0
  289. package/chronos/esm5/units/millisecond.js +74 -0
  290. package/chronos/esm5/units/minute.js +31 -0
  291. package/chronos/esm5/units/month.js +75 -0
  292. package/chronos/esm5/units/offset.js +231 -0
  293. package/chronos/esm5/units/priorities.js +31 -0
  294. package/chronos/esm5/units/quarter.js +58 -0
  295. package/chronos/esm5/units/second.js +31 -0
  296. package/chronos/esm5/units/timestamp.js +36 -0
  297. package/chronos/esm5/units/timezone.js +33 -0
  298. package/chronos/esm5/units/week-calendar-utils.js +94 -0
  299. package/chronos/esm5/units/week-year.js +178 -0
  300. package/chronos/esm5/units/week.js +85 -0
  301. package/chronos/esm5/units/year.js +81 -0
  302. package/chronos/esm5/utils/abs-ceil.js +13 -0
  303. package/chronos/esm5/utils/abs-round.js +13 -0
  304. package/chronos/esm5/utils/compare-arrays.js +27 -0
  305. package/chronos/esm5/utils/date-compare.js +112 -0
  306. package/chronos/esm5/utils/date-getters.js +165 -0
  307. package/chronos/esm5/utils/date-setters.js +147 -0
  308. package/chronos/esm5/utils/defaults.js +22 -0
  309. package/chronos/esm5/utils/start-end-of.js +74 -0
  310. package/chronos/esm5/utils/type-checks.js +114 -0
  311. package/chronos/esm5/utils/zero-fill.js +21 -0
  312. package/chronos/esm5/utils.js +21 -0
  313. package/chronos/fesm2015/ngx-bootstrap-chronos.js +8176 -0
  314. package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -0
  315. package/chronos/fesm5/ngx-bootstrap-chronos.js +8383 -0
  316. package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -0
  317. package/chronos/i18n/bg.d.ts +2 -0
  318. package/chronos/i18n/lt.d.ts +2 -0
  319. package/chronos/i18n/nb.d.ts +2 -0
  320. package/chronos/i18n/sk.d.ts +2 -0
  321. package/chronos/index.d.ts +1 -7
  322. package/chronos/ngx-bootstrap-chronos.d.ts +5 -0
  323. package/chronos/ngx-bootstrap-chronos.metadata.json +1 -0
  324. package/chronos/package.json +19 -0
  325. package/chronos/public_api.d.ts +46 -0
  326. package/chronos/units/day-of-month.d.ts +1 -1
  327. package/chronos/units/day-of-week.d.ts +1 -0
  328. package/chronos/units/day-of-year.d.ts +1 -0
  329. package/chronos/units/hour.d.ts +1 -1
  330. package/chronos/units/millisecond.d.ts +1 -1
  331. package/chronos/units/minute.d.ts +1 -1
  332. package/chronos/units/month.d.ts +1 -0
  333. package/chronos/units/offset.d.ts +1 -0
  334. package/chronos/units/quarter.d.ts +1 -0
  335. package/chronos/units/second.d.ts +1 -1
  336. package/chronos/units/timestamp.d.ts +1 -1
  337. package/chronos/units/timezone.d.ts +1 -0
  338. package/chronos/units/week-year.d.ts +1 -0
  339. package/chronos/units/week.d.ts +1 -0
  340. package/chronos/units/year.d.ts +1 -0
  341. package/chronos/utils/date-compare.d.ts +2 -0
  342. package/chronos/utils/type-checks.d.ts +1 -1
  343. package/collapse/bundles/ngx-bootstrap-collapse.umd.js +178 -0
  344. package/collapse/bundles/ngx-bootstrap-collapse.umd.js.map +1 -0
  345. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js +2 -0
  346. package/collapse/bundles/ngx-bootstrap-collapse.umd.min.js.map +1 -0
  347. package/collapse/esm2015/collapse.directive.js +150 -0
  348. package/collapse/esm2015/collapse.module.js +31 -0
  349. package/collapse/esm2015/ngx-bootstrap-collapse.js +10 -0
  350. package/collapse/esm2015/public_api.js +8 -0
  351. package/collapse/esm5/collapse.directive.js +167 -0
  352. package/collapse/esm5/collapse.module.js +38 -0
  353. package/collapse/esm5/ngx-bootstrap-collapse.js +10 -0
  354. package/collapse/esm5/public_api.js +8 -0
  355. package/collapse/fesm2015/ngx-bootstrap-collapse.js +147 -0
  356. package/collapse/fesm2015/ngx-bootstrap-collapse.js.map +1 -0
  357. package/collapse/fesm5/ngx-bootstrap-collapse.js +169 -0
  358. package/collapse/fesm5/ngx-bootstrap-collapse.js.map +1 -0
  359. package/collapse/ngx-bootstrap-collapse.d.ts +4 -0
  360. package/collapse/ngx-bootstrap-collapse.metadata.json +1 -0
  361. package/collapse/package.json +19 -0
  362. package/collapse/{index.d.ts → public_api.d.ts} +0 -0
  363. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +508 -0
  364. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -0
  365. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +2 -0
  366. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -0
  367. package/component-loader/component-loader.class.d.ts +11 -5
  368. package/component-loader/component-loader.factory.d.ts +1 -2
  369. package/component-loader/esm2015/bs-component-ref.class.js +17 -0
  370. package/component-loader/esm2015/component-loader.class.js +402 -0
  371. package/component-loader/esm2015/component-loader.factory.js +66 -0
  372. package/component-loader/esm2015/content-ref.class.js +34 -0
  373. package/component-loader/esm2015/listen-options.model.js +28 -0
  374. package/component-loader/esm2015/ngx-bootstrap-component-loader.js +10 -0
  375. package/component-loader/esm2015/public_api.js +10 -0
  376. package/component-loader/esm5/bs-component-ref.class.js +27 -0
  377. package/component-loader/esm5/component-loader.class.js +468 -0
  378. package/component-loader/esm5/component-loader.factory.js +75 -0
  379. package/component-loader/esm5/content-ref.class.js +31 -0
  380. package/component-loader/esm5/listen-options.model.js +28 -0
  381. package/component-loader/esm5/ngx-bootstrap-component-loader.js +10 -0
  382. package/component-loader/esm5/public_api.js +10 -0
  383. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +426 -0
  384. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -0
  385. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +498 -0
  386. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -0
  387. package/component-loader/listen-options.model.d.ts +1 -0
  388. package/component-loader/ngx-bootstrap-component-loader.d.ts +4 -0
  389. package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -0
  390. package/component-loader/package.json +19 -0
  391. package/component-loader/public_api.d.ts +4 -0
  392. package/datepicker/base/bs-datepicker-container.d.ts +3 -1
  393. package/datepicker/bs-datepicker-input.directive.d.ts +3 -3
  394. package/datepicker/bs-datepicker.component.d.ts +13 -3
  395. package/datepicker/bs-datepicker.config.d.ts +14 -1
  396. package/datepicker/bs-datepicker.css +14 -5
  397. package/datepicker/bs-datepicker.css.map +2 -2
  398. package/datepicker/bs-datepicker.module.d.ts +0 -1
  399. package/datepicker/bs-datepicker.scss +23 -10
  400. package/datepicker/bs-daterangepicker-input.directive.d.ts +3 -3
  401. package/datepicker/bs-daterangepicker.component.d.ts +4 -3
  402. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +4334 -0
  403. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -0
  404. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +2 -0
  405. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -0
  406. package/datepicker/datepicker.component.d.ts +5 -5
  407. package/datepicker/engine/calc-days-calendar.d.ts +1 -1
  408. package/datepicker/engine/flag-days-calendar.d.ts +2 -1
  409. package/datepicker/engine/flag-months-calendar.d.ts +1 -1
  410. package/datepicker/engine/flag-years-calendar.d.ts +1 -1
  411. package/datepicker/engine/format-days-calendar.d.ts +1 -1
  412. package/datepicker/engine/format-months-calendar.d.ts +1 -1
  413. package/datepicker/engine/format-years-calendar.d.ts +1 -1
  414. package/datepicker/engine/view-mode.d.ts +2 -2
  415. package/datepicker/esm2015/base/bs-datepicker-container.js +109 -0
  416. package/datepicker/esm2015/bs-datepicker-input.directive.js +208 -0
  417. package/datepicker/esm2015/bs-datepicker.component.js +307 -0
  418. package/datepicker/esm2015/bs-datepicker.config.js +117 -0
  419. package/datepicker/esm2015/bs-datepicker.module.js +90 -0
  420. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +224 -0
  421. package/datepicker/esm2015/bs-daterangepicker.component.js +293 -0
  422. package/datepicker/esm2015/bs-daterangepicker.config.js +29 -0
  423. package/datepicker/esm2015/bs-locale.service.js +61 -0
  424. package/datepicker/esm2015/date-formatter.js +18 -0
  425. package/datepicker/esm2015/datepicker-inner.component.js +451 -0
  426. package/datepicker/esm2015/datepicker.component.js +326 -0
  427. package/datepicker/esm2015/datepicker.config.js +74 -0
  428. package/datepicker/esm2015/datepicker.module.js +52 -0
  429. package/datepicker/esm2015/daypicker.component.js +212 -0
  430. package/datepicker/esm2015/engine/calc-days-calendar.js +29 -0
  431. package/datepicker/esm2015/engine/flag-days-calendar.js +115 -0
  432. package/datepicker/esm2015/engine/flag-months-calendar.js +57 -0
  433. package/datepicker/esm2015/engine/flag-years-calendar.js +56 -0
  434. package/datepicker/esm2015/engine/format-days-calendar.js +50 -0
  435. package/datepicker/esm2015/engine/format-months-calendar.js +29 -0
  436. package/datepicker/esm2015/engine/format-years-calendar.js +42 -0
  437. package/datepicker/esm2015/engine/view-mode.js +14 -0
  438. package/datepicker/esm2015/models/index.js +199 -0
  439. package/datepicker/esm2015/monthpicker.component.js +118 -0
  440. package/datepicker/esm2015/ngx-bootstrap-datepicker.js +29 -0
  441. package/datepicker/esm2015/public_api.js +19 -0
  442. package/datepicker/esm2015/reducer/_defaults.js +10 -0
  443. package/datepicker/esm2015/reducer/bs-datepicker.actions.js +204 -0
  444. package/datepicker/esm2015/reducer/bs-datepicker.effects.js +249 -0
  445. package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +289 -0
  446. package/datepicker/esm2015/reducer/bs-datepicker.state.js +87 -0
  447. package/datepicker/esm2015/reducer/bs-datepicker.store.js +34 -0
  448. package/datepicker/esm2015/themes/bs/bs-calendar-layout.component.js +39 -0
  449. package/datepicker/esm2015/themes/bs/bs-current-date-view.component.js +32 -0
  450. package/datepicker/esm2015/themes/bs/bs-custom-dates-view.component.js +51 -0
  451. package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +113 -0
  452. package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
  453. package/datepicker/esm2015/themes/bs/bs-datepicker-navigation-view.component.js +88 -0
  454. package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +133 -0
  455. package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +134 -0
  456. package/datepicker/esm2015/themes/bs/bs-months-calendar-view.component.js +104 -0
  457. package/datepicker/esm2015/themes/bs/bs-timepicker-view.component.js +53 -0
  458. package/datepicker/esm2015/themes/bs/bs-years-calendar-view.component.js +105 -0
  459. package/datepicker/esm2015/utils/bs-calendar-utils.js +54 -0
  460. package/datepicker/esm2015/utils/matrix-utils.js +39 -0
  461. package/datepicker/esm2015/yearpicker.component.js +122 -0
  462. package/datepicker/esm5/base/bs-datepicker-container.js +170 -0
  463. package/datepicker/esm5/bs-datepicker-input.directive.js +242 -0
  464. package/datepicker/esm5/bs-datepicker.component.js +368 -0
  465. package/datepicker/esm5/bs-datepicker.config.js +119 -0
  466. package/datepicker/esm5/bs-datepicker.module.js +97 -0
  467. package/datepicker/esm5/bs-daterangepicker-input.directive.js +263 -0
  468. package/datepicker/esm5/bs-daterangepicker.component.js +354 -0
  469. package/datepicker/esm5/bs-daterangepicker.config.js +34 -0
  470. package/datepicker/esm5/bs-locale.service.js +79 -0
  471. package/datepicker/esm5/date-formatter.js +28 -0
  472. package/datepicker/esm5/datepicker-inner.component.js +547 -0
  473. package/datepicker/esm5/datepicker.component.js +325 -0
  474. package/datepicker/esm5/datepicker.config.js +76 -0
  475. package/datepicker/esm5/datepicker.module.js +59 -0
  476. package/datepicker/esm5/daypicker.component.js +157 -0
  477. package/datepicker/esm5/engine/calc-days-calendar.js +29 -0
  478. package/datepicker/esm5/engine/flag-days-calendar.js +115 -0
  479. package/datepicker/esm5/engine/flag-months-calendar.js +57 -0
  480. package/datepicker/esm5/engine/flag-years-calendar.js +56 -0
  481. package/datepicker/esm5/engine/format-days-calendar.js +55 -0
  482. package/datepicker/esm5/engine/format-months-calendar.js +31 -0
  483. package/datepicker/esm5/engine/format-years-calendar.js +44 -0
  484. package/datepicker/esm5/engine/view-mode.js +14 -0
  485. package/datepicker/esm5/models/index.js +199 -0
  486. package/datepicker/esm5/monthpicker.component.js +85 -0
  487. package/datepicker/esm5/ngx-bootstrap-datepicker.js +29 -0
  488. package/datepicker/esm5/public_api.js +19 -0
  489. package/datepicker/esm5/reducer/_defaults.js +10 -0
  490. package/datepicker/esm5/reducer/bs-datepicker.actions.js +266 -0
  491. package/datepicker/esm5/reducer/bs-datepicker.effects.js +314 -0
  492. package/datepicker/esm5/reducer/bs-datepicker.reducer.js +298 -0
  493. package/datepicker/esm5/reducer/bs-datepicker.state.js +91 -0
  494. package/datepicker/esm5/reducer/bs-datepicker.store.js +40 -0
  495. package/datepicker/esm5/themes/bs/bs-calendar-layout.component.js +28 -0
  496. package/datepicker/esm5/themes/bs/bs-current-date-view.component.js +36 -0
  497. package/datepicker/esm5/themes/bs/bs-custom-dates-view.component.js +50 -0
  498. package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +138 -0
  499. package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +73 -0
  500. package/datepicker/esm5/themes/bs/bs-datepicker-navigation-view.component.js +68 -0
  501. package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +158 -0
  502. package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +114 -0
  503. package/datepicker/esm5/themes/bs/bs-months-calendar-view.component.js +100 -0
  504. package/datepicker/esm5/themes/bs/bs-timepicker-view.component.js +37 -0
  505. package/datepicker/esm5/themes/bs/bs-years-calendar-view.component.js +101 -0
  506. package/datepicker/esm5/utils/bs-calendar-utils.js +54 -0
  507. package/datepicker/esm5/utils/matrix-utils.js +39 -0
  508. package/datepicker/esm5/yearpicker.component.js +92 -0
  509. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3827 -0
  510. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -0
  511. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +4198 -0
  512. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -0
  513. package/datepicker/models/index.d.ts +3 -1
  514. package/datepicker/ngx-bootstrap-datepicker.d.ts +23 -0
  515. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -0
  516. package/datepicker/package.json +19 -0
  517. package/datepicker/public_api.d.ts +14 -0
  518. package/datepicker/reducer/_defaults.d.ts +1 -1
  519. package/datepicker/reducer/bs-datepicker.actions.d.ts +5 -3
  520. package/datepicker/reducer/bs-datepicker.effects.d.ts +3 -2
  521. package/datepicker/reducer/bs-datepicker.reducer.d.ts +1 -1
  522. package/datepicker/reducer/bs-datepicker.state.d.ts +4 -1
  523. package/datepicker/reducer/bs-datepicker.store.d.ts +1 -1
  524. package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +1 -1
  525. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +9 -2
  526. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
  527. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +1 -1
  528. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +4 -1
  529. package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
  530. package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
  531. package/datepicker/utils/matrix-utils.d.ts +1 -1
  532. package/dropdown/bs-dropdown-container.component.d.ts +3 -0
  533. package/dropdown/bs-dropdown-toggle.directive.d.ts +4 -2
  534. package/dropdown/bs-dropdown.config.d.ts +2 -0
  535. package/dropdown/bs-dropdown.directive.d.ts +12 -6
  536. package/dropdown/bs-dropdown.state.d.ts +2 -1
  537. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +793 -0
  538. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -0
  539. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +2 -0
  540. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -0
  541. package/dropdown/esm2015/bs-dropdown-container.component.js +104 -0
  542. package/dropdown/esm2015/bs-dropdown-menu.directive.js +42 -0
  543. package/dropdown/esm2015/bs-dropdown-toggle.directive.js +109 -0
  544. package/dropdown/esm2015/bs-dropdown.config.js +44 -0
  545. package/dropdown/esm2015/bs-dropdown.directive.js +408 -0
  546. package/dropdown/esm2015/bs-dropdown.module.js +60 -0
  547. package/dropdown/esm2015/bs-dropdown.state.js +51 -0
  548. package/dropdown/esm2015/index.js +7 -0
  549. package/dropdown/esm2015/ngx-bootstrap-dropdown.js +10 -0
  550. package/dropdown/esm2015/public_api.js +13 -0
  551. package/dropdown/esm5/bs-dropdown-container.component.js +109 -0
  552. package/dropdown/esm5/bs-dropdown-menu.directive.js +40 -0
  553. package/dropdown/esm5/bs-dropdown-toggle.directive.js +132 -0
  554. package/dropdown/esm5/bs-dropdown.config.js +46 -0
  555. package/dropdown/esm5/bs-dropdown.directive.js +501 -0
  556. package/dropdown/esm5/bs-dropdown.module.js +69 -0
  557. package/dropdown/esm5/bs-dropdown.state.js +54 -0
  558. package/dropdown/esm5/index.js +7 -0
  559. package/dropdown/esm5/ngx-bootstrap-dropdown.js +10 -0
  560. package/dropdown/esm5/public_api.js +13 -0
  561. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +623 -0
  562. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -0
  563. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +748 -0
  564. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -0
  565. package/dropdown/index.d.ts +1 -7
  566. package/dropdown/ngx-bootstrap-dropdown.d.ts +4 -0
  567. package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -0
  568. package/dropdown/package.json +19 -0
  569. package/dropdown/public_api.d.ts +7 -0
  570. package/esm2015/ngx-bootstrap.js +10 -0
  571. package/esm2015/public_api.js +31 -0
  572. package/esm5/ngx-bootstrap.js +10 -0
  573. package/esm5/public_api.js +31 -0
  574. package/fesm2015/ngx-bootstrap.js +35 -0
  575. package/fesm2015/ngx-bootstrap.js.map +1 -0
  576. package/fesm5/ngx-bootstrap.js +35 -0
  577. package/fesm5/ngx-bootstrap.js.map +1 -0
  578. package/locale/bundles/ngx-bootstrap-locale.umd.js +56 -0
  579. package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -0
  580. package/locale/bundles/ngx-bootstrap-locale.umd.min.js +2 -0
  581. package/locale/bundles/ngx-bootstrap-locale.umd.min.js.map +1 -0
  582. package/locale/esm2015/ngx-bootstrap-locale.js +10 -0
  583. package/locale/esm2015/public_api.js +40 -0
  584. package/locale/esm5/ngx-bootstrap-locale.js +10 -0
  585. package/locale/esm5/public_api.js +40 -0
  586. package/locale/fesm2015/ngx-bootstrap-locale.js +13 -0
  587. package/locale/fesm2015/ngx-bootstrap-locale.js.map +1 -0
  588. package/locale/fesm5/ngx-bootstrap-locale.js +13 -0
  589. package/locale/fesm5/ngx-bootstrap-locale.js.map +1 -0
  590. package/locale/ngx-bootstrap-locale.d.ts +4 -0
  591. package/locale/ngx-bootstrap-locale.metadata.json +1 -0
  592. package/locale/package.json +19 -0
  593. package/locale/public_api.d.ts +34 -0
  594. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js +178 -0
  595. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.js.map +1 -0
  596. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js +2 -0
  597. package/mini-ngrx/bundles/ngx-bootstrap-mini-ngrx.umd.min.js.map +1 -0
  598. package/mini-ngrx/esm2015/index.js +7 -0
  599. package/mini-ngrx/esm2015/ngx-bootstrap-mini-ngrx.js +10 -0
  600. package/mini-ngrx/esm2015/public_api.js +18 -0
  601. package/mini-ngrx/esm2015/state.class.js +29 -0
  602. package/mini-ngrx/esm2015/store.class.js +81 -0
  603. package/mini-ngrx/esm5/index.js +7 -0
  604. package/mini-ngrx/esm5/ngx-bootstrap-mini-ngrx.js +10 -0
  605. package/mini-ngrx/esm5/public_api.js +18 -0
  606. package/mini-ngrx/esm5/state.class.js +35 -0
  607. package/mini-ngrx/esm5/store.class.js +114 -0
  608. package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js +114 -0
  609. package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js.map +1 -0
  610. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js +144 -0
  611. package/mini-ngrx/fesm5/ngx-bootstrap-mini-ngrx.js.map +1 -0
  612. package/mini-ngrx/index.d.ts +1 -7
  613. package/mini-ngrx/ngx-bootstrap-mini-ngrx.d.ts +4 -0
  614. package/mini-ngrx/ngx-bootstrap-mini-ngrx.metadata.json +1 -0
  615. package/mini-ngrx/package.json +19 -0
  616. package/mini-ngrx/public_api.d.ts +7 -0
  617. package/modal/bs-modal-ref.service.d.ts +4 -0
  618. package/modal/bs-modal.service.d.ts +5 -1
  619. package/modal/bundles/ngx-bootstrap-modal.umd.js +1156 -0
  620. package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -0
  621. package/modal/bundles/ngx-bootstrap-modal.umd.min.js +2 -0
  622. package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -0
  623. package/modal/esm2015/bs-modal-ref.service.js +46 -0
  624. package/modal/esm2015/bs-modal.service.js +267 -0
  625. package/modal/esm2015/modal-backdrop.component.js +103 -0
  626. package/modal/esm2015/modal-backdrop.options.js +19 -0
  627. package/modal/esm2015/modal-container.component.js +160 -0
  628. package/modal/esm2015/modal-options.class.js +92 -0
  629. package/modal/esm2015/modal.directive.js +459 -0
  630. package/modal/esm2015/modal.module.js +44 -0
  631. package/modal/esm2015/models/index.js +58 -0
  632. package/modal/esm2015/ngx-bootstrap-modal.js +11 -0
  633. package/modal/esm2015/public_api.js +14 -0
  634. package/modal/esm5/bs-modal-ref.service.js +48 -0
  635. package/modal/esm5/bs-modal.service.js +333 -0
  636. package/modal/esm5/modal-backdrop.component.js +112 -0
  637. package/modal/esm5/modal-backdrop.options.js +18 -0
  638. package/modal/esm5/modal-container.component.js +170 -0
  639. package/modal/esm5/modal-options.class.js +96 -0
  640. package/modal/esm5/modal.directive.js +580 -0
  641. package/modal/esm5/modal.module.js +51 -0
  642. package/modal/esm5/models/index.js +58 -0
  643. package/modal/esm5/ngx-bootstrap-modal.js +11 -0
  644. package/modal/esm5/public_api.js +14 -0
  645. package/modal/fesm2015/ngx-bootstrap-modal.js +932 -0
  646. package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -0
  647. package/modal/fesm5/ngx-bootstrap-modal.js +1142 -0
  648. package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -0
  649. package/modal/modal-container.component.d.ts +2 -2
  650. package/modal/modal-options.class.d.ts +5 -7
  651. package/modal/modal.directive.d.ts +25 -7
  652. package/modal/models/index.d.ts +22 -0
  653. package/modal/ngx-bootstrap-modal.d.ts +5 -0
  654. package/modal/ngx-bootstrap-modal.metadata.json +1 -0
  655. package/modal/package.json +19 -0
  656. package/modal/{index.d.ts → public_api.d.ts} +0 -0
  657. package/ngx-bootstrap.d.ts +4 -0
  658. package/ngx-bootstrap.metadata.json +1 -0
  659. package/package.json +30 -29
  660. package/pagination/bundles/ngx-bootstrap-pagination.umd.js +815 -0
  661. package/pagination/bundles/ngx-bootstrap-pagination.umd.js.map +1 -0
  662. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js +2 -0
  663. package/pagination/bundles/ngx-bootstrap-pagination.umd.min.js.map +1 -0
  664. package/pagination/esm2015/models/index.js +62 -0
  665. package/pagination/esm2015/ngx-bootstrap-pagination.js +12 -0
  666. package/pagination/esm2015/pager.component.js +412 -0
  667. package/pagination/esm2015/pagination.component.js +422 -0
  668. package/pagination/esm2015/pagination.config.js +49 -0
  669. package/pagination/esm2015/pagination.module.js +35 -0
  670. package/pagination/esm2015/public_api.js +10 -0
  671. package/pagination/esm5/models/index.js +62 -0
  672. package/pagination/esm5/ngx-bootstrap-pagination.js +12 -0
  673. package/pagination/esm5/pager.component.js +475 -0
  674. package/pagination/esm5/pagination.component.js +485 -0
  675. package/pagination/esm5/pagination.config.js +51 -0
  676. package/pagination/esm5/pagination.module.js +42 -0
  677. package/pagination/esm5/public_api.js +10 -0
  678. package/pagination/fesm2015/ngx-bootstrap-pagination.js +685 -0
  679. package/pagination/fesm2015/ngx-bootstrap-pagination.js.map +1 -0
  680. package/pagination/fesm5/ngx-bootstrap-pagination.js +816 -0
  681. package/pagination/fesm5/ngx-bootstrap-pagination.js.map +1 -0
  682. package/pagination/models/index.d.ts +25 -0
  683. package/pagination/ngx-bootstrap-pagination.d.ts +6 -0
  684. package/pagination/ngx-bootstrap-pagination.metadata.json +1 -0
  685. package/pagination/package.json +19 -0
  686. package/pagination/pager.component.d.ts +11 -11
  687. package/pagination/pagination.component.d.ts +12 -12
  688. package/pagination/pagination.config.d.ts +3 -2
  689. package/pagination/{index.d.ts → public_api.d.ts} +0 -0
  690. package/popover/bundles/ngx-bootstrap-popover.umd.js +317 -0
  691. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -0
  692. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +2 -0
  693. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -0
  694. package/popover/esm2015/ngx-bootstrap-popover.js +10 -0
  695. package/popover/esm2015/popover-container.component.js +72 -0
  696. package/popover/esm2015/popover.config.js +58 -0
  697. package/popover/esm2015/popover.directive.js +227 -0
  698. package/popover/esm2015/popover.module.js +41 -0
  699. package/popover/esm2015/public_api.js +10 -0
  700. package/popover/esm5/ngx-bootstrap-popover.js +10 -0
  701. package/popover/esm5/popover-container.component.js +66 -0
  702. package/popover/esm5/popover.config.js +60 -0
  703. package/popover/esm5/popover.directive.js +260 -0
  704. package/popover/esm5/popover.module.js +48 -0
  705. package/popover/esm5/public_api.js +10 -0
  706. package/popover/fesm2015/ngx-bootstrap-popover.js +277 -0
  707. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -0
  708. package/popover/fesm5/ngx-bootstrap-popover.js +309 -0
  709. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -0
  710. package/popover/ngx-bootstrap-popover.d.ts +4 -0
  711. package/popover/ngx-bootstrap-popover.metadata.json +1 -0
  712. package/popover/package.json +19 -0
  713. package/popover/popover.directive.d.ts +3 -3
  714. package/popover/{index.d.ts → public_api.d.ts} +0 -0
  715. package/positioning/bundles/ngx-bootstrap-positioning.umd.js +366 -0
  716. package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -0
  717. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +2 -0
  718. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -0
  719. package/positioning/esm2015/ng-positioning.js +253 -0
  720. package/positioning/esm2015/ngx-bootstrap-positioning.js +10 -0
  721. package/positioning/esm2015/positioning.service.js +91 -0
  722. package/positioning/esm2015/public_api.js +8 -0
  723. package/positioning/esm5/ng-positioning.js +300 -0
  724. package/positioning/esm5/ngx-bootstrap-positioning.js +10 -0
  725. package/positioning/esm5/positioning.service.js +99 -0
  726. package/positioning/esm5/public_api.js +8 -0
  727. package/positioning/fesm2015/ngx-bootstrap-positioning.js +299 -0
  728. package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -0
  729. package/positioning/fesm5/ngx-bootstrap-positioning.js +352 -0
  730. package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -0
  731. package/positioning/ngx-bootstrap-positioning.d.ts +4 -0
  732. package/positioning/ngx-bootstrap-positioning.metadata.json +1 -0
  733. package/positioning/package.json +19 -0
  734. package/positioning/{index.d.ts → public_api.d.ts} +0 -0
  735. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js +319 -0
  736. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.js.map +1 -0
  737. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js +2 -0
  738. package/progressbar/bundles/ngx-bootstrap-progressbar.umd.min.js.map +1 -0
  739. package/progressbar/esm2015/bar.component.js +129 -0
  740. package/progressbar/esm2015/ngx-bootstrap-progressbar.js +10 -0
  741. package/progressbar/esm2015/progressbar.component.js +148 -0
  742. package/progressbar/esm2015/progressbar.config.js +41 -0
  743. package/progressbar/esm2015/progressbar.module.js +35 -0
  744. package/progressbar/esm2015/public_api.js +10 -0
  745. package/progressbar/esm5/bar.component.js +149 -0
  746. package/progressbar/esm5/ngx-bootstrap-progressbar.js +10 -0
  747. package/progressbar/esm5/progressbar.component.js +170 -0
  748. package/progressbar/esm5/progressbar.config.js +43 -0
  749. package/progressbar/esm5/progressbar.module.js +42 -0
  750. package/progressbar/esm5/public_api.js +10 -0
  751. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js +268 -0
  752. package/progressbar/fesm2015/ngx-bootstrap-progressbar.js.map +1 -0
  753. package/progressbar/fesm5/ngx-bootstrap-progressbar.js +315 -0
  754. package/progressbar/fesm5/ngx-bootstrap-progressbar.js.map +1 -0
  755. package/progressbar/ngx-bootstrap-progressbar.d.ts +4 -0
  756. package/progressbar/ngx-bootstrap-progressbar.metadata.json +1 -0
  757. package/progressbar/package.json +19 -0
  758. package/progressbar/progressbar.component.d.ts +4 -2
  759. package/progressbar/{index.d.ts → public_api.d.ts} +0 -0
  760. package/public_api.d.ts +25 -0
  761. package/rating/bundles/ngx-bootstrap-rating.umd.js +243 -0
  762. package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -0
  763. package/rating/bundles/ngx-bootstrap-rating.umd.min.js +2 -0
  764. package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -0
  765. package/rating/esm2015/models/index.js +28 -0
  766. package/rating/esm2015/ngx-bootstrap-rating.js +11 -0
  767. package/rating/esm2015/public_api.js +8 -0
  768. package/rating/esm2015/rating.component.js +210 -0
  769. package/rating/esm2015/rating.module.js +36 -0
  770. package/rating/esm5/models/index.js +28 -0
  771. package/rating/esm5/ngx-bootstrap-rating.js +11 -0
  772. package/rating/esm5/public_api.js +8 -0
  773. package/rating/esm5/rating.component.js +244 -0
  774. package/rating/esm5/rating.module.js +43 -0
  775. package/rating/fesm2015/ngx-bootstrap-rating.js +194 -0
  776. package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -0
  777. package/rating/fesm5/ngx-bootstrap-rating.js +233 -0
  778. package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -0
  779. package/rating/models/index.d.ts +9 -0
  780. package/rating/ngx-bootstrap-rating.d.ts +5 -0
  781. package/rating/ngx-bootstrap-rating.metadata.json +1 -0
  782. package/rating/package.json +19 -0
  783. package/rating/{index.d.ts → public_api.d.ts} +0 -0
  784. package/rating/rating.component.d.ts +6 -5
  785. package/schematics/collection.json +10 -0
  786. package/schematics/ng-add/index.js +98 -0
  787. package/schematics/ng-add/index.js.map +1 -0
  788. package/schematics/ng-add/index.spec.js +37 -0
  789. package/schematics/ng-add/index.spec.js.map +1 -0
  790. package/schematics/ng-add/schema.js +10 -0
  791. package/schematics/ng-add/schema.js.map +1 -0
  792. package/schematics/ng-add/schema.json +16 -0
  793. package/schematics/utils/index.js +135 -0
  794. package/schematics/utils/index.js.map +1 -0
  795. package/schematics/utils/ng-module-imports.js +69 -0
  796. package/schematics/utils/ng-module-imports.js.map +1 -0
  797. package/schematics/utils/project-main-file.js +22 -0
  798. package/schematics/utils/project-main-file.js.map +1 -0
  799. package/schematics/utils/project-targets.js +25 -0
  800. package/schematics/utils/project-targets.js.map +1 -0
  801. package/sortable/bundles/ngx-bootstrap-sortable.umd.js +464 -0
  802. package/sortable/bundles/ngx-bootstrap-sortable.umd.js.map +1 -0
  803. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js +2 -0
  804. package/sortable/bundles/ngx-bootstrap-sortable.umd.min.js.map +1 -0
  805. package/sortable/esm2015/draggable-item.js +24 -0
  806. package/sortable/esm2015/draggable-item.service.js +65 -0
  807. package/sortable/esm2015/ngx-bootstrap-sortable.js +10 -0
  808. package/sortable/esm2015/public_api.js +9 -0
  809. package/sortable/esm2015/sortable.component.js +382 -0
  810. package/sortable/esm2015/sortable.module.js +34 -0
  811. package/sortable/esm5/draggable-item.js +24 -0
  812. package/sortable/esm5/draggable-item.service.js +82 -0
  813. package/sortable/esm5/ngx-bootstrap-sortable.js +10 -0
  814. package/sortable/esm5/public_api.js +9 -0
  815. package/sortable/esm5/sortable.component.js +398 -0
  816. package/sortable/esm5/sortable.module.js +41 -0
  817. package/sortable/fesm2015/ngx-bootstrap-sortable.js +377 -0
  818. package/sortable/fesm2015/ngx-bootstrap-sortable.js.map +1 -0
  819. package/sortable/fesm5/ngx-bootstrap-sortable.js +414 -0
  820. package/sortable/fesm5/ngx-bootstrap-sortable.js.map +1 -0
  821. package/sortable/ngx-bootstrap-sortable.d.ts +4 -0
  822. package/sortable/ngx-bootstrap-sortable.metadata.json +1 -0
  823. package/sortable/package.json +19 -0
  824. package/sortable/{index.d.ts → public_api.d.ts} +0 -0
  825. package/sortable/sortable.component.d.ts +1 -1
  826. package/tabs/bundles/ngx-bootstrap-tabs.umd.js +481 -0
  827. package/tabs/bundles/ngx-bootstrap-tabs.umd.js.map +1 -0
  828. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js +2 -0
  829. package/tabs/bundles/ngx-bootstrap-tabs.umd.min.js.map +1 -0
  830. package/tabs/esm2015/ng-transclude.directive.js +61 -0
  831. package/tabs/esm2015/ngx-bootstrap-tabs.js +10 -0
  832. package/tabs/esm2015/public_api.js +12 -0
  833. package/tabs/esm2015/tab-heading.directive.js +39 -0
  834. package/tabs/esm2015/tab.directive.js +181 -0
  835. package/tabs/esm2015/tabs.module.js +50 -0
  836. package/tabs/esm2015/tabset.component.js +195 -0
  837. package/tabs/esm2015/tabset.config.js +32 -0
  838. package/tabs/esm5/ng-transclude.directive.js +65 -0
  839. package/tabs/esm5/ngx-bootstrap-tabs.js +10 -0
  840. package/tabs/esm5/public_api.js +12 -0
  841. package/tabs/esm5/tab-heading.directive.js +38 -0
  842. package/tabs/esm5/tab.directive.js +194 -0
  843. package/tabs/esm5/tabs.module.js +57 -0
  844. package/tabs/esm5/tabset.component.js +231 -0
  845. package/tabs/esm5/tabset.config.js +34 -0
  846. package/tabs/fesm2015/ngx-bootstrap-tabs.js +415 -0
  847. package/tabs/fesm2015/ngx-bootstrap-tabs.js.map +1 -0
  848. package/tabs/fesm5/ngx-bootstrap-tabs.js +470 -0
  849. package/tabs/fesm5/ngx-bootstrap-tabs.js.map +1 -0
  850. package/tabs/ngx-bootstrap-tabs.d.ts +4 -0
  851. package/tabs/ngx-bootstrap-tabs.metadata.json +1 -0
  852. package/tabs/package.json +19 -0
  853. package/tabs/{index.d.ts → public_api.d.ts} +0 -0
  854. package/tabs/tabset.component.d.ts +3 -1
  855. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +1183 -0
  856. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -0
  857. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +2 -0
  858. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -0
  859. package/timepicker/esm2015/models/index.js +18 -0
  860. package/timepicker/esm2015/ngx-bootstrap-timepicker.js +11 -0
  861. package/timepicker/esm2015/public_api.js +11 -0
  862. package/timepicker/esm2015/reducer/timepicker.actions.js +99 -0
  863. package/timepicker/esm2015/reducer/timepicker.reducer.js +103 -0
  864. package/timepicker/esm2015/reducer/timepicker.store.js +33 -0
  865. package/timepicker/esm2015/timepicker-controls.util.js +156 -0
  866. package/timepicker/esm2015/timepicker.component.js +480 -0
  867. package/timepicker/esm2015/timepicker.config.js +144 -0
  868. package/timepicker/esm2015/timepicker.models.js +82 -0
  869. package/timepicker/esm2015/timepicker.module.js +39 -0
  870. package/timepicker/esm2015/timepicker.utils.js +224 -0
  871. package/timepicker/esm5/models/index.js +18 -0
  872. package/timepicker/esm5/ngx-bootstrap-timepicker.js +11 -0
  873. package/timepicker/esm5/public_api.js +11 -0
  874. package/timepicker/esm5/reducer/timepicker.actions.js +127 -0
  875. package/timepicker/esm5/reducer/timepicker.reducer.js +108 -0
  876. package/timepicker/esm5/reducer/timepicker.store.js +39 -0
  877. package/timepicker/esm5/timepicker-controls.util.js +156 -0
  878. package/timepicker/esm5/timepicker.component.js +564 -0
  879. package/timepicker/esm5/timepicker.config.js +146 -0
  880. package/timepicker/esm5/timepicker.models.js +82 -0
  881. package/timepicker/esm5/timepicker.module.js +46 -0
  882. package/timepicker/esm5/timepicker.utils.js +227 -0
  883. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +1006 -0
  884. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -0
  885. package/timepicker/fesm5/ngx-bootstrap-timepicker.js +1132 -0
  886. package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -0
  887. package/timepicker/models/index.d.ts +8 -0
  888. package/timepicker/ngx-bootstrap-timepicker.d.ts +5 -0
  889. package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -0
  890. package/timepicker/package.json +19 -0
  891. package/timepicker/{index.d.ts → public_api.d.ts} +0 -0
  892. package/timepicker/reducer/timepicker.actions.d.ts +1 -1
  893. package/timepicker/reducer/timepicker.reducer.d.ts +1 -1
  894. package/timepicker/reducer/timepicker.store.d.ts +1 -1
  895. package/timepicker/timepicker.component.d.ts +8 -7
  896. package/timepicker/timepicker.config.d.ts +1 -1
  897. package/timepicker/timepicker.utils.d.ts +1 -1
  898. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +546 -0
  899. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -0
  900. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +2 -0
  901. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -0
  902. package/tooltip/esm2015/ngx-bootstrap-tooltip.js +10 -0
  903. package/tooltip/esm2015/public_api.js +10 -0
  904. package/tooltip/esm2015/tooltip-container.component.js +92 -0
  905. package/tooltip/esm2015/tooltip.config.js +49 -0
  906. package/tooltip/esm2015/tooltip.directive.js +419 -0
  907. package/tooltip/esm2015/tooltip.module.js +41 -0
  908. package/tooltip/esm5/ngx-bootstrap-tooltip.js +10 -0
  909. package/tooltip/esm5/public_api.js +10 -0
  910. package/tooltip/esm5/tooltip-container.component.js +82 -0
  911. package/tooltip/esm5/tooltip.config.js +51 -0
  912. package/tooltip/esm5/tooltip.directive.js +490 -0
  913. package/tooltip/esm5/tooltip.module.js +48 -0
  914. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +456 -0
  915. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -0
  916. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +522 -0
  917. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -0
  918. package/tooltip/ngx-bootstrap-tooltip.d.ts +4 -0
  919. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -0
  920. package/tooltip/package.json +19 -0
  921. package/tooltip/{index.d.ts → public_api.d.ts} +0 -0
  922. package/tooltip/tooltip-container.component.d.ts +4 -1
  923. package/tooltip/tooltip.directive.d.ts +10 -8
  924. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +2029 -0
  925. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -0
  926. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +2 -0
  927. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -0
  928. package/typeahead/esm2015/latin-map.js +833 -0
  929. package/typeahead/esm2015/ngx-bootstrap-typeahead.js +10 -0
  930. package/typeahead/esm2015/public_api.js +14 -0
  931. package/typeahead/esm2015/typeahead-container.component.js +336 -0
  932. package/typeahead/esm2015/typeahead-match.class.js +38 -0
  933. package/typeahead/esm2015/typeahead-options.class.js +22 -0
  934. package/typeahead/esm2015/typeahead-utils.js +80 -0
  935. package/typeahead/esm2015/typeahead.config.js +35 -0
  936. package/typeahead/esm2015/typeahead.directive.js +652 -0
  937. package/typeahead/esm2015/typeahead.module.js +41 -0
  938. package/typeahead/esm5/latin-map.js +833 -0
  939. package/typeahead/esm5/ngx-bootstrap-typeahead.js +10 -0
  940. package/typeahead/esm5/public_api.js +14 -0
  941. package/typeahead/esm5/typeahead-container.component.js +414 -0
  942. package/typeahead/esm5/typeahead-match.class.js +44 -0
  943. package/typeahead/esm5/typeahead-options.class.js +21 -0
  944. package/typeahead/esm5/typeahead-utils.js +94 -0
  945. package/typeahead/esm5/typeahead.config.js +37 -0
  946. package/typeahead/esm5/typeahead.directive.js +748 -0
  947. package/typeahead/esm5/typeahead.module.js +48 -0
  948. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +1780 -0
  949. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -0
  950. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +1975 -0
  951. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -0
  952. package/typeahead/ngx-bootstrap-typeahead.d.ts +4 -0
  953. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -0
  954. package/typeahead/package.json +19 -0
  955. package/typeahead/public_api.d.ts +8 -0
  956. package/typeahead/typeahead-container.component.d.ts +2 -2
  957. package/typeahead/typeahead.config.d.ts +5 -0
  958. package/typeahead/typeahead.directive.d.ts +13 -10
  959. package/utils/bundles/ngx-bootstrap-utils.umd.js +792 -0
  960. package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -0
  961. package/utils/bundles/ngx-bootstrap-utils.umd.min.js +10 -0
  962. package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -0
  963. package/utils/esm2015/decorators.js +37 -0
  964. package/utils/esm2015/facade/browser.js +29 -0
  965. package/utils/esm2015/linked-list.class.js +324 -0
  966. package/utils/esm2015/ngx-bootstrap-utils.js +10 -0
  967. package/utils/esm2015/public_api.js +16 -0
  968. package/utils/esm2015/theme-provider.js +49 -0
  969. package/utils/esm2015/trigger.class.js +32 -0
  970. package/utils/esm2015/triggers.js +165 -0
  971. package/utils/esm2015/utils.class.js +31 -0
  972. package/utils/esm2015/warn-once.js +21 -0
  973. package/utils/esm5/decorators.js +39 -0
  974. package/utils/esm5/facade/browser.js +29 -0
  975. package/utils/esm5/linked-list.class.js +425 -0
  976. package/utils/esm5/ngx-bootstrap-utils.js +10 -0
  977. package/utils/esm5/public_api.js +16 -0
  978. package/utils/esm5/theme-provider.js +49 -0
  979. package/utils/esm5/trigger.class.js +33 -0
  980. package/utils/esm5/triggers.js +170 -0
  981. package/utils/esm5/utils.class.js +46 -0
  982. package/utils/esm5/warn-once.js +21 -0
  983. package/utils/facade/browser.d.ts +5 -5
  984. package/utils/fesm2015/ngx-bootstrap-utils.js +650 -0
  985. package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -0
  986. package/utils/fesm5/ngx-bootstrap-utils.js +768 -0
  987. package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -0
  988. package/utils/ngx-bootstrap-utils.d.ts +4 -0
  989. package/utils/ngx-bootstrap-utils.metadata.json +1 -0
  990. package/utils/package.json +19 -0
  991. package/utils/public_api.d.ts +10 -0
  992. package/utils/triggers.d.ts +12 -1
  993. package/accordion/accordion-group.component.html +0 -19
  994. package/accordion/accordion-group.component.js +0 -82
  995. package/accordion/accordion-group.component.js.map +0 -1
  996. package/accordion/accordion-group.component.metadata.json +0 -1
  997. package/accordion/accordion-group.component.ngfactory.js.map +0 -1
  998. package/accordion/accordion.component.js +0 -50
  999. package/accordion/accordion.component.js.map +0 -1
  1000. package/accordion/accordion.component.metadata.json +0 -1
  1001. package/accordion/accordion.component.ngfactory.js.map +0 -1
  1002. package/accordion/accordion.config.js +0 -16
  1003. package/accordion/accordion.config.js.map +0 -1
  1004. package/accordion/accordion.config.metadata.json +0 -1
  1005. package/accordion/accordion.config.ngfactory.js.map +0 -1
  1006. package/accordion/accordion.module.js +0 -23
  1007. package/accordion/accordion.module.js.map +0 -1
  1008. package/accordion/accordion.module.metadata.json +0 -1
  1009. package/accordion/accordion.module.ngfactory.js.map +0 -1
  1010. package/accordion/index.js +0 -5
  1011. package/accordion/index.js.map +0 -1
  1012. package/accordion/index.metadata.json +0 -1
  1013. package/alert/alert.component.html +0 -11
  1014. package/alert/alert.component.js +0 -99
  1015. package/alert/alert.component.js.map +0 -1
  1016. package/alert/alert.component.metadata.json +0 -1
  1017. package/alert/alert.component.ngfactory.js.map +0 -1
  1018. package/alert/alert.config.js +0 -17
  1019. package/alert/alert.config.js.map +0 -1
  1020. package/alert/alert.config.metadata.json +0 -1
  1021. package/alert/alert.config.ngfactory.js.map +0 -1
  1022. package/alert/alert.module.js +0 -22
  1023. package/alert/alert.module.js.map +0 -1
  1024. package/alert/alert.module.metadata.json +0 -1
  1025. package/alert/alert.module.ngfactory.js.map +0 -1
  1026. package/alert/index.js +0 -4
  1027. package/alert/index.js.map +0 -1
  1028. package/alert/index.metadata.json +0 -1
  1029. package/buttons/button-checkbox.directive.js +0 -93
  1030. package/buttons/button-checkbox.directive.js.map +0 -1
  1031. package/buttons/button-checkbox.directive.metadata.json +0 -1
  1032. package/buttons/button-checkbox.directive.ngfactory.js.map +0 -1
  1033. package/buttons/button-radio-group.directive.js +0 -53
  1034. package/buttons/button-radio-group.directive.js.map +0 -1
  1035. package/buttons/button-radio-group.directive.metadata.json +0 -1
  1036. package/buttons/button-radio-group.directive.ngfactory.js.map +0 -1
  1037. package/buttons/button-radio.directive.js +0 -126
  1038. package/buttons/button-radio.directive.js.map +0 -1
  1039. package/buttons/button-radio.directive.metadata.json +0 -1
  1040. package/buttons/button-radio.directive.ngfactory.js.map +0 -1
  1041. package/buttons/buttons.module.js +0 -20
  1042. package/buttons/buttons.module.js.map +0 -1
  1043. package/buttons/buttons.module.metadata.json +0 -1
  1044. package/buttons/buttons.module.ngfactory.js.map +0 -1
  1045. package/buttons/index.js +0 -5
  1046. package/buttons/index.js.map +0 -1
  1047. package/buttons/index.metadata.json +0 -1
  1048. package/carousel/carousel.component.html +0 -14
  1049. package/carousel/carousel.component.js +0 -419
  1050. package/carousel/carousel.component.js.map +0 -1
  1051. package/carousel/carousel.component.metadata.json +0 -1
  1052. package/carousel/carousel.component.ngfactory.js.map +0 -1
  1053. package/carousel/carousel.config.js +0 -19
  1054. package/carousel/carousel.config.js.map +0 -1
  1055. package/carousel/carousel.config.metadata.json +0 -1
  1056. package/carousel/carousel.config.ngfactory.js.map +0 -1
  1057. package/carousel/carousel.module.js +0 -23
  1058. package/carousel/carousel.module.js.map +0 -1
  1059. package/carousel/carousel.module.metadata.json +0 -1
  1060. package/carousel/carousel.module.ngfactory.js.map +0 -1
  1061. package/carousel/index.js +0 -5
  1062. package/carousel/index.js.map +0 -1
  1063. package/carousel/index.metadata.json +0 -1
  1064. package/carousel/slide.component.js +0 -41
  1065. package/carousel/slide.component.js.map +0 -1
  1066. package/carousel/slide.component.metadata.json +0 -1
  1067. package/carousel/slide.component.ngfactory.js.map +0 -1
  1068. package/chronos/create/check-overflow.js +0 -30
  1069. package/chronos/create/check-overflow.js.map +0 -1
  1070. package/chronos/create/check-overflow.metadata.json +0 -1
  1071. package/chronos/create/clone.js +0 -6
  1072. package/chronos/create/clone.js.map +0 -1
  1073. package/chronos/create/clone.metadata.json +0 -1
  1074. package/chronos/create/date-from-array.js +0 -23
  1075. package/chronos/create/date-from-array.js.map +0 -1
  1076. package/chronos/create/date-from-array.metadata.json +0 -1
  1077. package/chronos/create/from-anything.js +0 -106
  1078. package/chronos/create/from-anything.js.map +0 -1
  1079. package/chronos/create/from-anything.metadata.json +0 -1
  1080. package/chronos/create/from-array.js +0 -136
  1081. package/chronos/create/from-array.js.map +0 -1
  1082. package/chronos/create/from-array.metadata.json +0 -1
  1083. package/chronos/create/from-object.js +0 -16
  1084. package/chronos/create/from-object.js.map +0 -1
  1085. package/chronos/create/from-object.metadata.json +0 -1
  1086. package/chronos/create/from-string-and-array.js +0 -38
  1087. package/chronos/create/from-string-and-array.js.map +0 -1
  1088. package/chronos/create/from-string-and-array.metadata.json +0 -1
  1089. package/chronos/create/from-string-and-format.js +0 -106
  1090. package/chronos/create/from-string-and-format.js.map +0 -1
  1091. package/chronos/create/from-string-and-format.metadata.json +0 -1
  1092. package/chronos/create/from-string.js +0 -226
  1093. package/chronos/create/from-string.js.map +0 -1
  1094. package/chronos/create/from-string.metadata.json +0 -1
  1095. package/chronos/create/local.js +0 -10
  1096. package/chronos/create/local.js.map +0 -1
  1097. package/chronos/create/local.metadata.json +0 -1
  1098. package/chronos/create/parsing-flags.js +0 -26
  1099. package/chronos/create/parsing-flags.js.map +0 -1
  1100. package/chronos/create/parsing-flags.metadata.json +0 -1
  1101. package/chronos/create/parsing.types.js +0 -1
  1102. package/chronos/create/parsing.types.js.map +0 -1
  1103. package/chronos/create/parsing.types.metadata.json +0 -1
  1104. package/chronos/create/valid.js +0 -42
  1105. package/chronos/create/valid.js.map +0 -1
  1106. package/chronos/create/valid.metadata.json +0 -1
  1107. package/chronos/duration/bubble.js +0 -47
  1108. package/chronos/duration/bubble.js.map +0 -1
  1109. package/chronos/duration/bubble.metadata.json +0 -1
  1110. package/chronos/duration/constructor.js +0 -134
  1111. package/chronos/duration/constructor.js.map +0 -1
  1112. package/chronos/duration/constructor.metadata.json +0 -1
  1113. package/chronos/duration/create.js +0 -114
  1114. package/chronos/duration/create.js.map +0 -1
  1115. package/chronos/duration/create.metadata.json +0 -1
  1116. package/chronos/duration/humanize.js +0 -84
  1117. package/chronos/duration/humanize.js.map +0 -1
  1118. package/chronos/duration/humanize.metadata.json +0 -1
  1119. package/chronos/duration/valid.js +0 -45
  1120. package/chronos/duration/valid.js.map +0 -1
  1121. package/chronos/duration/valid.metadata.json +0 -1
  1122. package/chronos/format/format.js +0 -52
  1123. package/chronos/format/format.js.map +0 -1
  1124. package/chronos/format/format.metadata.json +0 -1
  1125. package/chronos/format.js +0 -48
  1126. package/chronos/format.js.map +0 -1
  1127. package/chronos/format.metadata.json +0 -1
  1128. package/chronos/i18n/ar.js +0 -132
  1129. package/chronos/i18n/ar.js.map +0 -1
  1130. package/chronos/i18n/ar.metadata.json +0 -1
  1131. package/chronos/i18n/cs.js +0 -191
  1132. package/chronos/i18n/cs.js.map +0 -1
  1133. package/chronos/i18n/cs.metadata.json +0 -1
  1134. package/chronos/i18n/da.js +0 -51
  1135. package/chronos/i18n/da.js.map +0 -1
  1136. package/chronos/i18n/da.metadata.json +0 -1
  1137. package/chronos/i18n/de.js +0 -73
  1138. package/chronos/i18n/de.js.map +0 -1
  1139. package/chronos/i18n/de.metadata.json +0 -1
  1140. package/chronos/i18n/en-gb.js +0 -62
  1141. package/chronos/i18n/en-gb.js.map +0 -1
  1142. package/chronos/i18n/en-gb.metadata.json +0 -1
  1143. package/chronos/i18n/es-do.js +0 -86
  1144. package/chronos/i18n/es-do.js.map +0 -1
  1145. package/chronos/i18n/es-do.metadata.json +0 -1
  1146. package/chronos/i18n/es-us.js +0 -80
  1147. package/chronos/i18n/es-us.js.map +0 -1
  1148. package/chronos/i18n/es-us.metadata.json +0 -1
  1149. package/chronos/i18n/es.js +0 -85
  1150. package/chronos/i18n/es.js.map +0 -1
  1151. package/chronos/i18n/es.metadata.json +0 -1
  1152. package/chronos/i18n/fi.js +0 -101
  1153. package/chronos/i18n/fi.js.map +0 -1
  1154. package/chronos/i18n/fi.metadata.json +0 -1
  1155. package/chronos/i18n/fr.js +0 -77
  1156. package/chronos/i18n/fr.js.map +0 -1
  1157. package/chronos/i18n/fr.metadata.json +0 -1
  1158. package/chronos/i18n/gl.js +0 -85
  1159. package/chronos/i18n/gl.js.map +0 -1
  1160. package/chronos/i18n/gl.metadata.json +0 -1
  1161. package/chronos/i18n/he.js +0 -98
  1162. package/chronos/i18n/he.js.map +0 -1
  1163. package/chronos/i18n/he.metadata.json +0 -1
  1164. package/chronos/i18n/hi.js +0 -125
  1165. package/chronos/i18n/hi.js.map +0 -1
  1166. package/chronos/i18n/hi.metadata.json +0 -1
  1167. package/chronos/i18n/hu.js +0 -105
  1168. package/chronos/i18n/hu.js.map +0 -1
  1169. package/chronos/i18n/hu.metadata.json +0 -1
  1170. package/chronos/i18n/id.js +0 -84
  1171. package/chronos/i18n/id.js.map +0 -1
  1172. package/chronos/i18n/id.metadata.json +0 -1
  1173. package/chronos/i18n/it.js +0 -66
  1174. package/chronos/i18n/it.js.map +0 -1
  1175. package/chronos/i18n/it.metadata.json +0 -1
  1176. package/chronos/i18n/ja.js +0 -75
  1177. package/chronos/i18n/ja.js.map +0 -1
  1178. package/chronos/i18n/ja.metadata.json +0 -1
  1179. package/chronos/i18n/ko.js +0 -77
  1180. package/chronos/i18n/ko.js.map +0 -1
  1181. package/chronos/i18n/ko.metadata.json +0 -1
  1182. package/chronos/i18n/mn.js +0 -99
  1183. package/chronos/i18n/mn.js.map +0 -1
  1184. package/chronos/i18n/mn.metadata.json +0 -1
  1185. package/chronos/i18n/nl-be.js +0 -82
  1186. package/chronos/i18n/nl-be.js.map +0 -1
  1187. package/chronos/i18n/nl-be.metadata.json +0 -1
  1188. package/chronos/i18n/nl.js +0 -81
  1189. package/chronos/i18n/nl.js.map +0 -1
  1190. package/chronos/i18n/nl.metadata.json +0 -1
  1191. package/chronos/i18n/pl.js +0 -121
  1192. package/chronos/i18n/pl.js.map +0 -1
  1193. package/chronos/i18n/pl.metadata.json +0 -1
  1194. package/chronos/i18n/pt-br.js +0 -56
  1195. package/chronos/i18n/pt-br.js.map +0 -1
  1196. package/chronos/i18n/pt-br.metadata.json +0 -1
  1197. package/chronos/i18n/ro.js +0 -67
  1198. package/chronos/i18n/ro.js.map +0 -1
  1199. package/chronos/i18n/ro.metadata.json +0 -1
  1200. package/chronos/i18n/ru.js +0 -182
  1201. package/chronos/i18n/ru.js.map +0 -1
  1202. package/chronos/i18n/ru.metadata.json +0 -1
  1203. package/chronos/i18n/sl.js +0 -185
  1204. package/chronos/i18n/sl.js.map +0 -1
  1205. package/chronos/i18n/sl.metadata.json +0 -1
  1206. package/chronos/i18n/sv.js +0 -64
  1207. package/chronos/i18n/sv.js.map +0 -1
  1208. package/chronos/i18n/sv.metadata.json +0 -1
  1209. package/chronos/i18n/th.js +0 -60
  1210. package/chronos/i18n/th.js.map +0 -1
  1211. package/chronos/i18n/th.metadata.json +0 -1
  1212. package/chronos/i18n/tr.js +0 -84
  1213. package/chronos/i18n/tr.js.map +0 -1
  1214. package/chronos/i18n/tr.metadata.json +0 -1
  1215. package/chronos/i18n/zh-cn.js +0 -115
  1216. package/chronos/i18n/zh-cn.js.map +0 -1
  1217. package/chronos/i18n/zh-cn.metadata.json +0 -1
  1218. package/chronos/index.js +0 -7
  1219. package/chronos/index.js.map +0 -1
  1220. package/chronos/index.metadata.json +0 -1
  1221. package/chronos/locale/calendar.js +0 -9
  1222. package/chronos/locale/calendar.js.map +0 -1
  1223. package/chronos/locale/calendar.metadata.json +0 -1
  1224. package/chronos/locale/locale.class.js +0 -550
  1225. package/chronos/locale/locale.class.js.map +0 -1
  1226. package/chronos/locale/locale.class.metadata.json +0 -1
  1227. package/chronos/locale/locale.defaults.js +0 -41
  1228. package/chronos/locale/locale.defaults.js.map +0 -1
  1229. package/chronos/locale/locale.defaults.metadata.json +0 -1
  1230. package/chronos/locale/locales.js +0 -194
  1231. package/chronos/locale/locales.js.map +0 -1
  1232. package/chronos/locale/locales.metadata.json +0 -1
  1233. package/chronos/moment/add-subtract.js +0 -35
  1234. package/chronos/moment/add-subtract.js.map +0 -1
  1235. package/chronos/moment/add-subtract.metadata.json +0 -1
  1236. package/chronos/moment/calendar.js +0 -43
  1237. package/chronos/moment/calendar.js.map +0 -1
  1238. package/chronos/moment/calendar.metadata.json +0 -1
  1239. package/chronos/moment/diff.js +0 -71
  1240. package/chronos/moment/diff.js.map +0 -1
  1241. package/chronos/moment/diff.metadata.json +0 -1
  1242. package/chronos/moment/min-max.js +0 -41
  1243. package/chronos/moment/min-max.js.map +0 -1
  1244. package/chronos/moment/min-max.metadata.json +0 -1
  1245. package/chronos/parse/regex.js +0 -49
  1246. package/chronos/parse/regex.js.map +0 -1
  1247. package/chronos/parse/regex.metadata.json +0 -1
  1248. package/chronos/parse/token.js +0 -31
  1249. package/chronos/parse/token.js.map +0 -1
  1250. package/chronos/parse/token.metadata.json +0 -1
  1251. package/chronos/test/chain.js +0 -738
  1252. package/chronos/test/chain.js.map +0 -1
  1253. package/chronos/test/chain.metadata.json +0 -1
  1254. package/chronos/types.js +0 -1
  1255. package/chronos/types.js.map +0 -1
  1256. package/chronos/types.metadata.json +0 -1
  1257. package/chronos/units/aliases.js +0 -35
  1258. package/chronos/units/aliases.js.map +0 -1
  1259. package/chronos/units/aliases.metadata.json +0 -1
  1260. package/chronos/units/constants.js +0 -11
  1261. package/chronos/units/constants.js.map +0 -1
  1262. package/chronos/units/constants.metadata.json +0 -1
  1263. package/chronos/units/day-of-month.js +0 -28
  1264. package/chronos/units/day-of-month.js.map +0 -1
  1265. package/chronos/units/day-of-week.js +0 -129
  1266. package/chronos/units/day-of-week.js.map +0 -1
  1267. package/chronos/units/day-of-week.metadata.json +0 -1
  1268. package/chronos/units/day-of-year.js +0 -34
  1269. package/chronos/units/day-of-year.js.map +0 -1
  1270. package/chronos/units/day-of-year.metadata.json +0 -1
  1271. package/chronos/units/hour.js +0 -122
  1272. package/chronos/units/hour.js.map +0 -1
  1273. package/chronos/units/index.js +0 -19
  1274. package/chronos/units/index.js.map +0 -1
  1275. package/chronos/units/millisecond.js +0 -58
  1276. package/chronos/units/millisecond.js.map +0 -1
  1277. package/chronos/units/minute.js +0 -20
  1278. package/chronos/units/minute.js.map +0 -1
  1279. package/chronos/units/month.js +0 -61
  1280. package/chronos/units/month.js.map +0 -1
  1281. package/chronos/units/month.metadata.json +0 -1
  1282. package/chronos/units/offset.js +0 -212
  1283. package/chronos/units/offset.js.map +0 -1
  1284. package/chronos/units/offset.metadata.json +0 -1
  1285. package/chronos/units/priorities.js +0 -21
  1286. package/chronos/units/priorities.js.map +0 -1
  1287. package/chronos/units/priorities.metadata.json +0 -1
  1288. package/chronos/units/quarter.js +0 -37
  1289. package/chronos/units/quarter.js.map +0 -1
  1290. package/chronos/units/quarter.metadata.json +0 -1
  1291. package/chronos/units/second.js +0 -20
  1292. package/chronos/units/second.js.map +0 -1
  1293. package/chronos/units/timestamp.js +0 -24
  1294. package/chronos/units/timestamp.js.map +0 -1
  1295. package/chronos/units/timezone.js +0 -17
  1296. package/chronos/units/timezone.js.map +0 -1
  1297. package/chronos/units/timezone.metadata.json +0 -1
  1298. package/chronos/units/week-calendar-utils.js +0 -63
  1299. package/chronos/units/week-calendar-utils.js.map +0 -1
  1300. package/chronos/units/week-calendar-utils.metadata.json +0 -1
  1301. package/chronos/units/week-year.js +0 -102
  1302. package/chronos/units/week-year.js.map +0 -1
  1303. package/chronos/units/week-year.metadata.json +0 -1
  1304. package/chronos/units/week.js +0 -56
  1305. package/chronos/units/week.js.map +0 -1
  1306. package/chronos/units/week.metadata.json +0 -1
  1307. package/chronos/units/year.js +0 -55
  1308. package/chronos/units/year.js.map +0 -1
  1309. package/chronos/units/year.metadata.json +0 -1
  1310. package/chronos/utils/abs-ceil.js +0 -4
  1311. package/chronos/utils/abs-ceil.js.map +0 -1
  1312. package/chronos/utils/abs-ceil.metadata.json +0 -1
  1313. package/chronos/utils/abs-round.js +0 -4
  1314. package/chronos/utils/abs-round.js.map +0 -1
  1315. package/chronos/utils/abs-round.metadata.json +0 -1
  1316. package/chronos/utils/compare-arrays.js +0 -15
  1317. package/chronos/utils/compare-arrays.js.map +0 -1
  1318. package/chronos/utils/compare-arrays.metadata.json +0 -1
  1319. package/chronos/utils/date-compare.js +0 -50
  1320. package/chronos/utils/date-compare.js.map +0 -1
  1321. package/chronos/utils/date-compare.metadata.json +0 -1
  1322. package/chronos/utils/date-getters.js +0 -75
  1323. package/chronos/utils/date-getters.js.map +0 -1
  1324. package/chronos/utils/date-getters.metadata.json +0 -1
  1325. package/chronos/utils/date-setters.js +0 -74
  1326. package/chronos/utils/date-setters.js.map +0 -1
  1327. package/chronos/utils/date-setters.metadata.json +0 -1
  1328. package/chronos/utils/defaults.js +0 -11
  1329. package/chronos/utils/defaults.js.map +0 -1
  1330. package/chronos/utils/defaults.metadata.json +0 -1
  1331. package/chronos/utils/start-end-of.js +0 -57
  1332. package/chronos/utils/start-end-of.js.map +0 -1
  1333. package/chronos/utils/start-end-of.metadata.json +0 -1
  1334. package/chronos/utils/type-checks.js +0 -56
  1335. package/chronos/utils/type-checks.js.map +0 -1
  1336. package/chronos/utils/type-checks.metadata.json +0 -1
  1337. package/chronos/utils/zero-fill.js +0 -10
  1338. package/chronos/utils/zero-fill.js.map +0 -1
  1339. package/chronos/utils/zero-fill.metadata.json +0 -1
  1340. package/chronos/utils.js +0 -7
  1341. package/chronos/utils.js.map +0 -1
  1342. package/chronos/utils.metadata.json +0 -1
  1343. package/collapse/collapse.directive.js +0 -98
  1344. package/collapse/collapse.directive.js.map +0 -1
  1345. package/collapse/collapse.directive.metadata.json +0 -1
  1346. package/collapse/collapse.directive.ngfactory.js.map +0 -1
  1347. package/collapse/collapse.module.js +0 -18
  1348. package/collapse/collapse.module.js.map +0 -1
  1349. package/collapse/collapse.module.metadata.json +0 -1
  1350. package/collapse/collapse.module.ngfactory.js.map +0 -1
  1351. package/collapse/index.js +0 -3
  1352. package/collapse/index.js.map +0 -1
  1353. package/collapse/index.metadata.json +0 -1
  1354. package/component-loader/bs-component-ref.class.js +0 -7
  1355. package/component-loader/bs-component-ref.class.js.map +0 -1
  1356. package/component-loader/bs-component-ref.class.metadata.json +0 -1
  1357. package/component-loader/component-loader.class.js +0 -258
  1358. package/component-loader/component-loader.class.js.map +0 -1
  1359. package/component-loader/component-loader.class.metadata.json +0 -1
  1360. package/component-loader/component-loader.factory.js +0 -50
  1361. package/component-loader/component-loader.factory.js.map +0 -1
  1362. package/component-loader/component-loader.factory.metadata.json +0 -1
  1363. package/component-loader/component-loader.factory.ngfactory.js.map +0 -1
  1364. package/component-loader/content-ref.class.js +0 -14
  1365. package/component-loader/content-ref.class.js.map +0 -1
  1366. package/component-loader/content-ref.class.metadata.json +0 -1
  1367. package/component-loader/index.d.ts +0 -3
  1368. package/component-loader/index.js +0 -4
  1369. package/component-loader/index.js.map +0 -1
  1370. package/component-loader/index.metadata.json +0 -1
  1371. package/component-loader/listen-options.model.js +0 -1
  1372. package/component-loader/listen-options.model.js.map +0 -1
  1373. package/component-loader/listen-options.model.metadata.json +0 -1
  1374. package/datepicker/base/bs-datepicker-container.js +0 -40
  1375. package/datepicker/base/bs-datepicker-container.js.map +0 -1
  1376. package/datepicker/base/bs-datepicker-container.metadata.json +0 -1
  1377. package/datepicker/bs-datepicker-input.directive.js +0 -134
  1378. package/datepicker/bs-datepicker-input.directive.js.map +0 -1
  1379. package/datepicker/bs-datepicker-input.directive.metadata.json +0 -1
  1380. package/datepicker/bs-datepicker-input.directive.ngfactory.js.map +0 -1
  1381. package/datepicker/bs-datepicker.component.js +0 -217
  1382. package/datepicker/bs-datepicker.component.js.map +0 -1
  1383. package/datepicker/bs-datepicker.component.metadata.json +0 -1
  1384. package/datepicker/bs-datepicker.component.ngfactory.js.map +0 -1
  1385. package/datepicker/bs-datepicker.config.js +0 -39
  1386. package/datepicker/bs-datepicker.config.js.map +0 -1
  1387. package/datepicker/bs-datepicker.config.metadata.json +0 -1
  1388. package/datepicker/bs-datepicker.config.ngfactory.js.map +0 -1
  1389. package/datepicker/bs-datepicker.module.js +0 -80
  1390. package/datepicker/bs-datepicker.module.js.map +0 -1
  1391. package/datepicker/bs-datepicker.module.metadata.json +0 -1
  1392. package/datepicker/bs-datepicker.module.ngfactory.js.map +0 -1
  1393. package/datepicker/bs-daterangepicker-input.directive.js +0 -150
  1394. package/datepicker/bs-daterangepicker-input.directive.js.map +0 -1
  1395. package/datepicker/bs-daterangepicker-input.directive.metadata.json +0 -1
  1396. package/datepicker/bs-daterangepicker-input.directive.ngfactory.js.map +0 -1
  1397. package/datepicker/bs-daterangepicker.component.js +0 -220
  1398. package/datepicker/bs-daterangepicker.component.js.map +0 -1
  1399. package/datepicker/bs-daterangepicker.component.metadata.json +0 -1
  1400. package/datepicker/bs-daterangepicker.component.ngfactory.js.map +0 -1
  1401. package/datepicker/bs-daterangepicker.config.js +0 -27
  1402. package/datepicker/bs-daterangepicker.config.js.map +0 -1
  1403. package/datepicker/bs-daterangepicker.config.metadata.json +0 -1
  1404. package/datepicker/bs-daterangepicker.config.ngfactory.js.map +0 -1
  1405. package/datepicker/bs-locale.service.js +0 -42
  1406. package/datepicker/bs-locale.service.js.map +0 -1
  1407. package/datepicker/bs-locale.service.metadata.json +0 -1
  1408. package/datepicker/bs-locale.service.ngfactory.js.map +0 -1
  1409. package/datepicker/date-formatter.js +0 -11
  1410. package/datepicker/date-formatter.js.map +0 -1
  1411. package/datepicker/date-formatter.metadata.json +0 -1
  1412. package/datepicker/datepicker-inner.component.js +0 -317
  1413. package/datepicker/datepicker-inner.component.js.map +0 -1
  1414. package/datepicker/datepicker-inner.component.metadata.json +0 -1
  1415. package/datepicker/datepicker-inner.component.ngfactory.js.map +0 -1
  1416. package/datepicker/datepicker.component.js +0 -114
  1417. package/datepicker/datepicker.component.js.map +0 -1
  1418. package/datepicker/datepicker.component.metadata.json +0 -1
  1419. package/datepicker/datepicker.component.ngfactory.js.map +0 -1
  1420. package/datepicker/datepicker.config.js +0 -28
  1421. package/datepicker/datepicker.config.js.map +0 -1
  1422. package/datepicker/datepicker.config.metadata.json +0 -1
  1423. package/datepicker/datepicker.config.ngfactory.js.map +0 -1
  1424. package/datepicker/datepicker.module.js +0 -39
  1425. package/datepicker/datepicker.module.js.map +0 -1
  1426. package/datepicker/datepicker.module.metadata.json +0 -1
  1427. package/datepicker/datepicker.module.ngfactory.js.map +0 -1
  1428. package/datepicker/daypicker.component.js +0 -116
  1429. package/datepicker/daypicker.component.js.map +0 -1
  1430. package/datepicker/daypicker.component.metadata.json +0 -1
  1431. package/datepicker/daypicker.component.ngfactory.js.map +0 -1
  1432. package/datepicker/engine/calc-days-calendar.js +0 -19
  1433. package/datepicker/engine/calc-days-calendar.js.map +0 -1
  1434. package/datepicker/engine/calc-days-calendar.metadata.json +0 -1
  1435. package/datepicker/engine/flag-days-calendar.js +0 -72
  1436. package/datepicker/engine/flag-days-calendar.js.map +0 -1
  1437. package/datepicker/engine/flag-days-calendar.metadata.json +0 -1
  1438. package/datepicker/engine/flag-months-calendar.js +0 -30
  1439. package/datepicker/engine/flag-months-calendar.js.map +0 -1
  1440. package/datepicker/engine/flag-months-calendar.metadata.json +0 -1
  1441. package/datepicker/engine/flag-years-calendar.js +0 -29
  1442. package/datepicker/engine/flag-years-calendar.js.map +0 -1
  1443. package/datepicker/engine/flag-years-calendar.metadata.json +0 -1
  1444. package/datepicker/engine/format-days-calendar.js +0 -34
  1445. package/datepicker/engine/format-days-calendar.js.map +0 -1
  1446. package/datepicker/engine/format-days-calendar.metadata.json +0 -1
  1447. package/datepicker/engine/format-months-calendar.js +0 -22
  1448. package/datepicker/engine/format-months-calendar.js.map +0 -1
  1449. package/datepicker/engine/format-months-calendar.metadata.json +0 -1
  1450. package/datepicker/engine/format-years-calendar.js +0 -30
  1451. package/datepicker/engine/format-years-calendar.js.map +0 -1
  1452. package/datepicker/engine/format-years-calendar.metadata.json +0 -1
  1453. package/datepicker/engine/view-mode.js +0 -4
  1454. package/datepicker/engine/view-mode.js.map +0 -1
  1455. package/datepicker/engine/view-mode.metadata.json +0 -1
  1456. package/datepicker/index.d.ts +0 -13
  1457. package/datepicker/index.js +0 -14
  1458. package/datepicker/index.js.map +0 -1
  1459. package/datepicker/index.metadata.json +0 -1
  1460. package/datepicker/models/index.js +0 -15
  1461. package/datepicker/models/index.js.map +0 -1
  1462. package/datepicker/models/index.metadata.json +0 -1
  1463. package/datepicker/monthpicker.component.js +0 -56
  1464. package/datepicker/monthpicker.component.js.map +0 -1
  1465. package/datepicker/monthpicker.component.metadata.json +0 -1
  1466. package/datepicker/monthpicker.component.ngfactory.js.map +0 -1
  1467. package/datepicker/reducer/_defaults.js +0 -5
  1468. package/datepicker/reducer/_defaults.js.map +0 -1
  1469. package/datepicker/reducer/_defaults.metadata.json +0 -1
  1470. package/datepicker/reducer/bs-datepicker.actions.js +0 -104
  1471. package/datepicker/reducer/bs-datepicker.actions.js.map +0 -1
  1472. package/datepicker/reducer/bs-datepicker.actions.metadata.json +0 -1
  1473. package/datepicker/reducer/bs-datepicker.actions.ngfactory.js.map +0 -1
  1474. package/datepicker/reducer/bs-datepicker.effects.js +0 -179
  1475. package/datepicker/reducer/bs-datepicker.effects.js.map +0 -1
  1476. package/datepicker/reducer/bs-datepicker.effects.metadata.json +0 -1
  1477. package/datepicker/reducer/bs-datepicker.effects.ngfactory.js.map +0 -1
  1478. package/datepicker/reducer/bs-datepicker.reducer.js +0 -261
  1479. package/datepicker/reducer/bs-datepicker.reducer.js.map +0 -1
  1480. package/datepicker/reducer/bs-datepicker.reducer.metadata.json +0 -1
  1481. package/datepicker/reducer/bs-datepicker.state.js +0 -16
  1482. package/datepicker/reducer/bs-datepicker.state.js.map +0 -1
  1483. package/datepicker/reducer/bs-datepicker.state.metadata.json +0 -1
  1484. package/datepicker/reducer/bs-datepicker.store.js +0 -36
  1485. package/datepicker/reducer/bs-datepicker.store.js.map +0 -1
  1486. package/datepicker/reducer/bs-datepicker.store.metadata.json +0 -1
  1487. package/datepicker/reducer/bs-datepicker.store.ngfactory.js.map +0 -1
  1488. package/datepicker/themes/bs/bs-calendar-layout.component.js +0 -14
  1489. package/datepicker/themes/bs/bs-calendar-layout.component.js.map +0 -1
  1490. package/datepicker/themes/bs/bs-calendar-layout.component.metadata.json +0 -1
  1491. package/datepicker/themes/bs/bs-calendar-layout.component.ngfactory.js.map +0 -1
  1492. package/datepicker/themes/bs/bs-current-date-view.component.js +0 -18
  1493. package/datepicker/themes/bs/bs-current-date-view.component.js.map +0 -1
  1494. package/datepicker/themes/bs/bs-current-date-view.component.metadata.json +0 -1
  1495. package/datepicker/themes/bs/bs-current-date-view.component.ngfactory.js.map +0 -1
  1496. package/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -20
  1497. package/datepicker/themes/bs/bs-custom-dates-view.component.js.map +0 -1
  1498. package/datepicker/themes/bs/bs-custom-dates-view.component.metadata.json +0 -1
  1499. package/datepicker/themes/bs/bs-custom-dates-view.component.ngfactory.js.map +0 -1
  1500. package/datepicker/themes/bs/bs-datepicker-container.component.js +0 -87
  1501. package/datepicker/themes/bs/bs-datepicker-container.component.js.map +0 -1
  1502. package/datepicker/themes/bs/bs-datepicker-container.component.metadata.json +0 -1
  1503. package/datepicker/themes/bs/bs-datepicker-container.component.ngfactory.js.map +0 -1
  1504. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -28
  1505. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js.map +0 -1
  1506. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.metadata.json +0 -1
  1507. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ngfactory.js.map +0 -1
  1508. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -30
  1509. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.js.map +0 -1
  1510. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.metadata.json +0 -1
  1511. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.ngfactory.js.map +0 -1
  1512. package/datepicker/themes/bs/bs-datepicker-view.html +0 -61
  1513. package/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -105
  1514. package/datepicker/themes/bs/bs-daterangepicker-container.component.js.map +0 -1
  1515. package/datepicker/themes/bs/bs-daterangepicker-container.component.metadata.json +0 -1
  1516. package/datepicker/themes/bs/bs-daterangepicker-container.component.ngfactory.js.map +0 -1
  1517. package/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -42
  1518. package/datepicker/themes/bs/bs-days-calendar-view.component.js.map +0 -1
  1519. package/datepicker/themes/bs/bs-days-calendar-view.component.metadata.json +0 -1
  1520. package/datepicker/themes/bs/bs-days-calendar-view.component.ngfactory.js.map +0 -1
  1521. package/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -40
  1522. package/datepicker/themes/bs/bs-months-calendar-view.component.js.map +0 -1
  1523. package/datepicker/themes/bs/bs-months-calendar-view.component.metadata.json +0 -1
  1524. package/datepicker/themes/bs/bs-months-calendar-view.component.ngfactory.js.map +0 -1
  1525. package/datepicker/themes/bs/bs-timepicker-view.component.js +0 -17
  1526. package/datepicker/themes/bs/bs-timepicker-view.component.js.map +0 -1
  1527. package/datepicker/themes/bs/bs-timepicker-view.component.metadata.json +0 -1
  1528. package/datepicker/themes/bs/bs-timepicker-view.component.ngfactory.js.map +0 -1
  1529. package/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -41
  1530. package/datepicker/themes/bs/bs-years-calendar-view.component.js.map +0 -1
  1531. package/datepicker/themes/bs/bs-years-calendar-view.component.metadata.json +0 -1
  1532. package/datepicker/themes/bs/bs-years-calendar-view.component.ngfactory.js.map +0 -1
  1533. package/datepicker/utils/bs-calendar-utils.js +0 -30
  1534. package/datepicker/utils/bs-calendar-utils.js.map +0 -1
  1535. package/datepicker/utils/bs-calendar-utils.metadata.json +0 -1
  1536. package/datepicker/utils/matrix-utils.js +0 -14
  1537. package/datepicker/utils/matrix-utils.js.map +0 -1
  1538. package/datepicker/utils/matrix-utils.metadata.json +0 -1
  1539. package/datepicker/yearpicker.component.js +0 -57
  1540. package/datepicker/yearpicker.component.js.map +0 -1
  1541. package/datepicker/yearpicker.component.metadata.json +0 -1
  1542. package/datepicker/yearpicker.component.ngfactory.js.map +0 -1
  1543. package/dropdown/bs-dropdown-container.component.js +0 -59
  1544. package/dropdown/bs-dropdown-container.component.js.map +0 -1
  1545. package/dropdown/bs-dropdown-container.component.metadata.json +0 -1
  1546. package/dropdown/bs-dropdown-container.component.ngfactory.js.map +0 -1
  1547. package/dropdown/bs-dropdown-menu.directive.js +0 -25
  1548. package/dropdown/bs-dropdown-menu.directive.js.map +0 -1
  1549. package/dropdown/bs-dropdown-menu.directive.metadata.json +0 -1
  1550. package/dropdown/bs-dropdown-menu.directive.ngfactory.js.map +0 -1
  1551. package/dropdown/bs-dropdown-toggle.directive.js +0 -63
  1552. package/dropdown/bs-dropdown-toggle.directive.js.map +0 -1
  1553. package/dropdown/bs-dropdown-toggle.directive.metadata.json +0 -1
  1554. package/dropdown/bs-dropdown-toggle.directive.ngfactory.js.map +0 -1
  1555. package/dropdown/bs-dropdown.config.js +0 -14
  1556. package/dropdown/bs-dropdown.config.js.map +0 -1
  1557. package/dropdown/bs-dropdown.config.metadata.json +0 -1
  1558. package/dropdown/bs-dropdown.config.ngfactory.js.map +0 -1
  1559. package/dropdown/bs-dropdown.directive.js +0 -300
  1560. package/dropdown/bs-dropdown.directive.js.map +0 -1
  1561. package/dropdown/bs-dropdown.directive.metadata.json +0 -1
  1562. package/dropdown/bs-dropdown.directive.ngfactory.js.map +0 -1
  1563. package/dropdown/bs-dropdown.module.js +0 -46
  1564. package/dropdown/bs-dropdown.module.js.map +0 -1
  1565. package/dropdown/bs-dropdown.module.metadata.json +0 -1
  1566. package/dropdown/bs-dropdown.module.ngfactory.js.map +0 -1
  1567. package/dropdown/bs-dropdown.state.js +0 -21
  1568. package/dropdown/bs-dropdown.state.js.map +0 -1
  1569. package/dropdown/bs-dropdown.state.metadata.json +0 -1
  1570. package/dropdown/bs-dropdown.state.ngfactory.js.map +0 -1
  1571. package/dropdown/index.js +0 -8
  1572. package/dropdown/index.js.map +0 -1
  1573. package/dropdown/index.metadata.json +0 -1
  1574. package/index.d.ts +0 -24
  1575. package/index.js +0 -25
  1576. package/index.js.map +0 -1
  1577. package/index.metadata.json +0 -1
  1578. package/locale.d.ts +0 -30
  1579. package/locale.js +0 -31
  1580. package/locale.js.map +0 -1
  1581. package/locale.metadata.json +0 -1
  1582. package/mini-ngrx/LICENCE +0 -21
  1583. package/mini-ngrx/index.js +0 -3
  1584. package/mini-ngrx/index.js.map +0 -1
  1585. package/mini-ngrx/index.metadata.json +0 -1
  1586. package/mini-ngrx/state.class.js +0 -30
  1587. package/mini-ngrx/state.class.js.map +0 -1
  1588. package/mini-ngrx/state.class.metadata.json +0 -1
  1589. package/mini-ngrx/store.class.js +0 -46
  1590. package/mini-ngrx/store.class.js.map +0 -1
  1591. package/mini-ngrx/store.class.metadata.json +0 -1
  1592. package/modal/bs-modal-ref.service.js +0 -15
  1593. package/modal/bs-modal-ref.service.js.map +0 -1
  1594. package/modal/bs-modal-ref.service.metadata.json +0 -1
  1595. package/modal/bs-modal-ref.service.ngfactory.js.map +0 -1
  1596. package/modal/bs-modal.service.js +0 -174
  1597. package/modal/bs-modal.service.js.map +0 -1
  1598. package/modal/bs-modal.service.metadata.json +0 -1
  1599. package/modal/bs-modal.service.ngfactory.js.map +0 -1
  1600. package/modal/index.js +0 -9
  1601. package/modal/index.js.map +0 -1
  1602. package/modal/index.metadata.json +0 -1
  1603. package/modal/modal-backdrop.component.js +0 -69
  1604. package/modal/modal-backdrop.component.js.map +0 -1
  1605. package/modal/modal-backdrop.component.metadata.json +0 -1
  1606. package/modal/modal-backdrop.component.ngfactory.js.map +0 -1
  1607. package/modal/modal-backdrop.options.js +0 -9
  1608. package/modal/modal-backdrop.options.js.map +0 -1
  1609. package/modal/modal-backdrop.options.metadata.json +0 -1
  1610. package/modal/modal-container.component.js +0 -103
  1611. package/modal/modal-container.component.js.map +0 -1
  1612. package/modal/modal-container.component.metadata.json +0 -1
  1613. package/modal/modal-container.component.ngfactory.js.map +0 -1
  1614. package/modal/modal-options.class.js +0 -44
  1615. package/modal/modal-options.class.js.map +0 -1
  1616. package/modal/modal-options.class.metadata.json +0 -1
  1617. package/modal/modal-options.class.ngfactory.js.map +0 -1
  1618. package/modal/modal.directive.js +0 -436
  1619. package/modal/modal.directive.js.map +0 -1
  1620. package/modal/modal.directive.metadata.json +0 -1
  1621. package/modal/modal.directive.ngfactory.js.map +0 -1
  1622. package/modal/modal.module.js +0 -31
  1623. package/modal/modal.module.js.map +0 -1
  1624. package/modal/modal.module.metadata.json +0 -1
  1625. package/modal/modal.module.ngfactory.js.map +0 -1
  1626. package/pagination/index.js +0 -5
  1627. package/pagination/index.js.map +0 -1
  1628. package/pagination/index.metadata.json +0 -1
  1629. package/pagination/pager.component.html +0 -12
  1630. package/pagination/pager.component.js +0 -249
  1631. package/pagination/pager.component.js.map +0 -1
  1632. package/pagination/pager.component.metadata.json +0 -1
  1633. package/pagination/pager.component.ngfactory.js.map +0 -1
  1634. package/pagination/pagination.component.html +0 -35
  1635. package/pagination/pagination.component.js +0 -249
  1636. package/pagination/pagination.component.js.map +0 -1
  1637. package/pagination/pagination.component.metadata.json +0 -1
  1638. package/pagination/pagination.component.ngfactory.js.map +0 -1
  1639. package/pagination/pagination.config.js +0 -31
  1640. package/pagination/pagination.config.js.map +0 -1
  1641. package/pagination/pagination.config.metadata.json +0 -1
  1642. package/pagination/pagination.config.ngfactory.js.map +0 -1
  1643. package/pagination/pagination.module.js +0 -22
  1644. package/pagination/pagination.module.js.map +0 -1
  1645. package/pagination/pagination.module.metadata.json +0 -1
  1646. package/pagination/pagination.module.ngfactory.js.map +0 -1
  1647. package/popover/index.js +0 -5
  1648. package/popover/index.js.map +0 -1
  1649. package/popover/index.metadata.json +0 -1
  1650. package/popover/popover-container.component.html +0 -5
  1651. package/popover/popover-container.component.js +0 -43
  1652. package/popover/popover-container.component.js.map +0 -1
  1653. package/popover/popover-container.component.metadata.json +0 -1
  1654. package/popover/popover-container.component.ngfactory.js.map +0 -1
  1655. package/popover/popover.config.js +0 -27
  1656. package/popover/popover.config.js.map +0 -1
  1657. package/popover/popover.config.metadata.json +0 -1
  1658. package/popover/popover.config.ngfactory.js.map +0 -1
  1659. package/popover/popover.directive.js +0 -165
  1660. package/popover/popover.directive.js.map +0 -1
  1661. package/popover/popover.directive.metadata.json +0 -1
  1662. package/popover/popover.directive.ngfactory.js.map +0 -1
  1663. package/popover/popover.module.js +0 -28
  1664. package/popover/popover.module.js.map +0 -1
  1665. package/popover/popover.module.metadata.json +0 -1
  1666. package/popover/popover.module.ngfactory.js.map +0 -1
  1667. package/positioning/index.js +0 -3
  1668. package/positioning/index.js.map +0 -1
  1669. package/positioning/index.metadata.json +0 -1
  1670. package/positioning/ng-positioning.js +0 -216
  1671. package/positioning/ng-positioning.js.map +0 -1
  1672. package/positioning/ng-positioning.metadata.json +0 -1
  1673. package/positioning/positioning.service.js +0 -26
  1674. package/positioning/positioning.service.js.map +0 -1
  1675. package/positioning/positioning.service.metadata.json +0 -1
  1676. package/positioning/positioning.service.ngfactory.js.map +0 -1
  1677. package/progressbar/bar.component.html +0 -1
  1678. package/progressbar/bar.component.js +0 -87
  1679. package/progressbar/bar.component.js.map +0 -1
  1680. package/progressbar/bar.component.metadata.json +0 -1
  1681. package/progressbar/bar.component.ngfactory.js.map +0 -1
  1682. package/progressbar/index.js +0 -5
  1683. package/progressbar/index.js.map +0 -1
  1684. package/progressbar/index.metadata.json +0 -1
  1685. package/progressbar/progressbar.component.html +0 -6
  1686. package/progressbar/progressbar.component.js +0 -76
  1687. package/progressbar/progressbar.component.js.map +0 -1
  1688. package/progressbar/progressbar.component.metadata.json +0 -1
  1689. package/progressbar/progressbar.component.ngfactory.js.map +0 -1
  1690. package/progressbar/progressbar.config.js +0 -15
  1691. package/progressbar/progressbar.config.js.map +0 -1
  1692. package/progressbar/progressbar.config.metadata.json +0 -1
  1693. package/progressbar/progressbar.config.ngfactory.js.map +0 -1
  1694. package/progressbar/progressbar.module.js +0 -22
  1695. package/progressbar/progressbar.module.js.map +0 -1
  1696. package/progressbar/progressbar.module.metadata.json +0 -1
  1697. package/progressbar/progressbar.module.ngfactory.js.map +0 -1
  1698. package/rating/index.js +0 -3
  1699. package/rating/index.js.map +0 -1
  1700. package/rating/index.metadata.json +0 -1
  1701. package/rating/rating.component.html +0 -18
  1702. package/rating/rating.component.js +0 -111
  1703. package/rating/rating.component.js.map +0 -1
  1704. package/rating/rating.component.metadata.json +0 -1
  1705. package/rating/rating.component.ngfactory.js.map +0 -1
  1706. package/rating/rating.module.js +0 -23
  1707. package/rating/rating.module.js.map +0 -1
  1708. package/rating/rating.module.metadata.json +0 -1
  1709. package/rating/rating.module.ngfactory.js.map +0 -1
  1710. package/sortable/draggable-item.js +0 -1
  1711. package/sortable/draggable-item.js.map +0 -1
  1712. package/sortable/draggable-item.metadata.json +0 -1
  1713. package/sortable/draggable-item.service.js +0 -34
  1714. package/sortable/draggable-item.service.js.map +0 -1
  1715. package/sortable/draggable-item.service.metadata.json +0 -1
  1716. package/sortable/draggable-item.service.ngfactory.js.map +0 -1
  1717. package/sortable/index.js +0 -4
  1718. package/sortable/index.js.map +0 -1
  1719. package/sortable/index.metadata.json +0 -1
  1720. package/sortable/sortable.component.js +0 -186
  1721. package/sortable/sortable.component.js.map +0 -1
  1722. package/sortable/sortable.component.metadata.json +0 -1
  1723. package/sortable/sortable.component.ngfactory.js.map +0 -1
  1724. package/sortable/sortable.module.js +0 -21
  1725. package/sortable/sortable.module.js.map +0 -1
  1726. package/sortable/sortable.module.metadata.json +0 -1
  1727. package/sortable/sortable.module.ngfactory.js.map +0 -1
  1728. package/spec/ng-bootstrap/license +0 -23
  1729. package/tabs/index.js +0 -7
  1730. package/tabs/index.js.map +0 -1
  1731. package/tabs/index.metadata.json +0 -1
  1732. package/tabs/ng-transclude.directive.js +0 -34
  1733. package/tabs/ng-transclude.directive.js.map +0 -1
  1734. package/tabs/ng-transclude.directive.metadata.json +0 -1
  1735. package/tabs/ng-transclude.directive.ngfactory.js.map +0 -1
  1736. package/tabs/tab-heading.directive.js +0 -19
  1737. package/tabs/tab-heading.directive.js.map +0 -1
  1738. package/tabs/tab-heading.directive.metadata.json +0 -1
  1739. package/tabs/tab-heading.directive.ngfactory.js.map +0 -1
  1740. package/tabs/tab.directive.js +0 -97
  1741. package/tabs/tab.directive.js.map +0 -1
  1742. package/tabs/tab.directive.metadata.json +0 -1
  1743. package/tabs/tab.directive.ngfactory.js.map +0 -1
  1744. package/tabs/tabs.module.js +0 -37
  1745. package/tabs/tabs.module.js.map +0 -1
  1746. package/tabs/tabs.module.metadata.json +0 -1
  1747. package/tabs/tabs.module.ngfactory.js.map +0 -1
  1748. package/tabs/tabset.component.html +0 -15
  1749. package/tabs/tabset.component.js +0 -134
  1750. package/tabs/tabset.component.js.map +0 -1
  1751. package/tabs/tabset.component.metadata.json +0 -1
  1752. package/tabs/tabset.component.ngfactory.js.map +0 -1
  1753. package/tabs/tabset.config.js +0 -13
  1754. package/tabs/tabset.config.js.map +0 -1
  1755. package/tabs/tabset.config.metadata.json +0 -1
  1756. package/tabs/tabset.config.ngfactory.js.map +0 -1
  1757. package/timepicker/index.js +0 -6
  1758. package/timepicker/index.js.map +0 -1
  1759. package/timepicker/index.metadata.json +0 -1
  1760. package/timepicker/reducer/timepicker.actions.js +0 -53
  1761. package/timepicker/reducer/timepicker.actions.js.map +0 -1
  1762. package/timepicker/reducer/timepicker.actions.metadata.json +0 -1
  1763. package/timepicker/reducer/timepicker.actions.ngfactory.js.map +0 -1
  1764. package/timepicker/reducer/timepicker.reducer.js +0 -90
  1765. package/timepicker/reducer/timepicker.reducer.js.map +0 -1
  1766. package/timepicker/reducer/timepicker.reducer.metadata.json +0 -1
  1767. package/timepicker/reducer/timepicker.store.js +0 -34
  1768. package/timepicker/reducer/timepicker.store.js.map +0 -1
  1769. package/timepicker/reducer/timepicker.store.metadata.json +0 -1
  1770. package/timepicker/reducer/timepicker.store.ngfactory.js.map +0 -1
  1771. package/timepicker/timepicker-controls.util.js +0 -122
  1772. package/timepicker/timepicker-controls.util.js.map +0 -1
  1773. package/timepicker/timepicker-controls.util.metadata.json +0 -1
  1774. package/timepicker/timepicker.component.html +0 -122
  1775. package/timepicker/timepicker.component.js +0 -288
  1776. package/timepicker/timepicker.component.js.map +0 -1
  1777. package/timepicker/timepicker.component.metadata.json +0 -1
  1778. package/timepicker/timepicker.component.ngfactory.js.map +0 -1
  1779. package/timepicker/timepicker.config.js +0 -36
  1780. package/timepicker/timepicker.config.js.map +0 -1
  1781. package/timepicker/timepicker.config.metadata.json +0 -1
  1782. package/timepicker/timepicker.config.ngfactory.js.map +0 -1
  1783. package/timepicker/timepicker.models.js +0 -1
  1784. package/timepicker/timepicker.models.js.map +0 -1
  1785. package/timepicker/timepicker.models.metadata.json +0 -1
  1786. package/timepicker/timepicker.module.js +0 -26
  1787. package/timepicker/timepicker.module.js.map +0 -1
  1788. package/timepicker/timepicker.module.metadata.json +0 -1
  1789. package/timepicker/timepicker.module.ngfactory.js.map +0 -1
  1790. package/timepicker/timepicker.utils.js +0 -141
  1791. package/timepicker/timepicker.utils.js.map +0 -1
  1792. package/timepicker/timepicker.utils.metadata.json +0 -1
  1793. package/tooltip/index.js +0 -5
  1794. package/tooltip/index.js.map +0 -1
  1795. package/tooltip/index.metadata.json +0 -1
  1796. package/tooltip/tooltip-container.component.js +0 -50
  1797. package/tooltip/tooltip-container.component.js.map +0 -1
  1798. package/tooltip/tooltip-container.component.metadata.json +0 -1
  1799. package/tooltip/tooltip-container.component.ngfactory.js.map +0 -1
  1800. package/tooltip/tooltip.config.js +0 -16
  1801. package/tooltip/tooltip.config.js.map +0 -1
  1802. package/tooltip/tooltip.config.metadata.json +0 -1
  1803. package/tooltip/tooltip.config.ngfactory.js.map +0 -1
  1804. package/tooltip/tooltip.directive.js +0 -315
  1805. package/tooltip/tooltip.directive.js.map +0 -1
  1806. package/tooltip/tooltip.directive.metadata.json +0 -1
  1807. package/tooltip/tooltip.directive.ngfactory.js.map +0 -1
  1808. package/tooltip/tooltip.module.js +0 -28
  1809. package/tooltip/tooltip.module.js.map +0 -1
  1810. package/tooltip/tooltip.module.metadata.json +0 -1
  1811. package/tooltip/tooltip.module.ngfactory.js.map +0 -1
  1812. package/tsconfig.spec.json +0 -41
  1813. package/typeahead/index.d.ts +0 -7
  1814. package/typeahead/index.js +0 -8
  1815. package/typeahead/index.js.map +0 -1
  1816. package/typeahead/index.metadata.json +0 -1
  1817. package/typeahead/latin-map.js +0 -828
  1818. package/typeahead/latin-map.js.map +0 -1
  1819. package/typeahead/latin-map.metadata.json +0 -1
  1820. package/typeahead/typeahead-container.component.html +0 -42
  1821. package/typeahead/typeahead-container.component.js +0 -240
  1822. package/typeahead/typeahead-container.component.js.map +0 -1
  1823. package/typeahead/typeahead-container.component.metadata.json +0 -1
  1824. package/typeahead/typeahead-container.component.ngfactory.js.map +0 -1
  1825. package/typeahead/typeahead-match.class.js +0 -18
  1826. package/typeahead/typeahead-match.class.js.map +0 -1
  1827. package/typeahead/typeahead-match.class.metadata.json +0 -1
  1828. package/typeahead/typeahead-options.class.js +0 -8
  1829. package/typeahead/typeahead-options.class.js.map +0 -1
  1830. package/typeahead/typeahead-options.class.metadata.json +0 -1
  1831. package/typeahead/typeahead-utils.js +0 -60
  1832. package/typeahead/typeahead-utils.js.map +0 -1
  1833. package/typeahead/typeahead-utils.metadata.json +0 -1
  1834. package/typeahead/typeahead.directive.js +0 -383
  1835. package/typeahead/typeahead.directive.js.map +0 -1
  1836. package/typeahead/typeahead.directive.metadata.json +0 -1
  1837. package/typeahead/typeahead.directive.ngfactory.js.map +0 -1
  1838. package/typeahead/typeahead.module.js +0 -27
  1839. package/typeahead/typeahead.module.js.map +0 -1
  1840. package/typeahead/typeahead.module.metadata.json +0 -1
  1841. package/typeahead/typeahead.module.ngfactory.js.map +0 -1
  1842. package/utils/decorators.js +0 -21
  1843. package/utils/decorators.js.map +0 -1
  1844. package/utils/decorators.metadata.json +0 -1
  1845. package/utils/facade/browser.js +0 -25
  1846. package/utils/facade/browser.js.map +0 -1
  1847. package/utils/facade/browser.metadata.json +0 -1
  1848. package/utils/index.d.ts +0 -6
  1849. package/utils/index.js +0 -7
  1850. package/utils/index.js.map +0 -1
  1851. package/utils/index.metadata.json +0 -1
  1852. package/utils/linked-list.class.js +0 -244
  1853. package/utils/linked-list.class.js.map +0 -1
  1854. package/utils/linked-list.class.metadata.json +0 -1
  1855. package/utils/theme-provider.js +0 -35
  1856. package/utils/theme-provider.js.map +0 -1
  1857. package/utils/theme-provider.metadata.json +0 -1
  1858. package/utils/trigger.class.js +0 -16
  1859. package/utils/trigger.class.js.map +0 -1
  1860. package/utils/trigger.class.metadata.json +0 -1
  1861. package/utils/triggers.js +0 -94
  1862. package/utils/triggers.js.map +0 -1
  1863. package/utils/triggers.metadata.json +0 -1
  1864. package/utils/utils.class.js +0 -25
  1865. package/utils/utils.class.js.map +0 -1
  1866. package/utils/utils.class.metadata.json +0 -1
  1867. package/utils/warn-once.js +0 -12
  1868. package/utils/warn-once.js.map +0 -1
  1869. package/utils/warn-once.metadata.json +0 -1
@@ -0,0 +1,1006 @@
1
+ import { Injectable, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation, NgModule } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { MiniStore, MiniState } from 'ngx-bootstrap/mini-ngrx';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { CommonModule } from '@angular/common';
6
+
7
+ /**
8
+ * @fileoverview added by tsickle
9
+ * @suppress {checkTypes} checked by tsc
10
+ */
11
+ class TimepickerActions {
12
+ /**
13
+ * @param {?} value
14
+ * @return {?}
15
+ */
16
+ writeValue(value) {
17
+ return {
18
+ type: TimepickerActions.WRITE_VALUE,
19
+ payload: value
20
+ };
21
+ }
22
+ /**
23
+ * @param {?} event
24
+ * @return {?}
25
+ */
26
+ changeHours(event) {
27
+ return {
28
+ type: TimepickerActions.CHANGE_HOURS,
29
+ payload: event
30
+ };
31
+ }
32
+ /**
33
+ * @param {?} event
34
+ * @return {?}
35
+ */
36
+ changeMinutes(event) {
37
+ return {
38
+ type: TimepickerActions.CHANGE_MINUTES,
39
+ payload: event
40
+ };
41
+ }
42
+ /**
43
+ * @param {?} event
44
+ * @return {?}
45
+ */
46
+ changeSeconds(event) {
47
+ return {
48
+ type: TimepickerActions.CHANGE_SECONDS,
49
+ payload: event
50
+ };
51
+ }
52
+ /**
53
+ * @param {?} value
54
+ * @return {?}
55
+ */
56
+ setTime(value) {
57
+ return {
58
+ type: TimepickerActions.SET_TIME_UNIT,
59
+ payload: value
60
+ };
61
+ }
62
+ /**
63
+ * @param {?} value
64
+ * @return {?}
65
+ */
66
+ updateControls(value) {
67
+ return {
68
+ type: TimepickerActions.UPDATE_CONTROLS,
69
+ payload: value
70
+ };
71
+ }
72
+ }
73
+ TimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';
74
+ TimepickerActions.CHANGE_HOURS = '[timepicker] change hours';
75
+ TimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';
76
+ TimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';
77
+ TimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';
78
+ TimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';
79
+ TimepickerActions.decorators = [
80
+ { type: Injectable }
81
+ ];
82
+
83
+ /**
84
+ * @fileoverview added by tsickle
85
+ * @suppress {checkTypes} checked by tsc
86
+ */
87
+ const /** @type {?} */ dex = 10;
88
+ const /** @type {?} */ hoursPerDay = 24;
89
+ const /** @type {?} */ hoursPerDayHalf = 12;
90
+ const /** @type {?} */ minutesPerHour = 60;
91
+ const /** @type {?} */ secondsPerMinute = 60;
92
+ /**
93
+ * @param {?=} value
94
+ * @return {?}
95
+ */
96
+ function isValidDate(value) {
97
+ if (!value) {
98
+ return false;
99
+ }
100
+ if (value instanceof Date && isNaN(value.getHours())) {
101
+ return false;
102
+ }
103
+ if (typeof value === 'string') {
104
+ return isValidDate(new Date(value));
105
+ }
106
+ return true;
107
+ }
108
+ /**
109
+ * @param {?} controls
110
+ * @param {?} newDate
111
+ * @return {?}
112
+ */
113
+ function isValidLimit(controls, newDate) {
114
+ if (controls.min && newDate < controls.min) {
115
+ return false;
116
+ }
117
+ if (controls.max && newDate > controls.max) {
118
+ return false;
119
+ }
120
+ return true;
121
+ }
122
+ /**
123
+ * @param {?} value
124
+ * @return {?}
125
+ */
126
+ function toNumber(value) {
127
+ if (typeof value === 'number') {
128
+ return value;
129
+ }
130
+ return parseInt(value, dex);
131
+ }
132
+ /**
133
+ * @param {?} value
134
+ * @param {?=} isPM
135
+ * @return {?}
136
+ */
137
+ function parseHours(value, isPM = false) {
138
+ const /** @type {?} */ hour = toNumber(value);
139
+ if (isNaN(hour) ||
140
+ hour < 0 ||
141
+ hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {
142
+ return NaN;
143
+ }
144
+ return hour;
145
+ }
146
+ /**
147
+ * @param {?} value
148
+ * @return {?}
149
+ */
150
+ function parseMinutes(value) {
151
+ const /** @type {?} */ minute = toNumber(value);
152
+ if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {
153
+ return NaN;
154
+ }
155
+ return minute;
156
+ }
157
+ /**
158
+ * @param {?} value
159
+ * @return {?}
160
+ */
161
+ function parseSeconds(value) {
162
+ const /** @type {?} */ seconds = toNumber(value);
163
+ if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {
164
+ return NaN;
165
+ }
166
+ return seconds;
167
+ }
168
+ /**
169
+ * @param {?} value
170
+ * @return {?}
171
+ */
172
+ function parseTime(value) {
173
+ if (typeof value === 'string') {
174
+ return new Date(value);
175
+ }
176
+ return value;
177
+ }
178
+ /**
179
+ * @param {?} value
180
+ * @param {?} diff
181
+ * @return {?}
182
+ */
183
+ function changeTime(value, diff) {
184
+ if (!value) {
185
+ return changeTime(createDate(new Date(), 0, 0, 0), diff);
186
+ }
187
+ let /** @type {?} */ hour = value.getHours();
188
+ let /** @type {?} */ minutes = value.getMinutes();
189
+ let /** @type {?} */ seconds = value.getSeconds();
190
+ if (diff.hour) {
191
+ hour = (hour + toNumber(diff.hour)) % hoursPerDay;
192
+ if (hour < 0) {
193
+ hour += hoursPerDay;
194
+ }
195
+ }
196
+ if (diff.minute) {
197
+ minutes = minutes + toNumber(diff.minute);
198
+ }
199
+ if (diff.seconds) {
200
+ seconds = seconds + toNumber(diff.seconds);
201
+ }
202
+ return createDate(value, hour, minutes, seconds);
203
+ }
204
+ /**
205
+ * @param {?} value
206
+ * @param {?} opts
207
+ * @return {?}
208
+ */
209
+ function setTime(value, opts) {
210
+ let /** @type {?} */ hour = parseHours(opts.hour);
211
+ const /** @type {?} */ minute = parseMinutes(opts.minute);
212
+ const /** @type {?} */ seconds = parseSeconds(opts.seconds) || 0;
213
+ if (opts.isPM) {
214
+ hour += hoursPerDayHalf;
215
+ }
216
+ if (!value) {
217
+ if (!isNaN(hour) && !isNaN(minute)) {
218
+ return createDate(new Date(), hour, minute, seconds);
219
+ }
220
+ return value;
221
+ }
222
+ if (isNaN(hour) || isNaN(minute)) {
223
+ return value;
224
+ }
225
+ return createDate(value, hour, minute, seconds);
226
+ }
227
+ /**
228
+ * @param {?} value
229
+ * @param {?} hours
230
+ * @param {?} minutes
231
+ * @param {?} seconds
232
+ * @return {?}
233
+ */
234
+ function createDate(value, hours, minutes, seconds) {
235
+ return new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());
236
+ }
237
+ /**
238
+ * @param {?} value
239
+ * @return {?}
240
+ */
241
+ function padNumber(value) {
242
+ const /** @type {?} */ _value = value.toString();
243
+ if (_value.length > 1) {
244
+ return _value;
245
+ }
246
+ return `0${_value}`;
247
+ }
248
+ /**
249
+ * @param {?} hours
250
+ * @param {?} isPM
251
+ * @return {?}
252
+ */
253
+ function isHourInputValid(hours, isPM) {
254
+ return !isNaN(parseHours(hours, isPM));
255
+ }
256
+ /**
257
+ * @param {?} minutes
258
+ * @return {?}
259
+ */
260
+ function isMinuteInputValid(minutes) {
261
+ return !isNaN(parseMinutes(minutes));
262
+ }
263
+ /**
264
+ * @param {?} seconds
265
+ * @return {?}
266
+ */
267
+ function isSecondInputValid(seconds) {
268
+ return !isNaN(parseSeconds(seconds));
269
+ }
270
+ /**
271
+ * @param {?} diff
272
+ * @param {?} max
273
+ * @param {?} min
274
+ * @return {?}
275
+ */
276
+ function isInputLimitValid(diff, max, min) {
277
+ const /** @type {?} */ newDate = changeTime(new Date(), diff);
278
+ if (max && newDate > max) {
279
+ return false;
280
+ }
281
+ if (min && newDate < min) {
282
+ return false;
283
+ }
284
+ return true;
285
+ }
286
+ /**
287
+ * @param {?} hours
288
+ * @param {?=} minutes
289
+ * @param {?=} seconds
290
+ * @param {?=} isPM
291
+ * @return {?}
292
+ */
293
+ function isInputValid(hours, minutes = '0', seconds = '0', isPM) {
294
+ return isHourInputValid(hours, isPM)
295
+ && isMinuteInputValid(minutes)
296
+ && isSecondInputValid(seconds);
297
+ }
298
+
299
+ /**
300
+ * @fileoverview added by tsickle
301
+ * @suppress {checkTypes} checked by tsc
302
+ */
303
+ /**
304
+ * @param {?} state
305
+ * @param {?=} event
306
+ * @return {?}
307
+ */
308
+ function canChangeValue(state, event) {
309
+ if (state.readonlyInput || state.disabled) {
310
+ return false;
311
+ }
312
+ if (event) {
313
+ if (event.source === 'wheel' && !state.mousewheel) {
314
+ return false;
315
+ }
316
+ if (event.source === 'key' && !state.arrowkeys) {
317
+ return false;
318
+ }
319
+ }
320
+ return true;
321
+ }
322
+ /**
323
+ * @param {?} event
324
+ * @param {?} controls
325
+ * @return {?}
326
+ */
327
+ function canChangeHours(event, controls) {
328
+ if (!event.step) {
329
+ return false;
330
+ }
331
+ if (event.step > 0 && !controls.canIncrementHours) {
332
+ return false;
333
+ }
334
+ if (event.step < 0 && !controls.canDecrementHours) {
335
+ return false;
336
+ }
337
+ return true;
338
+ }
339
+ /**
340
+ * @param {?} event
341
+ * @param {?} controls
342
+ * @return {?}
343
+ */
344
+ function canChangeMinutes(event, controls) {
345
+ if (!event.step) {
346
+ return false;
347
+ }
348
+ if (event.step > 0 && !controls.canIncrementMinutes) {
349
+ return false;
350
+ }
351
+ if (event.step < 0 && !controls.canDecrementMinutes) {
352
+ return false;
353
+ }
354
+ return true;
355
+ }
356
+ /**
357
+ * @param {?} event
358
+ * @param {?} controls
359
+ * @return {?}
360
+ */
361
+ function canChangeSeconds(event, controls) {
362
+ if (!event.step) {
363
+ return false;
364
+ }
365
+ if (event.step > 0 && !controls.canIncrementSeconds) {
366
+ return false;
367
+ }
368
+ if (event.step < 0 && !controls.canDecrementSeconds) {
369
+ return false;
370
+ }
371
+ return true;
372
+ }
373
+ /**
374
+ * @param {?} state
375
+ * @return {?}
376
+ */
377
+ function getControlsValue(state) {
378
+ const { hourStep, minuteStep, secondsStep, readonlyInput, disabled, mousewheel, arrowkeys, showSpinners, showMeridian, showSeconds, meridians, min, max } = state;
379
+ return {
380
+ hourStep,
381
+ minuteStep,
382
+ secondsStep,
383
+ readonlyInput,
384
+ disabled,
385
+ mousewheel,
386
+ arrowkeys,
387
+ showSpinners,
388
+ showMeridian,
389
+ showSeconds,
390
+ meridians,
391
+ min,
392
+ max
393
+ };
394
+ }
395
+ /**
396
+ * @param {?} value
397
+ * @param {?} state
398
+ * @return {?}
399
+ */
400
+ function timepickerControls(value, state) {
401
+ const /** @type {?} */ hoursPerDayHalf = 12;
402
+ const { min, max, hourStep, minuteStep, secondsStep, showSeconds } = state;
403
+ const /** @type {?} */ res = {
404
+ canIncrementHours: true,
405
+ canIncrementMinutes: true,
406
+ canIncrementSeconds: true,
407
+ canDecrementHours: true,
408
+ canDecrementMinutes: true,
409
+ canDecrementSeconds: true,
410
+ canToggleMeridian: true
411
+ };
412
+ if (!value) {
413
+ return res;
414
+ }
415
+ // compare dates
416
+ if (max) {
417
+ const /** @type {?} */ _newHour = changeTime(value, { hour: hourStep });
418
+ res.canIncrementHours = max > _newHour;
419
+ if (!res.canIncrementHours) {
420
+ const /** @type {?} */ _newMinutes = changeTime(value, { minute: minuteStep });
421
+ res.canIncrementMinutes = showSeconds
422
+ ? max > _newMinutes
423
+ : max >= _newMinutes;
424
+ }
425
+ if (!res.canIncrementMinutes) {
426
+ const /** @type {?} */ _newSeconds = changeTime(value, { seconds: secondsStep });
427
+ res.canIncrementSeconds = max >= _newSeconds;
428
+ }
429
+ if (value.getHours() < hoursPerDayHalf) {
430
+ res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;
431
+ }
432
+ }
433
+ if (min) {
434
+ const /** @type {?} */ _newHour = changeTime(value, { hour: -hourStep });
435
+ res.canDecrementHours = min < _newHour;
436
+ if (!res.canDecrementHours) {
437
+ const /** @type {?} */ _newMinutes = changeTime(value, { minute: -minuteStep });
438
+ res.canDecrementMinutes = showSeconds
439
+ ? min < _newMinutes
440
+ : min <= _newMinutes;
441
+ }
442
+ if (!res.canDecrementMinutes) {
443
+ const /** @type {?} */ _newSeconds = changeTime(value, { seconds: -secondsStep });
444
+ res.canDecrementSeconds = min <= _newSeconds;
445
+ }
446
+ if (value.getHours() >= hoursPerDayHalf) {
447
+ res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;
448
+ }
449
+ }
450
+ return res;
451
+ }
452
+
453
+ /**
454
+ * @fileoverview added by tsickle
455
+ * @suppress {checkTypes} checked by tsc
456
+ */
457
+ /**
458
+ * Provides default configuration values for timepicker
459
+ */
460
+ class TimepickerConfig {
461
+ constructor() {
462
+ /**
463
+ * hours change step
464
+ */
465
+ this.hourStep = 1;
466
+ /**
467
+ * hours change step
468
+ */
469
+ this.minuteStep = 5;
470
+ /**
471
+ * seconds changes step
472
+ */
473
+ this.secondsStep = 10;
474
+ /**
475
+ * if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM
476
+ */
477
+ this.showMeridian = true;
478
+ /**
479
+ * meridian labels based on locale
480
+ */
481
+ this.meridians = ['AM', 'PM'];
482
+ /**
483
+ * if true hours and minutes fields will be readonly
484
+ */
485
+ this.readonlyInput = false;
486
+ /**
487
+ * if true hours and minutes fields will be disabled
488
+ */
489
+ this.disabled = false;
490
+ /**
491
+ * if true scroll inside hours and minutes inputs will change time
492
+ */
493
+ this.mousewheel = true;
494
+ /**
495
+ * if true the values of hours and minutes can be changed using the up/down arrow keys on the keyboard
496
+ */
497
+ this.arrowkeys = true;
498
+ /**
499
+ * if true spinner arrows above and below the inputs will be shown
500
+ */
501
+ this.showSpinners = true;
502
+ /**
503
+ * show seconds in timepicker
504
+ */
505
+ this.showSeconds = false;
506
+ /**
507
+ * show minutes in timepicker
508
+ */
509
+ this.showMinutes = true;
510
+ }
511
+ }
512
+ TimepickerConfig.decorators = [
513
+ { type: Injectable }
514
+ ];
515
+
516
+ /**
517
+ * @fileoverview added by tsickle
518
+ * @suppress {checkTypes} checked by tsc
519
+ */
520
+ const /** @type {?} */ initialState = {
521
+ value: null,
522
+ config: new TimepickerConfig(),
523
+ controls: {
524
+ canIncrementHours: true,
525
+ canIncrementMinutes: true,
526
+ canIncrementSeconds: true,
527
+ canDecrementHours: true,
528
+ canDecrementMinutes: true,
529
+ canDecrementSeconds: true,
530
+ canToggleMeridian: true
531
+ }
532
+ };
533
+ /**
534
+ * @param {?=} state
535
+ * @param {?=} action
536
+ * @return {?}
537
+ */
538
+ function timepickerReducer(state = initialState, action) {
539
+ switch (action.type) {
540
+ case TimepickerActions.WRITE_VALUE: {
541
+ return Object.assign({}, state, { value: action.payload });
542
+ }
543
+ case TimepickerActions.CHANGE_HOURS: {
544
+ if (!canChangeValue(state.config, action.payload) ||
545
+ !canChangeHours(action.payload, state.controls)) {
546
+ return state;
547
+ }
548
+ const /** @type {?} */ _newTime = changeTime(state.value, { hour: action.payload.step });
549
+ if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
550
+ return state;
551
+ }
552
+ return Object.assign({}, state, { value: _newTime });
553
+ }
554
+ case TimepickerActions.CHANGE_MINUTES: {
555
+ if (!canChangeValue(state.config, action.payload) ||
556
+ !canChangeMinutes(action.payload, state.controls)) {
557
+ return state;
558
+ }
559
+ const /** @type {?} */ _newTime = changeTime(state.value, { minute: action.payload.step });
560
+ if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
561
+ return state;
562
+ }
563
+ return Object.assign({}, state, { value: _newTime });
564
+ }
565
+ case TimepickerActions.CHANGE_SECONDS: {
566
+ if (!canChangeValue(state.config, action.payload) ||
567
+ !canChangeSeconds(action.payload, state.controls)) {
568
+ return state;
569
+ }
570
+ const /** @type {?} */ _newTime = changeTime(state.value, {
571
+ seconds: action.payload.step
572
+ });
573
+ if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {
574
+ return state;
575
+ }
576
+ return Object.assign({}, state, { value: _newTime });
577
+ }
578
+ case TimepickerActions.SET_TIME_UNIT: {
579
+ if (!canChangeValue(state.config)) {
580
+ return state;
581
+ }
582
+ const /** @type {?} */ _newTime = setTime(state.value, action.payload);
583
+ return Object.assign({}, state, { value: _newTime });
584
+ }
585
+ case TimepickerActions.UPDATE_CONTROLS: {
586
+ const /** @type {?} */ _newControlsState = timepickerControls(state.value, action.payload);
587
+ const /** @type {?} */ _newState = {
588
+ value: state.value,
589
+ config: action.payload,
590
+ controls: _newControlsState
591
+ };
592
+ if (state.config.showMeridian !== _newState.config.showMeridian) {
593
+ if (state.value) {
594
+ _newState.value = new Date(state.value);
595
+ }
596
+ }
597
+ return Object.assign({}, state, _newState);
598
+ }
599
+ default:
600
+ return state;
601
+ }
602
+ }
603
+
604
+ /**
605
+ * @fileoverview added by tsickle
606
+ * @suppress {checkTypes} checked by tsc
607
+ */
608
+ class TimepickerStore extends MiniStore {
609
+ constructor() {
610
+ const /** @type {?} */ _dispatcher = new BehaviorSubject({
611
+ type: '[mini-ngrx] dispatcher init'
612
+ });
613
+ const /** @type {?} */ state = new MiniState(initialState, _dispatcher, timepickerReducer);
614
+ super(_dispatcher, timepickerReducer, state);
615
+ }
616
+ }
617
+ TimepickerStore.decorators = [
618
+ { type: Injectable }
619
+ ];
620
+ /** @nocollapse */
621
+ TimepickerStore.ctorParameters = () => [];
622
+
623
+ /**
624
+ * @fileoverview added by tsickle
625
+ * @suppress {checkTypes} checked by tsc
626
+ */
627
+ const /** @type {?} */ TIMEPICKER_CONTROL_VALUE_ACCESSOR = {
628
+ provide: NG_VALUE_ACCESSOR,
629
+ /* tslint:disable-next-line: no-use-before-declare */
630
+ useExisting: forwardRef(() => TimepickerComponent),
631
+ multi: true
632
+ };
633
+ class TimepickerComponent {
634
+ /**
635
+ * @param {?} _config
636
+ * @param {?} _cd
637
+ * @param {?} _store
638
+ * @param {?} _timepickerActions
639
+ */
640
+ constructor(_config, _cd, _store, _timepickerActions) {
641
+ this._store = _store;
642
+ this._timepickerActions = _timepickerActions;
643
+ /**
644
+ * emits true if value is a valid date
645
+ */
646
+ this.isValid = new EventEmitter();
647
+ // min\max validation for input fields
648
+ this.invalidHours = false;
649
+ this.invalidMinutes = false;
650
+ this.invalidSeconds = false;
651
+ // control value accessor methods
652
+ // tslint:disable-next-line:no-any
653
+ this.onChange = Function.prototype;
654
+ // tslint:disable-next-line:no-any
655
+ this.onTouched = Function.prototype;
656
+ Object.assign(this, _config);
657
+ this.timepickerSub = _store
658
+ .select(state => state.value)
659
+ .subscribe((value) => {
660
+ // update UI values if date changed
661
+ this._renderTime(value);
662
+ this.onChange(value);
663
+ this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));
664
+ });
665
+ _store
666
+ .select(state => state.controls)
667
+ .subscribe((controlsState) => {
668
+ this.isValid.emit(isInputValid(this.hours, this.minutes, this.seconds, this.isPM()));
669
+ Object.assign(this, controlsState);
670
+ _cd.markForCheck();
671
+ });
672
+ }
673
+ /**
674
+ * @deprecated - please use `isEditable` instead
675
+ * @return {?}
676
+ */
677
+ get isSpinnersVisible() {
678
+ return this.showSpinners && !this.readonlyInput;
679
+ }
680
+ /**
681
+ * @return {?}
682
+ */
683
+ get isEditable() {
684
+ return !(this.readonlyInput || this.disabled);
685
+ }
686
+ /**
687
+ * @return {?}
688
+ */
689
+ resetValidation() {
690
+ this.invalidHours = false;
691
+ this.invalidMinutes = false;
692
+ this.invalidSeconds = false;
693
+ }
694
+ /**
695
+ * @return {?}
696
+ */
697
+ isPM() {
698
+ return this.showMeridian && this.meridian === this.meridians[1];
699
+ }
700
+ /**
701
+ * @param {?} $event
702
+ * @return {?}
703
+ */
704
+ prevDef($event) {
705
+ $event.preventDefault();
706
+ }
707
+ /**
708
+ * @param {?} $event
709
+ * @return {?}
710
+ */
711
+ wheelSign($event) {
712
+ return Math.sign($event.deltaY) * -1;
713
+ }
714
+ /**
715
+ * @param {?} changes
716
+ * @return {?}
717
+ */
718
+ ngOnChanges(changes) {
719
+ this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));
720
+ }
721
+ /**
722
+ * @param {?} step
723
+ * @param {?=} source
724
+ * @return {?}
725
+ */
726
+ changeHours(step, source = '') {
727
+ this.resetValidation();
728
+ this._store.dispatch(this._timepickerActions.changeHours({ step, source }));
729
+ }
730
+ /**
731
+ * @param {?} step
732
+ * @param {?=} source
733
+ * @return {?}
734
+ */
735
+ changeMinutes(step, source = '') {
736
+ this.resetValidation();
737
+ this._store.dispatch(this._timepickerActions.changeMinutes({ step, source }));
738
+ }
739
+ /**
740
+ * @param {?} step
741
+ * @param {?=} source
742
+ * @return {?}
743
+ */
744
+ changeSeconds(step, source = '') {
745
+ this.resetValidation();
746
+ this._store.dispatch(this._timepickerActions.changeSeconds({ step, source }));
747
+ }
748
+ /**
749
+ * @param {?} hours
750
+ * @return {?}
751
+ */
752
+ updateHours(hours) {
753
+ this.resetValidation();
754
+ this.hours = hours;
755
+ const /** @type {?} */ isValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();
756
+ if (!isValid) {
757
+ this.invalidHours = true;
758
+ this.isValid.emit(false);
759
+ this.onChange(null);
760
+ return;
761
+ }
762
+ this._updateTime();
763
+ }
764
+ /**
765
+ * @param {?} minutes
766
+ * @return {?}
767
+ */
768
+ updateMinutes(minutes) {
769
+ this.resetValidation();
770
+ this.minutes = minutes;
771
+ const /** @type {?} */ isValid = isMinuteInputValid(this.minutes) && this.isValidLimit();
772
+ if (!isValid) {
773
+ this.invalidMinutes = true;
774
+ this.isValid.emit(false);
775
+ this.onChange(null);
776
+ return;
777
+ }
778
+ this._updateTime();
779
+ }
780
+ /**
781
+ * @param {?} seconds
782
+ * @return {?}
783
+ */
784
+ updateSeconds(seconds) {
785
+ this.resetValidation();
786
+ this.seconds = seconds;
787
+ const /** @type {?} */ isValid = isSecondInputValid(this.seconds) && this.isValidLimit();
788
+ if (!isValid) {
789
+ this.invalidSeconds = true;
790
+ this.isValid.emit(false);
791
+ this.onChange(null);
792
+ return;
793
+ }
794
+ this._updateTime();
795
+ }
796
+ /**
797
+ * @return {?}
798
+ */
799
+ isValidLimit() {
800
+ return isInputLimitValid({
801
+ hour: this.hours,
802
+ minute: this.minutes,
803
+ seconds: this.seconds,
804
+ isPM: this.isPM()
805
+ }, this.max, this.min);
806
+ }
807
+ /**
808
+ * @return {?}
809
+ */
810
+ _updateTime() {
811
+ const /** @type {?} */ _seconds = this.showSeconds ? this.seconds : void 0;
812
+ const /** @type {?} */ _minutes = this.showMinutes ? this.minutes : void 0;
813
+ if (!isInputValid(this.hours, _minutes, _seconds, this.isPM())) {
814
+ this.isValid.emit(false);
815
+ this.onChange(null);
816
+ return;
817
+ }
818
+ this._store.dispatch(this._timepickerActions.setTime({
819
+ hour: this.hours,
820
+ minute: this.minutes,
821
+ seconds: this.seconds,
822
+ isPM: this.isPM()
823
+ }));
824
+ }
825
+ /**
826
+ * @return {?}
827
+ */
828
+ toggleMeridian() {
829
+ if (!this.showMeridian || !this.isEditable) {
830
+ return;
831
+ }
832
+ const /** @type {?} */ _hoursPerDayHalf = 12;
833
+ this._store.dispatch(this._timepickerActions.changeHours({
834
+ step: _hoursPerDayHalf,
835
+ source: ''
836
+ }));
837
+ }
838
+ /**
839
+ * Write a new value to the element.
840
+ * @param {?} obj
841
+ * @return {?}
842
+ */
843
+ writeValue(obj) {
844
+ if (isValidDate(obj)) {
845
+ this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));
846
+ }
847
+ else if (obj == null) {
848
+ this._store.dispatch(this._timepickerActions.writeValue(null));
849
+ }
850
+ }
851
+ /**
852
+ * Set the function to be called when the control receives a change event.
853
+ * @param {?} fn
854
+ * @return {?}
855
+ */
856
+ registerOnChange(fn) {
857
+ this.onChange = fn;
858
+ }
859
+ /**
860
+ * Set the function to be called when the control receives a touch event.
861
+ * @param {?} fn
862
+ * @return {?}
863
+ */
864
+ registerOnTouched(fn) {
865
+ this.onTouched = fn;
866
+ }
867
+ /**
868
+ * This function is called when the control status changes to or from "disabled".
869
+ * Depending on the value, it will enable or disable the appropriate DOM element.
870
+ *
871
+ * @param {?} isDisabled
872
+ * @return {?}
873
+ */
874
+ setDisabledState(isDisabled) {
875
+ this.disabled = isDisabled;
876
+ }
877
+ /**
878
+ * @return {?}
879
+ */
880
+ ngOnDestroy() {
881
+ this.timepickerSub.unsubscribe();
882
+ }
883
+ /**
884
+ * @param {?} value
885
+ * @return {?}
886
+ */
887
+ _renderTime(value) {
888
+ if (!isValidDate(value)) {
889
+ this.hours = '';
890
+ this.minutes = '';
891
+ this.seconds = '';
892
+ this.meridian = this.meridians[0];
893
+ return;
894
+ }
895
+ const /** @type {?} */ _value = parseTime(value);
896
+ const /** @type {?} */ _hoursPerDayHalf = 12;
897
+ let /** @type {?} */ _hours = _value.getHours();
898
+ if (this.showMeridian) {
899
+ this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];
900
+ _hours = _hours % _hoursPerDayHalf;
901
+ // should be 12 PM, not 00 PM
902
+ if (_hours === 0) {
903
+ _hours = _hoursPerDayHalf;
904
+ }
905
+ }
906
+ this.hours = padNumber(_hours);
907
+ this.minutes = padNumber(_value.getMinutes());
908
+ this.seconds = padNumber(_value.getUTCSeconds());
909
+ }
910
+ }
911
+ TimepickerComponent.decorators = [
912
+ { type: Component, args: [{
913
+ selector: 'timepicker',
914
+ changeDetection: ChangeDetectionStrategy.OnPush,
915
+ providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore],
916
+ template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\"\n (click)=\"changeHours(hourStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\">&nbsp;&nbsp;&nbsp;</td>\n <!-- increment minutes button -->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\"\n (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"bs-chevron bs-chevron-up\"></span></a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\">&nbsp;</td>\n <!-- increment seconds button -->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\"\n (click)=\"changeSeconds(secondsStep)\">\n <span class=\"bs-chevron bs-chevron-up\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\">&nbsp;&nbsp;&nbsp;</td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input type=\"text\" [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"HH\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event);changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"></td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\">&nbsp;:&nbsp;</td>\n <!-- minutes -->\n <td class=\"form-group\" *ngIf=\"showMinutes\" [class.has-error]=\"invalidMinutes\">\n <input type=\"text\" [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"MM\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event);changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\">\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\">&nbsp;:&nbsp;</td>\n <!-- seconds -->\n <td class=\"form-group\" *ngIf=\"showSeconds\" [class.has-error]=\"invalidSeconds\">\n <input type=\"text\" [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center bs-timepicker-field\"\n placeholder=\"SS\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event);changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\">\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\">&nbsp;&nbsp;&nbsp;</td>\n <!-- meridian -->\n <td *ngIf=\"showMeridian\">\n <button type=\"button\" class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >{{ meridian }}\n </button>\n </td>\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\"\n (click)=\"changeHours(-hourStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showMinutes\">&nbsp;&nbsp;&nbsp;</td>\n <!-- decrement minutes button-->\n <td *ngIf=\"showMinutes\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\"\n (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n <td *ngIf=\"showSeconds\">&nbsp;</td>\n <!-- decrement seconds button-->\n <td *ngIf=\"showSeconds\">\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\"\n (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"bs-chevron bs-chevron-down\"></span>\n </a>\n </td>\n <!-- space between -->\n <td *ngIf=\"showMeridian\">&nbsp;&nbsp;&nbsp;</td>\n <!-- meridian placeholder-->\n <td *ngIf=\"showMeridian\"></td>\n </tr>\n </tbody>\n</table>\n",
917
+ encapsulation: ViewEncapsulation.None,
918
+ styles: [`
919
+ .bs-chevron {
920
+ border-style: solid;
921
+ display: block;
922
+ width: 9px;
923
+ height: 9px;
924
+ position: relative;
925
+ border-width: 3px 0px 0 3px;
926
+ }
927
+
928
+ .bs-chevron-up {
929
+ -webkit-transform: rotate(45deg);
930
+ transform: rotate(45deg);
931
+ top: 2px;
932
+ }
933
+
934
+ .bs-chevron-down {
935
+ -webkit-transform: rotate(-135deg);
936
+ transform: rotate(-135deg);
937
+ top: -2px;
938
+ }
939
+
940
+ .bs-timepicker-field {
941
+ width: 50px;
942
+ }
943
+ `]
944
+ }] }
945
+ ];
946
+ /** @nocollapse */
947
+ TimepickerComponent.ctorParameters = () => [
948
+ { type: TimepickerConfig, },
949
+ { type: ChangeDetectorRef, },
950
+ { type: TimepickerStore, },
951
+ { type: TimepickerActions, },
952
+ ];
953
+ TimepickerComponent.propDecorators = {
954
+ "hourStep": [{ type: Input },],
955
+ "minuteStep": [{ type: Input },],
956
+ "secondsStep": [{ type: Input },],
957
+ "readonlyInput": [{ type: Input },],
958
+ "disabled": [{ type: Input },],
959
+ "mousewheel": [{ type: Input },],
960
+ "arrowkeys": [{ type: Input },],
961
+ "showSpinners": [{ type: Input },],
962
+ "showMeridian": [{ type: Input },],
963
+ "showMinutes": [{ type: Input },],
964
+ "showSeconds": [{ type: Input },],
965
+ "meridians": [{ type: Input },],
966
+ "min": [{ type: Input },],
967
+ "max": [{ type: Input },],
968
+ "isValid": [{ type: Output },],
969
+ };
970
+
971
+ /**
972
+ * @fileoverview added by tsickle
973
+ * @suppress {checkTypes} checked by tsc
974
+ */
975
+ class TimepickerModule {
976
+ /**
977
+ * @return {?}
978
+ */
979
+ static forRoot() {
980
+ return {
981
+ ngModule: TimepickerModule,
982
+ providers: [TimepickerConfig, TimepickerActions, TimepickerStore]
983
+ };
984
+ }
985
+ }
986
+ TimepickerModule.decorators = [
987
+ { type: NgModule, args: [{
988
+ imports: [CommonModule],
989
+ declarations: [TimepickerComponent],
990
+ exports: [TimepickerComponent]
991
+ },] }
992
+ ];
993
+
994
+ /**
995
+ * @fileoverview added by tsickle
996
+ * @suppress {checkTypes} checked by tsc
997
+ */
998
+
999
+ /**
1000
+ * @fileoverview added by tsickle
1001
+ * @suppress {checkTypes} checked by tsc
1002
+ */
1003
+
1004
+ export { TimepickerComponent, TimepickerActions, TimepickerStore, TimepickerConfig, TimepickerModule, TIMEPICKER_CONTROL_VALUE_ACCESSOR as ɵa };
1005
+
1006
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC10aW1lcGlja2VyLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvcmVkdWNlci90aW1lcGlja2VyLmFjdGlvbnMudHMiLCJuZzovL25neC1ib290c3RyYXAvdGltZXBpY2tlci90aW1lcGlja2VyLnV0aWxzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvdGltZXBpY2tlci1jb250cm9scy51dGlsLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvdGltZXBpY2tlci5jb25maWcudHMiLCJuZzovL25neC1ib290c3RyYXAvdGltZXBpY2tlci9yZWR1Y2VyL3RpbWVwaWNrZXIucmVkdWNlci50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyL3JlZHVjZXIvdGltZXBpY2tlci5zdG9yZS50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC90aW1lcGlja2VyL3RpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXIvdGltZXBpY2tlci5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9taW5pLW5ncngnO1xuaW1wb3J0IHtcbiAgVGltZUNoYW5nZUV2ZW50LFxuICBUaW1lcGlja2VyQ29tcG9uZW50U3RhdGUsXG4gIFRpbWVcbn0gZnJvbSAnLi4vdGltZXBpY2tlci5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlckFjdGlvbnMge1xuICBzdGF0aWMgcmVhZG9ubHkgV1JJVEVfVkFMVUUgPSAnW3RpbWVwaWNrZXJdIHdyaXRlIHZhbHVlIGZyb20gbmcgbW9kZWwnO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0hBTkdFX0hPVVJTID0gJ1t0aW1lcGlja2VyXSBjaGFuZ2UgaG91cnMnO1xuICBzdGF0aWMgcmVhZG9ubHkgQ0hBTkdFX01JTlVURVMgPSAnW3RpbWVwaWNrZXJdIGNoYW5nZSBtaW51dGVzJztcbiAgc3RhdGljIHJlYWRvbmx5IENIQU5HRV9TRUNPTkRTID0gJ1t0aW1lcGlja2VyXSBjaGFuZ2Ugc2Vjb25kcyc7XG4gIHN0YXRpYyByZWFkb25seSBTRVRfVElNRV9VTklUID0gJ1t0aW1lcGlja2VyXSBzZXQgdGltZSB1bml0JztcbiAgc3RhdGljIHJlYWRvbmx5IFVQREFURV9DT05UUk9MUyA9ICdbdGltZXBpY2tlcl0gdXBkYXRlIGNvbnRyb2xzJztcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRpbWVwaWNrZXJBY3Rpb25zLldSSVRFX1ZBTFVFLFxuICAgICAgcGF5bG9hZDogdmFsdWVcbiAgICB9O1xuICB9XG5cbiAgY2hhbmdlSG91cnMoZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfSE9VUlMsXG4gICAgICBwYXlsb2FkOiBldmVudFxuICAgIH07XG4gIH1cblxuICBjaGFuZ2VNaW51dGVzKGV2ZW50OiBUaW1lQ2hhbmdlRXZlbnQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVGltZXBpY2tlckFjdGlvbnMuQ0hBTkdFX01JTlVURVMsXG4gICAgICBwYXlsb2FkOiBldmVudFxuICAgIH07XG4gIH1cblxuICBjaGFuZ2VTZWNvbmRzKGV2ZW50OiBUaW1lQ2hhbmdlRXZlbnQpOiBBY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfU0VDT05EUyxcbiAgICAgIHBheWxvYWQ6IGV2ZW50XG4gICAgfTtcbiAgfVxuXG4gIHNldFRpbWUodmFsdWU6IFRpbWUpOiBBY3Rpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBUaW1lcGlja2VyQWN0aW9ucy5TRVRfVElNRV9VTklULFxuICAgICAgcGF5bG9hZDogdmFsdWVcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlQ29udHJvbHModmFsdWU6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSk6IEFjdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRpbWVwaWNrZXJBY3Rpb25zLlVQREFURV9DT05UUk9MUyxcbiAgICAgIHBheWxvYWQ6IHZhbHVlXG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgVGltZSwgVGltZXBpY2tlckNvbXBvbmVudFN0YXRlIH0gZnJvbSAnLi90aW1lcGlja2VyLm1vZGVscyc7XG5cbmNvbnN0IGRleCA9IDEwO1xuY29uc3QgaG91cnNQZXJEYXkgPSAyNDtcbmNvbnN0IGhvdXJzUGVyRGF5SGFsZiA9IDEyO1xuY29uc3QgbWludXRlc1BlckhvdXIgPSA2MDtcbmNvbnN0IHNlY29uZHNQZXJNaW51dGUgPSA2MDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWREYXRlKHZhbHVlPzogc3RyaW5nIHwgRGF0ZSk6IGJvb2xlYW4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiBpc05hTih2YWx1ZS5nZXRIb3VycygpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlzVmFsaWREYXRlKG5ldyBEYXRlKHZhbHVlKSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRMaW1pdChjb250cm9sczogVGltZXBpY2tlckNvbXBvbmVudFN0YXRlLCBuZXdEYXRlOiBEYXRlKTogYm9vbGVhbiB7XG4gIGlmIChjb250cm9scy5taW4gJiYgbmV3RGF0ZSA8IGNvbnRyb2xzLm1pbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChjb250cm9scy5tYXggJiYgbmV3RGF0ZSA+IGNvbnRyb2xzLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCBkZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZhbHVlIGlzIG51bWJlciB7XG4gIHJldHVybiAhaXNOYU4odG9OdW1iZXIodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSG91cnMoXG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG4gIGlzUE0gPSBmYWxzZVxuKTogbnVtYmVyIHtcbiAgY29uc3QgaG91ciA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKFxuICAgIGlzTmFOKGhvdXIpIHx8XG4gICAgaG91ciA8IDAgfHxcbiAgICBob3VyID4gKGlzUE0gPyBob3Vyc1BlckRheUhhbGYgOiBob3Vyc1BlckRheSlcbiAgKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiBob3VyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNaW51dGVzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBtaW51dGUgPSB0b051bWJlcih2YWx1ZSk7XG4gIGlmIChpc05hTihtaW51dGUpIHx8IG1pbnV0ZSA8IDAgfHwgbWludXRlID4gbWludXRlc1BlckhvdXIpIHtcbiAgICByZXR1cm4gTmFOO1xuICB9XG5cbiAgcmV0dXJuIG1pbnV0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2Vjb25kcyh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3Qgc2Vjb25kcyA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKGlzTmFOKHNlY29uZHMpIHx8IHNlY29uZHMgPCAwIHx8IHNlY29uZHMgPiBzZWNvbmRzUGVyTWludXRlKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHJldHVybiBzZWNvbmRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUaW1lKHZhbHVlOiBzdHJpbmcgfCBEYXRlKTogRGF0ZSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoYW5nZVRpbWUodmFsdWU6IERhdGUsIGRpZmY6IFRpbWUpOiBEYXRlIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBjaGFuZ2VUaW1lKGNyZWF0ZURhdGUobmV3IERhdGUoKSwgMCwgMCwgMCksIGRpZmYpO1xuICB9XG5cbiAgbGV0IGhvdXIgPSB2YWx1ZS5nZXRIb3VycygpO1xuICBsZXQgbWludXRlcyA9IHZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgbGV0IHNlY29uZHMgPSB2YWx1ZS5nZXRTZWNvbmRzKCk7XG5cbiAgaWYgKGRpZmYuaG91cikge1xuICAgIGhvdXIgPSAoaG91ciArIHRvTnVtYmVyKGRpZmYuaG91cikpICUgaG91cnNQZXJEYXk7XG4gICAgaWYgKGhvdXIgPCAwKSB7XG4gICAgICBob3VyICs9IGhvdXJzUGVyRGF5O1xuICAgIH1cbiAgfVxuXG4gIGlmIChkaWZmLm1pbnV0ZSkge1xuICAgIG1pbnV0ZXMgPSBtaW51dGVzICsgdG9OdW1iZXIoZGlmZi5taW51dGUpO1xuICB9XG5cbiAgaWYgKGRpZmYuc2Vjb25kcykge1xuICAgIHNlY29uZHMgPSBzZWNvbmRzICsgdG9OdW1iZXIoZGlmZi5zZWNvbmRzKTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVEYXRlKHZhbHVlLCBob3VyLCBtaW51dGVzLCBzZWNvbmRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRpbWUodmFsdWU6IERhdGUsIG9wdHM6IFRpbWUpOiBEYXRlIHtcbiAgbGV0IGhvdXIgPSBwYXJzZUhvdXJzKG9wdHMuaG91cik7XG4gIGNvbnN0IG1pbnV0ZSA9IHBhcnNlTWludXRlcyhvcHRzLm1pbnV0ZSk7XG4gIGNvbnN0IHNlY29uZHMgPSBwYXJzZVNlY29uZHMob3B0cy5zZWNvbmRzKSB8fCAwO1xuXG4gIGlmIChvcHRzLmlzUE0pIHtcbiAgICBob3VyICs9IGhvdXJzUGVyRGF5SGFsZjtcbiAgfVxuXG4gIGlmICghdmFsdWUpIHtcbiAgICBpZiAoIWlzTmFOKGhvdXIpICYmICFpc05hTihtaW51dGUpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRGF0ZShuZXcgRGF0ZSgpLCBob3VyLCBtaW51dGUsIHNlY29uZHMpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGlmIChpc05hTihob3VyKSB8fCBpc05hTihtaW51dGUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZURhdGUodmFsdWUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEYXRlKFxuICB2YWx1ZTogRGF0ZSxcbiAgaG91cnM6IG51bWJlcixcbiAgbWludXRlczogbnVtYmVyLFxuICBzZWNvbmRzOiBudW1iZXJcbik6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUoXG4gICAgdmFsdWUuZ2V0RnVsbFllYXIoKSxcbiAgICB2YWx1ZS5nZXRNb250aCgpLFxuICAgIHZhbHVlLmdldERhdGUoKSxcbiAgICBob3VycyxcbiAgICBtaW51dGVzLFxuICAgIHNlY29uZHMsXG4gICAgdmFsdWUuZ2V0TWlsbGlzZWNvbmRzKClcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhZE51bWJlcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgX3ZhbHVlID0gdmFsdWUudG9TdHJpbmcoKTtcbiAgaWYgKF92YWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIF92YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBgMCR7X3ZhbHVlfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hvdXJJbnB1dFZhbGlkKGhvdXJzOiBzdHJpbmcsIGlzUE06IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZUhvdXJzKGhvdXJzLCBpc1BNKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01pbnV0ZUlucHV0VmFsaWQobWludXRlczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4ocGFyc2VNaW51dGVzKG1pbnV0ZXMpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2Vjb25kSW5wdXRWYWxpZChzZWNvbmRzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc05hTihwYXJzZVNlY29uZHMoc2Vjb25kcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dExpbWl0VmFsaWQoZGlmZjogVGltZSwgbWF4OiBEYXRlLCBtaW46IERhdGUpOiBib29sZWFuIHtcbiAgY29uc3QgbmV3RGF0ZSA9IGNoYW5nZVRpbWUobmV3IERhdGUoKSwgZGlmZik7XG5cbiAgaWYgKG1heCAmJiBuZXdEYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKG1pbiAmJiBuZXdEYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0VmFsaWQoXG4gIGhvdXJzOiBzdHJpbmcsXG4gIG1pbnV0ZXMgPSAnMCcsXG4gIHNlY29uZHMgPSAnMCcsXG4gIGlzUE06IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNIb3VySW5wdXRWYWxpZChob3VycywgaXNQTSlcbiAgICAmJiBpc01pbnV0ZUlucHV0VmFsaWQobWludXRlcylcbiAgICAmJiBpc1NlY29uZElucHV0VmFsaWQoc2Vjb25kcyk7XG59XG4iLCJpbXBvcnQgeyBjaGFuZ2VUaW1lIH0gZnJvbSAnLi90aW1lcGlja2VyLnV0aWxzJztcbmltcG9ydCB7XG4gIFRpbWVDaGFuZ2VFdmVudCxcbiAgVGltZXBpY2tlckNvbXBvbmVudFN0YXRlLFxuICBUaW1lcGlja2VyQ29udHJvbHNcbn0gZnJvbSAnLi90aW1lcGlja2VyLm1vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5DaGFuZ2VWYWx1ZShcbiAgc3RhdGU6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZSxcbiAgZXZlbnQ/OiBUaW1lQ2hhbmdlRXZlbnRcbik6IGJvb2xlYW4ge1xuICBpZiAoc3RhdGUucmVhZG9ubHlJbnB1dCB8fCBzdGF0ZS5kaXNhYmxlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChldmVudCkge1xuICAgIGlmIChldmVudC5zb3VyY2UgPT09ICd3aGVlbCcgJiYgIXN0YXRlLm1vdXNld2hlZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuc291cmNlID09PSAna2V5JyAmJiAhc3RhdGUuYXJyb3drZXlzKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5DaGFuZ2VIb3VycyhcbiAgZXZlbnQ6IFRpbWVDaGFuZ2VFdmVudCxcbiAgY29udHJvbHM6IFRpbWVwaWNrZXJDb250cm9sc1xuKTogYm9vbGVhbiB7XG4gIGlmICghZXZlbnQuc3RlcCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChldmVudC5zdGVwID4gMCAmJiAhY29udHJvbHMuY2FuSW5jcmVtZW50SG91cnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZXZlbnQuc3RlcCA8IDAgJiYgIWNvbnRyb2xzLmNhbkRlY3JlbWVudEhvdXJzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5DaGFuZ2VNaW51dGVzKFxuICBldmVudDogVGltZUNoYW5nZUV2ZW50LFxuICBjb250cm9sczogVGltZXBpY2tlckNvbnRyb2xzXG4pOiBib29sZWFuIHtcbiAgaWYgKCFldmVudC5zdGVwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChldmVudC5zdGVwID4gMCAmJiAhY29udHJvbHMuY2FuSW5jcmVtZW50TWludXRlcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZXZlbnQuc3RlcCA8IDAgJiYgIWNvbnRyb2xzLmNhbkRlY3JlbWVudE1pbnV0ZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkNoYW5nZVNlY29uZHMoXG4gIGV2ZW50OiBUaW1lQ2hhbmdlRXZlbnQsXG4gIGNvbnRyb2xzOiBUaW1lcGlja2VyQ29udHJvbHNcbik6IGJvb2xlYW4ge1xuICBpZiAoIWV2ZW50LnN0ZXApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGV2ZW50LnN0ZXAgPiAwICYmICFjb250cm9scy5jYW5JbmNyZW1lbnRTZWNvbmRzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChldmVudC5zdGVwIDwgMCAmJiAhY29udHJvbHMuY2FuRGVjcmVtZW50U2Vjb25kcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbHNWYWx1ZShcbiAgc3RhdGU6IFRpbWVwaWNrZXJDb21wb25lbnRTdGF0ZVxuKTogVGltZXBpY2tlckNvbXBvbmVudFN0YXRlIHtcbiAgY29uc3Qge1xuICAgIGhvdXJTdGVwLFxuICAgIG1pbnV0ZVN0ZXAsXG4gICAgc2Vjb25kc1N0ZXAsXG4gICAgcmVhZG9ubHlJbnB1dCxcbiAgICBkaXNhYmxlZCxcbiAgICBtb3VzZXdoZWVsLFxuICAgIGFycm93a2V5cyxcbiAgICBzaG93U3Bpbm5lcnMsXG4gICAgc2hvd01lcmlkaWFuLFxuICAgIHNob3dTZWNvbmRzLFxuICAgIG1lcmlkaWFucyxcbiAgICBtaW4sXG4gICAgbWF4XG4gIH0gPSBzdGF0ZTtcblxuICByZXR1cm4ge1xuICAgIGhvdXJTdGVwLFxuICAgIG1pbnV0ZVN0ZXAsXG4gICAgc2Vjb25kc1N0ZXAsXG4gICAgcmVhZG9ubHlJbnB1dCxcbiAgICBkaXNhYmxlZCxcbiAgICBtb3VzZXdoZWVsLFxuICAgIGFycm93a2V5cyxcbiAgICBzaG93U3Bpbm5lcnMsXG4gICAgc2hvd01lcmlkaWFuLFxuICAgIHNob3dTZWNvbmRzLFxuICAgIG1lcmlkaWFucyxcbiAgICBtaW4sXG4gICAgbWF4XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lcGlja2VyQ29udHJvbHMoXG4gIHZhbHVlOiBEYXRlLFxuICBzdGF0ZTogVGltZXBpY2tlckNvbXBvbmVudFN0YXRlXG4pOiBUaW1lcGlja2VyQ29udHJvbHMge1xuICBjb25zdCBob3Vyc1BlckRheUhhbGYgPSAxMjtcbiAgY29uc3QgeyBtaW4sIG1heCwgaG91clN0ZXAsIG1pbnV0ZVN0ZXAsIHNlY29uZHNTdGVwLCBzaG93U2Vjb25kcyB9ID0gc3RhdGU7XG4gIGNvbnN0IHJlczogVGltZXBpY2tlckNvbnRyb2xzID0ge1xuICAgIGNhbkluY3JlbWVudEhvdXJzOiB0cnVlLFxuICAgIGNhbkluY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgY2FuSW5jcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgIGNhbkRlY3JlbWVudEhvdXJzOiB0cnVlLFxuICAgIGNhbkRlY3JlbWVudE1pbnV0ZXM6IHRydWUsXG4gICAgY2FuRGVjcmVtZW50U2Vjb25kczogdHJ1ZSxcblxuICAgIGNhblRvZ2dsZU1lcmlkaWFuOiB0cnVlXG4gIH07XG5cbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICAvLyBjb21wYXJlIGRhdGVzXG4gIGlmIChtYXgpIHtcbiAgICBjb25zdCBfbmV3SG91ciA9IGNoYW5nZVRpbWUodmFsdWUsIHsgaG91cjogaG91clN0ZXAgfSk7XG4gICAgcmVzLmNhbkluY3JlbWVudEhvdXJzID0gbWF4ID4gX25ld0hvdXI7XG5cbiAgICBpZiAoIXJlcy5jYW5JbmNyZW1lbnRIb3Vycykge1xuICAgICAgY29uc3QgX25ld01pbnV0ZXMgPSBjaGFuZ2VUaW1lKHZhbHVlLCB7IG1pbnV0ZTogbWludXRlU3RlcCB9KTtcbiAgICAgIHJlcy5jYW5JbmNyZW1lbnRNaW51dGVzID0gc2hvd1NlY29uZHNcbiAgICAgICAgPyBtYXggPiBfbmV3TWludXRlc1xuICAgICAgICA6IG1heCA+PSBfbmV3TWludXRlcztcbiAgICB9XG5cbiAgICBpZiAoIXJlcy5jYW5JbmNyZW1lbnRNaW51dGVzKSB7XG4gICAgICBjb25zdCBfbmV3U2Vjb25kcyA9IGNoYW5nZVRpbWUodmFsdWUsIHsgc2Vjb25kczogc2Vjb25kc1N0ZXAgfSk7XG4gICAgICByZXMuY2FuSW5jcmVtZW50U2Vjb25kcyA9IG1heCA+PSBfbmV3U2Vjb25kcztcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuZ2V0SG91cnMoKSA8IGhvdXJzUGVyRGF5SGFsZikge1xuICAgICAgcmVzLmNhblRvZ2dsZU1lcmlkaWFuID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBob3VyOiBob3Vyc1BlckRheUhhbGYgfSkgPCBtYXg7XG4gICAgfVxuICB9XG5cbiAgaWYgKG1pbikge1xuICAgIGNvbnN0IF9uZXdIb3VyID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBob3VyOiAtaG91clN0ZXAgfSk7XG4gICAgcmVzLmNhbkRlY3JlbWVudEhvdXJzID0gbWluIDwgX25ld0hvdXI7XG5cbiAgICBpZiAoIXJlcy5jYW5EZWNyZW1lbnRIb3Vycykge1xuICAgICAgY29uc3QgX25ld01pbnV0ZXMgPSBjaGFuZ2VUaW1lKHZhbHVlLCB7IG1pbnV0ZTogLW1pbnV0ZVN0ZXAgfSk7XG4gICAgICByZXMuY2FuRGVjcmVtZW50TWludXRlcyA9IHNob3dTZWNvbmRzXG4gICAgICAgID8gbWluIDwgX25ld01pbnV0ZXNcbiAgICAgICAgOiBtaW4gPD0gX25ld01pbnV0ZXM7XG4gICAgfVxuXG4gICAgaWYgKCFyZXMuY2FuRGVjcmVtZW50TWludXRlcykge1xuICAgICAgY29uc3QgX25ld1NlY29uZHMgPSBjaGFuZ2VUaW1lKHZhbHVlLCB7IHNlY29uZHM6IC1zZWNvbmRzU3RlcCB9KTtcbiAgICAgIHJlcy5jYW5EZWNyZW1lbnRTZWNvbmRzID0gbWluIDw9IF9uZXdTZWNvbmRzO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5nZXRIb3VycygpID49IGhvdXJzUGVyRGF5SGFsZikge1xuICAgICAgcmVzLmNhblRvZ2dsZU1lcmlkaWFuID0gY2hhbmdlVGltZSh2YWx1ZSwgeyBob3VyOiAtaG91cnNQZXJEYXlIYWxmIH0pID4gbWluO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59XG4iLCJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBQcm92aWRlcyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aW1lcGlja2VyICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlckNvbmZpZyB7XG4gIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICBob3VyU3RlcCA9IDE7XG4gIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICBtaW51dGVTdGVwID0gNTtcbiAgLyoqIHNlY29uZHMgY2hhbmdlcyBzdGVwICovXG4gIHNlY29uZHNTdGVwID0gMTA7XG4gIC8qKiBpZiB0cnVlIHdvcmtzIGluIDEySCBtb2RlIGFuZCBkaXNwbGF5cyBBTS9QTS4gSWYgZmFsc2Ugd29ya3MgaW4gMjRIIG1vZGUgYW5kIGhpZGVzIEFNL1BNICovXG4gIHNob3dNZXJpZGlhbiA9IHRydWU7XG4gIC8qKiBtZXJpZGlhbiBsYWJlbHMgYmFzZWQgb24gbG9jYWxlICovXG4gIG1lcmlkaWFucyA9IFsnQU0nLCAnUE0nXTtcbiAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgcmVhZG9ubHkgKi9cbiAgcmVhZG9ubHlJbnB1dCA9IGZhbHNlO1xuICAvKiogaWYgdHJ1ZSBob3VycyBhbmQgbWludXRlcyBmaWVsZHMgd2lsbCBiZSBkaXNhYmxlZCAqL1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gIG1vdXNld2hlZWwgPSB0cnVlO1xuICAvKiogaWYgdHJ1ZSB0aGUgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSB1cC9kb3duIGFycm93IGtleXMgb24gdGhlIGtleWJvYXJkICovXG4gIGFycm93a2V5cyA9IHRydWU7XG4gIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgc2hvd1NwaW5uZXJzID0gdHJ1ZTtcbiAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lcGlja2VyICovXG4gIHNob3dTZWNvbmRzID0gZmFsc2U7XG4gIC8qKiBzaG93IG1pbnV0ZXMgaW4gdGltZXBpY2tlciAqL1xuICBzaG93TWludXRlcyA9IHRydWU7XG4gIC8qKiBtaW5pbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gIG1pbjogRGF0ZTtcbiAgLyoqIG1heGltdW0gdGltZSB1c2VyIGNhbiBzZWxlY3QgKi9cbiAgbWF4OiBEYXRlO1xufVxuIiwiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9taW5pLW5ncngnO1xuaW1wb3J0IHtcbiAgY2FuQ2hhbmdlSG91cnMsXG4gIGNhbkNoYW5nZU1pbnV0ZXMsXG4gIGNhbkNoYW5nZVNlY29uZHMsXG4gIGNhbkNoYW5nZVZhbHVlLFxuICB0aW1lcGlja2VyQ29udHJvbHNcbn0gZnJvbSAnLi4vdGltZXBpY2tlci1jb250cm9scy51dGlsJztcbmltcG9ydCB7IFRpbWVwaWNrZXJDb25maWcgfSBmcm9tICcuLi90aW1lcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQge1xuICBUaW1lcGlja2VyQ29tcG9uZW50U3RhdGUsXG4gIFRpbWVwaWNrZXJDb250cm9sc1xufSBmcm9tICcuLi90aW1lcGlja2VyLm1vZGVscyc7XG5pbXBvcnQgeyBjaGFuZ2VUaW1lLCBzZXRUaW1lLCBpc1ZhbGlkTGltaXQgfSBmcm9tICcuLi90aW1lcGlja2VyLnV0aWxzJztcbmltcG9ydCB7IFRpbWVwaWNrZXJBY3Rpb25zIH0gZnJvbSAnLi90aW1lcGlja2VyLmFjdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlclN0YXRlIHtcbiAgdmFsdWU6IERhdGU7XG4gIGNvbmZpZzogVGltZXBpY2tlckNvbXBvbmVudFN0YXRlO1xuICBjb250cm9sczogVGltZXBpY2tlckNvbnRyb2xzO1xufVxuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlOiBUaW1lcGlja2VyU3RhdGUgPSB7XG4gIHZhbHVlOiBudWxsLFxuICBjb25maWc6IG5ldyBUaW1lcGlja2VyQ29uZmlnKCksXG4gIGNvbnRyb2xzOiB7XG4gICAgY2FuSW5jcmVtZW50SG91cnM6IHRydWUsXG4gICAgY2FuSW5jcmVtZW50TWludXRlczogdHJ1ZSxcbiAgICBjYW5JbmNyZW1lbnRTZWNvbmRzOiB0cnVlLFxuXG4gICAgY2FuRGVjcmVtZW50SG91cnM6IHRydWUsXG4gICAgY2FuRGVjcmVtZW50TWludXRlczogdHJ1ZSxcbiAgICBjYW5EZWNyZW1lbnRTZWNvbmRzOiB0cnVlLFxuXG4gICAgY2FuVG9nZ2xlTWVyaWRpYW46IHRydWVcbiAgfVxufTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmN5Y2xvbWF0aWMtY29tcGxleGl0eVxuZXhwb3J0IGZ1bmN0aW9uIHRpbWVwaWNrZXJSZWR1Y2VyKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb246IEFjdGlvbikge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5XUklURV9WQUxVRToge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7IHZhbHVlOiBhY3Rpb24ucGF5bG9hZCB9KTtcbiAgICB9XG5cbiAgICBjYXNlIFRpbWVwaWNrZXJBY3Rpb25zLkNIQU5HRV9IT1VSUzoge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuQ2hhbmdlVmFsdWUoc3RhdGUuY29uZmlnLCBhY3Rpb24ucGF5bG9hZCkgfHxcbiAgICAgICAgIWNhbkNoYW5nZUhvdXJzKGFjdGlvbi5wYXlsb2FkLCBzdGF0ZS5jb250cm9scylcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9uZXdUaW1lID0gY2hhbmdlVGltZShzdGF0ZS52YWx1ZSwgeyBob3VyOiBhY3Rpb24ucGF5bG9hZC5zdGVwIH0pO1xuXG4gICAgICBpZiAoKHN0YXRlLmNvbmZpZy5tYXggfHwgc3RhdGUuY29uZmlnLm1pbikgJiYgIWlzVmFsaWRMaW1pdChzdGF0ZS5jb25maWcsIF9uZXdUaW1lKSkge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7IHZhbHVlOiBfbmV3VGltZSB9KTtcbiAgICB9XG5cbiAgICBjYXNlIFRpbWVwaWNrZXJBY3Rpb25zLkNIQU5HRV9NSU5VVEVTOiB7XG4gICAgICBpZiAoXG4gICAgICAgICFjYW5DaGFuZ2VWYWx1ZShzdGF0ZS5jb25maWcsIGFjdGlvbi5wYXlsb2FkKSB8fFxuICAgICAgICAhY2FuQ2hhbmdlTWludXRlcyhhY3Rpb24ucGF5bG9hZCwgc3RhdGUuY29udHJvbHMpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBfbmV3VGltZSA9IGNoYW5nZVRpbWUoc3RhdGUudmFsdWUsIHsgbWludXRlOiBhY3Rpb24ucGF5bG9hZC5zdGVwIH0pO1xuXG4gICAgICBpZiAoKHN0YXRlLmNvbmZpZy5tYXggfHwgc3RhdGUuY29uZmlnLm1pbikgJiYgIWlzVmFsaWRMaW1pdChzdGF0ZS5jb25maWcsIF9uZXdUaW1lKSkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5DSEFOR0VfU0VDT05EUzoge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuQ2hhbmdlVmFsdWUoc3RhdGUuY29uZmlnLCBhY3Rpb24ucGF5bG9hZCkgfHxcbiAgICAgICAgIWNhbkNoYW5nZVNlY29uZHMoYWN0aW9uLnBheWxvYWQsIHN0YXRlLmNvbnRyb2xzKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgX25ld1RpbWUgPSBjaGFuZ2VUaW1lKHN0YXRlLnZhbHVlLCB7XG4gICAgICAgIHNlY29uZHM6IGFjdGlvbi5wYXlsb2FkLnN0ZXBcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoKHN0YXRlLmNvbmZpZy5tYXggfHwgc3RhdGUuY29uZmlnLm1pbikgJiYgIWlzVmFsaWRMaW1pdChzdGF0ZS5jb25maWcsIF9uZXdUaW1lKSkge1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgeyB2YWx1ZTogX25ld1RpbWUgfSk7XG4gICAgfVxuXG4gICAgY2FzZSBUaW1lcGlja2VyQWN0aW9ucy5TRVRfVElNRV9VTklUOiB7XG4gICAgICBpZiAoIWNhbkNoYW5nZVZhbHVlKHN0YXRlLmNvbmZpZykpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBfbmV3VGltZSA9IHNldFRpbWUoc3RhdGUudmFsdWUsIGFjdGlvbi5wYXlsb2FkKTtcblxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCB7IHZhbHVlOiBfbmV3VGltZSB9KTtcbiAgICB9XG5cbiAgICBjYXNlIFRpbWVwaWNrZXJBY3Rpb25zLlVQREFURV9DT05UUk9MUzoge1xuICAgICAgY29uc3QgX25ld0NvbnRyb2xzU3RhdGUgPSB0aW1lcGlja2VyQ29udHJvbHMoc3RhdGUudmFsdWUsIGFjdGlvbi5wYXlsb2FkKTtcbiAgICAgIGNvbnN0IF9uZXdTdGF0ZTogVGltZXBpY2tlclN0YXRlID0ge1xuICAgICAgICB2YWx1ZTogc3RhdGUudmFsdWUsXG4gICAgICAgIGNvbmZpZzogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgIGNvbnRyb2xzOiBfbmV3Q29udHJvbHNTdGF0ZVxuICAgICAgfTtcblxuICAgICAgaWYgKHN0YXRlLmNvbmZpZy5zaG93TWVyaWRpYW4gIT09IF9uZXdTdGF0ZS5jb25maWcuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIGlmIChzdGF0ZS52YWx1ZSkge1xuICAgICAgICAgIF9uZXdTdGF0ZS52YWx1ZSA9IG5ldyBEYXRlKHN0YXRlLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUsIF9uZXdTdGF0ZSk7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgdGltZXBpY2tlclJlZHVjZXIsXG4gIFRpbWVwaWNrZXJTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlXG59IGZyb20gJy4vdGltZXBpY2tlci5yZWR1Y2VyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBY3Rpb24sIE1pbmlTdG9yZSwgTWluaVN0YXRlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9taW5pLW5ncngnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlclN0b3JlIGV4dGVuZHMgTWluaVN0b3JlPFRpbWVwaWNrZXJTdGF0ZT4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBfZGlzcGF0Y2hlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QWN0aW9uPih7XG4gICAgICB0eXBlOiAnW21pbmktbmdyeF0gZGlzcGF0Y2hlciBpbml0J1xuICAgIH0pO1xuICAgIGNvbnN0IHN0YXRlID0gbmV3IE1pbmlTdGF0ZTxUaW1lcGlja2VyU3RhdGU+KFxuICAgICAgaW5pdGlhbFN0YXRlLFxuICAgICAgX2Rpc3BhdGNoZXIsXG4gICAgICB0aW1lcGlja2VyUmVkdWNlclxuICAgICk7XG4gICAgc3VwZXIoX2Rpc3BhdGNoZXIsIHRpbWVwaWNrZXJSZWR1Y2VyLCBzdGF0ZSk7XG4gIH1cbn1cbiIsIi8qIHRzbGludDpkaXNhYmxlOm5vLWZvcndhcmQtcmVmIG1heC1maWxlLWxpbmUtY291bnQgKi9cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaW1lcGlja2VyQWN0aW9ucyB9IGZyb20gJy4vcmVkdWNlci90aW1lcGlja2VyLmFjdGlvbnMnO1xuaW1wb3J0IHsgVGltZXBpY2tlclN0b3JlIH0gZnJvbSAnLi9yZWR1Y2VyL3RpbWVwaWNrZXIuc3RvcmUnO1xuaW1wb3J0IHsgZ2V0Q29udHJvbHNWYWx1ZSB9IGZyb20gJy4vdGltZXBpY2tlci1jb250cm9scy51dGlsJztcbmltcG9ydCB7IFRpbWVwaWNrZXJDb25maWcgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29uZmlnJztcblxuaW1wb3J0IHtcbiAgVGltZUNoYW5nZVNvdXJjZSxcbiAgVGltZXBpY2tlckNvbXBvbmVudFN0YXRlLFxuICBUaW1lcGlja2VyQ29udHJvbHNcbn0gZnJvbSAnLi90aW1lcGlja2VyLm1vZGVscyc7XG5cbmltcG9ydCB7XG4gIGlzVmFsaWREYXRlLFxuICBwYWROdW1iZXIsXG4gIHBhcnNlVGltZSxcbiAgaXNJbnB1dFZhbGlkLFxuICBpc0hvdXJJbnB1dFZhbGlkLFxuICBpc01pbnV0ZUlucHV0VmFsaWQsXG4gIGlzU2Vjb25kSW5wdXRWYWxpZCxcbiAgaXNJbnB1dExpbWl0VmFsaWRcbn0gZnJvbSAnLi90aW1lcGlja2VyLnV0aWxzJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yTW9kZWwgfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBUSU1FUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IENvbnRyb2xWYWx1ZUFjY2Vzc29yTW9kZWwgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVzZS1iZWZvcmUtZGVjbGFyZSAqL1xuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaW1lcGlja2VyQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RpbWVwaWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLCBUaW1lcGlja2VyU3RvcmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW2BcbiAgICAuYnMtY2hldnJvbiB7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogOXB4O1xuICAgICAgaGVpZ2h0OiA5cHg7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBib3JkZXItd2lkdGg6IDNweCAwcHggMCAzcHg7XG4gICAgfVxuXG4gICAgLmJzLWNoZXZyb24tdXAge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICB0b3A6IDJweDtcbiAgICB9XG5cbiAgICAuYnMtY2hldnJvbi1kb3duIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzNWRlZyk7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTM1ZGVnKTtcbiAgICAgIHRvcDogLTJweDtcbiAgICB9XG5cbiAgICAuYnMtdGltZXBpY2tlci1maWVsZCB7XG4gICAgICB3aWR0aDogNTBweDtcbiAgICB9XG4gIGBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBUaW1lcGlja2VyQ29tcG9uZW50U3RhdGUsXG4gICAgVGltZXBpY2tlckNvbnRyb2xzLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3kge1xuICAvKiogaG91cnMgY2hhbmdlIHN0ZXAgKi9cbiAgQElucHV0KCkgaG91clN0ZXA6IG51bWJlcjtcbiAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gIEBJbnB1dCgpIG1pbnV0ZVN0ZXA6IG51bWJlcjtcbiAgLyoqIHNlY29uZHMgY2hhbmdlIHN0ZXAgKi9cbiAgQElucHV0KCkgc2Vjb25kc1N0ZXA6IG51bWJlcjtcbiAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgcmVhZG9ubHkgKi9cbiAgQElucHV0KCkgcmVhZG9ubHlJbnB1dDogYm9vbGVhbjtcbiAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHNjcm9sbCBpbnNpZGUgaG91cnMgYW5kIG1pbnV0ZXMgaW5wdXRzIHdpbGwgY2hhbmdlIHRpbWUgKi9cbiAgQElucHV0KCkgbW91c2V3aGVlbDogYm9vbGVhbjtcbiAgLyoqIGlmIHRydWUgdGhlIHZhbHVlcyBvZiBob3VycyBhbmQgbWludXRlcyBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgdXAvZG93biBhcnJvdyBrZXlzIG9uIHRoZSBrZXlib2FyZCAqL1xuICBASW5wdXQoKSBhcnJvd2tleXM6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgQElucHV0KCkgc2hvd1NwaW5uZXJzOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSBtZXJpZGlhbiBidXR0b24gd2lsbCBiZSBzaG93biAqL1xuICBASW5wdXQoKSBzaG93TWVyaWRpYW46IGJvb2xlYW47XG4gIC8qKiBzaG93IG1pbnV0ZXMgaW4gdGltZXBpY2tlciAqL1xuICBASW5wdXQoKSBzaG93TWludXRlczogYm9vbGVhbjtcbiAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lcGlja2VyICovXG4gIEBJbnB1dCgpIHNob3dTZWNvbmRzOiBib29sZWFuO1xuICAvKiogbWVyaWRpYW4gbGFiZWxzIGJhc2VkIG9uIGxvY2FsZSAqL1xuICBASW5wdXQoKSBtZXJpZGlhbnM6IHN0cmluZ1tdO1xuICAvKiogbWluaW11bSB0aW1lIHVzZXIgY2FuIHNlbGVjdCAqL1xuICBASW5wdXQoKSBtaW46IERhdGU7XG4gIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gIEBJbnB1dCgpIG1heDogRGF0ZTtcblxuICAvKiogZW1pdHMgdHJ1ZSBpZiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgKi9cbiAgQE91dHB1dCgpIGlzVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLy8gdWkgdmFyaWFibGVzXG4gIGhvdXJzOiBzdHJpbmc7XG4gIG1pbnV0ZXM6IHN0cmluZztcbiAgc2Vjb25kczogc3RyaW5nO1xuICBtZXJpZGlhbjogc3RyaW5nO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCAtIHBsZWFzZSB1c2UgYGlzRWRpdGFibGVgIGluc3RlYWQgKi9cbiAgZ2V0IGlzU3Bpbm5lcnNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dTcGlubmVycyAmJiAhdGhpcy5yZWFkb25seUlucHV0O1xuICB9XG5cbiAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodGhpcy5yZWFkb25seUlucHV0IHx8IHRoaXMuZGlzYWJsZWQpO1xuICB9XG5cbiAgLy8gbWluXFxtYXggdmFsaWRhdGlvbiBmb3IgaW5wdXQgZmllbGRzXG4gIGludmFsaWRIb3VycyA9IGZhbHNlO1xuICBpbnZhbGlkTWludXRlcyA9IGZhbHNlO1xuICBpbnZhbGlkU2Vjb25kcyA9IGZhbHNlO1xuXG4gIC8vIHRpbWUgcGlja2VyIGNvbnRyb2xzIHN0YXRlXG4gIGNhbkluY3JlbWVudEhvdXJzOiBib29sZWFuO1xuICBjYW5JbmNyZW1lbnRNaW51dGVzOiBib29sZWFuO1xuICBjYW5JbmNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gIGNhbkRlY3JlbWVudEhvdXJzOiBib29sZWFuO1xuICBjYW5EZWNyZW1lbnRNaW51dGVzOiBib29sZWFuO1xuICBjYW5EZWNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gIGNhblRvZ2dsZU1lcmlkaWFuOiBib29sZWFuO1xuXG4gIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IgbWV0aG9kc1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uVG91Y2hlZCA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuICB0aW1lcGlja2VyU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgX2NvbmZpZzogVGltZXBpY2tlckNvbmZpZyxcbiAgICBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3N0b3JlOiBUaW1lcGlja2VyU3RvcmUsXG4gICAgcHJpdmF0ZSBfdGltZXBpY2tlckFjdGlvbnM6IFRpbWVwaWNrZXJBY3Rpb25zXG4gICkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgX2NvbmZpZyk7XG5cbiAgICB0aGlzLnRpbWVwaWNrZXJTdWIgPSBfc3RvcmVcbiAgICAgIC5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudmFsdWUpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgICAvLyB1cGRhdGUgVUkgdmFsdWVzIGlmIGRhdGUgY2hhbmdlZFxuICAgICAgICB0aGlzLl9yZW5kZXJUaW1lKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMudXBkYXRlQ29udHJvbHMoZ2V0Q29udHJvbHNWYWx1ZSh0aGlzKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgX3N0b3JlXG4gICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmNvbnRyb2xzKVxuICAgICAgLnN1YnNjcmliZSgoY29udHJvbHNTdGF0ZTogVGltZXBpY2tlckNvbnRyb2xzKSA9PiB7XG4gICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGlzSW5wdXRWYWxpZCh0aGlzLmhvdXJzLCB0aGlzLm1pbnV0ZXMsIHRoaXMuc2Vjb25kcywgdGhpcy5pc1BNKCkpKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjb250cm9sc1N0YXRlKTtcbiAgICAgICAgX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICByZXNldFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5pbnZhbGlkSG91cnMgPSBmYWxzZTtcbiAgICB0aGlzLmludmFsaWRNaW51dGVzID0gZmFsc2U7XG4gICAgdGhpcy5pbnZhbGlkU2Vjb25kcyA9IGZhbHNlO1xuICB9XG5cbiAgaXNQTSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93TWVyaWRpYW4gJiYgdGhpcy5tZXJpZGlhbiA9PT0gdGhpcy5tZXJpZGlhbnNbMV07XG4gIH1cblxuICBwcmV2RGVmKCRldmVudDogRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHdoZWVsU2lnbigkZXZlbnQ6IFdoZWVsRXZlbnRJbml0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5zaWduKCRldmVudC5kZWx0YVkpICogLTE7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXG4gICAgICB0aGlzLl90aW1lcGlja2VyQWN0aW9ucy51cGRhdGVDb250cm9scyhnZXRDb250cm9sc1ZhbHVlKHRoaXMpKVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VIb3VycyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaCh0aGlzLl90aW1lcGlja2VyQWN0aW9ucy5jaGFuZ2VIb3Vycyh7IHN0ZXAsIHNvdXJjZSB9KSk7XG4gIH1cblxuICBjaGFuZ2VNaW51dGVzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMuY2hhbmdlTWludXRlcyh7IHN0ZXAsIHNvdXJjZSB9KVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VTZWNvbmRzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMuY2hhbmdlU2Vjb25kcyh7IHN0ZXAsIHNvdXJjZSB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVIb3Vycyhob3Vyczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLmhvdXJzID0gaG91cnM7XG5cbiAgICBjb25zdCBpc1ZhbGlkID0gaXNIb3VySW5wdXRWYWxpZCh0aGlzLmhvdXJzLCB0aGlzLmlzUE0oKSkgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhpcy5pbnZhbGlkSG91cnMgPSB0cnVlO1xuICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgfVxuXG4gIHVwZGF0ZU1pbnV0ZXMobWludXRlczogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLm1pbnV0ZXMgPSBtaW51dGVzO1xuXG4gICAgY29uc3QgaXNWYWxpZCA9IGlzTWludXRlSW5wdXRWYWxpZCh0aGlzLm1pbnV0ZXMpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZE1pbnV0ZXMgPSB0cnVlO1xuICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgfVxuXG4gIHVwZGF0ZVNlY29uZHMoc2Vjb25kczogc3RyaW5nKSB7XG4gICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICB0aGlzLnNlY29uZHMgPSBzZWNvbmRzO1xuXG4gICAgY29uc3QgaXNWYWxpZCA9IGlzU2Vjb25kSW5wdXRWYWxpZCh0aGlzLnNlY29uZHMpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZFNlY29uZHMgPSB0cnVlO1xuICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgfVxuXG4gIGlzVmFsaWRMaW1pdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNJbnB1dExpbWl0VmFsaWQoe1xuICAgICAgaG91cjogdGhpcy5ob3VycyxcbiAgICAgIG1pbnV0ZTogdGhpcy5taW51dGVzLFxuICAgICAgc2Vjb25kczogdGhpcy5zZWNvbmRzLFxuICAgICAgaXNQTTogdGhpcy5pc1BNKClcbiAgICB9LCB0aGlzLm1heCwgdGhpcy5taW4pO1xuICB9XG5cbiAgX3VwZGF0ZVRpbWUoKSB7XG4gICAgY29uc3QgX3NlY29uZHMgPSB0aGlzLnNob3dTZWNvbmRzID8gdGhpcy5zZWNvbmRzIDogdm9pZCAwO1xuICAgIGNvbnN0IF9taW51dGVzID0gdGhpcy5zaG93TWludXRlcyA/IHRoaXMubWludXRlcyA6IHZvaWQgMDtcbiAgICBpZiAoIWlzSW5wdXRWYWxpZCh0aGlzLmhvdXJzLCBfbWludXRlcywgX3NlY29uZHMsIHRoaXMuaXNQTSgpKSkge1xuICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKFxuICAgICAgdGhpcy5fdGltZXBpY2tlckFjdGlvbnMuc2V0VGltZSh7XG4gICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgIG1pbnV0ZTogdGhpcy5taW51dGVzLFxuICAgICAgICBzZWNvbmRzOiB0aGlzLnNlY29uZHMsXG4gICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVNZXJpZGlhbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvd01lcmlkaWFuIHx8ICF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBfaG91cnNQZXJEYXlIYWxmID0gMTI7XG4gICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2goXG4gICAgICB0aGlzLl90aW1lcGlja2VyQWN0aW9ucy5jaGFuZ2VIb3Vycyh7XG4gICAgICAgIHN0ZXA6IF9ob3Vyc1BlckRheUhhbGYsXG4gICAgICAgIHNvdXJjZTogJydcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICovXG4gIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgRGF0ZSk6IHZvaWQge1xuICAgIGlmIChpc1ZhbGlkRGF0ZShvYmopKSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaCh0aGlzLl90aW1lcGlja2VyQWN0aW9ucy53cml0ZVZhbHVlKHBhcnNlVGltZShvYmopKSk7XG4gICAgfSBlbHNlIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2godGhpcy5fdGltZXBpY2tlckFjdGlvbnMud3JpdGVWYWx1ZShudWxsKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXG4gICAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC5cbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCBzdGF0dXMgY2hhbmdlcyB0byBvciBmcm9tIFwiZGlzYWJsZWRcIi5cbiAgICogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSwgaXQgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYXBwcm9wcmlhdGUgRE9NIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBpc0Rpc2FibGVkXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudGltZXBpY2tlclN1Yi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZERhdGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmhvdXJzID0gJyc7XG4gICAgICB0aGlzLm1pbnV0ZXMgPSAnJztcbiAgICAgIHRoaXMuc2Vjb25kcyA9ICcnO1xuICAgICAgdGhpcy5tZXJpZGlhbiA9IHRoaXMubWVyaWRpYW5zWzBdO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgX3ZhbHVlID0gcGFyc2VUaW1lKHZhbHVlKTtcbiAgICBjb25zdCBfaG91cnNQZXJEYXlIYWxmID0gMTI7XG4gICAgbGV0IF9ob3VycyA9IF92YWx1ZS5nZXRIb3VycygpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01lcmlkaWFuKSB7XG4gICAgICB0aGlzLm1lcmlkaWFuID0gdGhpcy5tZXJpZGlhbnNbX2hvdXJzID49IF9ob3Vyc1BlckRheUhhbGYgPyAxIDogMF07XG4gICAgICBfaG91cnMgPSBfaG91cnMgJSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgLy8gc2hvdWxkIGJlIDEyIFBNLCBub3QgMDAgUE1cbiAgICAgIGlmIChfaG91cnMgPT09IDApIHtcbiAgICAgICAgX2hvdXJzID0gX2hvdXJzUGVyRGF5SGFsZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmhvdXJzID0gcGFkTnVtYmVyKF9ob3Vycyk7XG4gICAgdGhpcy5taW51dGVzID0gcGFkTnVtYmVyKF92YWx1ZS5nZXRNaW51dGVzKCkpO1xuICAgIHRoaXMuc2Vjb25kcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFRpbWVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRpbWVwaWNrZXJBY3Rpb25zIH0gZnJvbSAnLi9yZWR1Y2VyL3RpbWVwaWNrZXIuYWN0aW9ucyc7XG5pbXBvcnQgeyBUaW1lcGlja2VyQ29uZmlnIH0gZnJvbSAnLi90aW1lcGlja2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBUaW1lcGlja2VyU3RvcmUgfSBmcm9tICcuL3JlZHVjZXIvdGltZXBpY2tlci5zdG9yZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtUaW1lcGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1RpbWVwaWNrZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRpbWVwaWNrZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtUaW1lcGlja2VyQ29uZmlnLCBUaW1lcGlja2VyQWN0aW9ucywgVGltZXBpY2tlclN0b3JlXVxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7O0lBaUJFLFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixPQUFPO1lBQ0wsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDO0tB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