slick-components 5.0.28 → 17.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/{esm2020 → esm2022}/public-api.mjs +44 -44
  2. package/{esm2020 → esm2022}/slick-accordion/slick-accordion-item-header.component.mjs +14 -14
  3. package/esm2022/slick-accordion/slick-accordion-item.component.mjs +92 -0
  4. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.component.mjs +80 -80
  5. package/{esm2020 → esm2022}/slick-accordion/slick-accordion.module.mjs +23 -23
  6. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -22
  7. package/esm2022/slick-auto-complete/slick-auto-complete.component.mjs +388 -0
  8. package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete.module.mjs +25 -25
  9. package/esm2022/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
  10. package/{esm2020 → esm2022}/slick-button-spinner/slick-button-spinner.module.mjs +19 -19
  11. package/esm2022/slick-calendar/slick-calendar.component.mjs +271 -0
  12. package/{esm2020 → esm2022}/slick-calendar/slick-calendar.module.mjs +19 -19
  13. package/{esm2020 → esm2022}/slick-card/slick-card-header.component.mjs +14 -14
  14. package/esm2022/slick-card/slick-card.component.mjs +42 -0
  15. package/{esm2020 → esm2022}/slick-card/slick-card.module.mjs +20 -20
  16. package/{esm2020 → esm2022}/slick-components.mjs +4 -4
  17. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -65
  18. package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -20
  19. package/{esm2020 → esm2022}/slick-container/slick-container-body.component.mjs +24 -24
  20. package/{esm2020 → esm2022}/slick-container/slick-container-footer.component.mjs +20 -20
  21. package/{esm2020 → esm2022}/slick-container/slick-container-header.component.mjs +20 -20
  22. package/{esm2020 → esm2022}/slick-container/slick-container.component.mjs +21 -21
  23. package/{esm2020 → esm2022}/slick-container/slick-container.module.mjs +25 -25
  24. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu-item.component.mjs +14 -14
  25. package/esm2022/slick-context-menu/slick-context-menu.component.mjs +48 -0
  26. package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu.module.mjs +20 -20
  27. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask-options.model.mjs +11 -11
  28. package/esm2022/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
  29. package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask.module.mjs +19 -19
  30. package/esm2022/slick-date-picker/slick-date-picker.component.mjs +278 -0
  31. package/{esm2020 → esm2022}/slick-date-picker/slick-date-picker.module.mjs +21 -21
  32. package/{esm2020 → esm2022}/slick-dialog/slick-dialog-footer.component.mjs +24 -24
  33. package/esm2022/slick-dialog/slick-dialog.component.mjs +294 -0
  34. package/{esm2020 → esm2022}/slick-dialog/slick-dialog.module.mjs +23 -23
  35. package/esm2022/slick-dialog/slick-dialog.service.mjs +68 -0
  36. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.directive.mjs +13 -13
  37. package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.module.mjs +21 -21
  38. package/{esm2020 → esm2022}/slick-drag-drop/slick-draggable.directive.mjs +13 -13
  39. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down-button.model.mjs +7 -7
  40. package/esm2022/slick-drop-down/slick-drop-down.component.mjs +447 -0
  41. package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down.module.mjs +24 -24
  42. package/esm2022/slick-drop-down/slick-drop-down.service.mjs +55 -0
  43. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -18
  44. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-item.directive.mjs +18 -18
  45. package/esm2022/slick-drop-list/slick-drop-list.directive.mjs +215 -0
  46. package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list.module.mjs +23 -23
  47. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer-dialog.component.mjs +62 -62
  48. package/esm2022/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
  49. package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer.module.mjs +26 -26
  50. package/{esm2020 → esm2022}/slick-emailer/slick-emailer-address.model.mjs +2 -2
  51. package/esm2022/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
  52. package/esm2022/slick-emailer/slick-emailer.component.mjs +235 -0
  53. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.model.mjs +2 -2
  54. package/{esm2020 → esm2022}/slick-emailer/slick-emailer.module.mjs +29 -29
  55. package/esm2022/slick-file-drop/slick-file-drop.component.mjs +156 -0
  56. package/{esm2020 → esm2022}/slick-file-drop/slick-file-drop.module.mjs +20 -20
  57. package/esm2022/slick-file-list/slick-file-list-item.component.mjs +190 -0
  58. package/esm2022/slick-file-list/slick-file-list.component.mjs +130 -0
  59. package/{esm2020 → esm2022}/slick-file-list/slick-file-list.module.mjs +23 -23
  60. package/{esm2020 → esm2022}/slick-file-model/slick-file.model.mjs +2 -2
  61. package/esm2022/slick-google-address-search/slick-google-address-search.directive.mjs +78 -0
  62. package/{esm2020 → esm2022}/slick-google-address-search/slick-google-address-search.module.mjs +19 -19
  63. package/esm2022/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
  64. package/esm2022/slick-google-map/slick-google-map.component.mjs +48 -0
  65. package/{esm2020 → esm2022}/slick-google-map/slick-google-map.module.mjs +22 -22
  66. package/{esm2020 → esm2022}/slick-grid/slick-grid-column-template.directive.mjs +19 -19
  67. package/{esm2020 → esm2022}/slick-grid/slick-grid-column.model.mjs +66 -66
  68. package/{esm2020 → esm2022}/slick-grid/slick-grid-favorite.model.mjs +2 -2
  69. package/{esm2020 → esm2022}/slick-grid/slick-grid-request.model.mjs +2 -2
  70. package/{esm2020 → esm2022}/slick-grid/slick-grid-response.model.mjs +2 -2
  71. package/{esm2020 → esm2022}/slick-grid/slick-grid-sanitize.pipe.mjs +20 -20
  72. package/esm2022/slick-grid/slick-grid.component.mjs +793 -0
  73. package/{esm2020 → esm2022}/slick-grid/slick-grid.module.mjs +43 -43
  74. package/{esm2020 → esm2022}/slick-grid/slick-grid.options.mjs +11 -11
  75. package/esm2022/slick-grid/slick-grid.service.mjs +66 -0
  76. package/esm2022/slick-multi-select/slick-multi-select.component.mjs +415 -0
  77. package/{esm2020 → esm2022}/slick-multi-select/slick-multi-select.module.mjs +20 -20
  78. package/esm2022/slick-multi-select/slick-multi-select.service.mjs +78 -0
  79. package/esm2022/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
  80. package/{esm2020 → esm2022}/slick-ordered-list/slick-ordered-list.module.mjs +20 -20
  81. package/esm2022/slick-paging/slick-paging.component.mjs +185 -0
  82. package/{esm2020 → esm2022}/slick-paging/slick-paging.module.mjs +19 -19
  83. package/esm2022/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
  84. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.model.mjs +2 -2
  85. package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -21
  86. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.component.mjs +84 -84
  87. package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.module.mjs +20 -20
  88. package/esm2022/slick-popover/slick-popover.component.mjs +204 -0
  89. package/{esm2020 → esm2022}/slick-popover/slick-popover.module.mjs +19 -19
  90. package/esm2022/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
  91. package/{esm2020 → esm2022}/slick-profile-picture/slick-profile-picture.module.mjs +20 -20
  92. package/{esm2020 → esm2022}/slick-progress-bar/slick-progress-bar.module.mjs +18 -18
  93. package/esm2022/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
  94. package/{esm2020 → esm2022}/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -18
  95. package/esm2022/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
  96. package/esm2022/slick-search-bar/slick-search-bar.component.mjs +130 -0
  97. package/{esm2020 → esm2022}/slick-search-bar/slick-search-bar.module.mjs +20 -20
  98. package/{esm2020 → esm2022}/slick-slider/slick-slider-tick.model.mjs +2 -2
  99. package/esm2022/slick-slider/slick-slider.component.mjs +90 -0
  100. package/{esm2020 → esm2022}/slick-slider/slick-slider.module.mjs +20 -20
  101. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -15
  102. package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -15
  103. package/esm2022/slick-split-screen/slick-split-screen.component.mjs +159 -0
  104. package/{esm2020 → esm2022}/slick-split-screen/slick-split-screen.module.mjs +21 -21
  105. package/esm2022/slick-star-rating/slick-star-rating.component.mjs +91 -0
  106. package/{esm2020 → esm2022}/slick-star-rating/slick-star-rating.module.mjs +21 -21
  107. package/{esm2020 → esm2022}/slick-tabs/slick-tab-header.component.mjs +28 -28
  108. package/esm2022/slick-tabs/slick-tab.component.mjs +63 -0
  109. package/{esm2020 → esm2022}/slick-tabs/slick-tab.model.mjs +2 -2
  110. package/esm2022/slick-tabs/slick-tabs.component.mjs +107 -0
  111. package/{esm2020 → esm2022}/slick-tabs/slick-tabs.module.mjs +23 -23
  112. package/{esm2020 → esm2022}/slick-toast/slick-toast.module.mjs +18 -18
  113. package/esm2022/slick-toast/slick-toast.service.mjs +88 -0
  114. package/esm2022/slick-tree-view/slick-tree-node.model.mjs +18 -0
  115. package/esm2022/slick-tree-view/slick-tree-view.component.mjs +293 -0
  116. package/{esm2020 → esm2022}/slick-tree-view/slick-tree-view.module.mjs +22 -22
  117. package/esm2022/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
  118. package/{esm2020 → esm2022}/slick-type-ahead/slick-type-ahead.module.mjs +18 -18
  119. package/esm2022/slick-validation-indicator/slick-validation-indicator.directive.mjs +66 -0
  120. package/{esm2020 → esm2022}/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -19
  121. package/esm2022/utils/slick-function-lock.service.mjs +55 -0
  122. package/esm2022/utils/slick-init.service.mjs +49 -0
  123. package/{esm2020 → esm2022}/utils/slick-log.service.mjs +23 -23
  124. package/{esm2020 → esm2022}/utils/slick-sleep.service.mjs +14 -14
  125. package/esm2022/utils/slick-utils.service.mjs +247 -0
  126. package/{fesm2020 → fesm2022}/slick-components.mjs +8495 -8495
  127. package/fesm2022/slick-components.mjs.map +1 -0
  128. package/index.d.ts +5 -5
  129. package/package.json +11 -17
  130. package/public-api.d.ts +41 -41
  131. package/slick-accordion/slick-accordion-item-header.component.d.ts +5 -5
  132. package/slick-accordion/slick-accordion-item.component.d.ts +24 -24
  133. package/slick-accordion/slick-accordion.component.d.ts +22 -22
  134. package/slick-accordion/slick-accordion.module.d.ts +16 -16
  135. package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +10 -10
  136. package/slick-auto-complete/slick-auto-complete.component.d.ts +60 -60
  137. package/slick-auto-complete/slick-auto-complete.module.d.ts +15 -15
  138. package/slick-button-spinner/slick-button-spinner.component.d.ts +28 -28
  139. package/slick-button-spinner/slick-button-spinner.module.d.ts +10 -10
  140. package/slick-calendar/slick-calendar.component.d.ts +53 -53
  141. package/slick-calendar/slick-calendar.module.d.ts +10 -10
  142. package/slick-card/slick-card-header.component.d.ts +5 -5
  143. package/slick-card/slick-card.component.d.ts +13 -13
  144. package/slick-card/slick-card.module.d.ts +12 -12
  145. package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +26 -26
  146. package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +11 -11
  147. package/slick-container/slick-container-body.component.d.ts +7 -7
  148. package/slick-container/slick-container-footer.component.d.ts +6 -6
  149. package/slick-container/slick-container-header.component.d.ts +6 -6
  150. package/slick-container/slick-container.component.d.ts +8 -8
  151. package/slick-container/slick-container.module.d.ts +19 -19
  152. package/slick-context-menu/slick-context-menu-item.component.d.ts +5 -5
  153. package/slick-context-menu/slick-context-menu.component.d.ts +13 -13
  154. package/slick-context-menu/slick-context-menu.module.d.ts +12 -12
  155. package/slick-currency-mask/slick-currency-mask-options.model.d.ts +10 -10
  156. package/slick-currency-mask/slick-currency-mask.directive.d.ts +29 -29
  157. package/slick-currency-mask/slick-currency-mask.module.d.ts +10 -10
  158. package/slick-date-picker/slick-date-picker.component.d.ts +45 -45
  159. package/slick-date-picker/slick-date-picker.module.d.ts +12 -12
  160. package/slick-dialog/slick-dialog-footer.component.d.ts +7 -7
  161. package/slick-dialog/slick-dialog.component.d.ts +56 -56
  162. package/slick-dialog/slick-dialog.module.d.ts +13 -13
  163. package/slick-dialog/slick-dialog.service.d.ts +17 -17
  164. package/slick-drag-drop/slick-drag-drop.directive.d.ts +5 -5
  165. package/slick-drag-drop/slick-drag-drop.module.d.ts +13 -13
  166. package/slick-drag-drop/slick-draggable.directive.d.ts +5 -5
  167. package/slick-drop-down/slick-drop-down-button.model.d.ts +13 -13
  168. package/slick-drop-down/slick-drop-down.component.d.ts +78 -78
  169. package/slick-drop-down/slick-drop-down.module.d.ts +14 -14
  170. package/slick-drop-down/slick-drop-down.service.d.ts +12 -12
  171. package/slick-drop-list/slick-drop-list-grab.directive.d.ts +7 -7
  172. package/slick-drop-list/slick-drop-list-item.directive.d.ts +7 -7
  173. package/slick-drop-list/slick-drop-list.directive.d.ts +33 -33
  174. package/slick-drop-list/slick-drop-list.module.d.ts +16 -16
  175. package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +19 -19
  176. package/slick-email-viewer/slick-email-viewer.component.d.ts +13 -13
  177. package/slick-email-viewer/slick-email-viewer.module.d.ts +18 -18
  178. package/slick-emailer/slick-emailer-address.model.d.ts +10 -10
  179. package/slick-emailer/slick-emailer-dialog.component.d.ts +33 -33
  180. package/slick-emailer/slick-emailer.component.d.ts +50 -50
  181. package/slick-emailer/slick-emailer.model.d.ts +16 -16
  182. package/slick-emailer/slick-emailer.module.d.ts +21 -21
  183. package/slick-file-drop/slick-file-drop.component.d.ts +25 -25
  184. package/slick-file-drop/slick-file-drop.module.d.ts +11 -11
  185. package/slick-file-list/slick-file-list-item.component.d.ts +37 -37
  186. package/slick-file-list/slick-file-list.component.d.ts +31 -31
  187. package/slick-file-list/slick-file-list.module.d.ts +14 -14
  188. package/slick-file-model/slick-file.model.d.ts +28 -28
  189. package/slick-google-address-search/slick-google-address-search.directive.d.ts +16 -17
  190. package/slick-google-address-search/slick-google-address-search.module.d.ts +10 -10
  191. package/slick-google-map/slick-google-map-dialog.component.d.ts +15 -16
  192. package/slick-google-map/slick-google-map.component.d.ts +17 -18
  193. package/slick-google-map/slick-google-map.module.d.ts +14 -14
  194. package/slick-grid/slick-grid-column-template.directive.d.ts +9 -9
  195. package/slick-grid/slick-grid-column.model.d.ts +64 -64
  196. package/slick-grid/slick-grid-favorite.model.d.ts +9 -9
  197. package/slick-grid/slick-grid-request.model.d.ts +33 -33
  198. package/slick-grid/slick-grid-response.model.d.ts +8 -8
  199. package/slick-grid/slick-grid-sanitize.pipe.d.ts +10 -10
  200. package/slick-grid/slick-grid.component.d.ts +119 -119
  201. package/slick-grid/slick-grid.module.d.ts +32 -32
  202. package/slick-grid/slick-grid.options.d.ts +35 -35
  203. package/slick-grid/slick-grid.service.d.ts +12 -12
  204. package/slick-multi-select/slick-multi-select.component.d.ts +69 -69
  205. package/slick-multi-select/slick-multi-select.module.d.ts +11 -11
  206. package/slick-multi-select/slick-multi-select.service.d.ts +9 -9
  207. package/slick-ordered-list/slick-ordered-list.component.d.ts +28 -28
  208. package/slick-ordered-list/slick-ordered-list.module.d.ts +11 -11
  209. package/slick-paging/slick-paging.component.d.ts +31 -31
  210. package/slick-paging/slick-paging.module.d.ts +10 -10
  211. package/slick-photo-gallery/slick-photo-gallery.component.d.ts +26 -26
  212. package/slick-photo-gallery/slick-photo-gallery.model.d.ts +8 -8
  213. package/slick-photo-gallery/slick-photo-gallery.module.d.ts +12 -12
  214. package/slick-pick-list/slick-pick-list.component.d.ts +24 -24
  215. package/slick-pick-list/slick-pick-list.module.d.ts +11 -11
  216. package/slick-popover/slick-popover.component.d.ts +39 -39
  217. package/slick-popover/slick-popover.module.d.ts +10 -10
  218. package/slick-profile-picture/slick-profile-picture.component.d.ts +29 -29
  219. package/slick-profile-picture/slick-profile-picture.module.d.ts +11 -11
  220. package/slick-progress-bar/slick-progress-bar.module.d.ts +9 -9
  221. package/slick-progress-bar/slick-progress-bar.service.d.ts +12 -12
  222. package/slick-screen-blocker/slick-screen-blocker.module.d.ts +9 -9
  223. package/slick-screen-blocker/slick-screen-blocker.service.d.ts +16 -16
  224. package/slick-search-bar/slick-search-bar.component.d.ts +37 -37
  225. package/slick-search-bar/slick-search-bar.module.d.ts +11 -11
  226. package/slick-slider/slick-slider-tick.model.d.ts +10 -10
  227. package/slick-slider/slick-slider.component.d.ts +29 -29
  228. package/slick-slider/slick-slider.module.d.ts +11 -11
  229. package/slick-split-screen/slick-screen-split-left-content.component.d.ts +6 -6
  230. package/slick-split-screen/slick-screen-split-right-content.component.d.ts +6 -6
  231. package/slick-split-screen/slick-split-screen.component.d.ts +40 -40
  232. package/slick-split-screen/slick-split-screen.module.d.ts +14 -14
  233. package/slick-star-rating/slick-star-rating.component.d.ts +28 -28
  234. package/slick-star-rating/slick-star-rating.module.d.ts +12 -12
  235. package/slick-tabs/slick-tab-header.component.d.ts +12 -12
  236. package/slick-tabs/slick-tab.component.d.ts +22 -22
  237. package/slick-tabs/slick-tab.model.d.ts +10 -10
  238. package/slick-tabs/slick-tabs.component.d.ts +25 -25
  239. package/slick-tabs/slick-tabs.module.d.ts +16 -16
  240. package/slick-toast/slick-toast.module.d.ts +9 -9
  241. package/slick-toast/slick-toast.service.d.ts +16 -16
  242. package/slick-tree-view/slick-tree-node.model.d.ts +30 -30
  243. package/slick-tree-view/slick-tree-view.component.d.ts +62 -62
  244. package/slick-tree-view/slick-tree-view.module.d.ts +13 -13
  245. package/slick-type-ahead/slick-type-ahead.directive.d.ts +25 -25
  246. package/slick-type-ahead/slick-type-ahead.module.d.ts +9 -9
  247. package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +22 -22
  248. package/slick-validation-indicator/slick-validation-indicator.module.d.ts +10 -10
  249. package/utils/slick-function-lock.service.d.ts +9 -9
  250. package/utils/slick-init.service.d.ts +21 -21
  251. package/utils/slick-log.service.d.ts +9 -9
  252. package/utils/slick-sleep.service.d.ts +6 -6
  253. package/utils/slick-utils.service.d.ts +24 -24
  254. package/esm2020/slick-accordion/slick-accordion-item.component.mjs +0 -92
  255. package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +0 -388
  256. package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +0 -175
  257. package/esm2020/slick-calendar/slick-calendar.component.mjs +0 -271
  258. package/esm2020/slick-card/slick-card.component.mjs +0 -42
  259. package/esm2020/slick-context-menu/slick-context-menu.component.mjs +0 -48
  260. package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +0 -233
  261. package/esm2020/slick-date-picker/slick-date-picker.component.mjs +0 -278
  262. package/esm2020/slick-dialog/slick-dialog.component.mjs +0 -294
  263. package/esm2020/slick-dialog/slick-dialog.service.mjs +0 -68
  264. package/esm2020/slick-drop-down/slick-drop-down.component.mjs +0 -447
  265. package/esm2020/slick-drop-down/slick-drop-down.service.mjs +0 -55
  266. package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +0 -215
  267. package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +0 -42
  268. package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +0 -153
  269. package/esm2020/slick-emailer/slick-emailer.component.mjs +0 -235
  270. package/esm2020/slick-file-drop/slick-file-drop.component.mjs +0 -156
  271. package/esm2020/slick-file-list/slick-file-list-item.component.mjs +0 -190
  272. package/esm2020/slick-file-list/slick-file-list.component.mjs +0 -130
  273. package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +0 -78
  274. package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +0 -50
  275. package/esm2020/slick-google-map/slick-google-map.component.mjs +0 -48
  276. package/esm2020/slick-grid/slick-grid.component.mjs +0 -793
  277. package/esm2020/slick-grid/slick-grid.service.mjs +0 -66
  278. package/esm2020/slick-multi-select/slick-multi-select.component.mjs +0 -415
  279. package/esm2020/slick-multi-select/slick-multi-select.service.mjs +0 -78
  280. package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +0 -200
  281. package/esm2020/slick-paging/slick-paging.component.mjs +0 -185
  282. package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +0 -98
  283. package/esm2020/slick-popover/slick-popover.component.mjs +0 -204
  284. package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +0 -267
  285. package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +0 -53
  286. package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +0 -83
  287. package/esm2020/slick-search-bar/slick-search-bar.component.mjs +0 -130
  288. package/esm2020/slick-slider/slick-slider.component.mjs +0 -90
  289. package/esm2020/slick-split-screen/slick-split-screen.component.mjs +0 -159
  290. package/esm2020/slick-star-rating/slick-star-rating.component.mjs +0 -91
  291. package/esm2020/slick-tabs/slick-tab.component.mjs +0 -63
  292. package/esm2020/slick-tabs/slick-tabs.component.mjs +0 -107
  293. package/esm2020/slick-toast/slick-toast.service.mjs +0 -88
  294. package/esm2020/slick-tree-view/slick-tree-node.model.mjs +0 -18
  295. package/esm2020/slick-tree-view/slick-tree-view.component.mjs +0 -293
  296. package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +0 -164
  297. package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +0 -66
  298. package/esm2020/utils/slick-function-lock.service.mjs +0 -55
  299. package/esm2020/utils/slick-init.service.mjs +0 -49
  300. package/esm2020/utils/slick-utils.service.mjs +0 -247
  301. package/fesm2015/slick-components.mjs +0 -9084
  302. package/fesm2015/slick-components.mjs.map +0 -1
  303. package/fesm2020/slick-components.mjs.map +0 -1
@@ -0,0 +1,388 @@
1
+ import { Component, ViewChild, ContentChild, Input, Output, EventEmitter, forwardRef } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import { SlickAutoCompleteListItemTemplateDirective } from "./slick-auto-complete-list-item-template.directive";
4
+ import { SlickUtilsService } from "../utils/slick-utils.service";
5
+ import { SlickSleepService } from "../utils/slick-sleep.service";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../utils/slick-function-lock.service";
8
+ import * as i2 from "@angular/common";
9
+ export class SlickAutoCompleteComponent {
10
+ constructor(slickFunctionLockService) {
11
+ this.slickFunctionLockService = slickFunctionLockService;
12
+ this.delay = 300;
13
+ this.selectFirst = true;
14
+ this.offset = 0;
15
+ this.listHeight = "300px";
16
+ this.listWidth = '100%';
17
+ this.allowFreeformText = true;
18
+ this.showNoItemsFoundDisplay = true;
19
+ this.onRefresh = new EventEmitter();
20
+ this.onSelect = new EventEmitter();
21
+ this.onFreeformTextSelect = new EventEmitter();
22
+ this.fnDocumentClick = (e) => this.documentClick(e);
23
+ this.fnKeyDown = (e) => this.keyDown(e);
24
+ this.lastInputValue = "";
25
+ this.forcedCollapse = false;
26
+ // This is necessary so that the scroll and resize events can add and remove the event properly,
27
+ // as well as getting the correct ES6 function
28
+ this.fnReposition = () => this.reposition();
29
+ this.selectedIndex = -1;
30
+ this.showAutoComplete = false;
31
+ this.autoCompleteVisiblity = false;
32
+ this.expanded = true;
33
+ this.loading = false;
34
+ this.propagateChange = (_) => { };
35
+ this.uuid = SlickUtilsService.newGuid();
36
+ }
37
+ async ngOnInit() {
38
+ await SlickSleepService.sleep();
39
+ if (this.searchBarRef)
40
+ this.inputRef = this.searchBarRef.slickSearchTextBoxRef.nativeElement;
41
+ // Remove this from the inline version and put it on the body so that it doesn't hide behind the bottom
42
+ // of a div when it expands beyond the bottom.
43
+ this.autoCompleteRef.nativeElement.remove(this.autoCompleteRef);
44
+ document.body.appendChild(this.autoCompleteRef.nativeElement);
45
+ this.inputRef.addEventListener("keydown", this.fnKeyDown);
46
+ }
47
+ ngOnDestroy() {
48
+ // Since angular has no way to use the third parameter, I'm doing this in raw js
49
+ document.removeEventListener("click", this.fnDocumentClick, true);
50
+ this.inputRef.removeEventListener("keydown", this.fnKeyDown);
51
+ clearTimeout(this.delayTimeout);
52
+ this.delayTimeout = null;
53
+ this.collapse();
54
+ // Is okay if this fails. It just means it was already removed.
55
+ try {
56
+ document.body.removeChild(this.autoCompleteRef.nativeElement);
57
+ }
58
+ catch { }
59
+ }
60
+ ngOnChanges(changes) {
61
+ if (changes.allowFreeformText)
62
+ this.allowFreeformText = (this.allowFreeformText.toString().toLowerCase() === 'false') ? false : true;
63
+ if (changes.showNoItemsFoundDisplay)
64
+ this.showNoItemsFoundDisplay = (this.showNoItemsFoundDisplay.toString().toLowerCase() === 'false') ? false : true;
65
+ if (changes.items) {
66
+ if (this.items && this.items.length === 0 && this.showNoItemsFoundDisplay === false)
67
+ this.collapse();
68
+ }
69
+ if (isNaN(this.offset))
70
+ this.offset = parseInt(this.offset.toString());
71
+ }
72
+ documentClick(e) {
73
+ if (!this.expanded || !e.target)
74
+ return;
75
+ if (e.target === this.inputRef)
76
+ return;
77
+ if (SlickUtilsService.checkParentIdExists(e.target, "slick-auto-complete_" + this.uuid) === false) {
78
+ clearInterval(this.waitForItemsInterval);
79
+ this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
80
+ this.collapse();
81
+ if (this.allowFreeformText && this.onFreeformTextSelect)
82
+ this.onFreeformTextSelect.emit(this.inputRef.value);
83
+ }
84
+ }
85
+ onItemClick(index) {
86
+ this.selectItem(index);
87
+ this.collapse();
88
+ }
89
+ async keyDown(event) {
90
+ // alt
91
+ if (event.keyCode === 18)
92
+ return;
93
+ clearInterval(this.waitForItemsInterval);
94
+ this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
95
+ // If we're just tabbing through, don't even do anything
96
+ if (!this.lastInputValue && (event.keyCode === 9 || event.keyCode === 13))
97
+ return;
98
+ await SlickSleepService.sleep();
99
+ if (this.lastInputValue !== this.inputRef.value) {
100
+ this.lastInputValue = this.inputRef.value;
101
+ this.forcedCollapse = false;
102
+ if (!this.lastInputValue) {
103
+ this.propagateChange(null);
104
+ this.collapse();
105
+ }
106
+ clearTimeout(this.delayTimeout);
107
+ this.delayTimeout = null;
108
+ if (this.inputRef.value === '') {
109
+ this.items = null;
110
+ this.collapse();
111
+ return true;
112
+ }
113
+ else {
114
+ this.delayTimeout = setTimeout(async () => {
115
+ (this.selectFirst === true) ? this.selectedIndex = 0 : this.selectedIndex = -1;
116
+ this.delayTimeout = null;
117
+ this.items = null;
118
+ this.expand();
119
+ await this.refreshItems(true);
120
+ }, this.delay);
121
+ }
122
+ }
123
+ if (event.keyCode === 9 || event.keyCode === 13) {
124
+ if (this.delayTimeout && this.selectFirst) {
125
+ clearTimeout(this.delayTimeout);
126
+ this.delayTimeout = null;
127
+ this.items = null;
128
+ this.collapse();
129
+ if (this.selectFirst === true && !this.forcedCollapse) {
130
+ await this.refreshItems(false);
131
+ this.selectedIndex = -1;
132
+ if (!this.items && !this.inputRef.value && this.onSelect) {
133
+ this.onSelect.emit(null);
134
+ }
135
+ else if (this.items && this.items.length > 0) {
136
+ this.selectedIndex = 0;
137
+ this.selectItem(this.selectedIndex);
138
+ }
139
+ else {
140
+ if (this.allowFreeformText && this.onFreeformTextSelect)
141
+ this.onFreeformTextSelect.emit(this.inputRef.value);
142
+ }
143
+ }
144
+ else {
145
+ if (this.allowFreeformText && this.onFreeformTextSelect)
146
+ this.onFreeformTextSelect.emit(this.inputRef.value);
147
+ }
148
+ }
149
+ else {
150
+ clearTimeout(this.delayTimeout);
151
+ if (!this.items && !this.inputRef.value && this.onSelect) {
152
+ this.onSelect.emit(null);
153
+ }
154
+ else if (this.items && this.items.length > 0 && this.expanded && !this.forcedCollapse) {
155
+ this.selectItem(this.selectedIndex);
156
+ }
157
+ else {
158
+ if (this.allowFreeformText && this.onFreeformTextSelect) {
159
+ this.onFreeformTextSelect.emit(this.inputRef.value);
160
+ }
161
+ }
162
+ this.collapse();
163
+ }
164
+ }
165
+ // Esc
166
+ if (event.which === 27) {
167
+ this.forcedCollapse = true;
168
+ this.collapse();
169
+ return false;
170
+ }
171
+ // Arrowup
172
+ if (event.which === 38) {
173
+ if (this.selectedIndex === null || this.selectedIndex === undefined)
174
+ this.selectedIndex = 0;
175
+ if (this.selectedIndex > 0)
176
+ this.selectedIndex--;
177
+ return false;
178
+ }
179
+ // Arrowdown
180
+ if (event.which === 40) {
181
+ event.stopPropagation();
182
+ if (this.selectedIndex === null || this.selectedIndex === undefined)
183
+ this.selectedIndex = -1;
184
+ if (!this.expanded) {
185
+ this.expand();
186
+ return false;
187
+ }
188
+ if (this.selectedIndex < this.items.length - 1)
189
+ this.selectedIndex++;
190
+ return false;
191
+ }
192
+ }
193
+ // this is the initial value set to the component
194
+ writeValue(obj) {
195
+ if (obj) {
196
+ }
197
+ }
198
+ // registers 'fn' that will be fired when changes are made
199
+ // this is how we emit the changes back to the form
200
+ registerOnChange(fn) {
201
+ this.propagateChange = fn;
202
+ }
203
+ // not used, used for touch input
204
+ registerOnTouched() { }
205
+ async selectItem(index) {
206
+ if (index < 0 || !this.items || this.items.length === 0) {
207
+ this.selectedItem = null;
208
+ }
209
+ else {
210
+ this.selectedItem = this.items[index];
211
+ if (this.displayTextFieldName) {
212
+ const text = SlickUtilsService.getDeepObject(this.selectedItem, this.displayTextFieldName);
213
+ if (text) {
214
+ this.inputRef.value = text;
215
+ this.lastInputValue = this.inputRef.value;
216
+ }
217
+ }
218
+ }
219
+ this.propagateChange(this.selectedItem);
220
+ if (this.onSelect)
221
+ this.onSelect.emit(this.selectedItem);
222
+ // Call to update the model for the textbox
223
+ await SlickSleepService.sleep();
224
+ let evt = document.createEvent('Event');
225
+ evt.initEvent('input', true, false);
226
+ this.inputRef.dispatchEvent(evt);
227
+ }
228
+ async expand() {
229
+ this.reposition();
230
+ // If the flag to show items is false, don't display "Loading..."
231
+ if (this.showNoItemsFoundDisplay === false && (!this.items || this.items.length === 0)) {
232
+ this.showAutoComplete = false;
233
+ this.autoCompleteVisiblity = false;
234
+ this.expanded = false;
235
+ return;
236
+ }
237
+ this.showAutoComplete = true;
238
+ this.autoCompleteRef.nativeElement.style.display = "inline-block";
239
+ await SlickSleepService.sleep();
240
+ this.autoCompleteVisiblity = true;
241
+ this.expanded = true;
242
+ this.inputRef.classList.add("slick-auto-complete_remove-bottom-left-border-radius");
243
+ this.inputRef.classList.add("slick-auto-complete_remove-bottom-right-border-radius");
244
+ // This is necessary, otherwise `this` in the reposition function will be window
245
+ // and not the component.
246
+ // Since angular has no way to use the third parameter, I'm doing this in raw js
247
+ document.addEventListener("click", this.fnDocumentClick, true);
248
+ }
249
+ collapse() {
250
+ let inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, "input-group-prepend");
251
+ if (inputGroupPrepend)
252
+ inputGroupPrepend.classList.remove("slick-auto-complete_remove-bottom-left-border-radius");
253
+ this.inputRef.classList.remove("slick-auto-complete_remove-bottom-left-border-radius");
254
+ this.inputRef.classList.remove("slick-auto-complete_remove-bottom-right-border-radius");
255
+ this.autoCompleteVisiblity = false;
256
+ this.expanded = false;
257
+ this.autoCompleteRef.nativeElement.style.display = "none";
258
+ // Since angular has no way to use the third parameter, I'm doing this in raw js
259
+ document.removeEventListener("click", this.fnDocumentClick, true);
260
+ }
261
+ reposition() {
262
+ let rect = this.inputRef.getBoundingClientRect();
263
+ let inputLeft = rect.left;
264
+ let inputTop = rect.top;
265
+ let inputHeight = this.inputRef.offsetHeight;
266
+ let inputWidth = this.inputRef.offsetWidth;
267
+ let inputGroupPrepend = SlickUtilsService.getClosestSibling(this.inputRef, "input-group-prepend");
268
+ if (inputGroupPrepend) {
269
+ inputLeft = inputGroupPrepend.getBoundingClientRect().left;
270
+ inputWidth = inputWidth += inputGroupPrepend.offsetWidth;
271
+ inputGroupPrepend.classList.add("slick-auto-complete_remove-bottom-left-border-radius");
272
+ }
273
+ this.left = (inputLeft + this.offset) + "px";
274
+ this.top = (inputTop + inputHeight + 1) + "px";
275
+ if (this.listWidth === '100%')
276
+ this.width = inputWidth + "px";
277
+ else if (this.listWidth === 'auto')
278
+ this.width = "auto";
279
+ else
280
+ this.width = this.listWidth;
281
+ }
282
+ async refreshItems(expand) {
283
+ return new Promise(async (resolve) => {
284
+ await this.slickFunctionLockService.lock("AUTO_COMPLETE_WAIT_FOR_ITEMS");
285
+ clearInterval(this.waitForItemsInterval);
286
+ this.items = null;
287
+ if (!this.onRefresh || !this.inputRef.value) {
288
+ this.items = [];
289
+ this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
290
+ resolve();
291
+ }
292
+ else {
293
+ this.loading = true;
294
+ if (this.showNoItemsFoundDisplay === false)
295
+ this.collapse();
296
+ // Call the users refresh method to get a fresh list of items
297
+ this.onRefresh.emit(this.inputRef.value);
298
+ // Wait for the list to refresh
299
+ let timeoutCheck = 1000;
300
+ this.waitForItemsInterval = setInterval(() => {
301
+ // If we've timedout, got a response or they started typing something else, stop the interval
302
+ if (timeoutCheck <= 0 || this.items) {
303
+ clearInterval(this.waitForItemsInterval);
304
+ if (timeoutCheck <= 0) {
305
+ console.error("Timed out waiting for list in auto complete");
306
+ this.items = [];
307
+ if (this.showNoItemsFoundDisplay === false)
308
+ this.collapse();
309
+ }
310
+ this.loading = false;
311
+ if (expand)
312
+ this.expand();
313
+ this.slickFunctionLockService.release("AUTO_COMPLETE_WAIT_FOR_ITEMS");
314
+ resolve();
315
+ }
316
+ timeoutCheck--;
317
+ }, 100);
318
+ }
319
+ });
320
+ }
321
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteComponent, deps: [{ token: i1.SlickFunctionLockService }], target: i0.ɵɵFactoryTarget.Component }); }
322
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickAutoCompleteComponent, selector: "slick-auto-complete", inputs: { inputRef: "inputRef", searchBarRef: "searchBarRef", items: "items", delay: "delay", selectFirst: "selectFirst", displayTextFieldName: "displayTextFieldName", offset: "offset", listHeight: "listHeight", listWidth: "listWidth", allowFreeformText: "allowFreeformText", showNoItemsFoundDisplay: "showNoItemsFoundDisplay" }, outputs: { onRefresh: "onRefresh", onSelect: "onSelect", onFreeformTextSelect: "onFreeformTextSelect" }, providers: [
323
+ {
324
+ provide: NG_VALUE_ACCESSOR,
325
+ useExisting: forwardRef((() => SlickAutoCompleteComponent)),
326
+ multi: true
327
+ }
328
+ ], queries: [{ propertyName: "listItemTemplateRef", first: true, predicate: SlickAutoCompleteListItemTemplateDirective, descendants: true, static: true }], viewQueries: [{ propertyName: "autoCompleteRef", first: true, predicate: ["autoCompleteRef"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteComponent, decorators: [{
331
+ type: Component,
332
+ args: [{ selector: 'slick-auto-complete', providers: [
333
+ {
334
+ provide: NG_VALUE_ACCESSOR,
335
+ useExisting: forwardRef((() => SlickAutoCompleteComponent)),
336
+ multi: true
337
+ }
338
+ ], template: "<div #autoCompleteRef id=\"slick-auto-complete_{{uuid}}\" class='slick-auto-complete dropdown-menu' [style.width]=\"width\" [style.minWidth]=\"width\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"listHeight\" [style.left]=\"left\" [style.top]=\"top\">\r\n\t<div *ngIf=\"loading\" style=\"font-size: .8rem\" class=\"ms-3 py-2\">Loading...</div>\r\n\t<div *ngIf=\"!loading && items?.length === 0\" style=\"font-size: .8rem\" class=\"ms-3\">\r\n\t\tNo items found\r\n\t</div>\r\n\t<div *ngIf=\"!loading && items?.length > 0\">\r\n\t\t<div *ngFor=\"let item of items; let index = index;\" (click)=\"onItemClick(index)\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">\r\n\t\t\t<ng-container *ngTemplateOutlet=\"listItemTemplateRef.template, context: { $implicit: item, index: index }\">\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n" }]
339
+ }], ctorParameters: () => [{ type: i1.SlickFunctionLockService }], propDecorators: { inputRef: [{
340
+ type: Input,
341
+ args: ["inputRef"]
342
+ }], searchBarRef: [{
343
+ type: Input,
344
+ args: ["searchBarRef"]
345
+ }], items: [{
346
+ type: Input,
347
+ args: ["items"]
348
+ }], delay: [{
349
+ type: Input,
350
+ args: ["delay"]
351
+ }], selectFirst: [{
352
+ type: Input,
353
+ args: ["selectFirst"]
354
+ }], displayTextFieldName: [{
355
+ type: Input,
356
+ args: ["displayTextFieldName"]
357
+ }], offset: [{
358
+ type: Input,
359
+ args: ["offset"]
360
+ }], listHeight: [{
361
+ type: Input,
362
+ args: ["listHeight"]
363
+ }], listWidth: [{
364
+ type: Input,
365
+ args: ["listWidth"]
366
+ }], allowFreeformText: [{
367
+ type: Input,
368
+ args: ["allowFreeformText"]
369
+ }], showNoItemsFoundDisplay: [{
370
+ type: Input,
371
+ args: ["showNoItemsFoundDisplay"]
372
+ }], onRefresh: [{
373
+ type: Output,
374
+ args: ["onRefresh"]
375
+ }], onSelect: [{
376
+ type: Output,
377
+ args: ["onSelect"]
378
+ }], onFreeformTextSelect: [{
379
+ type: Output,
380
+ args: ["onFreeformTextSelect"]
381
+ }], autoCompleteRef: [{
382
+ type: ViewChild,
383
+ args: ["autoCompleteRef", { static: true }]
384
+ }], listItemTemplateRef: [{
385
+ type: ContentChild,
386
+ args: [SlickAutoCompleteListItemTemplateDirective, { static: true }]
387
+ }] } });
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1hdXRvLWNvbXBsZXRlL3NsaWNrLWF1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stYXV0by1jb21wbGV0ZS9zbGljay1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUNwTCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFZakUsTUFBTSxPQUFPLDBCQUEwQjtJQTBDdEMsWUFBb0Isd0JBQWtEO1FBQWxELDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUF0Q3RELFVBQUssR0FBVyxHQUFHLENBQUM7UUFDZCxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVqQyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLE9BQU8sQ0FBQztRQUN0QixjQUFTLEdBQVcsTUFBTSxDQUFDO1FBQ25CLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUNuQiw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsY0FBUyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzlELGFBQVEsR0FBc0IsSUFBSSxZQUFZ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QUMsc0JBQXNCO2dCQUNaLE1BQU07c0JBQXRCLEtBQUs7dUJBQUMsUUFBUTtnQkFDTSxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ0MsU0FBUztzQkFBNUIsS0FBSzt1QkFBQyxXQUFXO2dCQUNVLGlCQUFpQjtzQkFBNUMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ1EsdUJBQXVCO3NCQUF4RCxLQUFLO3VCQUFDLHlCQUF5QjtnQkFDWCxTQUFTO3NCQUE3QixNQUFNO3VCQUFDLFdBQVc7Z0JBQ0MsUUFBUTtzQkFBM0IsTUFBTTt1QkFBQyxVQUFVO2dCQUNjLG9CQUFvQjtzQkFBbkQsTUFBTTt1QkFBQyxzQkFBc0I7Z0JBRWtCLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUM4QixtQkFBbUI7c0JBQTlGLFlBQVk7dUJBQUMsMENBQTBDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBDb250ZW50Q2hpbGQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gXCIuL3NsaWNrLWF1dG8tY29tcGxldGUtbGlzdC1pdGVtLXRlbXBsYXRlLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSBcIi4uL3NsaWNrLXNlYXJjaC1iYXIvc2xpY2stc2VhcmNoLWJhci5tb2R1bGVcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWF1dG8tY29tcGxldGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblx0QElucHV0KFwiaW5wdXRSZWZcIikgaW5wdXRSZWY6IEhUTUxJbnB1dEVsZW1lbnQ7XHJcblx0QElucHV0KFwic2VhcmNoQmFyUmVmXCIpIHNlYXJjaEJhclJlZjogU2xpY2tTZWFyY2hCYXJDb21wb25lbnQ7XHJcblx0QElucHV0KFwiaXRlbXNcIikgaXRlbXM6IGFueVtdO1xyXG5cdEBJbnB1dChcImRlbGF5XCIpIGRlbGF5OiBudW1iZXIgPSAzMDA7XHJcblx0QElucHV0KFwic2VsZWN0Rmlyc3RcIikgc2VsZWN0Rmlyc3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdEBJbnB1dChcImRpc3BsYXlUZXh0RmllbGROYW1lXCIpIGRpc3BsYXlUZXh0RmllbGROYW1lOiBzdHJpbmc7XHJcblx0QElucHV0KFwib2Zmc2V0XCIpIG9mZnNldDogbnVtYmVyID0gMDtcclxuXHRASW5wdXQoXCJsaXN0SGVpZ2h0XCIpIGxpc3RIZWlnaHQgPSBcIjMwMHB4XCI7XHJcblx0QElucHV0KFwibGlzdFdpZHRoXCIpIGxpc3RXaWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dChcImFsbG93RnJlZWZvcm1UZXh0XCIpIGFsbG93RnJlZWZvcm1UZXh0ID0gdHJ1ZTtcclxuXHRASW5wdXQoXCJzaG93Tm9JdGVtc0ZvdW5kRGlzcGxheVwiKSBzaG93Tm9JdGVtc0ZvdW5kRGlzcGxheSA9IHRydWU7XHJcblx0QE91dHB1dChcIm9uUmVmcmVzaFwiKSBvblJlZnJlc2g6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblx0QE91dHB1dChcIm9uU2VsZWN0XCIpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoXCJvbkZyZWVmb3JtVGV4dFNlbGVjdFwiKSBvbkZyZWVmb3JtVGV4dFNlbGVjdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImF1dG9Db21wbGV0ZVJlZlwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBhdXRvQ29tcGxldGVSZWY6IEVsZW1lbnRSZWY7XHJcblx0QENvbnRlbnRDaGlsZChTbGlja0F1dG9Db21wbGV0ZUxpc3RJdGVtVGVtcGxhdGVEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGxpc3RJdGVtVGVtcGxhdGVSZWY6IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZTtcclxuXHJcblx0Zm5Eb2N1bWVudENsaWNrID0gKGUpID0+IHRoaXMuZG9jdW1lbnRDbGljayhlKTtcclxuXHRmbktleURvd24gPSAoZSkgPT4gdGhpcy5rZXlEb3duKGUpO1xyXG5cclxuXHRwcml2YXRlIHNlbGVjdGVkSXRlbTogYW55O1xyXG5cdHByaXZhdGUgZGVsYXlUaW1lb3V0OiBOb2RlSlMuVGltZW91dDtcclxuXHRwcml2YXRlIHdhaXRGb3JJdGVtc0ludGVydmFsOiBOb2RlSlMuVGltZW91dDtcclxuXHRwcml2YXRlIGxhc3RJbnB1dFZhbHVlOiBzdHJpbmcgPSBcIlwiO1xyXG5cdHByaXZhdGUgZm9yY2VkQ29sbGFwc2UgPSBmYWxzZTtcclxuXHJcblx0Ly8gVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhhdCB0aGUgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzIGNhbiBhZGQgYW5kIHJlbW92ZSB0aGUgZXZlbnQgcHJvcGVybHksXHJcblx0Ly8gYXMgd2VsbCBhcyBnZXR0aW5nIHRoZSBjb3JyZWN0IEVTNiBmdW5jdGlvblxyXG5cdHByaXZhdGUgZm5SZXBvc2l0aW9uID0gKCkgPT4gdGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdHV1aWQ6IHN0cmluZztcclxuXHRsZWZ0OiBzdHJpbmc7XHJcblx0dG9wOiBzdHJpbmc7XHJcblx0d2lkdGg6IHN0cmluZztcclxuXHRzZWxlY3RlZEluZGV4OiBudW1iZXIgPSAtMTtcclxuXHRzaG93QXV0b0NvbXBsZXRlOiBib29sZWFuID0gZmFsc2U7XHJcblx0YXV0b0NvbXBsZXRlVmlzaWJsaXR5OiBib29sZWFuID0gZmFsc2U7XHJcblx0ZXhwYW5kZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2U6IFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSkge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0aWYgKHRoaXMuc2VhcmNoQmFyUmVmKSBcclxuXHRcdFx0dGhpcy5pbnB1dFJlZiA9ICg8RWxlbWVudFJlZj50aGlzLnNlYXJjaEJhclJlZi5zbGlja1NlYXJjaFRleHRCb3hSZWYpLm5hdGl2ZUVsZW1lbnQ7XHJcblx0XHRcclxuXHRcdC8vIFJlbW92ZSB0aGlzIGZyb20gdGhlIGlubGluZSB2ZXJzaW9uIGFuZCBwdXQgaXQgb24gdGhlIGJvZHkgc28gdGhhdCBpdCBkb2Vzbid0IGhpZGUgYmVoaW5kIHRoZSBib3R0b21cclxuXHRcdC8vIG9mIGEgZGl2IHdoZW4gaXQgZXhwYW5kcyBiZXlvbmQgdGhlIGJvdHRvbS5cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKHRoaXMuYXV0b0NvbXBsZXRlUmVmKTtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5hdXRvQ29tcGxldGVSZWYubmF0aXZlRWxlbWVudCk7XHJcblxyXG5cdFx0dGhpcy5pbnB1dFJlZi5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmZuS2V5RG93bik7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cdFx0dGhpcy5pbnB1dFJlZi5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLmZuS2V5RG93bik7XHJcblxyXG5cdFx0Y2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcclxuXHRcdHRoaXMuZGVsYXlUaW1lb3V0ID0gbnVsbDtcclxuXHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblxyXG5cdFx0Ly8gSXMgb2theSBpZiB0aGlzIGZhaWxzLiAgSXQganVzdCBtZWFucyBpdCB3YXMgYWxyZWFkeSByZW1vdmVkLlxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmF1dG9Db21wbGV0ZVJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIHsgfVxyXG5cdH1cclxuXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1x0XHRcclxuXHRcdGlmIChjaGFuZ2VzLmFsbG93RnJlZWZvcm1UZXh0KSBcclxuXHRcdFx0dGhpcy5hbGxvd0ZyZWVmb3JtVGV4dCA9ICh0aGlzLmFsbG93RnJlZWZvcm1UZXh0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHRcdFxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNob3dOb0l0ZW1zRm91bmREaXNwbGF5KVxyXG5cdFx0XHR0aGlzLnNob3dOb0l0ZW1zRm91bmREaXNwbGF5ID0gKHRoaXMuc2hvd05vSXRlbXNGb3VuZERpc3BsYXkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSA/IGZhbHNlIDogdHJ1ZTtcdFx0XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuaXRlbXMpIHtcclxuXHRcdFx0aWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zaG93Tm9JdGVtc0ZvdW5kRGlzcGxheSA9PT0gZmFsc2UpXHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChpc05hTih0aGlzLm9mZnNldCkpXHJcblx0XHRcdHRoaXMub2Zmc2V0ID0gcGFyc2VJbnQodGhpcy5vZmZzZXQudG9TdHJpbmcoKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGRvY3VtZW50Q2xpY2soZTogTW91c2VFdmVudCkge1xyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICFlLnRhcmdldClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChlLnRhcmdldCA9PT0gdGhpcy5pbnB1dFJlZilcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1hdXRvLWNvbXBsZXRlX1wiICsgdGhpcy51dWlkKSA9PT0gZmFsc2UpIHtcclxuXHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLndhaXRGb3JJdGVtc0ludGVydmFsKTtcclxuXHRcdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIkFVVE9fQ09NUExFVEVfV0FJVF9GT1JfSVRFTVNcIik7XHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLmFsbG93RnJlZWZvcm1UZXh0ICYmIHRoaXMub25GcmVlZm9ybVRleHRTZWxlY3QpXHJcblx0XHRcdFx0dGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdC5lbWl0KHRoaXMuaW5wdXRSZWYudmFsdWUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaW5kZXgpIHtcclxuXHRcdHRoaXMuc2VsZWN0SXRlbShpbmRleCk7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdC8vIGFsdFxyXG5cdFx0aWYgKGV2ZW50LmtleUNvZGUgPT09IDE4KVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLndhaXRGb3JJdGVtc0ludGVydmFsKTtcclxuXHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJBVVRPX0NPTVBMRVRFX1dBSVRfRk9SX0lURU1TXCIpO1xyXG5cclxuXHRcdC8vIElmIHdlJ3JlIGp1c3QgdGFiYmluZyB0aHJvdWdoLCBkb24ndCBldmVuIGRvIGFueXRoaW5nXHJcblx0XHRpZiAoIXRoaXMubGFzdElucHV0VmFsdWUgJiYgKGV2ZW50LmtleUNvZGUgPT09IDkgfHwgZXZlbnQua2V5Q29kZSA9PT0gMTMpKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRpZiAodGhpcy5sYXN0SW5wdXRWYWx1ZSAhPT0gdGhpcy5pbnB1dFJlZi52YWx1ZSkge1xyXG5cdFx0XHR0aGlzLmxhc3RJbnB1dFZhbHVlID0gdGhpcy5pbnB1dFJlZi52YWx1ZTtcclxuXHRcdFx0dGhpcy5mb3JjZWRDb2xsYXBzZSA9IGZhbHNlO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLmxhc3RJbnB1dFZhbHVlKSB7XHJcblx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XHJcblx0XHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xyXG5cdFx0XHR0aGlzLmRlbGF5VGltZW91dCA9IG51bGw7XHJcblx0XHRcdGlmICh0aGlzLmlucHV0UmVmLnZhbHVlID09PSAnJykge1xyXG5cdFx0XHRcdHRoaXMuaXRlbXMgPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmRlbGF5VGltZW91dCA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xyXG5cdFx0XHRcdFx0KHRoaXMuc2VsZWN0Rmlyc3QgPT09IHRydWUpID8gdGhpcy5zZWxlY3RlZEluZGV4ID0gMCA6IHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cdFx0XHRcdFx0dGhpcy5kZWxheVRpbWVvdXQgPSBudWxsO1xyXG5cdFx0XHRcdFx0dGhpcy5pdGVtcyA9IG51bGw7XHJcblx0XHRcdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5yZWZyZXNoSXRlbXModHJ1ZSk7XHJcblx0XHRcdFx0fSwgdGhpcy5kZWxheSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZXZlbnQua2V5Q29kZSA9PT0gOSB8fCBldmVudC5rZXlDb2RlID09PSAxMykge1xyXG5cdFx0XHRpZiAodGhpcy5kZWxheVRpbWVvdXQgJiYgdGhpcy5zZWxlY3RGaXJzdCkge1xyXG5cdFx0XHRcdGNsZWFyVGltZW91dCh0aGlzLmRlbGF5VGltZW91dCk7XHJcblx0XHRcdFx0dGhpcy5kZWxheVRpbWVvdXQgPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMuaXRlbXMgPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0Rmlyc3QgPT09IHRydWUgJiYgIXRoaXMuZm9yY2VkQ29sbGFwc2UpIHtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMucmVmcmVzaEl0ZW1zKGZhbHNlKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cclxuXHRcdFx0XHRcdGlmICghdGhpcy5pdGVtcyAmJiAhdGhpcy5pbnB1dFJlZi52YWx1ZSAmJiB0aGlzLm9uU2VsZWN0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdChudWxsKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGVsc2UgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSW5kZXgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmFsbG93RnJlZWZvcm1UZXh0ICYmIHRoaXMub25GcmVlZm9ybVRleHRTZWxlY3QpIFxyXG5cdFx0XHRcdFx0XHRcdHRoaXMub25GcmVlZm9ybVRleHRTZWxlY3QuZW1pdCh0aGlzLmlucHV0UmVmLnZhbHVlKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5hbGxvd0ZyZWVmb3JtVGV4dCAmJiB0aGlzLm9uRnJlZWZvcm1UZXh0U2VsZWN0KSBcclxuXHRcdFx0XHRcdFx0dGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdC5lbWl0KHRoaXMuaW5wdXRSZWYudmFsdWUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRjbGVhclRpbWVvdXQodGhpcy5kZWxheVRpbWVvdXQpO1xyXG5cdFx0XHRcdGlmICghdGhpcy5pdGVtcyAmJiAhdGhpcy5pbnB1dFJlZi52YWx1ZSAmJiB0aGlzLm9uU2VsZWN0KSB7XHJcblx0XHRcdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQobnVsbCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGVsc2UgaWYgKHRoaXMuaXRlbXMgJiYgdGhpcy5pdGVtcy5sZW5ndGggPiAwICYmIHRoaXMuZXhwYW5kZWQgJiYgIXRoaXMuZm9yY2VkQ29sbGFwc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSW5kZXgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmFsbG93RnJlZWZvcm1UZXh0ICYmIHRoaXMub25GcmVlZm9ybVRleHRTZWxlY3QpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5vbkZyZWVmb3JtVGV4dFNlbGVjdC5lbWl0KHRoaXMuaW5wdXRSZWYudmFsdWUpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLyBFc2NcclxuXHRcdGlmIChldmVudC53aGljaCA9PT0gMjcpIHtcclxuXHRcdFx0dGhpcy5mb3JjZWRDb2xsYXBzZSA9IHRydWU7XHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBBcnJvd3VwXHJcblx0XHRpZiAoZXZlbnQud2hpY2ggPT09IDM4KSB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPiAwKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleC0tO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93ZG93blxyXG5cdFx0aWYgKGV2ZW50LndoaWNoID09PSA0MCkge1xyXG5cdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcclxuXHJcblx0XHRcdGlmICghdGhpcy5leHBhbmRlZCkge1xyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGggLSAxKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCsrO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuXHQvLyB0aGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlIHNldCB0byB0aGUgY29tcG9uZW50XHJcblx0d3JpdGVWYWx1ZShvYmo6IGFueSkge1xyXG5cdFx0aWYgKG9iaikge1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKCkgeyB9XHJcblxyXG5cdGFzeW5jIHNlbGVjdEl0ZW0oaW5kZXg6IG51bWJlcikge1xyXG5cdFx0aWYgKGluZGV4IDwgMCB8fCAhdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLml0ZW1zW2luZGV4XTtcclxuXHRcdFx0aWYgKHRoaXMuZGlzcGxheVRleHRGaWVsZE5hbWUpIHtcclxuXHRcdFx0XHRjb25zdCB0ZXh0ID0gU2xpY2tVdGlsc1NlcnZpY2UuZ2V0RGVlcE9iamVjdCh0aGlzLnNlbGVjdGVkSXRlbSwgdGhpcy5kaXNwbGF5VGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdFx0aWYgKHRleHQpIHtcclxuXHRcdFx0XHRcdHRoaXMuaW5wdXRSZWYudmFsdWUgPSB0ZXh0O1xyXG5cdFx0XHRcdFx0dGhpcy5sYXN0SW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXRSZWYudmFsdWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZEl0ZW0pO1xyXG5cdFx0aWYgKHRoaXMub25TZWxlY3QpXHJcblx0XHRcdHRoaXMub25TZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcblx0XHQvLyBDYWxsIHRvIHVwZGF0ZSB0aGUgbW9kZWwgZm9yIHRoZSB0ZXh0Ym94XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0bGV0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xyXG5cdFx0ZXZ0LmluaXRFdmVudCgnaW5wdXQnLCB0cnVlLCBmYWxzZSk7XHJcblx0XHR0aGlzLmlucHV0UmVmLmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZXhwYW5kKCkge1xyXG5cdFx0dGhpcy5yZXBvc2l0aW9uKCk7XHJcblxyXG5cdFx0Ly8gSWYgdGhlIGZsYWcgdG8gc2hvdyBpdGVtcyBpcyBmYWxzZSwgZG9uJ3QgZGlzcGxheSBcIkxvYWRpbmcuLi5cIlxyXG5cdFx0aWYgKHRoaXMuc2hvd05vSXRlbXNGb3VuZERpc3BsYXkgPT09IGZhbHNlICYmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkpIHtcclxuXHRcdFx0dGhpcy5zaG93QXV0b0NvbXBsZXRlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlVmlzaWJsaXR5ID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuc2hvd0F1dG9Db21wbGV0ZSA9IHRydWU7XHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZVJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlVmlzaWJsaXR5ID0gdHJ1ZTtcclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuaW5wdXRSZWYuY2xhc3NMaXN0LmFkZChcInNsaWNrLWF1dG8tY29tcGxldGVfcmVtb3ZlLWJvdHRvbS1sZWZ0LWJvcmRlci1yYWRpdXNcIik7XHJcblx0XHR0aGlzLmlucHV0UmVmLmNsYXNzTGlzdC5hZGQoXCJzbGljay1hdXRvLWNvbXBsZXRlX3JlbW92ZS1ib3R0b20tcmlnaHQtYm9yZGVyLXJhZGl1c1wiKTtcclxuXHJcblx0XHQvLyBUaGlzIGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGB0aGlzYCBpbiB0aGUgcmVwb3NpdGlvbiBmdW5jdGlvbiB3aWxsIGJlIHdpbmRvd1xyXG5cdFx0Ly8gYW5kIG5vdCB0aGUgY29tcG9uZW50LlxyXG5cdFx0Ly8gU2luY2UgYW5ndWxhciBoYXMgbm8gd2F5IHRvIHVzZSB0aGUgdGhpcmQgcGFyYW1ldGVyLCBJJ20gZG9pbmcgdGhpcyBpbiByYXcganNcclxuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmZuRG9jdW1lbnRDbGljaywgdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNvbGxhcHNlKCkge1xyXG5cdFx0bGV0IGlucHV0R3JvdXBQcmVwZW5kID0gU2xpY2tVdGlsc1NlcnZpY2UuZ2V0Q2xvc2VzdFNpYmxpbmcodGhpcy5pbnB1dFJlZiwgXCJpbnB1dC1ncm91cC1wcmVwZW5kXCIpO1xyXG5cdFx0aWYgKGlucHV0R3JvdXBQcmVwZW5kKVxyXG5cdFx0XHRpbnB1dEdyb3VwUHJlcGVuZC5jbGFzc0xpc3QucmVtb3ZlKFwic2xpY2stYXV0by1jb21wbGV0ZV9yZW1vdmUtYm90dG9tLWxlZnQtYm9yZGVyLXJhZGl1c1wiKTtcclxuXHJcblx0XHR0aGlzLmlucHV0UmVmLmNsYXNzTGlzdC5yZW1vdmUoXCJzbGljay1hdXRvLWNvbXBsZXRlX3JlbW92ZS1ib3R0b20tbGVmdC1ib3JkZXItcmFkaXVzXCIpO1xyXG5cdFx0dGhpcy5pbnB1dFJlZi5jbGFzc0xpc3QucmVtb3ZlKFwic2xpY2stYXV0by1jb21wbGV0ZV9yZW1vdmUtYm90dG9tLXJpZ2h0LWJvcmRlci1yYWRpdXNcIik7XHJcblxyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVWaXNpYmxpdHkgPSBmYWxzZTtcclxuXHRcdHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZXBvc2l0aW9uKCkge1xyXG5cdFx0bGV0IHJlY3QgPSB0aGlzLmlucHV0UmVmLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0bGV0IGlucHV0TGVmdCA9IHJlY3QubGVmdDtcclxuXHRcdGxldCBpbnB1dFRvcCA9IHJlY3QudG9wO1xyXG5cdFx0bGV0IGlucHV0SGVpZ2h0ID0gdGhpcy5pbnB1dFJlZi5vZmZzZXRIZWlnaHQ7XHJcblx0XHRsZXQgaW5wdXRXaWR0aCA9IHRoaXMuaW5wdXRSZWYub2Zmc2V0V2lkdGg7XHJcblxyXG5cdFx0bGV0IGlucHV0R3JvdXBQcmVwZW5kID0gU2xpY2tVdGlsc1NlcnZpY2UuZ2V0Q2xvc2VzdFNpYmxpbmcodGhpcy5pbnB1dFJlZiwgXCJpbnB1dC1ncm91cC1wcmVwZW5kXCIpO1xyXG5cdFx0aWYgKGlucHV0R3JvdXBQcmVwZW5kKSB7XHJcblx0XHRcdGlucHV0TGVmdCA9IGlucHV0R3JvdXBQcmVwZW5kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcblx0XHRcdGlucHV0V2lkdGggPSBpbnB1dFdpZHRoICs9IGlucHV0R3JvdXBQcmVwZW5kLm9mZnNldFdpZHRoO1xyXG5cdFx0XHRpbnB1dEdyb3VwUHJlcGVuZC5jbGFzc0xpc3QuYWRkKFwic2xpY2stYXV0by1jb21wbGV0ZV9yZW1vdmUtYm90dG9tLWxlZnQtYm9yZGVyLXJhZGl1c1wiKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmxlZnQgPSAoaW5wdXRMZWZ0ICsgdGhpcy5vZmZzZXQpICsgXCJweFwiO1xyXG5cdFx0dGhpcy50b3AgPSAoaW5wdXRUb3AgKyBpbnB1dEhlaWdodCArIDEpICsgXCJweFwiO1xyXG5cdFx0aWYgKHRoaXMubGlzdFdpZHRoID09PSAnMTAwJScpXHJcblx0XHRcdHRoaXMud2lkdGggPSBpbnB1dFdpZHRoICsgXCJweFwiO1xyXG5cdFx0ZWxzZSBpZiAodGhpcy5saXN0V2lkdGggPT09ICdhdXRvJylcclxuXHRcdFx0dGhpcy53aWR0aCA9IFwiYXV0b1wiO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR0aGlzLndpZHRoID0gdGhpcy5saXN0V2lkdGg7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIHJlZnJlc2hJdGVtcyhleHBhbmQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiQVVUT19DT01QTEVURV9XQUlUX0ZPUl9JVEVNU1wiKTtcclxuXHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLndhaXRGb3JJdGVtc0ludGVydmFsKTtcclxuXHRcdFx0dGhpcy5pdGVtcyA9IG51bGw7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMub25SZWZyZXNoIHx8ICF0aGlzLmlucHV0UmVmLnZhbHVlKSB7XHJcblx0XHRcdFx0dGhpcy5pdGVtcyA9IFtdO1xyXG5cdFx0XHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJBVVRPX0NPTVBMRVRFX1dBSVRfRk9SX0lURU1TXCIpO1xyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdGlmICh0aGlzLnNob3dOb0l0ZW1zRm91bmREaXNwbGF5ID09PSBmYWxzZSlcclxuXHRcdFx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHRcdFx0XHQvLyBDYWxsIHRoZSB1c2VycyByZWZyZXNoIG1ldGhvZCB0byBnZXQgYSBmcmVzaCBsaXN0IG9mIGl0ZW1zXHJcblx0XHRcdFx0dGhpcy5vblJlZnJlc2guZW1pdCh0aGlzLmlucHV0UmVmLnZhbHVlKTtcclxuXHJcblx0XHRcdFx0Ly8gV2FpdCBmb3IgdGhlIGxpc3QgdG8gcmVmcmVzaFxyXG5cdFx0XHRcdGxldCB0aW1lb3V0Q2hlY2sgPSAxMDAwO1xyXG5cdFx0XHRcdHRoaXMud2FpdEZvckl0ZW1zSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0XHQvLyBJZiB3ZSd2ZSB0aW1lZG91dCwgZ290IGEgcmVzcG9uc2Ugb3IgdGhleSBzdGFydGVkIHR5cGluZyBzb21ldGhpbmcgZWxzZSwgc3RvcCB0aGUgaW50ZXJ2YWxcclxuXHRcdFx0XHRcdGlmICh0aW1lb3V0Q2hlY2sgPD0gMCB8fCB0aGlzLml0ZW1zKSB7XHJcblx0XHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwodGhpcy53YWl0Rm9ySXRlbXNJbnRlcnZhbCk7XHJcblx0XHRcdFx0XHRcdGlmICh0aW1lb3V0Q2hlY2sgPD0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJUaW1lZCBvdXQgd2FpdGluZyBmb3IgbGlzdCBpbiBhdXRvIGNvbXBsZXRlXCIpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaXRlbXMgPSBbXTtcclxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5zaG93Tm9JdGVtc0ZvdW5kRGlzcGxheSA9PT0gZmFsc2UpXHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHRcdGlmIChleHBhbmQpXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIkFVVE9fQ09NUExFVEVfV0FJVF9GT1JfSVRFTVNcIik7XHJcblx0XHRcdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR0aW1lb3V0Q2hlY2stLTtcclxuXHRcdFx0XHR9LCAxMDApO1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH1cclxuXHJcbn0iLCI8ZGl2ICNhdXRvQ29tcGxldGVSZWYgaWQ9XCJzbGljay1hdXRvLWNvbXBsZXRlX3t7dXVpZH19XCIgY2xhc3M9J3NsaWNrLWF1dG8tY29tcGxldGUgZHJvcGRvd24tbWVudScgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgW3N0eWxlLm1pbldpZHRoXT1cIndpZHRoXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm9wYWNpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICcxJyA6ICcwJ1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImxpc3RIZWlnaHRcIiBbc3R5bGUubGVmdF09XCJsZWZ0XCIgW3N0eWxlLnRvcF09XCJ0b3BcIj5cclxuXHQ8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIHN0eWxlPVwiZm9udC1zaXplOiAuOHJlbVwiIGNsYXNzPVwibXMtMyBweS0yXCI+TG9hZGluZy4uLjwvZGl2PlxyXG5cdDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiBpdGVtcz8ubGVuZ3RoID09PSAwXCIgc3R5bGU9XCJmb250LXNpemU6IC44cmVtXCIgY2xhc3M9XCJtcy0zXCI+XHJcblx0XHRObyBpdGVtcyBmb3VuZFxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiBpdGVtcz8ubGVuZ3RoID4gMFwiPlxyXG5cdFx0PGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGluZGV4KVwiIFtjbGFzcy5jYXJkLWhlYWRlcl09XCJzZWxlY3RlZEluZGV4ID09PSBpbmRleFwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxyXG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEl0ZW1UZW1wbGF0ZVJlZi50ZW1wbGF0ZSwgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sIGluZGV4OiBpbmRleCB9XCI+XHJcblx0XHRcdDwvbmctY29udGFpbmVyPlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,25 +1,25 @@
1
- import { NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { FormsModule } from '@angular/forms';
4
- import { SlickSearchBarModule } from "../slick-search-bar/slick-search-bar.module";
5
- import { SlickAutoCompleteComponent } from "./slick-auto-complete.component";
6
- import { SlickAutoCompleteListItemTemplateDirective } from "./slick-auto-complete-list-item-template.directive";
7
- import { SlickFunctionLockService } from "../utils/slick-function-lock.service";
8
- import * as i0 from "@angular/core";
9
- export class SlickAutoCompleteModule {
10
- }
11
- /** @nocollapse */ SlickAutoCompleteModulefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- /** @nocollapse */ SlickAutoCompleteModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteModule, declarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective], imports: [CommonModule, FormsModule, SlickSearchBarModule], exports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective] });
13
- /** @nocollapse */ SlickAutoCompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteModule, providers: [SlickFunctionLockService], imports: [CommonModule, FormsModule, SlickSearchBarModule] });
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickAutoCompleteModule, decorators: [{
15
- type: NgModule,
16
- args: [{
17
- imports: [CommonModule, FormsModule, SlickSearchBarModule],
18
- declarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],
19
- exports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],
20
- providers: [SlickFunctionLockService]
21
- }]
22
- }] });
23
- export { SlickAutoCompleteComponent };
24
- export { SlickAutoCompleteListItemTemplateDirective };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1hdXRvLWNvbXBsZXRlL3NsaWNrLWF1dG8tY29tcGxldGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFRaEYsTUFBTSxPQUFPLHVCQUF1Qjs7dUlBQXZCLHVCQUF1Qjt3SUFBdkIsdUJBQXVCLGlCQUpwQiwwQkFBMEIsRUFBRSwwQ0FBMEMsYUFEM0UsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsYUFFL0MsMEJBQTBCLEVBQUUsMENBQTBDO3dJQUdwRSx1QkFBdUIsYUFGeEIsQ0FBQyx3QkFBd0IsQ0FBQyxZQUgzQixZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQjsyRkFLN0MsdUJBQXVCO2tCQU5uQyxRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7b0JBQzFELFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLDBDQUEwQyxDQUFDO29CQUN0RixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwwQ0FBMEMsQ0FBQztvQkFDakYsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3JDOztBQUdELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTbGlja1NlYXJjaEJhck1vZHVsZSB9IGZyb20gXCIuLi9zbGljay1zZWFyY2gtYmFyL3NsaWNrLXNlYXJjaC1iYXIubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU2xpY2tBdXRvQ29tcGxldGVMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSBcIi4vc2xpY2stYXV0by1jb21wbGV0ZS1saXN0LWl0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1mdW5jdGlvbi1sb2NrLnNlcnZpY2VcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNsaWNrU2VhcmNoQmFyTW9kdWxlXSxcclxuXHRkZWNsYXJhdGlvbnM6IFtTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCwgU2xpY2tBdXRvQ29tcGxldGVMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlXSxcclxuXHRleHBvcnRzOiBbU2xpY2tBdXRvQ29tcGxldGVDb21wb25lbnQsIFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZV0sXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tBdXRvQ29tcGxldGVNb2R1bGUgeyB9XHJcblxyXG5leHBvcnQgeyBTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCB9XHJcbmV4cG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9Il19
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { FormsModule } from '@angular/forms';
4
+ import { SlickSearchBarModule } from "../slick-search-bar/slick-search-bar.module";
5
+ import { SlickAutoCompleteComponent } from "./slick-auto-complete.component";
6
+ import { SlickAutoCompleteListItemTemplateDirective } from "./slick-auto-complete-list-item-template.directive";
7
+ import { SlickFunctionLockService } from "../utils/slick-function-lock.service";
8
+ import * as i0 from "@angular/core";
9
+ export class SlickAutoCompleteModule {
10
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ /** @nocollapse */ static { thismod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteModule, declarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective], imports: [CommonModule, FormsModule, SlickSearchBarModule], exports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective] }); }
12
+ /** @nocollapse */ static { thisinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteModule, providers: [SlickFunctionLockService], imports: [CommonModule, FormsModule, SlickSearchBarModule] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickAutoCompleteModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ imports: [CommonModule, FormsModule, SlickSearchBarModule],
18
+ declarations: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],
19
+ exports: [SlickAutoCompleteComponent, SlickAutoCompleteListItemTemplateDirective],
20
+ providers: [SlickFunctionLockService]
21
+ }]
22
+ }] });
23
+ export { SlickAutoCompleteComponent };
24
+ export { SlickAutoCompleteListItemTemplateDirective };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1hdXRvLWNvbXBsZXRlL3NsaWNrLWF1dG8tY29tcGxldGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNoSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFRaEYsTUFBTSxPQUFPLHVCQUF1QjtpSUFBdkIsdUJBQXVCO2tJQUF2Qix1QkFBdUIsaUJBSnBCLDBCQUEwQixFQUFFLDBDQUEwQyxhQUQzRSxZQUFZLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixhQUUvQywwQkFBMEIsRUFBRSwwQ0FBMEM7a0lBR3BFLHVCQUF1QixhQUZ4QixDQUFDLHdCQUF3QixDQUFDLFlBSDNCLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9COzsyRkFLN0MsdUJBQXVCO2tCQU5uQyxRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLENBQUM7b0JBQzFELFlBQVksRUFBRSxDQUFDLDBCQUEwQixFQUFFLDBDQUEwQyxDQUFDO29CQUN0RixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwwQ0FBMEMsQ0FBQztvQkFDakYsU0FBUyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3JDOztBQUdELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTbGlja1NlYXJjaEJhck1vZHVsZSB9IGZyb20gXCIuLi9zbGljay1zZWFyY2gtYmFyL3NsaWNrLXNlYXJjaC1iYXIubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stYXV0by1jb21wbGV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU2xpY2tBdXRvQ29tcGxldGVMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSBcIi4vc2xpY2stYXV0by1jb21wbGV0ZS1saXN0LWl0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1mdW5jdGlvbi1sb2NrLnNlcnZpY2VcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFNsaWNrU2VhcmNoQmFyTW9kdWxlXSxcclxuXHRkZWNsYXJhdGlvbnM6IFtTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCwgU2xpY2tBdXRvQ29tcGxldGVMaXN0SXRlbVRlbXBsYXRlRGlyZWN0aXZlXSxcclxuXHRleHBvcnRzOiBbU2xpY2tBdXRvQ29tcGxldGVDb21wb25lbnQsIFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZV0sXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tBdXRvQ29tcGxldGVNb2R1bGUgeyB9XHJcblxyXG5leHBvcnQgeyBTbGlja0F1dG9Db21wbGV0ZUNvbXBvbmVudCB9XHJcbmV4cG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlTGlzdEl0ZW1UZW1wbGF0ZURpcmVjdGl2ZSB9Il19