monkey-style-guide 2.0.108 → 2.0.112

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 (244) hide show
  1. package/assets/scss/partials/_breakpoints.scss +35 -35
  2. package/assets/scss/partials/components/_badge.scss +55 -55
  3. package/assets/scss/partials/components/_expansion.scss +91 -91
  4. package/assets/scss/partials/components/_modal.scss +282 -282
  5. package/assets/scss/partials/components/_tab.scss +82 -82
  6. package/assets/scss/partials/components/_toggle.scss +103 -103
  7. package/{esm2015/lib/components/badge/badge.component.js → esm2020/lib/components/badge/badge.component.mjs} +4 -4
  8. package/{esm2015/lib/components/badge/badge.module.js → esm2020/lib/components/badge/badge.module.mjs} +5 -5
  9. package/{esm2015/lib/components/badge/index.js → esm2020/lib/components/badge/index.mjs} +1 -1
  10. package/{esm2015/lib/components/button/button-avatar.component.js → esm2020/lib/components/button/button-avatar.component.mjs} +5 -5
  11. package/{esm2015/lib/components/button/button-dropdown.component.js → esm2020/lib/components/button/button-dropdown.component.mjs} +4 -4
  12. package/{esm2015/lib/components/button/button.component.js → esm2020/lib/components/button/button.component.mjs} +4 -4
  13. package/{esm2015/lib/components/button/button.module.js → esm2020/lib/components/button/button.module.mjs} +5 -5
  14. package/{esm2015/lib/components/button/index.js → esm2020/lib/components/button/index.mjs} +0 -0
  15. package/{esm2015/lib/components/checkbox/checkbox.component.js → esm2020/lib/components/checkbox/checkbox.component.mjs} +6 -6
  16. package/{esm2015/lib/components/checkbox/checkbox.module.js → esm2020/lib/components/checkbox/checkbox.module.mjs} +5 -5
  17. package/{esm2015/lib/components/checkbox/index.js → esm2020/lib/components/checkbox/index.mjs} +0 -0
  18. package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +569 -0
  19. package/{esm2015/lib/components/date-range-picker/date-range-picker.module.js → esm2020/lib/components/date-range-picker/date-range-picker.module.mjs} +5 -5
  20. package/{esm2015/lib/components/date-range-picker/index.js → esm2020/lib/components/date-range-picker/index.mjs} +0 -0
  21. package/{esm2015/lib/components/expansion/expansion.component.js → esm2020/lib/components/expansion/expansion.component.mjs} +71 -71
  22. package/{esm2015/lib/components/expansion/expansion.module.js → esm2020/lib/components/expansion/expansion.module.mjs} +5 -5
  23. package/{esm2015/lib/components/expansion/index.js → esm2020/lib/components/expansion/index.mjs} +1 -1
  24. package/{esm2015/lib/components/file-upload/file-upload.component.js → esm2020/lib/components/file-upload/file-upload.component.mjs} +6 -6
  25. package/{esm2015/lib/components/file-upload/file-upload.module.js → esm2020/lib/components/file-upload/file-upload.module.mjs} +5 -5
  26. package/{esm2015/lib/components/file-upload/index.js → esm2020/lib/components/file-upload/index.mjs} +0 -0
  27. package/esm2020/lib/components/icon/icon-arrow-down.component.mjs +15 -0
  28. package/esm2020/lib/components/icon/icon-arrow-left.component.mjs +15 -0
  29. package/esm2020/lib/components/icon/icon-arrow-right.component.mjs +15 -0
  30. package/esm2020/lib/components/icon/icon-arrow-up.component.mjs +15 -0
  31. package/esm2020/lib/components/icon/icon-bank.component.mjs +15 -0
  32. package/esm2020/lib/components/icon/icon-bell.component.mjs +15 -0
  33. package/esm2020/lib/components/icon/icon-book.component.mjs +15 -0
  34. package/esm2020/lib/components/icon/icon-box.component.mjs +15 -0
  35. package/esm2020/lib/components/icon/icon-calendar.component.mjs +15 -0
  36. package/esm2020/lib/components/icon/icon-camera.component.mjs +15 -0
  37. package/esm2020/lib/components/icon/icon-chat.component.mjs +15 -0
  38. package/esm2020/lib/components/icon/icon-check-circle-out.component.mjs +15 -0
  39. package/esm2020/lib/components/icon/icon-check-circle.component.mjs +15 -0
  40. package/esm2020/lib/components/icon/icon-check-grey.component.mjs +15 -0
  41. package/esm2020/lib/components/icon/icon-check-white.component.mjs +15 -0
  42. package/esm2020/lib/components/icon/icon-check.component.mjs +15 -0
  43. package/esm2020/lib/components/icon/icon-clipboard.component.mjs +15 -0
  44. package/esm2020/lib/components/icon/icon-clock.component.mjs +15 -0
  45. package/esm2020/lib/components/icon/icon-close.component.mjs +15 -0
  46. package/esm2020/lib/components/icon/icon-cnpj.component.mjs +15 -0
  47. package/esm2020/lib/components/icon/icon-codepen.component.mjs +15 -0
  48. package/esm2020/lib/components/icon/icon-company-name.component.mjs +15 -0
  49. package/esm2020/lib/components/icon/icon-contract.component.mjs +15 -0
  50. package/esm2020/lib/components/icon/icon-delete.component.mjs +15 -0
  51. package/esm2020/lib/components/icon/icon-document.component.mjs +15 -0
  52. package/esm2020/lib/components/icon/icon-dollar-sign.component.mjs +15 -0
  53. package/esm2020/lib/components/icon/icon-domain.component.mjs +15 -0
  54. package/esm2020/lib/components/icon/icon-download.component.mjs +15 -0
  55. package/esm2020/lib/components/icon/icon-edit.component.mjs +15 -0
  56. package/esm2020/lib/components/icon/icon-email.component.mjs +15 -0
  57. package/esm2020/lib/components/icon/icon-empty-doc.component.mjs +15 -0
  58. package/esm2020/lib/components/icon/icon-error.component.mjs +15 -0
  59. package/esm2020/lib/components/icon/icon-eye-closed.component.mjs +15 -0
  60. package/esm2020/lib/components/icon/icon-eye-open.component.mjs +15 -0
  61. package/esm2020/lib/components/icon/icon-filter.component.mjs +15 -0
  62. package/esm2020/lib/components/icon/icon-grid.component.mjs +15 -0
  63. package/esm2020/lib/components/icon/icon-help.component.mjs +15 -0
  64. package/esm2020/lib/components/icon/icon-hexagon.component.mjs +15 -0
  65. package/esm2020/lib/components/icon/icon-home.component.mjs +15 -0
  66. package/esm2020/lib/components/icon/icon-image.component.mjs +15 -0
  67. package/esm2020/lib/components/icon/icon-list.component.mjs +15 -0
  68. package/esm2020/lib/components/icon/icon-location-pin.component.mjs +15 -0
  69. package/esm2020/lib/components/icon/icon-login.component.mjs +15 -0
  70. package/esm2020/lib/components/icon/icon-logout.component.mjs +15 -0
  71. package/esm2020/lib/components/icon/icon-menu.component.mjs +15 -0
  72. package/esm2020/lib/components/icon/icon-money-sign.component.mjs +15 -0
  73. package/esm2020/lib/components/icon/icon-more.component.mjs +15 -0
  74. package/esm2020/lib/components/icon/icon-offered.component.mjs +15 -0
  75. package/esm2020/lib/components/icon/icon-password.component.mjs +15 -0
  76. package/esm2020/lib/components/icon/icon-people.component.mjs +15 -0
  77. package/esm2020/lib/components/icon/icon-percent.component.mjs +15 -0
  78. package/esm2020/lib/components/icon/icon-person-document.component.mjs +15 -0
  79. package/esm2020/lib/components/icon/icon-person-sad.component.mjs +15 -0
  80. package/esm2020/lib/components/icon/icon-phone.component.mjs +15 -0
  81. package/esm2020/lib/components/icon/icon-pork.component.mjs +15 -0
  82. package/esm2020/lib/components/icon/icon-refresh.component.mjs +15 -0
  83. package/esm2020/lib/components/icon/icon-repeat.component.mjs +15 -0
  84. package/esm2020/lib/components/icon/icon-search.component.mjs +15 -0
  85. package/esm2020/lib/components/icon/icon-second-warning.component.mjs +15 -0
  86. package/esm2020/lib/components/icon/icon-settings.component.mjs +15 -0
  87. package/esm2020/lib/components/icon/icon-trash.component.mjs +15 -0
  88. package/esm2020/lib/components/icon/icon-upload.component.mjs +15 -0
  89. package/esm2020/lib/components/icon/icon-user.component.mjs +15 -0
  90. package/esm2020/lib/components/icon/icon-wallet.component.mjs +15 -0
  91. package/esm2020/lib/components/icon/icon-warning.component.mjs +15 -0
  92. package/{esm2015/lib/components/icon/icon.component.js → esm2020/lib/components/icon/icon.component.mjs} +6 -6
  93. package/{esm2015/lib/components/icon/icon.module.js → esm2020/lib/components/icon/icon.module.mjs} +5 -5
  94. package/{esm2015/lib/components/icon/index.js → esm2020/lib/components/icon/index.mjs} +0 -0
  95. package/{esm2015/lib/components/image-crop/image-crop.component.js → esm2020/lib/components/image-crop/image-crop.component.mjs} +12 -5
  96. package/{esm2015/lib/components/image-crop/image-crop.module.js → esm2020/lib/components/image-crop/image-crop.module.mjs} +5 -5
  97. package/{esm2015/lib/components/image-crop/index.js → esm2020/lib/components/image-crop/index.mjs} +0 -0
  98. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  99. package/{esm2015/lib/components/input/index.js → esm2020/lib/components/input/index.mjs} +0 -0
  100. package/esm2020/lib/components/input/input-filter.component.mjs +261 -0
  101. package/esm2020/lib/components/input/input.component.mjs +380 -0
  102. package/{esm2015/lib/components/input/input.module.js → esm2020/lib/components/input/input.module.mjs} +5 -5
  103. package/{esm2015/lib/components/input-phone/index.js → esm2020/lib/components/input-phone/index.mjs} +0 -0
  104. package/esm2020/lib/components/input-phone/input-phone.component.mjs +304 -0
  105. package/{esm2015/lib/components/input-phone/input-phone.module.js → esm2020/lib/components/input-phone/input-phone.module.mjs} +5 -5
  106. package/{esm2015/lib/components/modal/index.js → esm2020/lib/components/modal/index.mjs} +0 -0
  107. package/esm2020/lib/components/modal/modal.component.mjs +236 -0
  108. package/{esm2015/lib/components/modal/modal.module.js → esm2020/lib/components/modal/modal.module.mjs} +5 -5
  109. package/{esm2015/lib/components/option/index.js → esm2020/lib/components/option/index.mjs} +0 -0
  110. package/{esm2015/lib/components/option/option.component.js → esm2020/lib/components/option/option.component.mjs} +4 -4
  111. package/{esm2015/lib/components/option/option.module.js → esm2020/lib/components/option/option.module.mjs} +5 -5
  112. package/{esm2015/lib/components/radiobutton/index.js → esm2020/lib/components/radiobutton/index.mjs} +0 -0
  113. package/{esm2015/lib/components/radiobutton/radiobutton.component.js → esm2020/lib/components/radiobutton/radiobutton.component.mjs} +6 -6
  114. package/{esm2015/lib/components/radiobutton/radiobutton.module.js → esm2020/lib/components/radiobutton/radiobutton.module.mjs} +5 -5
  115. package/{esm2015/lib/components/select/index.js → esm2020/lib/components/select/index.mjs} +0 -0
  116. package/{esm2015/lib/components/select/select-filter.component.js → esm2020/lib/components/select/select-filter.component.mjs} +6 -6
  117. package/esm2020/lib/components/select/select-multiple.component.mjs +304 -0
  118. package/esm2020/lib/components/select/select-search.component.mjs +306 -0
  119. package/{esm2015/lib/components/select/select.component.js → esm2020/lib/components/select/select.component.mjs} +6 -6
  120. package/{esm2015/lib/components/select/select.module.js → esm2020/lib/components/select/select.module.mjs} +5 -5
  121. package/{esm2015/lib/components/stepper/index.js → esm2020/lib/components/stepper/index.mjs} +0 -0
  122. package/{esm2015/lib/components/stepper/stepper.component.js → esm2020/lib/components/stepper/stepper.component.mjs} +4 -4
  123. package/{esm2015/lib/components/stepper/stepper.module.js → esm2020/lib/components/stepper/stepper.module.mjs} +5 -5
  124. package/{esm2015/lib/components/tab/index.js → esm2020/lib/components/tab/index.mjs} +1 -1
  125. package/{esm2015/lib/components/tab/tab.component.js → esm2020/lib/components/tab/tab.component.mjs} +12 -12
  126. package/{esm2015/lib/components/tab/tab.module.js → esm2020/lib/components/tab/tab.module.mjs} +5 -5
  127. package/{esm2015/lib/components/table/index.js → esm2020/lib/components/table/index.mjs} +0 -0
  128. package/{esm2015/lib/components/table/table-column.component.js → esm2020/lib/components/table/table-column.component.mjs} +4 -4
  129. package/esm2020/lib/components/table/table.component.mjs +203 -0
  130. package/{esm2015/lib/components/table/table.module.js → esm2020/lib/components/table/table.module.mjs} +5 -5
  131. package/{esm2015/lib/components/toggle/index.js → esm2020/lib/components/toggle/index.mjs} +1 -1
  132. package/esm2020/lib/components/toggle/toggle.component.mjs +56 -0
  133. package/{esm2015/lib/components/toggle/toggle.module.js → esm2020/lib/components/toggle/toggle.module.mjs} +5 -5
  134. package/{esm2015/lib/components/wizard/index.js → esm2020/lib/components/wizard/index.mjs} +0 -0
  135. package/{esm2015/lib/components/wizard/wizard.component.js → esm2020/lib/components/wizard/wizard.component.mjs} +4 -4
  136. package/{esm2015/lib/components/wizard/wizard.module.js → esm2020/lib/components/wizard/wizard.module.mjs} +5 -5
  137. package/{esm2015/lib/core/index.js → esm2020/lib/core/index.mjs} +0 -0
  138. package/{esm2015/lib/core/interfaces/index.js → esm2020/lib/core/interfaces/index.mjs} +1 -1
  139. package/esm2020/lib/core/interfaces/monkey-modal-settings.mjs +2 -0
  140. package/{esm2015/lib/core/interfaces/monkey-style-settings.js → esm2020/lib/core/interfaces/monkey-style-settings.mjs} +0 -0
  141. package/{esm2015/lib/core/services/index.js → esm2020/lib/core/services/index.mjs} +0 -0
  142. package/{esm2015/lib/core/services/modal/index.js → esm2020/lib/core/services/modal/index.mjs} +1 -1
  143. package/{esm2015/lib/core/services/modal/monkey-style-guide-modal-fixed.service.js → esm2020/lib/core/services/modal/monkey-style-guide-modal-fixed.service.mjs} +4 -4
  144. package/{esm2015/lib/core/services/modal/monkey-style-guide-modal.service.js → esm2020/lib/core/services/modal/monkey-style-guide-modal.service.mjs} +4 -4
  145. package/{esm2015/lib/core/services/monkey-style-guide.service.js → esm2020/lib/core/services/monkey-style-guide.service.mjs} +4 -4
  146. package/{esm2015/lib/core/services/settings/index.js → esm2020/lib/core/services/settings/index.mjs} +0 -0
  147. package/{esm2015/lib/core/services/settings/monkey-style-guide-settings.service.js → esm2020/lib/core/services/settings/monkey-style-guide-settings.service.mjs} +4 -4
  148. package/esm2020/lib/core/services/settings/monkey-style-guide-theme-settings.service.mjs +80 -0
  149. package/{esm2015/lib/core/services/snackbar/index.js → esm2020/lib/core/services/snackbar/index.mjs} +0 -0
  150. package/{esm2015/lib/core/services/snackbar/mokey-style-guide-snackbar.service.js → esm2020/lib/core/services/snackbar/mokey-style-guide-snackbar.service.mjs} +5 -5
  151. package/{esm2015/lib/core/utils/index.js → esm2020/lib/core/utils/index.mjs} +0 -0
  152. package/esm2020/lib/core/utils/utils.mjs +235 -0
  153. package/{esm2015/lib/monkey-style-guide.module.js → esm2020/lib/monkey-style-guide.module.mjs} +5 -5
  154. package/{esm2015/monkey-style-guide.js → esm2020/monkey-style-guide.mjs} +0 -0
  155. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  156. package/fesm2015/{monkey-style-guide.js → monkey-style-guide.mjs} +547 -803
  157. package/fesm2015/monkey-style-guide.mjs.map +1 -0
  158. package/fesm2020/monkey-style-guide.mjs +7921 -0
  159. package/fesm2020/monkey-style-guide.mjs.map +1 -0
  160. package/lib/components/date-range-picker/date-range-picker.component.d.ts +6 -7
  161. package/lib/core/utils/utils.d.ts +3 -3
  162. package/monkey-style-guide-2.0.112.tgz +0 -0
  163. package/package.json +22 -9
  164. package/bundles/monkey-style-guide.umd.js +0 -6236
  165. package/bundles/monkey-style-guide.umd.js.map +0 -1
  166. package/esm2015/lib/components/date-range-picker/date-range-picker.component.js +0 -569
  167. package/esm2015/lib/components/icon/icon-arrow-down.component.js +0 -19
  168. package/esm2015/lib/components/icon/icon-arrow-left.component.js +0 -19
  169. package/esm2015/lib/components/icon/icon-arrow-right.component.js +0 -19
  170. package/esm2015/lib/components/icon/icon-arrow-up.component.js +0 -19
  171. package/esm2015/lib/components/icon/icon-bank.component.js +0 -19
  172. package/esm2015/lib/components/icon/icon-bell.component.js +0 -19
  173. package/esm2015/lib/components/icon/icon-book.component.js +0 -19
  174. package/esm2015/lib/components/icon/icon-box.component.js +0 -19
  175. package/esm2015/lib/components/icon/icon-calendar.component.js +0 -19
  176. package/esm2015/lib/components/icon/icon-camera.component.js +0 -19
  177. package/esm2015/lib/components/icon/icon-chat.component.js +0 -19
  178. package/esm2015/lib/components/icon/icon-check-circle-out.component.js +0 -19
  179. package/esm2015/lib/components/icon/icon-check-circle.component.js +0 -19
  180. package/esm2015/lib/components/icon/icon-check-grey.component.js +0 -19
  181. package/esm2015/lib/components/icon/icon-check-white.component.js +0 -19
  182. package/esm2015/lib/components/icon/icon-check.component.js +0 -19
  183. package/esm2015/lib/components/icon/icon-clipboard.component.js +0 -19
  184. package/esm2015/lib/components/icon/icon-clock.component.js +0 -19
  185. package/esm2015/lib/components/icon/icon-close.component.js +0 -19
  186. package/esm2015/lib/components/icon/icon-cnpj.component.js +0 -19
  187. package/esm2015/lib/components/icon/icon-codepen.component.js +0 -19
  188. package/esm2015/lib/components/icon/icon-company-name.component.js +0 -19
  189. package/esm2015/lib/components/icon/icon-contract.component.js +0 -19
  190. package/esm2015/lib/components/icon/icon-delete.component.js +0 -19
  191. package/esm2015/lib/components/icon/icon-document.component.js +0 -19
  192. package/esm2015/lib/components/icon/icon-dollar-sign.component.js +0 -19
  193. package/esm2015/lib/components/icon/icon-domain.component.js +0 -19
  194. package/esm2015/lib/components/icon/icon-download.component.js +0 -19
  195. package/esm2015/lib/components/icon/icon-edit.component.js +0 -19
  196. package/esm2015/lib/components/icon/icon-email.component.js +0 -19
  197. package/esm2015/lib/components/icon/icon-empty-doc.component.js +0 -19
  198. package/esm2015/lib/components/icon/icon-error.component.js +0 -19
  199. package/esm2015/lib/components/icon/icon-eye-closed.component.js +0 -19
  200. package/esm2015/lib/components/icon/icon-eye-open.component.js +0 -19
  201. package/esm2015/lib/components/icon/icon-filter.component.js +0 -19
  202. package/esm2015/lib/components/icon/icon-grid.component.js +0 -19
  203. package/esm2015/lib/components/icon/icon-help.component.js +0 -19
  204. package/esm2015/lib/components/icon/icon-hexagon.component.js +0 -19
  205. package/esm2015/lib/components/icon/icon-home.component.js +0 -19
  206. package/esm2015/lib/components/icon/icon-image.component.js +0 -19
  207. package/esm2015/lib/components/icon/icon-list.component.js +0 -19
  208. package/esm2015/lib/components/icon/icon-location-pin.component.js +0 -19
  209. package/esm2015/lib/components/icon/icon-login.component.js +0 -19
  210. package/esm2015/lib/components/icon/icon-logout.component.js +0 -19
  211. package/esm2015/lib/components/icon/icon-menu.component.js +0 -19
  212. package/esm2015/lib/components/icon/icon-money-sign.component.js +0 -19
  213. package/esm2015/lib/components/icon/icon-more.component.js +0 -19
  214. package/esm2015/lib/components/icon/icon-offered.component.js +0 -19
  215. package/esm2015/lib/components/icon/icon-password.component.js +0 -19
  216. package/esm2015/lib/components/icon/icon-people.component.js +0 -19
  217. package/esm2015/lib/components/icon/icon-percent.component.js +0 -19
  218. package/esm2015/lib/components/icon/icon-person-document.component.js +0 -19
  219. package/esm2015/lib/components/icon/icon-person-sad.component.js +0 -19
  220. package/esm2015/lib/components/icon/icon-phone.component.js +0 -19
  221. package/esm2015/lib/components/icon/icon-pork.component.js +0 -19
  222. package/esm2015/lib/components/icon/icon-refresh.component.js +0 -19
  223. package/esm2015/lib/components/icon/icon-repeat.component.js +0 -19
  224. package/esm2015/lib/components/icon/icon-search.component.js +0 -19
  225. package/esm2015/lib/components/icon/icon-second-warning.component.js +0 -19
  226. package/esm2015/lib/components/icon/icon-settings.component.js +0 -19
  227. package/esm2015/lib/components/icon/icon-trash.component.js +0 -19
  228. package/esm2015/lib/components/icon/icon-upload.component.js +0 -19
  229. package/esm2015/lib/components/icon/icon-user.component.js +0 -19
  230. package/esm2015/lib/components/icon/icon-wallet.component.js +0 -19
  231. package/esm2015/lib/components/icon/icon-warning.component.js +0 -19
  232. package/esm2015/lib/components/input/input-filter.component.js +0 -262
  233. package/esm2015/lib/components/input/input.component.js +0 -384
  234. package/esm2015/lib/components/input-phone/input-phone.component.js +0 -307
  235. package/esm2015/lib/components/modal/modal.component.js +0 -241
  236. package/esm2015/lib/components/select/select-multiple.component.js +0 -308
  237. package/esm2015/lib/components/select/select-search.component.js +0 -308
  238. package/esm2015/lib/components/table/table.component.js +0 -204
  239. package/esm2015/lib/components/toggle/toggle.component.js +0 -56
  240. package/esm2015/lib/core/interfaces/monkey-modal-settings.js +0 -2
  241. package/esm2015/lib/core/services/settings/monkey-style-guide-theme-settings.service.js +0 -70
  242. package/esm2015/lib/core/utils/utils.js +0 -237
  243. package/fesm2015/monkey-style-guide.js.map +0 -1
  244. package/monkey-style-guide-2.0.108.tgz +0 -0
@@ -0,0 +1,569 @@
1
+ /**************************
2
+ * Copyright Monkey Exchange. All Rights Reserved
3
+ * This style guide was developed by Monkey Exchange Team
4
+ * MIT Licence
5
+ **************************/
6
+ import { CurrencyPipe } from '@angular/common';
7
+ import { Component, ViewEncapsulation, forwardRef, Output, EventEmitter, Input, } from '@angular/core';
8
+ import { NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
9
+ import { MonkeyUtils } from '../../core/utils';
10
+ import * as moment_ from 'moment';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/forms";
13
+ import * as i2 from "../button/button.component";
14
+ import * as i3 from "@angular/common";
15
+ const moment = moment_;
16
+ export class MonkeyDateRangePickerComponent {
17
+ constructor(fb, cdr) {
18
+ this.fb = fb;
19
+ this.cdr = cdr;
20
+ this.helperMessage = '';
21
+ this.minDate = null;
22
+ this.onChange = new EventEmitter();
23
+ this.today = moment.default().format('YYYY-MM-DD');
24
+ this.onModelChange = (value) => { };
25
+ this.onModelTouched = (value) => { };
26
+ this._dateFirst = moment.default();
27
+ this._dateSecond = moment.default().add(1, 'M');
28
+ this._id = `mecx-date-range-picker-${MonkeyUtils.getRandomString(10)}`;
29
+ this._daysArrFirst = [];
30
+ this._daysArrSecond = [];
31
+ this._disabled = false;
32
+ this.initDateRange();
33
+ }
34
+ initDateRange() {
35
+ return (this._dateForm = this.fb.group({
36
+ startDate: [null, Validators.required],
37
+ endDate: [null, Validators.required],
38
+ }));
39
+ }
40
+ createCalendar(month) {
41
+ let firstDay = moment.default(month).startOf('M');
42
+ let lastDay = moment.default(month).endOf('M');
43
+ let days = Array.apply(null, { length: month.daysInMonth() })
44
+ .map(Number.call, Number)
45
+ .map((n) => {
46
+ return moment.default(firstDay).add(n, 'd');
47
+ });
48
+ let n = 0;
49
+ while (n < firstDay.weekday()) {
50
+ days.unshift(null);
51
+ n++;
52
+ }
53
+ n = 0;
54
+ while (n < 7 - lastDay.weekday()) {
55
+ days.push(null);
56
+ n++;
57
+ }
58
+ let index = 1;
59
+ let group = [];
60
+ let grouped = [];
61
+ Object.entries(days).map(([key, value]) => {
62
+ if (index > 7) {
63
+ index = 1;
64
+ grouped.push(group);
65
+ group = [];
66
+ }
67
+ group.push(value);
68
+ index++;
69
+ });
70
+ grouped.push(group);
71
+ return grouped;
72
+ }
73
+ build() {
74
+ this._daysArrFirst = this.createCalendar(this._dateFirst);
75
+ this._daysArrSecond = this.createCalendar(this._dateSecond);
76
+ }
77
+ clearDates() {
78
+ if (this._disabled)
79
+ return;
80
+ this._dateForm.setValue({ startDate: null, endDate: null });
81
+ this.writeValue(this._dateForm.value);
82
+ }
83
+ navigateToToday() {
84
+ this._dateFirst = moment.default();
85
+ this._dateSecond = moment.default().add(1, 'M');
86
+ this.build();
87
+ }
88
+ ngOnInit() {
89
+ this.build();
90
+ }
91
+ registerOnChange(fn) {
92
+ this.onModelChange = fn;
93
+ }
94
+ registerOnTouched(fn) {
95
+ this.onModelTouched = fn;
96
+ }
97
+ setDisabledState(isDisabled) {
98
+ this._disabled = isDisabled;
99
+ }
100
+ set value(value) {
101
+ if (value &&
102
+ Object.prototype.hasOwnProperty.call(value, 'startDate') &&
103
+ Object.prototype.hasOwnProperty.call(value, 'endDate')) {
104
+ this._dateForm.setValue(value);
105
+ this.cdr.detectChanges();
106
+ this.onModelChange(this._dateForm.value);
107
+ this.onModelTouched(this._dateForm.value);
108
+ }
109
+ else {
110
+ this.clearDates();
111
+ }
112
+ }
113
+ get value() {
114
+ return this._dateForm.value;
115
+ }
116
+ writeValue(value) {
117
+ this.value = value;
118
+ this.onChange.next(value);
119
+ }
120
+ nextMonth() {
121
+ if (this._disabled)
122
+ return;
123
+ this._dateFirst.add(1, 'M');
124
+ this._dateSecond.add(1, 'M');
125
+ this._daysArrFirst = this.createCalendar(this._dateFirst);
126
+ this._daysArrSecond = this.createCalendar(this._dateSecond);
127
+ }
128
+ previousMonth() {
129
+ if (this._disabled)
130
+ return;
131
+ this._dateFirst.subtract(1, 'M');
132
+ this._dateSecond.subtract(1, 'M');
133
+ this._daysArrFirst = this.createCalendar(this._dateFirst);
134
+ this._daysArrSecond = this.createCalendar(this._dateSecond);
135
+ }
136
+ todayCheck(day) {
137
+ if (!day) {
138
+ return false;
139
+ }
140
+ return moment.default().format('L') === day.format('L');
141
+ }
142
+ isSelected(day) {
143
+ if (!day) {
144
+ return false;
145
+ }
146
+ let startDateMoment = moment.default(this._dateForm.value.startDate, 'YYYY-MM-DD');
147
+ let endDateMoment = moment.default(this._dateForm.value.endDate, 'YYYY-MM-DD');
148
+ if (this._dateForm.valid) {
149
+ return startDateMoment.isSameOrBefore(day) && endDateMoment.isSameOrAfter(day);
150
+ }
151
+ if (this._dateForm.get('startDate').valid) {
152
+ return startDateMoment.isSame(day);
153
+ }
154
+ }
155
+ isDisabled(day) {
156
+ const { minDate } = this;
157
+ if (minDate) {
158
+ const firstDay = moment.default(minDate);
159
+ return day.isBefore(firstDay.subtract(1, 'day'));
160
+ }
161
+ return false;
162
+ }
163
+ isFirstSelected(day) {
164
+ const { _dateForm } = this;
165
+ const { startDate } = _dateForm.value;
166
+ return day?.isSame(startDate);
167
+ }
168
+ isLastSelected(day) {
169
+ const { _dateForm } = this;
170
+ const { endDate } = _dateForm.value;
171
+ return day?.isSame(endDate);
172
+ }
173
+ selectedDate(day) {
174
+ if (this._disabled)
175
+ return;
176
+ const { _dateForm, minDate } = this;
177
+ let dayFormatted = day.format('YYYY-MM-DD');
178
+ if (minDate) {
179
+ const firstDay = moment.default(minDate);
180
+ if (day.isBefore(firstDay.subtract(1, 'day')))
181
+ return;
182
+ }
183
+ if (_dateForm.valid) {
184
+ this.clearDates();
185
+ }
186
+ let { startDate, endDate } = _dateForm.value;
187
+ if (startDate) {
188
+ if (moment.default(startDate).isAfter(moment.default(dayFormatted))) {
189
+ endDate = startDate;
190
+ startDate = dayFormatted;
191
+ }
192
+ else {
193
+ endDate = dayFormatted;
194
+ }
195
+ }
196
+ else
197
+ startDate = dayFormatted;
198
+ if (startDate) {
199
+ _dateForm.get('startDate').patchValue(startDate);
200
+ }
201
+ if (endDate) {
202
+ _dateForm.get('endDate').patchValue(endDate);
203
+ }
204
+ this.writeValue(_dateForm.value);
205
+ }
206
+ selectRangeOfDays(days) {
207
+ if (this._disabled)
208
+ return;
209
+ const { _dateForm, minDate, today } = this;
210
+ const { startDate } = _dateForm.value;
211
+ const firstDay = moment.default(startDate || minDate || today).format('YYYY-MM-DD');
212
+ const lastDay = moment.default(firstDay).add(days, 'day').format('YYYY-MM-DD');
213
+ _dateForm.get('startDate').patchValue(firstDay);
214
+ _dateForm.get('endDate').patchValue(lastDay);
215
+ this.writeValue(_dateForm.value);
216
+ }
217
+ }
218
+ MonkeyDateRangePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
219
+ MonkeyDateRangePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MonkeyDateRangePickerComponent, selector: "monkey-date-range-picker", inputs: { label: "label", helperMessage: "helperMessage", i18n: "i18n", infoMessage: "infoMessage", errorMessage: "errorMessage", minDate: "minDate", value: "value" }, outputs: { onChange: "onChange" }, providers: [
220
+ {
221
+ provide: NG_VALUE_ACCESSOR,
222
+ useExisting: forwardRef(() => MonkeyDateRangePickerComponent),
223
+ multi: true,
224
+ },
225
+ CurrencyPipe,
226
+ ], ngImport: i0, template: `
227
+ <mecx-date-range-picker-group [ngClass]="{ disabled: _disabled }" [id]="_id">
228
+ <mecx-date-range-picker-group-header>
229
+ <label>
230
+ {{ label }}
231
+ </label>
232
+ <helper>
233
+ {{ helperMessage }}
234
+ </helper>
235
+ </mecx-date-range-picker-group-header>
236
+ <mecx-date-range-picker-group-body>
237
+ <mecx-date-range-picker class="first-date-range">
238
+ <mecx-date-range-picker-header>
239
+ <div class="calendar-title">
240
+ <monkey-button
241
+ class="calendar-previous"
242
+ color="theme"
243
+ icon="arrow-left-16"
244
+ type="tertiary"
245
+ (click)="previousMonth()"
246
+ size="sm"
247
+ [disabled]="_disabled"
248
+ >
249
+ </monkey-button>
250
+ <div class="month-year-title">
251
+ {{ i18n?.months?.[_dateFirst.format('M')] }}
252
+ {{ _dateFirst.format('YYYY') }}
253
+ </div>
254
+ <monkey-button
255
+ class="calendar-next"
256
+ color="theme"
257
+ icon="arrow-right-16"
258
+ type="tertiary"
259
+ (click)="nextMonth()"
260
+ size="sm"
261
+ [disabled]="_disabled"
262
+ >
263
+ </monkey-button>
264
+ </div>
265
+ <div class="week">
266
+ <span class="week-day" *ngFor="let day of [1, 2, 3, 4, 5, 6, 7]">
267
+ {{ i18n?.days?.[day]}}
268
+ </span>
269
+ </div>
270
+ </mecx-date-range-picker-header>
271
+ <mecx-date-range-picker-body>
272
+ <div class="month-week" *ngFor="let week of _daysArrFirst">
273
+ <div
274
+ class="month-day"
275
+ (click)="selectedDate(day)"
276
+ [ngClass]="{
277
+ inactive: !day || isDisabled(day),
278
+ selected: isSelected(day),
279
+ today: todayCheck(day),
280
+ 'first-selected': isFirstSelected(day),
281
+ 'last-selected': isLastSelected(day)
282
+ }"
283
+ *ngFor="let day of week"
284
+ #divOne
285
+ >
286
+ {{ day?.date() }}
287
+ </div>
288
+ </div>
289
+ </mecx-date-range-picker-body>
290
+ </mecx-date-range-picker>
291
+
292
+ <mecx-date-range-picker class="second-date-range">
293
+ <mecx-date-range-picker-header>
294
+ <div class="calendar-title">
295
+ <div class="month-year-title">
296
+ {{ i18n?.months?.[_dateSecond.format('M')] }}
297
+ {{ _dateSecond.format('YYYY') }}
298
+ </div>
299
+ <monkey-button
300
+ class="calendar-previous"
301
+ color="theme"
302
+ icon="arrow-right-16"
303
+ type="tertiary"
304
+ (click)="nextMonth()"
305
+ size="sm"
306
+ [disabled]="_disabled"
307
+ >
308
+ </monkey-button>
309
+ </div>
310
+ <div class="week">
311
+ <span class="week-day" *ngFor="let day of [1, 2, 3, 4, 5, 6, 7]">
312
+ {{ i18n?.days?.[day]}}
313
+ </span>
314
+ </div>
315
+ </mecx-date-range-picker-header>
316
+ <mecx-date-range-picker-body>
317
+ <div class="month-week" *ngFor="let week of _daysArrSecond">
318
+ <div
319
+ class="month-day"
320
+ (click)="selectedDate(day)"
321
+ [ngClass]="{
322
+ inactive: !day || isDisabled(day),
323
+ selected: isSelected(day),
324
+ today: todayCheck(day),
325
+ 'first-selected': isFirstSelected(day),
326
+ 'last-selected': isLastSelected(day)
327
+ }"
328
+ *ngFor="let day of week"
329
+ >
330
+ {{ day?.date() }}
331
+ </div>
332
+ </div>
333
+ </mecx-date-range-picker-body>
334
+ </mecx-date-range-picker>
335
+ </mecx-date-range-picker-group-body>
336
+ <mecx-date-range-picker-group-info>
337
+ <info>
338
+ {{ infoMessage }}
339
+ </info>
340
+ <error>
341
+ {{ errorMessage }}
342
+ </error>
343
+ </mecx-date-range-picker-group-info>
344
+ <mecx-date-range-picker-group-action [class.error]="errorMessage?.trim()">
345
+ <div class="action-days">
346
+ <monkey-button
347
+ color="theme"
348
+ type="secondary"
349
+ (click)="selectRangeOfDays(30)"
350
+ [disabled]="_disabled"
351
+ >
352
+ {{ i18n?.actions?.['30'] }}
353
+ </monkey-button>
354
+ <monkey-button
355
+ color="theme"
356
+ type="secondary"
357
+ (click)="selectRangeOfDays(60)"
358
+ [disabled]="_disabled"
359
+ >
360
+ {{ i18n?.actions?.['60'] }}
361
+ </monkey-button>
362
+ <monkey-button
363
+ color="theme"
364
+ type="secondary"
365
+ (click)="selectRangeOfDays(90)"
366
+ [disabled]="_disabled"
367
+ >
368
+ {{ i18n?.actions?.['90'] }}
369
+ </monkey-button>
370
+ </div>
371
+ <monkey-button
372
+ color="theme"
373
+ type="primary"
374
+ (click)="navigateToToday()"
375
+ [disabled]="_disabled"
376
+ >
377
+ {{ i18n?.today }}
378
+ </monkey-button>
379
+ </mecx-date-range-picker-group-action>
380
+ </mecx-date-range-picker-group>
381
+ `, isInline: true, components: [{ type: i2.MonkeyButtonComponent, selector: "monkey-button", inputs: ["label", "icon", "iconPosition", "type", "color", "disabled", "size"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
382
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerComponent, decorators: [{
383
+ type: Component,
384
+ args: [{
385
+ selector: 'monkey-date-range-picker',
386
+ template: `
387
+ <mecx-date-range-picker-group [ngClass]="{ disabled: _disabled }" [id]="_id">
388
+ <mecx-date-range-picker-group-header>
389
+ <label>
390
+ {{ label }}
391
+ </label>
392
+ <helper>
393
+ {{ helperMessage }}
394
+ </helper>
395
+ </mecx-date-range-picker-group-header>
396
+ <mecx-date-range-picker-group-body>
397
+ <mecx-date-range-picker class="first-date-range">
398
+ <mecx-date-range-picker-header>
399
+ <div class="calendar-title">
400
+ <monkey-button
401
+ class="calendar-previous"
402
+ color="theme"
403
+ icon="arrow-left-16"
404
+ type="tertiary"
405
+ (click)="previousMonth()"
406
+ size="sm"
407
+ [disabled]="_disabled"
408
+ >
409
+ </monkey-button>
410
+ <div class="month-year-title">
411
+ {{ i18n?.months?.[_dateFirst.format('M')] }}
412
+ {{ _dateFirst.format('YYYY') }}
413
+ </div>
414
+ <monkey-button
415
+ class="calendar-next"
416
+ color="theme"
417
+ icon="arrow-right-16"
418
+ type="tertiary"
419
+ (click)="nextMonth()"
420
+ size="sm"
421
+ [disabled]="_disabled"
422
+ >
423
+ </monkey-button>
424
+ </div>
425
+ <div class="week">
426
+ <span class="week-day" *ngFor="let day of [1, 2, 3, 4, 5, 6, 7]">
427
+ {{ i18n?.days?.[day]}}
428
+ </span>
429
+ </div>
430
+ </mecx-date-range-picker-header>
431
+ <mecx-date-range-picker-body>
432
+ <div class="month-week" *ngFor="let week of _daysArrFirst">
433
+ <div
434
+ class="month-day"
435
+ (click)="selectedDate(day)"
436
+ [ngClass]="{
437
+ inactive: !day || isDisabled(day),
438
+ selected: isSelected(day),
439
+ today: todayCheck(day),
440
+ 'first-selected': isFirstSelected(day),
441
+ 'last-selected': isLastSelected(day)
442
+ }"
443
+ *ngFor="let day of week"
444
+ #divOne
445
+ >
446
+ {{ day?.date() }}
447
+ </div>
448
+ </div>
449
+ </mecx-date-range-picker-body>
450
+ </mecx-date-range-picker>
451
+
452
+ <mecx-date-range-picker class="second-date-range">
453
+ <mecx-date-range-picker-header>
454
+ <div class="calendar-title">
455
+ <div class="month-year-title">
456
+ {{ i18n?.months?.[_dateSecond.format('M')] }}
457
+ {{ _dateSecond.format('YYYY') }}
458
+ </div>
459
+ <monkey-button
460
+ class="calendar-previous"
461
+ color="theme"
462
+ icon="arrow-right-16"
463
+ type="tertiary"
464
+ (click)="nextMonth()"
465
+ size="sm"
466
+ [disabled]="_disabled"
467
+ >
468
+ </monkey-button>
469
+ </div>
470
+ <div class="week">
471
+ <span class="week-day" *ngFor="let day of [1, 2, 3, 4, 5, 6, 7]">
472
+ {{ i18n?.days?.[day]}}
473
+ </span>
474
+ </div>
475
+ </mecx-date-range-picker-header>
476
+ <mecx-date-range-picker-body>
477
+ <div class="month-week" *ngFor="let week of _daysArrSecond">
478
+ <div
479
+ class="month-day"
480
+ (click)="selectedDate(day)"
481
+ [ngClass]="{
482
+ inactive: !day || isDisabled(day),
483
+ selected: isSelected(day),
484
+ today: todayCheck(day),
485
+ 'first-selected': isFirstSelected(day),
486
+ 'last-selected': isLastSelected(day)
487
+ }"
488
+ *ngFor="let day of week"
489
+ >
490
+ {{ day?.date() }}
491
+ </div>
492
+ </div>
493
+ </mecx-date-range-picker-body>
494
+ </mecx-date-range-picker>
495
+ </mecx-date-range-picker-group-body>
496
+ <mecx-date-range-picker-group-info>
497
+ <info>
498
+ {{ infoMessage }}
499
+ </info>
500
+ <error>
501
+ {{ errorMessage }}
502
+ </error>
503
+ </mecx-date-range-picker-group-info>
504
+ <mecx-date-range-picker-group-action [class.error]="errorMessage?.trim()">
505
+ <div class="action-days">
506
+ <monkey-button
507
+ color="theme"
508
+ type="secondary"
509
+ (click)="selectRangeOfDays(30)"
510
+ [disabled]="_disabled"
511
+ >
512
+ {{ i18n?.actions?.['30'] }}
513
+ </monkey-button>
514
+ <monkey-button
515
+ color="theme"
516
+ type="secondary"
517
+ (click)="selectRangeOfDays(60)"
518
+ [disabled]="_disabled"
519
+ >
520
+ {{ i18n?.actions?.['60'] }}
521
+ </monkey-button>
522
+ <monkey-button
523
+ color="theme"
524
+ type="secondary"
525
+ (click)="selectRangeOfDays(90)"
526
+ [disabled]="_disabled"
527
+ >
528
+ {{ i18n?.actions?.['90'] }}
529
+ </monkey-button>
530
+ </div>
531
+ <monkey-button
532
+ color="theme"
533
+ type="primary"
534
+ (click)="navigateToToday()"
535
+ [disabled]="_disabled"
536
+ >
537
+ {{ i18n?.today }}
538
+ </monkey-button>
539
+ </mecx-date-range-picker-group-action>
540
+ </mecx-date-range-picker-group>
541
+ `,
542
+ encapsulation: ViewEncapsulation.None,
543
+ providers: [
544
+ {
545
+ provide: NG_VALUE_ACCESSOR,
546
+ useExisting: forwardRef(() => MonkeyDateRangePickerComponent),
547
+ multi: true,
548
+ },
549
+ CurrencyPipe,
550
+ ],
551
+ }]
552
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { label: [{
553
+ type: Input
554
+ }], helperMessage: [{
555
+ type: Input
556
+ }], i18n: [{
557
+ type: Input
558
+ }], infoMessage: [{
559
+ type: Input
560
+ }], errorMessage: [{
561
+ type: Input
562
+ }], minDate: [{
563
+ type: Input
564
+ }], onChange: [{
565
+ type: Output
566
+ }], value: [{
567
+ type: Input
568
+ }] } });
569
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixVQUFVLEVBRVYsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7Ozs7O0FBRWxDLE1BQU0sTUFBTSxHQUFRLE9BQU8sQ0FBQztBQTBLNUIsTUFBTSxPQUFPLDhCQUE4QjtJQWdDekMsWUFBb0IsRUFBZSxFQUFVLEdBQXNCO1FBQS9DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlCMUQsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFlM0IsWUFBTyxHQUFRLElBQUksQ0FBQztRQUNuQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVyQyxVQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FB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QUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLCtCQUErQixDQUFDOzRCQUM3RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxZQUFZO3FCQUNiO2lCQUNGO2tJQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFZRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBa0dILEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXHJcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxyXG4gKiBNSVQgTGljZW5jZVxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbmltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNb25rZXlVdGlscyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XHJcblxyXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ21vbmtleS1kYXRlLXJhbmdlLXBpY2tlcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IF9kaXNhYmxlZCB9XCIgW2lkXT1cIl9pZFwiPlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1oZWFkZXI+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3sgbGFiZWwgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxoZWxwZXI+XHJcbiAgICAgICAgICB7eyBoZWxwZXJNZXNzYWdlIH19XHJcbiAgICAgICAgPC9oZWxwZXI+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1oZWFkZXI+XHJcbiAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwLWJvZHk+XHJcbiAgICAgICAgPG1lY3gtZGF0ZS1yYW5nZS1waWNrZXIgY2xhc3M9XCJmaXJzdC1kYXRlLXJhbmdlXCI+XHJcbiAgICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLXByZXZpb3VzXCJcclxuICAgICAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICAgICAgaWNvbj1cImFycm93LWxlZnQtMTZcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c01vbnRoKClcIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoLXllYXItdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGkxOG4/Lm1vbnRocz8uW19kYXRlRmlyc3QuZm9ybWF0KCdNJyldIH19XHJcbiAgICAgICAgICAgICAgICB7eyBfZGF0ZUZpcnN0LmZvcm1hdCgnWVlZWScpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPG1vbmtleS1idXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItbmV4dFwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInRoZW1lXCJcclxuICAgICAgICAgICAgICAgIGljb249XCJhcnJvdy1yaWdodC0xNlwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGVydGlhcnlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRNb250aCgpXCJcclxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9tb25rZXktYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndlZWtcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndlZWstZGF5XCIgKm5nRm9yPVwibGV0IGRheSBvZiBbMSwgMiwgMywgNCwgNSwgNiwgN11cIj5cclxuICAgICAgICAgICAgICAgIHt7IGkxOG4/LmRheXM/LltkYXldfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWhlYWRlcj5cclxuICAgICAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWJvZHk+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC13ZWVrXCIgKm5nRm9yPVwibGV0IHdlZWsgb2YgX2RheXNBcnJGaXJzdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW9udGgtZGF5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RlZERhdGUoZGF5KVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGluYWN0aXZlOiAhZGF5IHx8IGlzRGlzYWJsZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgdG9kYXk6IHRvZGF5Q2hlY2soZGF5KSxcclxuICAgICAgICAgICAgICAgICAgJ2ZpcnN0LXNlbGVjdGVkJzogaXNGaXJzdFNlbGVjdGVkKGRheSksXHJcbiAgICAgICAgICAgICAgICAgICdsYXN0LXNlbGVjdGVkJzogaXNMYXN0U2VsZWN0ZWQoZGF5KVxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHdlZWtcIlxyXG4gICAgICAgICAgICAgICAgI2Rpdk9uZVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGRheT8uZGF0ZSgpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWJvZHk+XHJcbiAgICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyPlxyXG5cclxuICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlciBjbGFzcz1cInNlY29uZC1kYXRlLXJhbmdlXCI+XHJcbiAgICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1oZWFkZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb250aC15ZWFyLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5tb250aHM/LltfZGF0ZVNlY29uZC5mb3JtYXQoJ00nKV0gfX1cclxuICAgICAgICAgICAgICAgIHt7IF9kYXRlU2Vjb25kLmZvcm1hdCgnWVlZWScpIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPG1vbmtleS1idXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcHJldmlvdXNcIlxyXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ0aGVtZVwiXHJcbiAgICAgICAgICAgICAgICBpY29uPVwiYXJyb3ctcmlnaHQtMTZcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInRlcnRpYXJ5XCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0TW9udGgoKVwiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3ZWVrLWRheVwiICpuZ0Zvcj1cImxldCBkYXkgb2YgWzEsIDIsIDMsIDQsIDUsIDYsIDddXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpMThuPy5kYXlzPy5bZGF5XX19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1oZWFkZXI+XHJcbiAgICAgICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ib2R5PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9udGgtd2Vla1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIF9kYXlzQXJyU2Vjb25kXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtb250aC1kYXlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkRGF0ZShkYXkpXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgaW5hY3RpdmU6ICFkYXkgfHwgaXNEaXNhYmxlZChkYXkpLFxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZChkYXkpLFxyXG4gICAgICAgICAgICAgICAgICB0b2RheTogdG9kYXlDaGVjayhkYXkpLFxyXG4gICAgICAgICAgICAgICAgICAnZmlyc3Qtc2VsZWN0ZWQnOiBpc0ZpcnN0U2VsZWN0ZWQoZGF5KSxcclxuICAgICAgICAgICAgICAgICAgJ2xhc3Qtc2VsZWN0ZWQnOiBpc0xhc3RTZWxlY3RlZChkYXkpXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgZGF5Py5kYXRlKCkgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItYm9keT5cclxuICAgICAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1ib2R5PlxyXG4gICAgICA8bWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1pbmZvPlxyXG4gICAgICAgIDxpbmZvPlxyXG4gICAgICAgICAge3sgaW5mb01lc3NhZ2UgfX1cclxuICAgICAgICA8L2luZm8+XHJcbiAgICAgICAgPGVycm9yPlxyXG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9lcnJvcj5cclxuICAgICAgPC9tZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwLWluZm8+XHJcbiAgICAgIDxtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLWdyb3VwLWFjdGlvbiBbY2xhc3MuZXJyb3JdPVwiZXJyb3JNZXNzYWdlPy50cmltKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWRheXNcIj5cclxuICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJhbmdlT2ZEYXlzKDMwKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBpMThuPy5hY3Rpb25zPy5bJzMwJ10gfX1cclxuICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJhbmdlT2ZEYXlzKDYwKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBpMThuPy5hY3Rpb25zPy5bJzYwJ10gfX1cclxuICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICAgIDxtb25rZXktYnV0dG9uXHJcbiAgICAgICAgICAgIGNvbG9yPVwidGhlbWVcIlxyXG4gICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJhbmdlT2ZEYXlzKDkwKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBpMThuPy5hY3Rpb25zPy5bJzkwJ10gfX1cclxuICAgICAgICAgIDwvbW9ua2V5LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bW9ua2V5LWJ1dHRvblxyXG4gICAgICAgICAgY29sb3I9XCJ0aGVtZVwiXHJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1RvZGF5KClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgaTE4bj8udG9kYXkgfX1cclxuICAgICAgICA8L21vbmtleS1idXR0b24+XHJcbiAgICAgIDwvbWVjeC1kYXRlLXJhbmdlLXBpY2tlci1ncm91cC1hY3Rpb24+XHJcbiAgICA8L21lY3gtZGF0ZS1yYW5nZS1waWNrZXItZ3JvdXA+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ua2V5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAgQ3VycmVuY3lQaXBlLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb25rZXlEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlbHBlck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGkxOG46IHtcclxuICAgIG1vbnRoczoge1xyXG4gICAgICBbczogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgfTtcclxuICAgIGRheXM6IHtcclxuICAgICAgW3M6IHN0cmluZ106IHN0cmluZztcclxuICAgIH07XHJcbiAgICBhY3Rpb25zOiB7XHJcbiAgICAgIFtzOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICB9O1xyXG4gICAgdG9kYXk6IHN0cmluZztcclxuICB9O1xyXG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWluRGF0ZTogYW55ID0gbnVsbDtcclxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJpdmF0ZSB0b2RheSA9IG1vbWVudC5kZWZhdWx0KCkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XHJcbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XHJcblxyXG4gIHB1YmxpYyBfZGF0ZUZpcnN0ID0gbW9tZW50LmRlZmF1bHQoKTtcclxuICBwdWJsaWMgX2RhdGVTZWNvbmQgPSBtb21lbnQuZGVmYXVsdCgpLmFkZCgxLCAnTScpO1xyXG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LWRhdGUtcmFuZ2UtcGlja2VyLSR7TW9ua2V5VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDEwKX1gO1xyXG4gIHB1YmxpYyBfZGF5c0FyckZpcnN0ID0gW107XHJcbiAgcHVibGljIF9kYXlzQXJyU2Vjb25kID0gW107XHJcbiAgcHVibGljIF9kYXRlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy5pbml0RGF0ZVJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRlUmFuZ2UoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuX2RhdGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHN0YXJ0RGF0ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBlbmREYXRlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNhbGVuZGFyKG1vbnRoOiBhbnkpIHtcclxuICAgIGxldCBmaXJzdERheSA9IG1vbWVudC5kZWZhdWx0KG1vbnRoKS5zdGFydE9mKCdNJyk7XHJcbiAgICBsZXQgbGFzdERheSA9IG1vbWVudC5kZWZhdWx0KG1vbnRoKS5lbmRPZignTScpO1xyXG4gICAgbGV0IGRheXMgPSBBcnJheS5hcHBseShudWxsLCB7IGxlbmd0aDogbW9udGguZGF5c0luTW9udGgoKSB9KVxyXG4gICAgICAubWFwKE51bWJlci5jYWxsLCBOdW1iZXIpXHJcbiAgICAgIC5tYXAoKG46IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQuZGVmYXVsdChmaXJzdERheSkuYWRkKG4sICdkJyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGxldCBuID0gMDtcclxuICAgIHdoaWxlIChuIDwgZmlyc3REYXkud2Vla2RheSgpKSB7XHJcbiAgICAgIGRheXMudW5zaGlmdChudWxsKTtcclxuICAgICAgbisrO1xyXG4gICAgfVxyXG4gICAgbiA9IDA7XHJcbiAgICB3aGlsZSAobiA8IDcgLSBsYXN0RGF5LndlZWtkYXkoKSkge1xyXG4gICAgICBkYXlzLnB1c2gobnVsbCk7XHJcbiAgICAgIG4rKztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW5kZXggPSAxO1xyXG4gICAgbGV0IGdyb3VwID0gW107XHJcbiAgICBsZXQgZ3JvdXBlZCA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5lbnRyaWVzKGRheXMpLm1hcCgoW2tleSwgdmFsdWVdOiBbc3RyaW5nLCBhbnldKSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA+IDcpIHtcclxuICAgICAgICBpbmRleCA9IDE7XHJcbiAgICAgICAgZ3JvdXBlZC5wdXNoKGdyb3VwKTtcclxuICAgICAgICBncm91cCA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBncm91cC5wdXNoKHZhbHVlKTtcclxuICAgICAgaW5kZXgrKztcclxuICAgIH0pO1xyXG4gICAgZ3JvdXBlZC5wdXNoKGdyb3VwKTtcclxuXHJcbiAgICByZXR1cm4gZ3JvdXBlZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGQoKSB7XHJcbiAgICB0aGlzLl9kYXlzQXJyRmlyc3QgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVGaXJzdCk7XHJcbiAgICB0aGlzLl9kYXlzQXJyU2Vjb25kID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlU2Vjb25kKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJEYXRlcygpIHtcclxuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fZGF0ZUZvcm0uc2V0VmFsdWUoeyBzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGwgfSk7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5fZGF0ZUZvcm0udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUb1RvZGF5KCkge1xyXG4gICAgdGhpcy5fZGF0ZUZpcnN0ID0gbW9tZW50LmRlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RhdGVTZWNvbmQgPSBtb21lbnQuZGVmYXVsdCgpLmFkZCgxLCAnTScpO1xyXG4gICAgdGhpcy5idWlsZCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB2YWx1ZSAmJlxyXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdzdGFydERhdGUnKSAmJlxyXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdlbmREYXRlJylcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9kYXRlRm9ybS5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuX2RhdGVGb3JtLnZhbHVlKTtcclxuICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCh0aGlzLl9kYXRlRm9ybS52YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsZWFyRGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGVGb3JtLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKCkge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLl9kYXRlRmlyc3QuYWRkKDEsICdNJyk7XHJcbiAgICB0aGlzLl9kYXRlU2Vjb25kLmFkZCgxLCAnTScpO1xyXG5cclxuICAgIHRoaXMuX2RheXNBcnJGaXJzdCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZUZpcnN0KTtcclxuICAgIHRoaXMuX2RheXNBcnJTZWNvbmQgPSB0aGlzLmNyZWF0ZUNhbGVuZGFyKHRoaXMuX2RhdGVTZWNvbmQpO1xyXG4gIH1cclxuXHJcbiAgcHJldmlvdXNNb250aCgpIHtcclxuICAgIGlmICh0aGlzLl9kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fZGF0ZUZpcnN0LnN1YnRyYWN0KDEsICdNJyk7XHJcbiAgICB0aGlzLl9kYXRlU2Vjb25kLnN1YnRyYWN0KDEsICdNJyk7XHJcblxyXG4gICAgdGhpcy5fZGF5c0FyckZpcnN0ID0gdGhpcy5jcmVhdGVDYWxlbmRhcih0aGlzLl9kYXRlRmlyc3QpO1xyXG4gICAgdGhpcy5fZGF5c0FyclNlY29uZCA9IHRoaXMuY3JlYXRlQ2FsZW5kYXIodGhpcy5fZGF0ZVNlY29uZCk7XHJcbiAgfVxyXG5cclxuICB0b2RheUNoZWNrKGRheTogYW55KSB7XHJcbiAgICBpZiAoIWRheSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vbWVudC5kZWZhdWx0KCkuZm9ybWF0KCdMJykgPT09IGRheS5mb3JtYXQoJ0wnKTtcclxuICB9XHJcblxyXG4gIGlzU2VsZWN0ZWQoZGF5OiBhbnkpIHtcclxuICAgIGlmICghZGF5KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgc3RhcnREYXRlTW9tZW50ID0gbW9tZW50LmRlZmF1bHQodGhpcy5fZGF0ZUZvcm0udmFsdWUuc3RhcnREYXRlLCAnWVlZWS1NTS1ERCcpO1xyXG4gICAgbGV0IGVuZERhdGVNb21lbnQgPSBtb21lbnQuZGVmYXVsdCh0aGlzLl9kYXRlRm9ybS52YWx1ZS5lbmREYXRlLCAnWVlZWS1NTS1ERCcpO1xyXG5cclxuICAgIGlmICh0aGlzLl9kYXRlRm9ybS52YWxpZCkge1xyXG4gICAgICByZXR1cm4gc3RhcnREYXRlTW9tZW50LmlzU2FtZU9yQmVmb3JlKGRheSkgJiYgZW5kRGF0ZU1vbWVudC5pc1NhbWVPckFmdGVyKGRheSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykudmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHN0YXJ0RGF0ZU1vbWVudC5pc1NhbWUoZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRGlzYWJsZWQoZGF5KSB7XHJcbiAgICBjb25zdCB7IG1pbkRhdGUgfSA9IHRoaXM7XHJcbiAgICBpZiAobWluRGF0ZSkge1xyXG4gICAgICBjb25zdCBmaXJzdERheSA9IG1vbWVudC5kZWZhdWx0KG1pbkRhdGUpO1xyXG4gICAgICByZXR1cm4gZGF5LmlzQmVmb3JlKGZpcnN0RGF5LnN1YnRyYWN0KDEsICdkYXknKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc0ZpcnN0U2VsZWN0ZWQoZGF5KSB7XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgc3RhcnREYXRlIH0gPSBfZGF0ZUZvcm0udmFsdWU7XHJcbiAgICByZXR1cm4gZGF5Py5pc1NhbWUoc3RhcnREYXRlKTtcclxuICB9XHJcblxyXG4gIGlzTGFzdFNlbGVjdGVkKGRheTogYW55KSB7XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSB9ID0gdGhpcztcclxuICAgIGNvbnN0IHsgZW5kRGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG4gICAgcmV0dXJuIGRheT8uaXNTYW1lKGVuZERhdGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWREYXRlKGRheTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IHsgX2RhdGVGb3JtLCBtaW5EYXRlIH0gPSB0aGlzO1xyXG4gICAgbGV0IGRheUZvcm1hdHRlZCA9IGRheS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcclxuXHJcbiAgICBpZiAobWluRGF0ZSkge1xyXG4gICAgICBjb25zdCBmaXJzdERheSA9IG1vbWVudC5kZWZhdWx0KG1pbkRhdGUpO1xyXG4gICAgICBpZiAoZGF5LmlzQmVmb3JlKGZpcnN0RGF5LnN1YnRyYWN0KDEsICdkYXknKSkpIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoX2RhdGVGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJEYXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG4gICAgaWYgKHN0YXJ0RGF0ZSkge1xyXG4gICAgICBpZiAobW9tZW50LmRlZmF1bHQoc3RhcnREYXRlKS5pc0FmdGVyKG1vbWVudC5kZWZhdWx0KGRheUZvcm1hdHRlZCkpKSB7XHJcbiAgICAgICAgZW5kRGF0ZSA9IHN0YXJ0RGF0ZTtcclxuICAgICAgICBzdGFydERhdGUgPSBkYXlGb3JtYXR0ZWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZW5kRGF0ZSA9IGRheUZvcm1hdHRlZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHN0YXJ0RGF0ZSA9IGRheUZvcm1hdHRlZDtcclxuXHJcbiAgICBpZiAoc3RhcnREYXRlKSB7XHJcbiAgICAgIF9kYXRlRm9ybS5nZXQoJ3N0YXJ0RGF0ZScpLnBhdGNoVmFsdWUoc3RhcnREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZW5kRGF0ZSkge1xyXG4gICAgICBfZGF0ZUZvcm0uZ2V0KCdlbmREYXRlJykucGF0Y2hWYWx1ZShlbmREYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndyaXRlVmFsdWUoX2RhdGVGb3JtLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFJhbmdlT2ZEYXlzKGRheXM6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkKSByZXR1cm47XHJcbiAgICBjb25zdCB7IF9kYXRlRm9ybSwgbWluRGF0ZSwgdG9kYXkgfSA9IHRoaXM7XHJcbiAgICBjb25zdCB7IHN0YXJ0RGF0ZSB9ID0gX2RhdGVGb3JtLnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbW9tZW50LmRlZmF1bHQoc3RhcnREYXRlIHx8IG1pbkRhdGUgfHwgdG9kYXkpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgY29uc3QgbGFzdERheSA9IG1vbWVudC5kZWZhdWx0KGZpcnN0RGF5KS5hZGQoZGF5cywgJ2RheScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgX2RhdGVGb3JtLmdldCgnc3RhcnREYXRlJykucGF0Y2hWYWx1ZShmaXJzdERheSk7XHJcbiAgICBfZGF0ZUZvcm0uZ2V0KCdlbmREYXRlJykucGF0Y2hWYWx1ZShsYXN0RGF5KTtcclxuICAgIHRoaXMud3JpdGVWYWx1ZShfZGF0ZUZvcm0udmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -7,10 +7,10 @@ import { MonkeyButtonModule } from '../button/button.module';
7
7
  import * as i0 from "@angular/core";
8
8
  export class MonkeyDateRangePickerModule {
9
9
  }
10
- MonkeyDateRangePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: MonkeyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- MonkeyDateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: MonkeyDateRangePickerModule, declarations: [MonkeyDateRangePickerComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule, MonkeyButtonModule, MonkeyIconModule], exports: [MonkeyDateRangePickerComponent] });
12
- MonkeyDateRangePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: MonkeyDateRangePickerModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, MonkeyButtonModule, MonkeyIconModule]] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImport: i0, type: MonkeyDateRangePickerModule, decorators: [{
10
+ MonkeyDateRangePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ MonkeyDateRangePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerModule, declarations: [MonkeyDateRangePickerComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule, MonkeyButtonModule, MonkeyIconModule], exports: [MonkeyDateRangePickerComponent] });
12
+ MonkeyDateRangePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, MonkeyButtonModule, MonkeyIconModule]] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MonkeyDateRangePickerModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [MonkeyDateRangePickerComponent],
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.14", ngImpo
19
19
  schemas: [NO_ERRORS_SCHEMA],
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVE3RCxNQUFNLE9BQU8sMkJBQTJCOzt5SEFBM0IsMkJBQTJCOzBIQUEzQiwyQkFBMkIsaUJBTHZCLDhCQUE4QixhQUNuQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixhQUNwRiw4QkFBOEI7MEhBRzdCLDJCQUEyQixZQUo3QixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7NEZBSXBGLDJCQUEyQjtrQkFOdkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDL0YsT0FBTyxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vbmtleURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmtleUljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcclxuaW1wb3J0IHsgTW9ua2V5QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtNb25rZXlEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNb25rZXlCdXR0b25Nb2R1bGUsIE1vbmtleUljb25Nb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtNb25rZXlEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxyXG4gIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vbmtleURhdGVSYW5nZVBpY2tlck1vZHVsZSB7fVxyXG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVE3RCxNQUFNLE9BQU8sMkJBQTJCOzt3SEFBM0IsMkJBQTJCO3lIQUEzQiwyQkFBMkIsaUJBTHZCLDhCQUE4QixhQUNuQyxZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixhQUNwRiw4QkFBOEI7eUhBRzdCLDJCQUEyQixZQUo3QixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7MkZBSXBGLDJCQUEyQjtrQkFOdkMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQztvQkFDL0YsT0FBTyxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBOT19FUlJPUlNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vbmtleURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1vbmtleUljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcclxuaW1wb3J0IHsgTW9ua2V5QnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtNb25rZXlEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNb25rZXlCdXR0b25Nb2R1bGUsIE1vbmtleUljb25Nb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtNb25rZXlEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnRdLFxyXG4gIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vbmtleURhdGVSYW5nZVBpY2tlck1vZHVsZSB7fVxyXG4iXX0=