@firestitch/filter 12.13.3 → 13.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 (253) hide show
  1. package/app/classes/actions-controller.d.ts +41 -41
  2. package/app/components/action-button/action-button.component.d.ts +9 -9
  3. package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
  4. package/app/components/actions/actions.component.d.ts +8 -8
  5. package/app/components/filter/filter.component.d.ts +192 -192
  6. package/app/components/filter-chip/filter-chip.component.d.ts +26 -26
  7. package/app/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
  8. package/app/components/filter-chips/filter-chips.component.d.ts +10 -10
  9. package/app/components/filter-drawer/filter-drawer.component.d.ts +30 -30
  10. package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +15 -15
  11. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -13
  12. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -16
  13. package/app/components/filters-item/base-item/base-item.component.d.ts +25 -25
  14. package/app/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
  15. package/app/components/filters-item/chips/chips.component.d.ts +13 -13
  16. package/app/components/filters-item/date/date.component.d.ts +20 -20
  17. package/app/components/filters-item/date-range/date-range.component.d.ts +15 -15
  18. package/app/components/filters-item/filter-item.component.d.ts +39 -39
  19. package/app/components/filters-item/range/range.component.d.ts +15 -15
  20. package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
  21. package/app/components/filters-item/select/groups/groups.component.d.ts +12 -12
  22. package/app/components/filters-item/select/multiple/multiple.component.d.ts +15 -15
  23. package/app/components/filters-item/select/select.component.d.ts +23 -23
  24. package/app/components/filters-item/select/simple/simple.component.d.ts +14 -14
  25. package/app/components/filters-item/text/text.component.d.ts +19 -19
  26. package/app/components/filters-item/week/week.component.d.ts +12 -12
  27. package/app/components/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
  28. package/app/components/saved-filters-menu/saved-filters-menu.component.d.ts +23 -23
  29. package/app/consts/query-param-delimiter.d.ts +1 -1
  30. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
  31. package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
  32. package/app/enums/action-mode.enum.d.ts +5 -5
  33. package/app/enums/action-type.enum.d.ts +9 -9
  34. package/app/enums/button-style.d.ts +9 -9
  35. package/app/enums/index.d.ts +6 -6
  36. package/app/enums/item-date-mode.enum.d.ts +5 -5
  37. package/app/enums/item-type.enum.d.ts +15 -15
  38. package/app/enums/picker-view-type.enum.d.ts +7 -7
  39. package/app/fs-filter.module.d.ts +65 -65
  40. package/app/helpers/build-query-params.d.ts +3 -3
  41. package/app/helpers/compare.d.ts +2 -2
  42. package/app/helpers/create-filter-item.d.ts +14 -14
  43. package/app/helpers/find-value.d.ts +1 -1
  44. package/app/helpers/get-range-name.d.ts +1 -1
  45. package/app/helpers/parse-date.d.ts +1 -1
  46. package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
  47. package/app/helpers/query-param-transformers.d.ts +2 -2
  48. package/app/helpers/restore-items.d.ts +12 -12
  49. package/app/helpers/try-convert-to-number.d.ts +1 -1
  50. package/app/injectors/filter-config.d.ts +2 -2
  51. package/app/injectors/filter-drawer-data.d.ts +2 -2
  52. package/app/injectors/filter-drawer-overlay.d.ts +2 -2
  53. package/app/interfaces/action.interface.d.ts +70 -70
  54. package/app/interfaces/config.interface.d.ts +62 -62
  55. package/app/interfaces/external-params.interface.d.ts +3 -3
  56. package/app/interfaces/filter.interface.d.ts +4 -4
  57. package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
  58. package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
  59. package/app/interfaces/items/base.interface.d.ts +29 -29
  60. package/app/interfaces/items/checkbox.interface.d.ts +7 -7
  61. package/app/interfaces/items/chips.interface.d.ts +6 -6
  62. package/app/interfaces/items/date-range.interface.d.ts +8 -8
  63. package/app/interfaces/items/date.interface.d.ts +7 -7
  64. package/app/interfaces/items/range.interface.d.ts +13 -13
  65. package/app/interfaces/items/select.interface.d.ts +20 -20
  66. package/app/interfaces/items/text.interface.d.ts +9 -9
  67. package/app/interfaces/items/week.interface.d.ts +7 -7
  68. package/app/interfaces/saved-filters.interface.d.ts +18 -18
  69. package/app/interfaces/update-filter-item.interface.d.ts +4 -4
  70. package/app/models/action-menu-item.model.d.ts +23 -23
  71. package/app/models/action.model.d.ts +47 -47
  72. package/app/models/filter-config.d.ts +30 -30
  73. package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
  74. package/app/models/items/autocomplete-chips-item.d.ts +20 -20
  75. package/app/models/items/autocomplete-item.d.ts +11 -11
  76. package/app/models/items/base-item.d.ts +80 -79
  77. package/app/models/items/checkbox-item.d.ts +17 -17
  78. package/app/models/items/chips-item.d.ts +18 -18
  79. package/app/models/items/date/base-date-item.d.ts +14 -14
  80. package/app/models/items/date-item.d.ts +8 -8
  81. package/app/models/items/date-range/base-date-range-item.d.ts +21 -21
  82. package/app/models/items/date-range-item.d.ts +6 -6
  83. package/app/models/items/date-time-item.d.ts +7 -7
  84. package/app/models/items/date-time-range-item.d.ts +6 -6
  85. package/app/models/items/range-item.d.ts +23 -23
  86. package/app/models/items/select/base-select-item.d.ts +13 -13
  87. package/app/models/items/select/multiple-select-item.d.ts +14 -14
  88. package/app/models/items/select/simple-select-item.d.ts +14 -14
  89. package/app/models/items/select-item.d.ts +8 -8
  90. package/app/models/items/text-item.d.ts +15 -15
  91. package/app/models/items/week-item.d.ts +18 -18
  92. package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
  93. package/app/providers/filter-meta.d.ts +5 -5
  94. package/app/services/external-params/persistance-params-controller.service.d.ts +22 -22
  95. package/app/services/external-params/query-params-controller.service.d.ts +24 -24
  96. package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
  97. package/app/services/external-params-controller.service.d.ts +42 -42
  98. package/app/services/filter-overlay.service.d.ts +34 -34
  99. package/app/services/focus-controller.service.d.ts +18 -18
  100. package/app/services/items-store.service.d.ts +67 -67
  101. package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +127 -127
  102. package/esm2020/app/components/action-button/action-button.component.mjs +24 -0
  103. package/esm2020/app/components/action-kebab-actions/action-kebab-actions.component.mjs +17 -0
  104. package/esm2020/app/components/actions/actions.component.mjs +26 -0
  105. package/esm2020/app/components/filter/filter.component.mjs +572 -0
  106. package/esm2020/app/components/filter-chip/filter-chip.component.mjs +86 -0
  107. package/{esm2015/app/components/filter-chip-content/filter-chip-content.component.js → esm2020/app/components/filter-chip-content/filter-chip-content.component.mjs} +79 -84
  108. package/esm2020/app/components/filter-chips/filter-chips.component.mjs +23 -0
  109. package/esm2020/app/components/filter-drawer/filter-drawer.component.mjs +71 -0
  110. package/esm2020/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +41 -0
  111. package/esm2020/app/components/filters-item/autocomplete/autocomplete.component.mjs +27 -0
  112. package/esm2020/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +42 -0
  113. package/{esm2015/app/components/filters-item/base-item/base-item.component.js → esm2020/app/components/filters-item/base-item/base-item.component.mjs} +63 -63
  114. package/esm2020/app/components/filters-item/checkbox/checkbox.component.mjs +21 -0
  115. package/esm2020/app/components/filters-item/chips/chips.component.mjs +28 -0
  116. package/esm2020/app/components/filters-item/date/date.component.mjs +43 -0
  117. package/esm2020/app/components/filters-item/date-range/date-range.component.mjs +34 -0
  118. package/esm2020/app/components/filters-item/filter-item.component.mjs +80 -0
  119. package/esm2020/app/components/filters-item/range/range.component.mjs +45 -0
  120. package/esm2020/app/components/filters-item/select/backdrop/backdrop.component.mjs +12 -0
  121. package/esm2020/app/components/filters-item/select/groups/groups.component.mjs +30 -0
  122. package/esm2020/app/components/filters-item/select/multiple/multiple.component.mjs +57 -0
  123. package/esm2020/app/components/filters-item/select/select.component.mjs +51 -0
  124. package/esm2020/app/components/filters-item/select/simple/simple.component.mjs +43 -0
  125. package/esm2020/app/components/filters-item/text/text.component.mjs +49 -0
  126. package/esm2020/app/components/filters-item/week/week.component.mjs +25 -0
  127. package/esm2020/app/components/saved-filter-edit/saved-filter-edit.component.mjs +55 -0
  128. package/esm2020/app/components/saved-filters-menu/saved-filters-menu.component.mjs +51 -0
  129. package/{esm2015/app/consts/query-param-delimiter.js → esm2020/app/consts/query-param-delimiter.mjs} +1 -1
  130. package/{esm2015/app/directives/focus-to-item/focus-to-item.directive.js → esm2020/app/directives/focus-to-item/focus-to-item.directive.mjs} +130 -130
  131. package/{esm2015/app/directives/status-bar/status-bar.directive.js → esm2020/app/directives/status-bar/status-bar.directive.mjs} +16 -16
  132. package/{esm2015/app/enums/action-mode.enum.js → esm2020/app/enums/action-mode.enum.mjs} +6 -6
  133. package/{esm2015/app/enums/action-type.enum.js → esm2020/app/enums/action-type.enum.mjs} +10 -10
  134. package/{esm2015/app/enums/button-style.js → esm2020/app/enums/button-style.mjs} +10 -10
  135. package/{esm2015/app/enums/index.js → esm2020/app/enums/index.mjs} +6 -6
  136. package/{esm2015/app/enums/item-date-mode.enum.js → esm2020/app/enums/item-date-mode.enum.mjs} +6 -6
  137. package/{esm2015/app/enums/item-type.enum.js → esm2020/app/enums/item-type.enum.mjs} +16 -16
  138. package/{esm2015/app/enums/picker-view-type.enum.js → esm2020/app/enums/picker-view-type.enum.mjs} +8 -8
  139. package/{esm2015/app/fs-filter.module.js → esm2020/app/fs-filter.module.mjs} +244 -241
  140. package/{esm2015/app/helpers/build-query-params.js → esm2020/app/helpers/build-query-params.mjs} +31 -31
  141. package/{esm2015/app/helpers/compare.js → esm2020/app/helpers/compare.mjs} +37 -37
  142. package/{esm2015/app/helpers/create-filter-item.js → esm2020/app/helpers/create-filter-item.mjs} +54 -54
  143. package/{esm2015/app/helpers/find-value.js → esm2020/app/helpers/find-value.mjs} +12 -12
  144. package/{esm2015/app/helpers/get-range-name.js → esm2020/app/helpers/get-range-name.mjs} +8 -8
  145. package/{esm2015/app/helpers/parse-date.js → esm2020/app/helpers/parse-date.mjs} +7 -7
  146. package/{esm2015/app/helpers/parse-item-value-from-stored.js → esm2020/app/helpers/parse-item-value-from-stored.mjs} +81 -81
  147. package/{esm2015/app/helpers/query-param-transformers.js → esm2020/app/helpers/query-param-transformers.mjs} +8 -8
  148. package/{esm2015/app/helpers/restore-items.js → esm2020/app/helpers/restore-items.mjs} +48 -48
  149. package/{esm2015/app/helpers/try-convert-to-number.js → esm2020/app/helpers/try-convert-to-number.mjs} +5 -5
  150. package/{esm2015/app/injectors/filter-config.js → esm2020/app/injectors/filter-config.mjs} +2 -2
  151. package/{esm2015/app/injectors/filter-drawer-data.js → esm2020/app/injectors/filter-drawer-data.mjs} +2 -2
  152. package/{esm2015/app/injectors/filter-drawer-overlay.js → esm2020/app/injectors/filter-drawer-overlay.mjs} +2 -2
  153. package/{esm2015/app/interfaces/action.interface.js → esm2020/app/interfaces/action.interface.mjs} +1 -1
  154. package/{esm2015/app/interfaces/config.interface.js → esm2020/app/interfaces/config.interface.mjs} +1 -1
  155. package/{esm2015/app/interfaces/external-params.interface.js → esm2020/app/interfaces/external-params.interface.mjs} +1 -1
  156. package/{esm2015/app/interfaces/filter.interface.js → esm2020/app/interfaces/filter.interface.mjs} +1 -1
  157. package/{esm2015/app/interfaces/items/autocomplete-chips.interface.js → esm2020/app/interfaces/items/autocomplete-chips.interface.mjs} +1 -1
  158. package/{esm2015/app/interfaces/items/autocomplete.interface.js → esm2020/app/interfaces/items/autocomplete.interface.mjs} +1 -1
  159. package/{esm2015/app/interfaces/items/base.interface.js → esm2020/app/interfaces/items/base.interface.mjs} +1 -1
  160. package/{esm2015/app/interfaces/items/checkbox.interface.js → esm2020/app/interfaces/items/checkbox.interface.mjs} +1 -1
  161. package/{esm2015/app/interfaces/items/chips.interface.js → esm2020/app/interfaces/items/chips.interface.mjs} +1 -1
  162. package/{esm2015/app/interfaces/items/date-range.interface.js → esm2020/app/interfaces/items/date-range.interface.mjs} +1 -1
  163. package/{esm2015/app/interfaces/items/date.interface.js → esm2020/app/interfaces/items/date.interface.mjs} +1 -1
  164. package/{esm2015/app/interfaces/items/range.interface.js → esm2020/app/interfaces/items/range.interface.mjs} +1 -1
  165. package/{esm2015/app/interfaces/items/select.interface.js → esm2020/app/interfaces/items/select.interface.mjs} +1 -1
  166. package/{esm2015/app/interfaces/items/text.interface.js → esm2020/app/interfaces/items/text.interface.mjs} +1 -1
  167. package/{esm2015/app/interfaces/items/week.interface.js → esm2020/app/interfaces/items/week.interface.mjs} +1 -1
  168. package/{esm2015/app/interfaces/saved-filters.interface.js → esm2020/app/interfaces/saved-filters.interface.mjs} +1 -1
  169. package/{esm2015/app/interfaces/update-filter-item.interface.js → esm2020/app/interfaces/update-filter-item.interface.mjs} +1 -1
  170. package/{esm2015/app/models/action-menu-item.model.js → esm2020/app/models/action-menu-item.model.mjs} +66 -66
  171. package/esm2020/app/models/action.model.mjs +108 -0
  172. package/esm2020/app/models/filter-config.mjs +66 -0
  173. package/esm2020/app/models/items/autocomplete/base-autocomplete-item.mjs +14 -0
  174. package/esm2020/app/models/items/autocomplete-chips-item.mjs +61 -0
  175. package/{esm2015/app/models/items/autocomplete-item.js → esm2020/app/models/items/autocomplete-item.mjs} +33 -33
  176. package/esm2020/app/models/items/base-item.mjs +237 -0
  177. package/{esm2015/app/models/items/checkbox-item.js → esm2020/app/models/items/checkbox-item.mjs} +50 -50
  178. package/{esm2015/app/models/items/chips-item.js → esm2020/app/models/items/chips-item.mjs} +84 -84
  179. package/{esm2015/app/models/items/date/base-date-item.js → esm2020/app/models/items/date/base-date-item.mjs} +47 -47
  180. package/{esm2015/app/models/items/date-item.js → esm2020/app/models/items/date-item.mjs} +19 -19
  181. package/esm2020/app/models/items/date-range/base-date-range-item.mjs +135 -0
  182. package/{esm2015/app/models/items/date-range-item.js → esm2020/app/models/items/date-range-item.mjs} +6 -6
  183. package/esm2020/app/models/items/date-time-item.mjs +10 -0
  184. package/{esm2015/app/models/items/date-time-range-item.js → esm2020/app/models/items/date-time-range-item.mjs} +6 -6
  185. package/esm2020/app/models/items/range-item.mjs +83 -0
  186. package/esm2020/app/models/items/select/base-select-item.mjs +37 -0
  187. package/esm2020/app/models/items/select/multiple-select-item.mjs +88 -0
  188. package/esm2020/app/models/items/select/simple-select-item.mjs +66 -0
  189. package/{esm2015/app/models/items/select-item.js → esm2020/app/models/items/select-item.mjs} +10 -10
  190. package/{esm2015/app/models/items/text-item.js → esm2020/app/models/items/text-item.mjs} +34 -34
  191. package/esm2020/app/models/items/week-item.mjs +94 -0
  192. package/{esm2015/app/pipes/remove-isolate-value.pipe.js → esm2020/app/pipes/remove-isolate-value.pipe.mjs} +21 -21
  193. package/{esm2015/app/providers/filter-meta.js → esm2020/app/providers/filter-meta.mjs} +9 -9
  194. package/esm2020/app/services/external-params/persistance-params-controller.service.mjs +58 -0
  195. package/{esm2015/app/services/external-params/query-params-controller.service.js → esm2020/app/services/external-params/query-params-controller.service.mjs} +67 -67
  196. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +164 -0
  197. package/esm2020/app/services/external-params-controller.service.mjs +162 -0
  198. package/{esm2015/app/services/filter-overlay.service.js → esm2020/app/services/filter-overlay.service.mjs} +119 -119
  199. package/{esm2015/app/services/focus-controller.service.js → esm2020/app/services/focus-controller.service.mjs} +30 -30
  200. package/esm2020/app/services/items-store.service.mjs +337 -0
  201. package/{esm2015/firestitch-filter.js → esm2020/firestitch-filter.mjs} +4 -4
  202. package/{esm2015/public_api.js → esm2020/public_api.mjs} +36 -36
  203. package/fesm2015/{firestitch-filter.js → firestitch-filter.mjs} +4247 -4359
  204. package/fesm2015/firestitch-filter.mjs.map +1 -0
  205. package/fesm2020/firestitch-filter.mjs +4442 -0
  206. package/fesm2020/firestitch-filter.mjs.map +1 -0
  207. package/firestitch-filter.d.ts +5 -5
  208. package/package.json +20 -7
  209. package/public_api.d.ts +40 -40
  210. package/bundles/firestitch-filter.umd.js +0 -5746
  211. package/bundles/firestitch-filter.umd.js.map +0 -1
  212. package/esm2015/app/components/action-button/action-button.component.js +0 -28
  213. package/esm2015/app/components/action-kebab-actions/action-kebab-actions.component.js +0 -22
  214. package/esm2015/app/components/actions/actions.component.js +0 -31
  215. package/esm2015/app/components/filter/filter.component.js +0 -577
  216. package/esm2015/app/components/filter-chip/filter-chip.component.js +0 -91
  217. package/esm2015/app/components/filter-chips/filter-chips.component.js +0 -27
  218. package/esm2015/app/components/filter-drawer/filter-drawer.component.js +0 -76
  219. package/esm2015/app/components/filter-drawer-actions/filter-drawer-actions.component.js +0 -44
  220. package/esm2015/app/components/filters-item/autocomplete/autocomplete.component.js +0 -30
  221. package/esm2015/app/components/filters-item/autocompletechips/autocompletechips.component.js +0 -45
  222. package/esm2015/app/components/filters-item/checkbox/checkbox.component.js +0 -25
  223. package/esm2015/app/components/filters-item/chips/chips.component.js +0 -32
  224. package/esm2015/app/components/filters-item/date/date.component.js +0 -46
  225. package/esm2015/app/components/filters-item/date-range/date-range.component.js +0 -37
  226. package/esm2015/app/components/filters-item/filter-item.component.js +0 -84
  227. package/esm2015/app/components/filters-item/range/range.component.js +0 -48
  228. package/esm2015/app/components/filters-item/select/backdrop/backdrop.component.js +0 -17
  229. package/esm2015/app/components/filters-item/select/groups/groups.component.js +0 -33
  230. package/esm2015/app/components/filters-item/select/multiple/multiple.component.js +0 -61
  231. package/esm2015/app/components/filters-item/select/select.component.js +0 -55
  232. package/esm2015/app/components/filters-item/select/simple/simple.component.js +0 -47
  233. package/esm2015/app/components/filters-item/text/text.component.js +0 -54
  234. package/esm2015/app/components/filters-item/week/week.component.js +0 -28
  235. package/esm2015/app/components/saved-filter-edit/saved-filter-edit.component.js +0 -55
  236. package/esm2015/app/components/saved-filters-menu/saved-filters-menu.component.js +0 -58
  237. package/esm2015/app/models/action.model.js +0 -109
  238. package/esm2015/app/models/filter-config.js +0 -67
  239. package/esm2015/app/models/items/autocomplete/base-autocomplete-item.js +0 -15
  240. package/esm2015/app/models/items/autocomplete-chips-item.js +0 -62
  241. package/esm2015/app/models/items/base-item.js +0 -241
  242. package/esm2015/app/models/items/date-range/base-date-range-item.js +0 -137
  243. package/esm2015/app/models/items/date-time-item.js +0 -10
  244. package/esm2015/app/models/items/range-item.js +0 -84
  245. package/esm2015/app/models/items/select/base-select-item.js +0 -34
  246. package/esm2015/app/models/items/select/multiple-select-item.js +0 -89
  247. package/esm2015/app/models/items/select/simple-select-item.js +0 -66
  248. package/esm2015/app/models/items/week-item.js +0 -94
  249. package/esm2015/app/services/external-params/persistance-params-controller.service.js +0 -58
  250. package/esm2015/app/services/external-params/saved-filters-controller.service.js +0 -165
  251. package/esm2015/app/services/external-params-controller.service.js +0 -163
  252. package/esm2015/app/services/items-store.service.js +0 -341
  253. package/fesm2015/firestitch-filter.js.map +0 -1
@@ -0,0 +1,337 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, forkJoin, Subject } from 'rxjs';
3
+ import { debounceTime, filter, finalize, takeUntil } from 'rxjs/operators';
4
+ import { pickBy } from 'lodash-es';
5
+ import { ItemType } from '../enums/item-type.enum';
6
+ import { createFilterItem } from '../helpers/create-filter-item';
7
+ import { SORT_BY_FIELD, SORT_DIRECTION_FIELD } from '../models/filter-config';
8
+ import { BaseDateRangeItem } from '../models/items/date-range/base-date-range-item';
9
+ import { RangeItem } from '../models/items/range-item';
10
+ import { MultipleSelectItem } from '../models/items/select/multiple-select-item';
11
+ import { SimpleSelectItem } from '../models/items/select/simple-select-item';
12
+ import * as i0 from "@angular/core";
13
+ export class FsFilterItemsStore {
14
+ constructor() {
15
+ this.sortByItem = null;
16
+ this.sortDirectionItem = null;
17
+ this.keywordItem = null;
18
+ this._ready$ = new BehaviorSubject(false);
19
+ this._items = [];
20
+ this._visibleItems$ = new BehaviorSubject([]);
21
+ this._itemsByName = new Map();
22
+ this._itemsValuesLoaded = false;
23
+ this._hasKeyword = false;
24
+ this._itemsChange$ = new Subject();
25
+ this._destroy$ = new Subject();
26
+ this._lazyInit();
27
+ }
28
+ get items() {
29
+ return this._items;
30
+ }
31
+ get visibleItems() {
32
+ return this._visibleItems$.getValue();
33
+ }
34
+ set visibleItems(items) {
35
+ this._visibleItems$.next(items);
36
+ }
37
+ get visibleItems$() {
38
+ return this._visibleItems$.asObservable();
39
+ }
40
+ get hasKeyword() {
41
+ return this._hasKeyword;
42
+ }
43
+ get itemsChange$() {
44
+ return this._itemsChange$.pipe(debounceTime(30));
45
+ }
46
+ get ready$() {
47
+ return this._ready$.asObservable();
48
+ }
49
+ ngOnDestroy() {
50
+ this.destroyItems();
51
+ this._destroy$.next();
52
+ this._destroy$.complete();
53
+ }
54
+ setConfig(config) {
55
+ this._itemsByName.clear();
56
+ this._config = config;
57
+ this.initItems(config.items);
58
+ }
59
+ getItemByName(name) {
60
+ return this._itemsByName.get(name);
61
+ }
62
+ initItems(items) {
63
+ this._itemsValuesLoaded = false;
64
+ if (Array.isArray(items)) {
65
+ this._createItems(items);
66
+ }
67
+ }
68
+ filtersClear() {
69
+ this.items.forEach((item) => {
70
+ if (item instanceof RangeItem) {
71
+ item.clearRange(null, item.defaultValue);
72
+ }
73
+ else if (item instanceof BaseDateRangeItem) {
74
+ item.clearDateRange(null, item.defaultValue);
75
+ }
76
+ else {
77
+ item.clear(item.defaultValue);
78
+ }
79
+ });
80
+ if (this.sortByItem) {
81
+ if (this._config.sort) {
82
+ this.sortByItem.model = this._config.sort.value;
83
+ }
84
+ else {
85
+ this.sortByItem.clear(this.sortByItem.defaultValue);
86
+ }
87
+ }
88
+ if (this.sortDirectionItem) {
89
+ if (this._config.sort) {
90
+ this.sortDirectionItem.model = this._config.sort.direction;
91
+ }
92
+ else {
93
+ this.sortDirectionItem.clear(this.sortDirectionItem.defaultValue);
94
+ }
95
+ }
96
+ this.keywordItem?.clear();
97
+ }
98
+ loadAsyncValues() {
99
+ this.items
100
+ .filter((item) => item.hasPendingValues)
101
+ .forEach((item) => item.loadAsyncValues());
102
+ }
103
+ loadAsyncDefaults() {
104
+ // default values can be asynchronous, and we must load them if there is no persisted value instead
105
+ const defaultValuesToBeLoaded = this.items
106
+ .filter((item) => {
107
+ return item.defaultValueFn
108
+ && (item.persistedValue === null || item.persistedValue === undefined);
109
+ });
110
+ // special hack for isolate multiple select
111
+ // values for this type of select must be preloaded
112
+ // Read more in class MultipleSelectItem._init()
113
+ const valuesToBeLoaded = this.items
114
+ .filter((item) => {
115
+ return (item instanceof MultipleSelectItem) && item.hasPendingValues && item.isolate;
116
+ });
117
+ if (defaultValuesToBeLoaded.length > 0 || valuesToBeLoaded.length > 0) {
118
+ forkJoin([
119
+ ...defaultValuesToBeLoaded
120
+ .map((item) => item.loadDefaultValue()),
121
+ ...valuesToBeLoaded
122
+ .map((item) => {
123
+ item.loadAsyncValues();
124
+ return item.loading$
125
+ .pipe();
126
+ }),
127
+ ])
128
+ .pipe(finalize(() => {
129
+ this._ready$.next(true);
130
+ }), takeUntil(this._destroy$))
131
+ .subscribe();
132
+ }
133
+ else {
134
+ this._ready$.next(true);
135
+ }
136
+ }
137
+ getSort() {
138
+ let sortBy = this.getSortByValue();
139
+ sortBy = sortBy === '__all' ? null : sortBy;
140
+ let sortDirection = this.getSortDirectionValue();
141
+ sortDirection = sortDirection === '__all' ? null : sortDirection;
142
+ return {
143
+ value: sortBy,
144
+ direction: sortDirection,
145
+ };
146
+ }
147
+ getSortByValue() {
148
+ return this.sortByItem ? this.sortByItem.model : null;
149
+ }
150
+ getSortDirectionValue() {
151
+ return this.sortDirectionItem ? this.sortDirectionItem.model : null;
152
+ }
153
+ updateSort(sort) {
154
+ if (sort.sortBy) {
155
+ this.sortByItem.model = sort.sortBy;
156
+ }
157
+ if (sort.sortDirection) {
158
+ this.sortDirectionItem.model = sort.sortDirection;
159
+ }
160
+ }
161
+ values(onlyPresented = false) {
162
+ return this.items.reduce((acc, item) => {
163
+ const value = item.value;
164
+ if (!onlyPresented || value !== null) {
165
+ acc[item.name] = value;
166
+ }
167
+ return acc;
168
+ }, {});
169
+ }
170
+ valuesAsQuery({ onlyPresented = true, items = null, persisted = false, } = {}) {
171
+ const params = {};
172
+ (items || this.items).forEach((filterItem) => {
173
+ const values = persisted
174
+ ? filterItem.persistanceObject
175
+ : filterItem.queryObject;
176
+ Object.assign(params, values);
177
+ });
178
+ if (onlyPresented) {
179
+ return pickBy(params, (val) => {
180
+ return val !== void 0;
181
+ });
182
+ }
183
+ return params;
184
+ }
185
+ init(p) {
186
+ this.items
187
+ .forEach((item) => {
188
+ item.initValues(p[item.name]);
189
+ });
190
+ this._initSortingItems(p);
191
+ this.loadAsyncDefaults();
192
+ this._subscribeToItemsChanges();
193
+ }
194
+ updateItemsWithValues(values) {
195
+ this.items
196
+ .forEach((item) => {
197
+ if (values[item.name]) {
198
+ item.model = values[item.name];
199
+ }
200
+ else {
201
+ if (item instanceof RangeItem) {
202
+ item.clearRange(null, item.defaultValue);
203
+ }
204
+ else if (item instanceof BaseDateRangeItem) {
205
+ item.clearDateRange(null, item.defaultValue);
206
+ }
207
+ else {
208
+ item.clear();
209
+ }
210
+ }
211
+ });
212
+ if (this.sortByItem) {
213
+ this.sortByItem.clear();
214
+ }
215
+ if (this.sortDirectionItem) {
216
+ this.sortDirectionItem.clear();
217
+ }
218
+ }
219
+ destroyItems() {
220
+ this.items
221
+ .forEach((item) => item.destroy());
222
+ this.sortByItem?.destroy();
223
+ this.sortDirectionItem?.destroy();
224
+ this._items = [];
225
+ this.sortByItem = null;
226
+ this.sortDirectionItem = null;
227
+ }
228
+ /**
229
+ * Some items might need to load async values before they will be shown
230
+ */
231
+ prepareItems() {
232
+ if (!this._itemsValuesLoaded) {
233
+ this._itemsValuesLoaded = true;
234
+ this.loadAsyncValues();
235
+ }
236
+ }
237
+ updateItemsVisiblity() {
238
+ this.visibleItems = this.items
239
+ .filter((item) => !item.isTypeKeyword && !item.hide);
240
+ }
241
+ _createItems(items) {
242
+ this._items = items
243
+ .filter((item) => !item.disable)
244
+ .filter((item) => {
245
+ if (this._itemsByName.has(item.name)) {
246
+ throw Error('Filter init error. Items name must be unique.');
247
+ }
248
+ else {
249
+ this._itemsByName.set(item.name, null);
250
+ return true;
251
+ }
252
+ })
253
+ .map((item) => {
254
+ const filterItem = createFilterItem(item, { case: this._config.case }, this.filter);
255
+ if (filterItem.type === ItemType.Keyword) {
256
+ this._hasKeyword = true;
257
+ }
258
+ this._itemsByName.set(item.name, filterItem);
259
+ return filterItem;
260
+ });
261
+ this._createSortingItems();
262
+ }
263
+ _subscribeToItemsChanges() {
264
+ this.items
265
+ .forEach((item) => {
266
+ item.valueChange$
267
+ .pipe(takeUntil(item.destroy$))
268
+ .subscribe(() => {
269
+ this._itemsChange$.next(item);
270
+ });
271
+ });
272
+ if (this._config.sortValues?.length) {
273
+ this.sortByItem.valueChange$
274
+ .pipe(takeUntil(this.sortByItem.destroy$))
275
+ .subscribe(() => {
276
+ this._itemsChange$.next(this.sortByItem);
277
+ });
278
+ this.sortDirectionItem.valueChange$
279
+ .pipe(takeUntil(this.sortDirectionItem.destroy$))
280
+ .subscribe(() => {
281
+ this._itemsChange$.next(this.sortDirectionItem);
282
+ });
283
+ }
284
+ }
285
+ _lazyInit() {
286
+ this.ready$
287
+ .pipe(filter((state) => state), takeUntil(this._destroy$))
288
+ .subscribe(() => {
289
+ this.updateItemsVisiblity();
290
+ this._setKeywordItem();
291
+ });
292
+ }
293
+ _initSortingItems(p) {
294
+ if (this.sortByItem && this.sortDirectionItem) {
295
+ this.sortByItem.initValues(p[this.sortByItem.name]);
296
+ this.sortDirectionItem.initValues(p[this.sortDirectionItem.name]);
297
+ }
298
+ }
299
+ _createSortingItems() {
300
+ if (this._config.sortValues?.length > 0) {
301
+ const sortByItem = {
302
+ name: SORT_BY_FIELD,
303
+ type: ItemType.Select,
304
+ label: 'Sort By',
305
+ values: this._config.sortValues,
306
+ };
307
+ if (this._config.sort && this._config.sort.value) {
308
+ sortByItem.default = this._config.sort.value;
309
+ }
310
+ this.sortByItem = new SimpleSelectItem(sortByItem, null, this.filter);
311
+ const sortDirectionItem = {
312
+ name: SORT_DIRECTION_FIELD,
313
+ type: ItemType.Select,
314
+ label: 'Sort Direction',
315
+ values: [
316
+ { name: 'Ascending', value: 'asc' },
317
+ { name: 'Descending', value: 'desc' },
318
+ ],
319
+ };
320
+ if (this._config.sort && this._config.sort.direction) {
321
+ sortDirectionItem.default = this._config.sort.direction;
322
+ }
323
+ this.sortDirectionItem = new SimpleSelectItem(sortDirectionItem, null, this.filter);
324
+ }
325
+ }
326
+ _setKeywordItem() {
327
+ this.keywordItem = this
328
+ .items
329
+ .find((item) => item.isTypeKeyword);
330
+ }
331
+ }
332
+ FsFilterItemsStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterItemsStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
333
+ FsFilterItemsStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterItemsStore });
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterItemsStore, decorators: [{
335
+ type: Injectable
336
+ }], ctorParameters: function () { return []; } });
337
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtc3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvc2VydmljZXMvaXRlbXMtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUduQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFRakUsT0FBTyxFQUFrQixhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBVzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCO1FBakJPLGVBQVUsR0FBZ0MsSUFBSSxDQUFDO1FBQy9DLHNCQUFpQixHQUFnQyxJQUFJLENBQUM7UUFDdEQsZ0JBQVcsR0FBYSxJQUFJLENBQUM7UUFHNUIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBa0MsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsSUFBSSxlQUFl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LENBQ1osQ0FBQztZQUVGLE1BQU0saUJBQWlCLEdBQUc7Z0JBQ3hCLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDckIsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsTUFBTSxFQUFFO29CQUNOLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO29CQUNuQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtpQkFDdEM7YUFDeUIsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDcEQsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN6RDtZQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUMzQyxpQkFBaUIsRUFDakIsSUFBSSxFQUNKLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJO2FBQ3BCLEtBQUs7YUFDTCxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQWEsQ0FBQztJQUNwRCxDQUFDOzsrR0F2WlUsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgcGlja0J5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vZW51bXMvaXRlbS10eXBlLmVudW0nO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVySXRlbSB9IGZyb20gJy4uL2hlbHBlcnMvY3JlYXRlLWZpbHRlci1pdGVtJztcbmltcG9ydCB7XG4gIEZpbHRlclNvcnQsXG4gIElGaWx0ZXJDb25maWdJdGVtLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlckV4dGVybmFsUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRlcm5hbC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElTb3J0aW5nQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ1NlbGVjdEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l0ZW1zL3NlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcsIFNPUlRfQllfRklFTEQsIFNPUlRfRElSRUNUSU9OX0ZJRUxEIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IEJhc2VEYXRlUmFuZ2VJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL2RhdGUtcmFuZ2UvYmFzZS1kYXRlLXJhbmdlLWl0ZW0nO1xuaW1wb3J0IHsgUmFuZ2VJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL3JhbmdlLWl0ZW0nO1xuaW1wb3J0IHsgTXVsdGlwbGVTZWxlY3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL3NlbGVjdC9tdWx0aXBsZS1zZWxlY3QtaXRlbSc7XG5pbXBvcnQgeyBTaW1wbGVTZWxlY3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL3NlbGVjdC9zaW1wbGUtc2VsZWN0LWl0ZW0nO1xuaW1wb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcblxuXG5pbnRlcmZhY2UgSVZhbHVlQXNRdWVyeSB7XG4gIG9ubHlQcmVzZW50ZWQ/OiBib29sZWFuO1xuICBpdGVtcz86IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdO1xuICBwZXJzaXN0ZWQ/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJJdGVtc1N0b3JlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc29ydEJ5SXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+ID0gbnVsbDtcbiAgcHVibGljIHNvcnREaXJlY3Rpb25JdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4gPSBudWxsO1xuICBwdWJsaWMga2V5d29yZEl0ZW06IFRleHRJdGVtID0gbnVsbDtcbiAgcHVibGljIGZpbHRlcjogRmlsdGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX3JlYWR5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9pdGVtczogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10gPSBbXTtcbiAgcHJpdmF0ZSBfdmlzaWJsZUl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10+KFtdKTtcbiAgcHJpdmF0ZSBfaXRlbXNCeU5hbWUgPSBuZXcgTWFwPHN0cmluZywgQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+PigpO1xuXG4gIHByaXZhdGUgX2l0ZW1zVmFsdWVzTG9hZGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc0tleXdvcmQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY29uZmlnOiBGc0ZpbHRlckNvbmZpZztcblxuICBwcml2YXRlIF9pdGVtc0NoYW5nZSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICkge1xuICAgIHRoaXMuX2xhenlJbml0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVJdGVtcygpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmlzaWJsZUl0ZW1zKGl0ZW1zOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSkge1xuICAgIHRoaXMuX3Zpc2libGVJdGVtcyQubmV4dChpdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVJdGVtcyQoKTogT2JzZXJ2YWJsZTxCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXT4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNLZXl3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNLZXl3b3JkO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtc0NoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zQ2hhbmdlJC5waXBlKGRlYm91bmNlVGltZSgzMCkpO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lJdGVtcygpO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuX2l0ZW1zQnlOYW1lLmNsZWFyKCk7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdEl0ZW1zKGNvbmZpZy5pdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc0J5TmFtZS5nZXQobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdEl0ZW1zKGl0ZW1zOiBJRmlsdGVyQ29uZmlnSXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXNWYWx1ZXNMb2FkZWQgPSBmYWxzZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtcykpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZUl0ZW1zKGl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyc0NsZWFyKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBSYW5nZUl0ZW0pIHtcbiAgICAgICAgaXRlbS5jbGVhclJhbmdlKG51bGwsIGl0ZW0uZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSBpbnN0YW5jZW9mIEJhc2VEYXRlUmFuZ2VJdGVtKSB7XG4gICAgICAgIGl0ZW0uY2xlYXJEYXRlUmFuZ2UobnVsbCwgaXRlbS5kZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbS5jbGVhcihpdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zb3J0QnlJdGVtKSB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnNvcnQpIHtcbiAgICAgICAgdGhpcy5zb3J0QnlJdGVtLm1vZGVsID0gdGhpcy5fY29uZmlnLnNvcnQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRCeUl0ZW0uY2xlYXIodGhpcy5zb3J0QnlJdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0pIHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCkge1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtLm1vZGVsID0gdGhpcy5fY29uZmlnLnNvcnQuZGlyZWN0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5jbGVhcih0aGlzLnNvcnREaXJlY3Rpb25JdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5rZXl3b3JkSXRlbT8uY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXN5bmNWYWx1ZXMoKSB7XG4gICAgdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5oYXNQZW5kaW5nVmFsdWVzKVxuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ubG9hZEFzeW5jVmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGxvYWRBc3luY0RlZmF1bHRzKCk6IHZvaWQge1xuICAgIC8vIGRlZmF1bHQgdmFsdWVzIGNhbiBiZSBhc3luY2hyb25vdXMsIGFuZCB3ZSBtdXN0IGxvYWQgdGhlbSBpZiB0aGVyZSBpcyBubyBwZXJzaXN0ZWQgdmFsdWUgaW5zdGVhZFxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZXNUb0JlTG9hZGVkID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5kZWZhdWx0VmFsdWVGblxuICAgICAgICAgICYmIChpdGVtLnBlcnNpc3RlZFZhbHVlID09PSBudWxsIHx8IGl0ZW0ucGVyc2lzdGVkVmFsdWUgPT09IHVuZGVmaW5lZCk7XG4gICAgICB9KTtcblxuICAgIC8vIHNwZWNpYWwgaGFjayBmb3IgaXNvbGF0ZSBtdWx0aXBsZSBzZWxlY3RcbiAgICAvLyB2YWx1ZXMgZm9yIHRoaXMgdHlwZSBvZiBzZWxlY3QgbXVzdCBiZSBwcmVsb2FkZWRcbiAgICAvLyBSZWFkIG1vcmUgaW4gY2xhc3MgTXVsdGlwbGVTZWxlY3RJdGVtLl9pbml0KClcbiAgICBjb25zdCB2YWx1ZXNUb0JlTG9hZGVkID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gKGl0ZW0gaW5zdGFuY2VvZiBNdWx0aXBsZVNlbGVjdEl0ZW0pICYmIGl0ZW0uaGFzUGVuZGluZ1ZhbHVlcyAmJiBpdGVtLmlzb2xhdGU7XG4gICAgICB9KTtcblxuICAgIGlmIChkZWZhdWx0VmFsdWVzVG9CZUxvYWRlZC5sZW5ndGggPiAwIHx8IHZhbHVlc1RvQmVMb2FkZWQubGVuZ3RoID4gMCkge1xuICAgICAgZm9ya0pvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAuLi5kZWZhdWx0VmFsdWVzVG9CZUxvYWRlZFxuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5sb2FkRGVmYXVsdFZhbHVlKCkpLFxuXG4gICAgICAgICAgLi4udmFsdWVzVG9CZUxvYWRlZFxuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICBpdGVtLmxvYWRBc3luY1ZhbHVlcygpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLmxvYWRpbmckXG4gICAgICAgICAgICAgICAgLnBpcGUoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZWFkeSQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVhZHkkLm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNvcnQoKTogRmlsdGVyU29ydCB7XG4gICAgbGV0IHNvcnRCeSA9IHRoaXMuZ2V0U29ydEJ5VmFsdWUoKTtcbiAgICBzb3J0QnkgPSBzb3J0QnkgPT09ICdfX2FsbCcgPyBudWxsIDogc29ydEJ5O1xuXG4gICAgbGV0IHNvcnREaXJlY3Rpb24gPSB0aGlzLmdldFNvcnREaXJlY3Rpb25WYWx1ZSgpO1xuICAgIHNvcnREaXJlY3Rpb24gPSBzb3J0RGlyZWN0aW9uID09PSAnX19hbGwnID8gbnVsbCA6IHNvcnREaXJlY3Rpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHNvcnRCeSxcbiAgICAgIGRpcmVjdGlvbjogc29ydERpcmVjdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldFNvcnRCeVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnNvcnRCeUl0ZW0gPyB0aGlzLnNvcnRCeUl0ZW0ubW9kZWwgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldFNvcnREaXJlY3Rpb25WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uSXRlbSA/IHRoaXMuc29ydERpcmVjdGlvbkl0ZW0ubW9kZWwgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNvcnQoc29ydDogSVNvcnRpbmdDaGFuZ2VFdmVudCkge1xuICAgIGlmIChzb3J0LnNvcnRCeSkge1xuICAgICAgdGhpcy5zb3J0QnlJdGVtLm1vZGVsID0gc29ydC5zb3J0Qnk7XG4gICAgfVxuXG4gICAgaWYgKHNvcnQuc29ydERpcmVjdGlvbikge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5tb2RlbCA9IHNvcnQuc29ydERpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsdWVzKG9ubHlQcmVzZW50ZWQgPSBmYWxzZSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICBpZiAoIW9ubHlQcmVzZW50ZWQgfHwgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgYWNjW2l0ZW0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgdmFsdWVzQXNRdWVyeSh7XG4gICAgb25seVByZXNlbnRlZCA9IHRydWUsXG4gICAgaXRlbXMgPSBudWxsLFxuICAgIHBlcnNpc3RlZCA9IGZhbHNlLFxuICB9OiBJVmFsdWVBc1F1ZXJ5ID0ge30pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG5cbiAgICAoaXRlbXMgfHwgdGhpcy5pdGVtcykuZm9yRWFjaCgoZmlsdGVySXRlbTogQmFzZUl0ZW08YW55PikgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gcGVyc2lzdGVkXG4gICAgICAgID8gZmlsdGVySXRlbS5wZXJzaXN0YW5jZU9iamVjdFxuICAgICAgICA6IGZpbHRlckl0ZW0ucXVlcnlPYmplY3Q7XG5cbiAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCB2YWx1ZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKG9ubHlQcmVzZW50ZWQpIHtcbiAgICAgIHJldHVybiBwaWNrQnkocGFyYW1zLCAodmFsKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWwgIT09IHZvaWQgMDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgaW5pdChwOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmluaXRWYWx1ZXMocFtpdGVtLm5hbWVdKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5faW5pdFNvcnRpbmdJdGVtcyhwKTtcbiAgICB0aGlzLmxvYWRBc3luY0RlZmF1bHRzKCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9JdGVtc0NoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtc1dpdGhWYWx1ZXModmFsdWVzOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodmFsdWVzW2l0ZW0ubmFtZV0pIHtcbiAgICAgICAgICBpdGVtLm1vZGVsID0gdmFsdWVzW2l0ZW0ubmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBSYW5nZUl0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW0uY2xlYXJSYW5nZShudWxsLCBpdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQmFzZURhdGVSYW5nZUl0ZW0pIHtcbiAgICAgICAgICAgIGl0ZW0uY2xlYXJEYXRlUmFuZ2UobnVsbCwgaXRlbS5kZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmNsZWFyKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLnNvcnRCeUl0ZW0pIHtcbiAgICAgIHRoaXMuc29ydEJ5SXRlbS5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uSXRlbSkge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95SXRlbXMoKSB7XG4gICAgdGhpcy5pdGVtc1xuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uZGVzdHJveSgpKTtcbiAgICB0aGlzLnNvcnRCeUl0ZW0/LmRlc3Ryb3koKTtcbiAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtPy5kZXN0cm95KCk7XG5cbiAgICB0aGlzLl9pdGVtcyA9IFtdO1xuICAgIHRoaXMuc29ydEJ5SXRlbSA9IG51bGw7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU29tZSBpdGVtcyBtaWdodCBuZWVkIHRvIGxvYWQgYXN5bmMgdmFsdWVzIGJlZm9yZSB0aGV5IHdpbGwgYmUgc2hvd25cbiAgICovXG4gIHB1YmxpYyBwcmVwYXJlSXRlbXMoKSB7XG4gICAgaWYgKCF0aGlzLl9pdGVtc1ZhbHVlc0xvYWRlZCkge1xuICAgICAgdGhpcy5faXRlbXNWYWx1ZXNMb2FkZWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLmxvYWRBc3luY1ZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVJdGVtc1Zpc2libGl0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzVHlwZUtleXdvcmQgJiYgIWl0ZW0uaGlkZSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJdGVtcyhpdGVtczogSUZpbHRlckNvbmZpZ0l0ZW1bXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmRpc2FibGUpXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtc0J5TmFtZS5oYXMoaXRlbS5uYW1lKSkge1xuICAgICAgICAgIHRocm93IEVycm9yKCdGaWx0ZXIgaW5pdCBlcnJvci4gSXRlbXMgbmFtZSBtdXN0IGJlIHVuaXF1ZS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9pdGVtc0J5TmFtZS5zZXQoaXRlbS5uYW1lLCBudWxsKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJJdGVtID0gY3JlYXRlRmlsdGVySXRlbShpdGVtLCB7IGNhc2U6IHRoaXMuX2NvbmZpZy5jYXNlIH0sIHRoaXMuZmlsdGVyKTtcblxuICAgICAgICBpZiAoZmlsdGVySXRlbS50eXBlID09PSBJdGVtVHlwZS5LZXl3b3JkKSB7XG4gICAgICAgICAgdGhpcy5faGFzS2V5d29yZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pdGVtc0J5TmFtZS5zZXQoaXRlbS5uYW1lLCBmaWx0ZXJJdGVtKTtcblxuICAgICAgICByZXR1cm4gZmlsdGVySXRlbTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fY3JlYXRlU29ydGluZ0l0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0l0ZW1zQ2hhbmdlcygpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlJFxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKGl0ZW0uZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zQ2hhbmdlJC5uZXh0KGl0ZW0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnNvcnRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zb3J0QnlJdGVtLnZhbHVlQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5zb3J0QnlJdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pdGVtc0NoYW5nZSQubmV4dCh0aGlzLnNvcnRCeUl0ZW0pO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS52YWx1ZUNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0uZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2l0ZW1zQ2hhbmdlJC5uZXh0KHRoaXMuc29ydERpcmVjdGlvbkl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sYXp5SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zVmlzaWJsaXR5KCk7XG4gICAgICAgIHRoaXMuX3NldEtleXdvcmRJdGVtKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTb3J0aW5nSXRlbXMocDogSUZpbHRlckV4dGVybmFsUGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydEJ5SXRlbSAmJiB0aGlzLnNvcnREaXJlY3Rpb25JdGVtKSB7XG4gICAgICB0aGlzLnNvcnRCeUl0ZW0uaW5pdFZhbHVlcyhwW3RoaXMuc29ydEJ5SXRlbS5uYW1lXSk7XG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtLmluaXRWYWx1ZXMocFt0aGlzLnNvcnREaXJlY3Rpb25JdGVtLm5hbWVdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVTb3J0aW5nSXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5zb3J0VmFsdWVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzb3J0QnlJdGVtID0ge1xuICAgICAgICBuYW1lOiBTT1JUX0JZX0ZJRUxELFxuICAgICAgICB0eXBlOiBJdGVtVHlwZS5TZWxlY3QsXG4gICAgICAgIGxhYmVsOiAnU29ydCBCeScsXG4gICAgICAgIHZhbHVlczogdGhpcy5fY29uZmlnLnNvcnRWYWx1ZXMsXG4gICAgICB9IGFzIElGaWx0ZXJDb25maWdTZWxlY3RJdGVtO1xuXG5cbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCAmJiB0aGlzLl9jb25maWcuc29ydC52YWx1ZSkge1xuICAgICAgICBzb3J0QnlJdGVtLmRlZmF1bHQgPSB0aGlzLl9jb25maWcuc29ydC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zb3J0QnlJdGVtID0gbmV3IFNpbXBsZVNlbGVjdEl0ZW0oXG4gICAgICAgIHNvcnRCeUl0ZW0sXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMuZmlsdGVyLFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbkl0ZW0gPSB7XG4gICAgICAgIG5hbWU6IFNPUlRfRElSRUNUSU9OX0ZJRUxELFxuICAgICAgICB0eXBlOiBJdGVtVHlwZS5TZWxlY3QsXG4gICAgICAgIGxhYmVsOiAnU29ydCBEaXJlY3Rpb24nLFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdBc2NlbmRpbmcnLCB2YWx1ZTogJ2FzYycgfSxcbiAgICAgICAgICB7IG5hbWU6ICdEZXNjZW5kaW5nJywgdmFsdWU6ICdkZXNjJyB9LFxuICAgICAgICBdLFxuICAgICAgfSBhcyBJRmlsdGVyQ29uZmlnU2VsZWN0SXRlbTtcblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5zb3J0ICYmIHRoaXMuX2NvbmZpZy5zb3J0LmRpcmVjdGlvbikge1xuICAgICAgICBzb3J0RGlyZWN0aW9uSXRlbS5kZWZhdWx0ID0gdGhpcy5fY29uZmlnLnNvcnQuZGlyZWN0aW9uO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtID0gbmV3IFNpbXBsZVNlbGVjdEl0ZW0oXG4gICAgICAgIHNvcnREaXJlY3Rpb25JdGVtLFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLmZpbHRlcixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0S2V5d29yZEl0ZW0oKSB7XG4gICAgdGhpcy5rZXl3b3JkSXRlbSA9IHRoaXNcbiAgICAgIC5pdGVtc1xuICAgICAgLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNUeXBlS2V5d29yZCkgYXMgVGV4dEl0ZW07XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZXN0aXRjaC1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmlyZXN0aXRjaC1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -1,37 +1,37 @@
1
- // Controllers
2
- export { ExternalParamsController } from './app/services/external-params-controller.service';
3
- export { SavedFiltersController } from './app/services/external-params/saved-filters-controller.service';
4
- // Modules
5
- export { FsFilterModule } from './app/fs-filter.module';
6
- // Components
7
- export { FilterComponent } from './app/components/filter/filter.component';
8
- export { FilterItemComponent } from './app/components/filters-item/filter-item.component';
9
- export { FsSavedFiltersMenuComponent } from './app/components/saved-filters-menu/saved-filters-menu.component';
10
- // Directives
11
- export { FilterStatusBarDirective } from './app/directives/status-bar/status-bar.directive';
12
- // Enums
13
- export { ActionType, ButtonStyle } from './app/enums';
14
- export { ActionMode } from './app/enums/action-mode.enum';
15
- export { ItemDateMode } from './app/enums/item-date-mode.enum';
16
- export { ItemType } from './app/enums/item-type.enum';
17
- // Models
18
- export { AutocompleteChipsItem } from './app/models/items/autocomplete-chips-item';
19
- export { AutocompleteItem } from './app/models/items/autocomplete-item';
20
- export { BaseItem } from './app/models/items/base-item';
21
- export { CheckboxItem } from './app/models/items/checkbox-item';
22
- export { ChipsItem } from './app/models/items/chips-item';
23
- export { DateItem } from './app/models/items/date-item';
24
- export { DateRangeItem } from './app/models/items/date-range-item';
25
- export { DateTimeItem } from './app/models/items/date-time-item';
26
- export { DateTimeRangeItem } from './app/models/items/date-time-range-item';
27
- export { RangeItem } from './app/models/items/range-item';
28
- export { SelectItem } from './app/models/items/select-item';
29
- export { TextItem } from './app/models/items/text-item';
30
- // Injectors
31
- export { FS_FILTER_CONFIG } from './app/injectors/filter-config';
32
- // Helpers
33
- export { buildQueryParams } from './app/helpers/build-query-params';
34
- export { filterFromQueryParam, filterToQueryParam } from './app/helpers/query-param-transformers';
35
- // Const
36
- export { QUERY_PARAM_DELIMITER } from './app/consts/query-param-delimiter';
1
+ // Controllers
2
+ export { ExternalParamsController } from './app/services/external-params-controller.service';
3
+ export { SavedFiltersController } from './app/services/external-params/saved-filters-controller.service';
4
+ // Modules
5
+ export { FsFilterModule } from './app/fs-filter.module';
6
+ // Components
7
+ export { FilterComponent } from './app/components/filter/filter.component';
8
+ export { FilterItemComponent } from './app/components/filters-item/filter-item.component';
9
+ export { FsSavedFiltersMenuComponent } from './app/components/saved-filters-menu/saved-filters-menu.component';
10
+ // Directives
11
+ export { FilterStatusBarDirective } from './app/directives/status-bar/status-bar.directive';
12
+ // Enums
13
+ export { ActionType, ButtonStyle } from './app/enums';
14
+ export { ActionMode } from './app/enums/action-mode.enum';
15
+ export { ItemDateMode } from './app/enums/item-date-mode.enum';
16
+ export { ItemType } from './app/enums/item-type.enum';
17
+ // Models
18
+ export { AutocompleteChipsItem } from './app/models/items/autocomplete-chips-item';
19
+ export { AutocompleteItem } from './app/models/items/autocomplete-item';
20
+ export { BaseItem } from './app/models/items/base-item';
21
+ export { CheckboxItem } from './app/models/items/checkbox-item';
22
+ export { ChipsItem } from './app/models/items/chips-item';
23
+ export { DateItem } from './app/models/items/date-item';
24
+ export { DateRangeItem } from './app/models/items/date-range-item';
25
+ export { DateTimeItem } from './app/models/items/date-time-item';
26
+ export { DateTimeRangeItem } from './app/models/items/date-time-range-item';
27
+ export { RangeItem } from './app/models/items/range-item';
28
+ export { SelectItem } from './app/models/items/select-item';
29
+ export { TextItem } from './app/models/items/text-item';
30
+ // Injectors
31
+ export { FS_FILTER_CONFIG } from './app/injectors/filter-config';
32
+ // Helpers
33
+ export { buildQueryParams } from './app/helpers/build-query-params';
34
+ export { filterFromQueryParam, filterToQueryParam } from './app/helpers/query-param-transformers';
35
+ // Const
36
+ export { QUERY_PARAM_DELIMITER } from './app/consts/query-param-delimiter';
37
37
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUV6RyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXhELGFBQWE7QUFDYixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFL0csYUFBYTtBQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBK0I1RixRQUFRO0FBQ1IsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsU0FBUztBQUNULE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXhELFlBQVk7QUFDWixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUdqRSxVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFbEcsUUFBUTtBQUNSLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29udHJvbGxlcnNcbmV4cG9ydCB7IEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuZXhwb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vYXBwL3NlcnZpY2VzL2V4dGVybmFsLXBhcmFtcy9zYXZlZC1maWx0ZXJzLWNvbnRyb2xsZXIuc2VydmljZSc7XG5cbi8vIE1vZHVsZXNcbmV4cG9ydCB7IEZzRmlsdGVyTW9kdWxlIH0gZnJvbSAnLi9hcHAvZnMtZmlsdGVyLm1vZHVsZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vYXBwL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgRmlsdGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2ZpbHRlci1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgeyBGc1NhdmVkRmlsdGVyc01lbnVDb21wb25lbnQgfSBmcm9tICcuL2FwcC9jb21wb25lbnRzL3NhdmVkLWZpbHRlcnMtbWVudS9zYXZlZC1maWx0ZXJzLW1lbnUuY29tcG9uZW50JztcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0IHsgRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9hcHAvZGlyZWN0aXZlcy9zdGF0dXMtYmFyL3N0YXR1cy1iYXIuZGlyZWN0aXZlJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0IHtcbiAgRnNGaWx0ZXJBY3Rpb24sXG4gIEZzRmlsdGVyQWN0aW9uQ2xpY2tGbiwgRnNGaWx0ZXJBY3Rpb25EaXNhYmxlZEZuLCBGc0ZpbHRlckFjdGlvblNob3dGbixcbiAgRnNGaWx0ZXJGaWxlQWN0aW9uRXJyb3JGbixcbiAgRnNGaWx0ZXJGaWxlQWN0aW9uU2VsZWN0Rm4sIElGc0ZpbHRlckJ1dHRvbkFjdGlvbixcbiAgSUZzRmlsdGVyRmlsZUFjdGlvbiwgSUZzRmlsdGVyTWVudUFjdGlvbiwgSUZzRmlsdGVyTWVudUFjdGlvbkdyb3VwSXRlbSxcbiAgSUZzRmlsdGVyTWVudUFjdGlvbkl0ZW0sIElGc0ZpbHRlck1lbnVBY3Rpb25MaW5rXG59IGZyb20gJy4vYXBwL2ludGVyZmFjZXMvYWN0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgeyBJRmlsdGVyQ29uZmlnQXV0b2NvbXBsZXRlQ2hpcHNJdGVtIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9pdGVtcy9hdXRvY29tcGxldGUtY2hpcHMuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaWx0ZXJDb25maWdBdXRvY29tcGxldGVJdGVtIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9pdGVtcy9hdXRvY29tcGxldGUuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaWx0ZXJDb25maWdCYXNlSXRlbSB9IGZyb20gJy4vYXBwL2ludGVyZmFjZXMvaXRlbXMvYmFzZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgSUZpbHRlckNvbmZpZ0NoZWNrYm94SXRlbSB9IGZyb20gJy4vYXBwL2ludGVyZmFjZXMvaXRlbXMvY2hlY2tib3guaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaWx0ZXJDb25maWdDaGlwc0l0ZW0gfSBmcm9tICcuL2FwcC9pbnRlcmZhY2VzL2l0ZW1zL2NoaXBzLmludGVyZmFjZSc7XG5leHBvcnQgeyBJRmlsdGVyQ29uZmlnRGF0ZVJhbmdlSXRlbSwgSUZpbHRlckl0ZW1EZWZhdWx0RGF0ZVJhbmdlIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9pdGVtcy9kYXRlLXJhbmdlLmludGVyZmFjZSc7XG5leHBvcnQgeyBJRmlsdGVyQ29uZmlnRGF0ZUl0ZW0gfSBmcm9tICcuL2FwcC9pbnRlcmZhY2VzL2l0ZW1zL2RhdGUuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaWx0ZXJDb25maWdSYW5nZUl0ZW0sIElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9pdGVtcy9yYW5nZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgRmlsdGVyVmFsdWVzUmV0dXJuRm4sIElGaWx0ZXJDb25maWdTZWxlY3RJc29sYXRlLCBJRmlsdGVyQ29uZmlnU2VsZWN0SXRlbSwgSUZpbHRlclNlbGVjdFZhbHVlIH0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9pdGVtcy9zZWxlY3QuaW50ZXJmYWNlJztcbmV4cG9ydCB7IElGaWx0ZXJDb25maWdUZXh0SXRlbSB9IGZyb20gJy4vYXBwL2ludGVyZmFjZXMvaXRlbXMvdGV4dC5pbnRlcmZhY2UnO1xuXG5leHBvcnQge1xuICBDaGFuZ2VGbiwgRmlsdGVyQ29uZmlnLCBGaWx0ZXJTb3J0LCBGc0ZpbHRlclBlcnNpc3RhbmNlLCBJRmlsdGVyQ29uZmlnSXRlbSwgU29ydCwgU29ydEl0ZW1cbn0gZnJvbSAnLi9hcHAvaW50ZXJmYWNlcy9jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHtcbiAgRmlsdGVyUmVtb3RlRGVsZXRlLCBGaWx0ZXJSZW1vdGVMb2FkLCBGaWx0ZXJSZW1vdGVPcmRlciwgRmlsdGVyUmVtb3RlU2F2ZSwgSUZpbHRlclNhdmVkRmlsdGVyLFxuICBJRmlsdGVyU2F2ZWRGaWx0ZXJzQ29uZmlnXG59IGZyb20gJy4vYXBwL2ludGVyZmFjZXMvc2F2ZWQtZmlsdGVycy5pbnRlcmZhY2UnO1xuXG4vLyBFbnVtc1xuZXhwb3J0IHsgQWN0aW9uVHlwZSwgQnV0dG9uU3R5bGUgfSBmcm9tICcuL2FwcC9lbnVtcyc7XG5leHBvcnQgeyBBY3Rpb25Nb2RlIH0gZnJvbSAnLi9hcHAvZW51bXMvYWN0aW9uLW1vZGUuZW51bSc7XG5leHBvcnQgeyBJdGVtRGF0ZU1vZGUgfSBmcm9tICcuL2FwcC9lbnVtcy9pdGVtLWRhdGUtbW9kZS5lbnVtJztcbmV4cG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi9hcHAvZW51bXMvaXRlbS10eXBlLmVudW0nO1xuXG4vLyBNb2RlbHNcbmV4cG9ydCB7IEF1dG9jb21wbGV0ZUNoaXBzSXRlbSB9IGZyb20gJy4vYXBwL21vZGVscy9pdGVtcy9hdXRvY29tcGxldGUtY2hpcHMtaXRlbSc7XG5leHBvcnQgeyBBdXRvY29tcGxldGVJdGVtIH0gZnJvbSAnLi9hcHAvbW9kZWxzL2l0ZW1zL2F1dG9jb21wbGV0ZS1pdGVtJztcbmV4cG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi9hcHAvbW9kZWxzL2l0ZW1zL2Jhc2UtaXRlbSc7XG5leHBvcnQgeyBDaGVja2JveEl0ZW0gfSBmcm9tICcuL2FwcC9tb2RlbHMvaXRlbXMvY2hlY2tib3gtaXRlbSc7XG5leHBvcnQgeyBDaGlwc0l0ZW0gfSBmcm9tICcuL2FwcC9tb2RlbHMvaXRlbXMvY2hpcHMtaXRlbSc7XG5leHBvcnQgeyBEYXRlSXRlbSB9IGZyb20gJy4vYXBwL21vZGVscy9pdGVtcy9kYXRlLWl0ZW0nO1xuZXhwb3J0IHsgRGF0ZVJhbmdlSXRlbSB9IGZyb20gJy4vYXBwL21vZGVscy9pdGVtcy9kYXRlLXJhbmdlLWl0ZW0nO1xuZXhwb3J0IHsgRGF0ZVRpbWVJdGVtIH0gZnJvbSAnLi9hcHAvbW9kZWxzL2l0ZW1zL2RhdGUtdGltZS1pdGVtJztcbmV4cG9ydCB7IERhdGVUaW1lUmFuZ2VJdGVtIH0gZnJvbSAnLi9hcHAvbW9kZWxzL2l0ZW1zL2RhdGUtdGltZS1yYW5nZS1pdGVtJztcbmV4cG9ydCB7IFJhbmdlSXRlbSB9IGZyb20gJy4vYXBwL21vZGVscy9pdGVtcy9yYW5nZS1pdGVtJztcbmV4cG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuL2FwcC9tb2RlbHMvaXRlbXMvc2VsZWN0LWl0ZW0nO1xuZXhwb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuL2FwcC9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcblxuLy8gSW5qZWN0b3JzXG5leHBvcnQgeyBGU19GSUxURVJfQ09ORklHIH0gZnJvbSAnLi9hcHAvaW5qZWN0b3JzL2ZpbHRlci1jb25maWcnO1xuXG5cbi8vIEhlbHBlcnNcbmV4cG9ydCB7IGJ1aWxkUXVlcnlQYXJhbXMgfSBmcm9tICcuL2FwcC9oZWxwZXJzL2J1aWxkLXF1ZXJ5LXBhcmFtcyc7XG5leHBvcnQgeyBmaWx0ZXJGcm9tUXVlcnlQYXJhbSwgZmlsdGVyVG9RdWVyeVBhcmFtIH0gZnJvbSAnLi9hcHAvaGVscGVycy9xdWVyeS1wYXJhbS10cmFuc2Zvcm1lcnMnO1xuXG4vLyBDb25zdFxuZXhwb3J0IHsgUVVFUllfUEFSQU1fREVMSU1JVEVSIH0gZnJvbSAnLi9hcHAvY29uc3RzL3F1ZXJ5LXBhcmFtLWRlbGltaXRlcic7XG4iXX0=