@kaspernj/api-maker 1.0.2160 → 1.0.2161

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 (524) hide show
  1. package/build/api.d.ts +46 -34
  2. package/build/api.d.ts.map +1 -1
  3. package/build/api.js +32 -25
  4. package/build/attribute-not-loaded-error.d.ts.map +1 -1
  5. package/build/attribute-not-loaded-error.js +2 -1
  6. package/build/base-error.d.ts +49 -60
  7. package/build/base-error.d.ts.map +1 -1
  8. package/build/base-error.js +3 -2
  9. package/build/base-model/column.d.ts +2 -2
  10. package/build/base-model/column.d.ts.map +1 -1
  11. package/build/base-model/column.js +3 -2
  12. package/build/base-model/reflection.d.ts +8 -3
  13. package/build/base-model/reflection.d.ts.map +1 -1
  14. package/build/base-model/reflection.js +8 -3
  15. package/build/base-model/scope.d.ts +1 -1
  16. package/build/base-model/scope.d.ts.map +1 -1
  17. package/build/base-model/scope.js +3 -2
  18. package/build/base-model.d.ts +3801 -117
  19. package/build/base-model.d.ts.map +1 -1
  20. package/build/base-model.js +271 -143
  21. package/build/bootstrap/attribute-row.d.ts +12 -0
  22. package/build/bootstrap/attribute-row.d.ts.map +1 -1
  23. package/build/bootstrap/attribute-row.js +23 -5
  24. package/build/bootstrap/attribute-rows.d.ts +8 -0
  25. package/build/bootstrap/attribute-rows.d.ts.map +1 -1
  26. package/build/bootstrap/attribute-rows.js +14 -5
  27. package/build/bootstrap/card.d.ts +17 -0
  28. package/build/bootstrap/card.d.ts.map +1 -1
  29. package/build/bootstrap/card.js +30 -10
  30. package/build/bootstrap/checkbox.d.ts +16 -0
  31. package/build/bootstrap/checkbox.d.ts.map +1 -1
  32. package/build/bootstrap/checkbox.js +20 -2
  33. package/build/bootstrap/checkboxes.d.ts +31 -0
  34. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  35. package/build/bootstrap/checkboxes.js +35 -3
  36. package/build/bootstrap/index.js +2 -1
  37. package/build/bootstrap/input.d.ts +24 -0
  38. package/build/bootstrap/input.d.ts.map +1 -1
  39. package/build/bootstrap/input.js +27 -2
  40. package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
  41. package/build/bootstrap/invalid-feedback.js +2 -1
  42. package/build/bootstrap/paginate.d.ts +5 -0
  43. package/build/bootstrap/paginate.d.ts.map +1 -1
  44. package/build/bootstrap/paginate.js +9 -4
  45. package/build/bootstrap/radio-buttons.js +2 -1
  46. package/build/bootstrap/select.js +2 -1
  47. package/build/bootstrap/sort-link.d.ts +10 -0
  48. package/build/bootstrap/sort-link.d.ts.map +1 -1
  49. package/build/bootstrap/sort-link.js +15 -4
  50. package/build/cable-connection-pool.d.ts +201 -24
  51. package/build/cable-connection-pool.d.ts.map +1 -1
  52. package/build/cable-connection-pool.js +76 -16
  53. package/build/cable-subscription-pool.d.ts +186 -20
  54. package/build/cable-subscription-pool.d.ts.map +1 -1
  55. package/build/cable-subscription-pool.js +61 -22
  56. package/build/cable-subscription.d.ts.map +1 -1
  57. package/build/cable-subscription.js +3 -2
  58. package/build/cache-key-generator.d.ts +194 -20
  59. package/build/cache-key-generator.d.ts.map +1 -1
  60. package/build/cache-key-generator.js +63 -12
  61. package/build/can-can.d.ts +146 -29
  62. package/build/can-can.d.ts.map +1 -1
  63. package/build/can-can.js +105 -19
  64. package/build/channels-consumer.d.ts +23 -1
  65. package/build/channels-consumer.d.ts.map +1 -1
  66. package/build/channels-consumer.js +26 -8
  67. package/build/collection-loader.js +2 -1
  68. package/build/collection.d.ts +361 -370
  69. package/build/collection.d.ts.map +1 -1
  70. package/build/collection.js +59 -19
  71. package/build/command-execution.d.ts +50 -26
  72. package/build/command-execution.d.ts.map +1 -1
  73. package/build/command-execution.js +31 -13
  74. package/build/command-submit-data.d.ts +50 -37
  75. package/build/command-submit-data.d.ts.map +1 -1
  76. package/build/command-submit-data.js +35 -22
  77. package/build/commands-pool.d.ts +65 -27
  78. package/build/commands-pool.d.ts.map +1 -1
  79. package/build/commands-pool.js +67 -20
  80. package/build/compose.d.ts +8 -2
  81. package/build/compose.d.ts.map +1 -1
  82. package/build/compose.js +9 -2
  83. package/build/config.d.ts +31 -15
  84. package/build/config.d.ts.map +1 -1
  85. package/build/config.js +60 -23
  86. package/build/custom-error.d.ts.map +1 -1
  87. package/build/custom-error.js +2 -1
  88. package/build/data-set-to-attributes.d.ts +14 -2
  89. package/build/data-set-to-attributes.d.ts.map +1 -1
  90. package/build/data-set-to-attributes.js +12 -3
  91. package/build/deserializer.d.ts +116 -2
  92. package/build/deserializer.d.ts.map +1 -1
  93. package/build/deserializer.js +13 -2
  94. package/build/destroy-error.d.ts.map +1 -1
  95. package/build/destroy-error.js +2 -1
  96. package/build/devise.d.ts +638 -39
  97. package/build/devise.d.ts.map +1 -1
  98. package/build/devise.js +97 -28
  99. package/build/draggable-sort/controller.d.ts +126 -35
  100. package/build/draggable-sort/controller.d.ts.map +1 -1
  101. package/build/draggable-sort/controller.js +100 -28
  102. package/build/draggable-sort/index.d.ts +55 -0
  103. package/build/draggable-sort/index.d.ts.map +1 -1
  104. package/build/draggable-sort/index.js +71 -3
  105. package/build/draggable-sort/item.d.ts +54 -0
  106. package/build/draggable-sort/item.d.ts.map +1 -1
  107. package/build/draggable-sort/item.js +94 -6
  108. package/build/error-logger.d.ts +30 -14
  109. package/build/error-logger.d.ts.map +1 -1
  110. package/build/error-logger.js +22 -11
  111. package/build/event-connection.d.ts.map +1 -1
  112. package/build/event-connection.js +3 -2
  113. package/build/event-emitter-listener.d.ts.map +1 -1
  114. package/build/event-emitter-listener.js +2 -1
  115. package/build/event-model-class.d.ts.map +1 -1
  116. package/build/event-model-class.js +2 -1
  117. package/build/events.d.ts.map +1 -1
  118. package/build/events.js +2 -1
  119. package/build/form.d.ts +23 -0
  120. package/build/form.d.ts.map +1 -1
  121. package/build/form.js +16 -4
  122. package/build/history-expo.d.ts +6 -2
  123. package/build/history-expo.d.ts.map +1 -1
  124. package/build/history-expo.js +5 -2
  125. package/build/history-react-native.d.ts +6 -2
  126. package/build/history-react-native.d.ts.map +1 -1
  127. package/build/history-react-native.js +5 -2
  128. package/build/history.js +2 -1
  129. package/build/index.d.ts.map +1 -1
  130. package/build/index.js +2 -1
  131. package/build/inputs/attachment.d.ts +11 -0
  132. package/build/inputs/attachment.d.ts.map +1 -1
  133. package/build/inputs/attachment.js +17 -4
  134. package/build/inputs/auto-submit.d.ts +41 -13
  135. package/build/inputs/auto-submit.d.ts.map +1 -1
  136. package/build/inputs/auto-submit.js +16 -4
  137. package/build/inputs/checkbox.d.ts +15 -0
  138. package/build/inputs/checkbox.d.ts.map +1 -1
  139. package/build/inputs/checkbox.js +22 -6
  140. package/build/inputs/checkboxes.d.ts +16 -0
  141. package/build/inputs/checkboxes.d.ts.map +1 -1
  142. package/build/inputs/checkboxes.js +20 -4
  143. package/build/inputs/id-for-component.d.ts +21 -2
  144. package/build/inputs/id-for-component.d.ts.map +1 -1
  145. package/build/inputs/id-for-component.js +9 -2
  146. package/build/inputs/input-wrapper.d.ts.map +1 -1
  147. package/build/inputs/input-wrapper.js +2 -1
  148. package/build/inputs/input.d.ts +36 -0
  149. package/build/inputs/input.d.ts.map +1 -1
  150. package/build/inputs/input.js +26 -7
  151. package/build/inputs/money.d.ts +2 -0
  152. package/build/inputs/money.d.ts.map +1 -1
  153. package/build/inputs/money.js +6 -3
  154. package/build/inputs/name-for-component.d.ts +21 -2
  155. package/build/inputs/name-for-component.d.ts.map +1 -1
  156. package/build/inputs/name-for-component.js +9 -2
  157. package/build/inputs/select.d.ts +33 -0
  158. package/build/inputs/select.d.ts.map +1 -1
  159. package/build/inputs/select.js +21 -4
  160. package/build/instance-of-class-name.d.ts +7 -2
  161. package/build/instance-of-class-name.d.ts.map +1 -1
  162. package/build/instance-of-class-name.js +8 -4
  163. package/build/is-expo.d.ts.map +1 -1
  164. package/build/is-expo.js +2 -1
  165. package/build/key-value-store.d.ts +24 -14
  166. package/build/key-value-store.d.ts.map +1 -1
  167. package/build/key-value-store.js +22 -12
  168. package/build/link.d.ts +30 -0
  169. package/build/link.d.ts.map +1 -1
  170. package/build/link.js +76 -30
  171. package/build/logger.d.ts +10 -6
  172. package/build/logger.d.ts.map +1 -1
  173. package/build/logger.js +7 -4
  174. package/build/merge-styles.d.ts +10 -2
  175. package/build/merge-styles.d.ts.map +1 -1
  176. package/build/merge-styles.js +10 -3
  177. package/build/modal.d.ts +2 -0
  178. package/build/modal.d.ts.map +1 -1
  179. package/build/modal.js +6 -4
  180. package/build/model-class-require.d.ts +4 -2
  181. package/build/model-class-require.d.ts.map +1 -1
  182. package/build/model-class-require.js +4 -2
  183. package/build/model-events.d.ts +139 -346
  184. package/build/model-events.d.ts.map +1 -1
  185. package/build/model-events.js +21 -9
  186. package/build/model-name.d.ts +21 -7
  187. package/build/model-name.d.ts.map +1 -1
  188. package/build/model-name.js +12 -2
  189. package/build/model-prop-type.d.ts +533 -26
  190. package/build/model-prop-type.d.ts.map +1 -1
  191. package/build/model-prop-type.js +69 -11
  192. package/build/model-recipes-loader.d.ts +7 -3
  193. package/build/model-recipes-loader.d.ts.map +1 -1
  194. package/build/model-recipes-loader.js +4 -2
  195. package/build/model-recipes-model-loader.d.ts +189 -1493
  196. package/build/model-recipes-model-loader.d.ts.map +1 -1
  197. package/build/model-recipes-model-loader.js +119 -17
  198. package/build/models-response-reader.d.ts +600 -195
  199. package/build/models-response-reader.d.ts.map +1 -1
  200. package/build/models-response-reader.js +12 -4
  201. package/build/models.d.ts +438 -1
  202. package/build/models.d.ts.map +1 -1
  203. package/build/models.js +2 -1
  204. package/build/money-formatter.d.ts +25 -31
  205. package/build/money-formatter.d.ts.map +1 -1
  206. package/build/money-formatter.js +11 -8
  207. package/build/not-loaded-error.d.ts.map +1 -1
  208. package/build/not-loaded-error.js +2 -1
  209. package/build/params.d.ts +25 -17
  210. package/build/params.d.ts.map +1 -1
  211. package/build/params.js +19 -15
  212. package/build/preloaded.d.ts +61 -64
  213. package/build/preloaded.d.ts.map +1 -1
  214. package/build/preloaded.js +10 -4
  215. package/build/reset-realtime-runtime-state.d.ts.map +1 -1
  216. package/build/reset-realtime-runtime-state.js +2 -1
  217. package/build/resize-observer.d.ts.map +1 -1
  218. package/build/resize-observer.js +2 -1
  219. package/build/rest-props-validator.d.ts +2 -2
  220. package/build/rest-props-validator.d.ts.map +1 -1
  221. package/build/rest-props-validator.js +3 -2
  222. package/build/result.d.ts +142 -175
  223. package/build/result.d.ts.map +1 -1
  224. package/build/result.js +3 -2
  225. package/build/router/route.d.ts +50 -0
  226. package/build/router/route.d.ts.map +1 -1
  227. package/build/router/route.js +39 -10
  228. package/build/router/switch.d.ts +37 -1
  229. package/build/router/switch.d.ts.map +1 -1
  230. package/build/router/switch.js +29 -7
  231. package/build/router.d.ts +20 -0
  232. package/build/router.d.ts.map +1 -1
  233. package/build/router.js +15 -4
  234. package/build/routes-native.d.ts +13 -13
  235. package/build/routes-native.d.ts.map +1 -1
  236. package/build/routes-native.js +23 -11
  237. package/build/routes.d.ts +17 -9
  238. package/build/routes.d.ts.map +1 -1
  239. package/build/routes.js +7 -2
  240. package/build/run-last.d.ts.map +1 -1
  241. package/build/run-last.js +2 -1
  242. package/build/serializer.d.ts +44 -12
  243. package/build/serializer.d.ts.map +1 -1
  244. package/build/serializer.js +36 -7
  245. package/build/services.d.ts +29 -4
  246. package/build/services.d.ts.map +1 -1
  247. package/build/services.js +16 -4
  248. package/build/session-status-updater.d.ts +73 -25
  249. package/build/session-status-updater.d.ts.map +1 -1
  250. package/build/session-status-updater.js +52 -14
  251. package/build/source-maps-loader.d.ts +88 -33
  252. package/build/source-maps-loader.d.ts.map +1 -1
  253. package/build/source-maps-loader.js +74 -18
  254. package/build/super-admin/config-reader.d.ts.map +1 -1
  255. package/build/super-admin/config-reader.js +11 -16
  256. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +10 -0
  257. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  258. package/build/super-admin/edit-page/edit-attribute-checkbox.js +16 -4
  259. package/build/super-admin/edit-page/edit-attribute-content.d.ts +9 -0
  260. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  261. package/build/super-admin/edit-page/edit-attribute-content.js +15 -4
  262. package/build/super-admin/edit-page/edit-attribute-input.d.ts +8 -0
  263. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  264. package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
  265. package/build/super-admin/edit-page/edit-attribute.d.ts +6 -0
  266. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  267. package/build/super-admin/edit-page/edit-attribute.js +11 -4
  268. package/build/super-admin/edit-page.d.ts +5 -0
  269. package/build/super-admin/edit-page.d.ts.map +1 -1
  270. package/build/super-admin/edit-page.js +11 -5
  271. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  272. package/build/super-admin/has-edit-config.js +2 -1
  273. package/build/super-admin/index-page.d.ts +4 -0
  274. package/build/super-admin/index-page.d.ts.map +1 -1
  275. package/build/super-admin/index-page.js +9 -4
  276. package/build/super-admin/index.d.ts +4 -0
  277. package/build/super-admin/index.d.ts.map +1 -1
  278. package/build/super-admin/index.js +12 -6
  279. package/build/super-admin/layout/header/index.d.ts +4 -0
  280. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  281. package/build/super-admin/layout/header/index.js +13 -8
  282. package/build/super-admin/layout/index.d.ts +24 -0
  283. package/build/super-admin/layout/index.d.ts.map +1 -1
  284. package/build/super-admin/layout/index.js +33 -5
  285. package/build/super-admin/layout/menu/index.d.ts +2 -0
  286. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  287. package/build/super-admin/layout/menu/index.js +8 -6
  288. package/build/super-admin/layout/menu/menu-content.d.ts +2 -0
  289. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  290. package/build/super-admin/layout/menu/menu-content.js +6 -4
  291. package/build/super-admin/layout/menu/menu-item.d.ts +9 -0
  292. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  293. package/build/super-admin/layout/menu/menu-item.js +15 -4
  294. package/build/super-admin/layout/no-access.d.ts +2 -0
  295. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  296. package/build/super-admin/layout/no-access.js +7 -5
  297. package/build/super-admin/model-class-table.d.ts +4 -0
  298. package/build/super-admin/model-class-table.d.ts.map +1 -1
  299. package/build/super-admin/model-class-table.js +9 -4
  300. package/build/super-admin/models.d.ts.map +1 -1
  301. package/build/super-admin/models.js +2 -1
  302. package/build/super-admin/show-nav.d.ts +2 -0
  303. package/build/super-admin/show-nav.d.ts.map +1 -1
  304. package/build/super-admin/show-nav.js +6 -4
  305. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +17 -1
  306. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  307. package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
  308. package/build/super-admin/show-page/index.d.ts +4 -0
  309. package/build/super-admin/show-page/index.d.ts.map +1 -1
  310. package/build/super-admin/show-page/index.js +9 -4
  311. package/build/super-admin/show-reflection-actions.d.ts +6 -0
  312. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  313. package/build/super-admin/show-reflection-actions.js +11 -4
  314. package/build/super-admin/show-reflection-link.d.ts +4 -0
  315. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  316. package/build/super-admin/show-reflection-link.js +9 -4
  317. package/build/super-admin/show-reflection-page.d.ts +5 -0
  318. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  319. package/build/super-admin/show-reflection-page.js +10 -4
  320. package/build/table/column-content.d.ts +155 -19
  321. package/build/table/column-content.d.ts.map +1 -1
  322. package/build/table/column-content.js +55 -12
  323. package/build/table/column-identifier.d.ts +11 -2
  324. package/build/table/column-identifier.d.ts.map +1 -1
  325. package/build/table/column-identifier.js +7 -2
  326. package/build/table/column-visible.d.ts +11 -2
  327. package/build/table/column-visible.d.ts.map +1 -1
  328. package/build/table/column-visible.js +8 -2
  329. package/build/table/components/column.d.ts +2 -0
  330. package/build/table/components/column.d.ts.map +1 -1
  331. package/build/table/components/column.js +6 -4
  332. package/build/table/components/flat-list.d.ts +2 -0
  333. package/build/table/components/flat-list.d.ts.map +1 -1
  334. package/build/table/components/flat-list.js +6 -4
  335. package/build/table/components/header.d.ts +2 -0
  336. package/build/table/components/header.d.ts.map +1 -1
  337. package/build/table/components/header.js +6 -4
  338. package/build/table/components/row.d.ts +2 -0
  339. package/build/table/components/row.d.ts.map +1 -1
  340. package/build/table/components/row.js +6 -4
  341. package/build/table/filters/attribute-element.d.ts +2 -0
  342. package/build/table/filters/attribute-element.d.ts.map +1 -1
  343. package/build/table/filters/attribute-element.js +7 -7
  344. package/build/table/filters/filter-form.d.ts +58 -0
  345. package/build/table/filters/filter-form.d.ts.map +1 -1
  346. package/build/table/filters/filter-form.js +72 -9
  347. package/build/table/filters/filter.d.ts +2 -0
  348. package/build/table/filters/filter.d.ts.map +1 -1
  349. package/build/table/filters/filter.js +6 -4
  350. package/build/table/filters/index.d.ts +127 -0
  351. package/build/table/filters/index.d.ts.map +1 -1
  352. package/build/table/filters/index.js +21 -4
  353. package/build/table/filters/load-search-modal.d.ts +130 -0
  354. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  355. package/build/table/filters/load-search-modal.js +28 -6
  356. package/build/table/filters/reflection-element.d.ts +2 -0
  357. package/build/table/filters/reflection-element.d.ts.map +1 -1
  358. package/build/table/filters/reflection-element.js +6 -4
  359. package/build/table/filters/save-search-modal.d.ts +134 -0
  360. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  361. package/build/table/filters/save-search-modal.js +36 -5
  362. package/build/table/filters/scope-element.d.ts +6 -0
  363. package/build/table/filters/scope-element.d.ts.map +1 -1
  364. package/build/table/filters/scope-element.js +13 -8
  365. package/build/table/header-column-content.d.ts +7 -0
  366. package/build/table/header-column-content.d.ts.map +1 -1
  367. package/build/table/header-column-content.js +12 -4
  368. package/build/table/header-column.d.ts +50 -0
  369. package/build/table/header-column.d.ts.map +1 -1
  370. package/build/table/header-column.js +32 -5
  371. package/build/table/header-select.d.ts +18 -0
  372. package/build/table/header-select.d.ts.map +1 -1
  373. package/build/table/header-select.js +19 -4
  374. package/build/table/model-callback-args.d.ts +116 -3
  375. package/build/table/model-callback-args.d.ts.map +1 -1
  376. package/build/table/model-callback-args.js +10 -3
  377. package/build/table/model-column.d.ts +136 -0
  378. package/build/table/model-column.d.ts.map +1 -1
  379. package/build/table/model-column.js +27 -4
  380. package/build/table/model-row.d.ts +19 -0
  381. package/build/table/model-row.d.ts.map +1 -1
  382. package/build/table/model-row.js +24 -4
  383. package/build/table/select-calculator.d.ts +37 -2
  384. package/build/table/select-calculator.d.ts.map +1 -1
  385. package/build/table/select-calculator.js +29 -6
  386. package/build/table/settings/column-row.d.ts +6 -0
  387. package/build/table/settings/column-row.d.ts.map +1 -1
  388. package/build/table/settings/column-row.js +13 -12
  389. package/build/table/settings/download-action.d.ts +5 -0
  390. package/build/table/settings/download-action.d.ts.map +1 -1
  391. package/build/table/settings/download-action.js +10 -4
  392. package/build/table/settings/index.d.ts +5 -0
  393. package/build/table/settings/index.d.ts.map +1 -1
  394. package/build/table/settings/index.js +10 -4
  395. package/build/table/should-render-loading-content.d.ts +2 -2
  396. package/build/table/should-render-loading-content.d.ts.map +1 -1
  397. package/build/table/should-render-loading-content.js +3 -2
  398. package/build/table/table-settings.d.ts +236 -43
  399. package/build/table/table-settings.d.ts.map +1 -1
  400. package/build/table/table-settings.js +104 -20
  401. package/build/table/table.d.ts +271 -0
  402. package/build/table/table.d.ts.map +1 -1
  403. package/build/table/table.js +167 -16
  404. package/build/table/use-sorting.d.ts +10 -8
  405. package/build/table/use-sorting.d.ts.map +1 -1
  406. package/build/table/use-sorting.js +16 -8
  407. package/build/table/widths.d.ts +55 -8
  408. package/build/table/widths.d.ts.map +1 -1
  409. package/build/table/widths.js +25 -2
  410. package/build/table/worker-plugins-check-all-checkbox.d.ts +18 -0
  411. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  412. package/build/table/worker-plugins-check-all-checkbox.js +25 -5
  413. package/build/table/worker-plugins-checkbox.d.ts +5 -0
  414. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  415. package/build/table/worker-plugins-checkbox.js +10 -4
  416. package/build/translated-attributes.d.ts +7 -2
  417. package/build/translated-attributes.d.ts.map +1 -1
  418. package/build/translated-attributes.js +8 -2
  419. package/build/translated-collections.d.ts +11 -2
  420. package/build/translated-collections.d.ts.map +1 -1
  421. package/build/translated-collections.js +9 -3
  422. package/build/updated-attribute.d.ts.map +1 -1
  423. package/build/updated-attribute.js +2 -1
  424. package/build/url-encode.d.ts.map +1 -1
  425. package/build/url-encode.js +2 -1
  426. package/build/use-can-can.d.ts +2 -2
  427. package/build/use-can-can.d.ts.map +1 -1
  428. package/build/use-can-can.js +27 -12
  429. package/build/use-collection.d.ts +167 -121
  430. package/build/use-collection.d.ts.map +1 -1
  431. package/build/use-collection.js +113 -44
  432. package/build/use-created-event.d.ts +120 -11
  433. package/build/use-created-event.d.ts.map +1 -1
  434. package/build/use-created-event.js +10 -7
  435. package/build/use-current-user-context.d.ts +2 -2
  436. package/build/use-current-user-context.d.ts.map +1 -1
  437. package/build/use-current-user-context.js +3 -2
  438. package/build/use-current-user.d.ts +86 -70
  439. package/build/use-current-user.d.ts.map +1 -1
  440. package/build/use-current-user.js +36 -8
  441. package/build/use-destroyed-event.d.ts +117 -8
  442. package/build/use-destroyed-event.d.ts.map +1 -1
  443. package/build/use-destroyed-event.js +29 -22
  444. package/build/use-input.d.ts +74 -12
  445. package/build/use-input.d.ts.map +1 -1
  446. package/build/use-input.js +33 -5
  447. package/build/use-model-class-event.d.ts +124 -10
  448. package/build/use-model-class-event.d.ts.map +1 -1
  449. package/build/use-model-class-event.js +26 -16
  450. package/build/use-model-event.d.ts +121 -8
  451. package/build/use-model-event.d.ts.map +1 -1
  452. package/build/use-model-event.js +24 -19
  453. package/build/use-model.d.ts +162 -244
  454. package/build/use-model.d.ts.map +1 -1
  455. package/build/use-model.js +85 -32
  456. package/build/use-resize-observer.d.ts.map +1 -1
  457. package/build/use-resize-observer.js +2 -1
  458. package/build/use-router.d.ts.map +1 -1
  459. package/build/use-router.js +2 -1
  460. package/build/use-screen-layout.d.ts +7 -2
  461. package/build/use-screen-layout.d.ts.map +1 -1
  462. package/build/use-screen-layout.js +8 -5
  463. package/build/use-shape.js +2 -1
  464. package/build/use-styles.d.ts +11 -5
  465. package/build/use-styles.d.ts.map +1 -1
  466. package/build/use-styles.js +16 -9
  467. package/build/use-updated-event.d.ts +66 -182
  468. package/build/use-updated-event.d.ts.map +1 -1
  469. package/build/use-updated-event.js +22 -18
  470. package/build/use-validation-errors.d.ts.map +1 -1
  471. package/build/use-validation-errors.js +2 -1
  472. package/build/utils/button.d.ts +14 -0
  473. package/build/utils/button.d.ts.map +1 -1
  474. package/build/utils/button.js +24 -7
  475. package/build/utils/card.d.ts +9 -0
  476. package/build/utils/card.d.ts.map +1 -1
  477. package/build/utils/card.js +13 -2
  478. package/build/utils/checkbox.d.ts +12 -0
  479. package/build/utils/checkbox.d.ts.map +1 -1
  480. package/build/utils/checkbox.js +18 -4
  481. package/build/utils/checkboxes.d.ts +25 -0
  482. package/build/utils/checkboxes.d.ts.map +1 -1
  483. package/build/utils/checkboxes.js +29 -3
  484. package/build/utils/default-style.d.ts +10 -4
  485. package/build/utils/default-style.d.ts.map +1 -1
  486. package/build/utils/default-style.js +12 -4
  487. package/build/utils/header.d.ts +6 -1
  488. package/build/utils/header.d.ts.map +1 -1
  489. package/build/utils/header.js +4 -2
  490. package/build/utils/icon.d.ts +7 -6
  491. package/build/utils/icon.d.ts.map +1 -1
  492. package/build/utils/icon.js +12 -11
  493. package/build/utils/invalid-feedback.d.ts +4 -0
  494. package/build/utils/invalid-feedback.d.ts.map +1 -1
  495. package/build/utils/invalid-feedback.js +8 -2
  496. package/build/utils/modal.d.ts +2 -0
  497. package/build/utils/modal.d.ts.map +1 -1
  498. package/build/utils/modal.js +9 -7
  499. package/build/utils/text.d.ts +8 -1
  500. package/build/utils/text.d.ts.map +1 -1
  501. package/build/utils/text.js +9 -2
  502. package/build/validation-error.d.ts +5 -2
  503. package/build/validation-error.d.ts.map +1 -1
  504. package/build/validation-error.js +5 -2
  505. package/build/validation-errors.d.ts +57 -15
  506. package/build/validation-errors.d.ts.map +1 -1
  507. package/build/validation-errors.js +37 -8
  508. package/build/websocket-request-client.d.ts +61 -15
  509. package/build/websocket-request-client.d.ts.map +1 -1
  510. package/build/websocket-request-client.js +35 -9
  511. package/build/with-api-maker.d.ts.map +1 -1
  512. package/build/with-api-maker.js +2 -1
  513. package/build/with-collection.d.ts.map +1 -1
  514. package/build/with-collection.js +2 -1
  515. package/build/with-current-user.d.ts.map +1 -1
  516. package/build/with-current-user.js +2 -1
  517. package/build/with-model.d.ts.map +1 -1
  518. package/build/with-model.js +2 -1
  519. package/build/with-router.d.ts.map +1 -1
  520. package/build/with-router.js +2 -1
  521. package/package.json +4 -3
  522. package/build/base-component.d.ts +0 -5
  523. package/build/base-component.d.ts.map +0 -1
  524. package/build/base-component.js +0 -4
@@ -1,3 +1,4 @@
1
+ // @ts-check
1
2
  /* eslint-disable sort-imports */
2
3
  import { ShapeHook, useShapeHook } from "set-state-compare";
3
4
  import { useEffect } from "react";
@@ -6,30 +7,71 @@ import * as inflection from "inflection";
6
7
  import ModelEvents from "./model-events.js";
7
8
  import useQueryParams from "on-location-changed/build/use-query-params.js";
8
9
  import useUpdatedEvent from "./use-updated-event.js";
10
+ /** @typedef {typeof import("./base-model.js").default} BaseModelClass */
11
+ /** @typedef {import("./base-model.js").default} BaseModelInstance */
12
+ /** @typedef {BaseModelInstance & {id: () => number | string}} BaseModelWithId */
13
+ /** @typedef {import("./collection.js").default} ModelCollection */
14
+ /** @typedef {Record<string, string | number | boolean | object | undefined>} UseModelQueryParams */
15
+ /** @typedef {string | number | boolean | object | null | undefined} UseModelCacheValue */
16
+ /** @typedef {Record<string, string | number | undefined>} UseModelMatchParams */
17
+ /** @typedef {{params: UseModelMatchParams}} UseModelMatch */
18
+ /** @typedef {Record<string, string | number | boolean | object | undefined>} UseModelDefaults */
19
+ /** @typedef {{defaults?: () => UseModelDefaults | Promise<UseModelDefaults>}} UseModelNewIfNoIdConfig */
20
+ /** @typedef {{callback: (args: {queryParams: UseModelQueryParams | undefined}) => BaseModelClass}} UseModelModelClassResolver */
21
+ /** @typedef {{modelClass: BaseModelClass}} UseModelArgsFactoryArgs */
22
+ /** @typedef {{model: BaseModelInstance} & Record<string, BaseModelInstance>} UseModelOnDestroyedArgs */
23
+ /**
24
+ * @typedef {object} UseModelEvents
25
+ * @property {(eventName: string, callback: () => void) => void} addListener
26
+ * @property {(eventName: string, callback: () => void) => void} removeListener
27
+ */
9
28
  /**
10
29
  * @typedef {object} useModelArgs
11
- * @property {(arg: object) => Function} [callback]
12
- * @property {(arg: object) => object} [args]
13
- * @property {(args: {queryParams: Record<string, any> | undefined}) => number|string} [loadByQueryParam]
14
- * @property {any[]} [cacheArgs]
15
- * @property {{params: object}} [match]
16
- * @property {(ctx: { model: import("./base-model.js").default }) => void} [onDestroyed]
17
- * @property {import("./collection.js").default} [query]
30
+ * @property {boolean} [active]
31
+ * @property {Record<string, string[]>} [abilities]
32
+ * @property {UseModelCacheValue[]} [cacheArgs]
33
+ * @property {boolean} [eventUpdated]
34
+ * @property {UseModelEvents} [events]
35
+ * @property {(args: {queryParams: UseModelQueryParams | undefined}) => number | string | undefined} [loadByQueryParam]
36
+ * @property {UseModelMatch} [match]
37
+ * @property {UseModelNewIfNoIdConfig | boolean} [newIfNoId]
38
+ * @property {UseModelDefaults} [newAttributes]
39
+ * @property {(ctx: UseModelOnDestroyedArgs) => void} [onDestroyed]
40
+ * @property {boolean} [optional]
41
+ * @property {string[] | object} [preload]
42
+ * @property {ModelCollection} [query]
43
+ * @property {string[] | object} [select]
44
+ */
45
+ /** @typedef {useModelArgs | ((args: UseModelArgsFactoryArgs) => useModelArgs)} UseModelArgsArg */
46
+ /**
47
+ * @typedef {object} UseModelShapeHookProps
48
+ * @property {UseModelArgsArg} [argsArg]
49
+ * @property {BaseModelClass | UseModelModelClassResolver} modelClassArg
18
50
  */
19
51
  /** Hook state container for useModel. */
20
52
  /**
21
53
  * @typedef {object} UseModelState
22
- * @property {any | undefined} model
54
+ * @property {BaseModelInstance | undefined} model
23
55
  * @property {boolean | undefined} notFound
24
56
  */
25
- /** @augments {ShapeHook<Record<string, any>, UseModelState>} */
57
+ /**
58
+ * @typedef {{
59
+ * model: BaseModelInstance | undefined,
60
+ * modelId: number | string | undefined,
61
+ * notFound: boolean | undefined
62
+ * } & Record<string, BaseModelInstance | number | string | boolean | undefined>} UseModelResult
63
+ */
64
+ /** @augments {ShapeHook<UseModelShapeHookProps, UseModelState>} */
26
65
  class UseModelShapeHook extends ShapeHook {
27
66
  state = /** @type {UseModelState} */ ({
28
67
  model: undefined,
29
68
  notFound: undefined
30
69
  });
31
70
  updatedConnectionFallbackTimeoutId = undefined;
32
- /** Constructor. */
71
+ /**
72
+ * Constructor.
73
+ * @param {UseModelShapeHookProps} props
74
+ */
33
75
  constructor(props) {
34
76
  super(props);
35
77
  this.initialLoadTriggered = false;
@@ -42,14 +84,14 @@ class UseModelShapeHook extends ShapeHook {
42
84
  active() {
43
85
  return !("active" in this.args()) || Boolean(this.args().active);
44
86
  }
45
- /** @returns {useModelArgs & Record<string, any>} */
87
+ /** @returns {useModelArgs} */
46
88
  args() {
47
89
  if (typeof this.p.argsArg == "function") {
48
90
  return this.p.argsArg({ modelClass: this.modelClass() });
49
91
  }
50
92
  return this.p.argsArg || {};
51
93
  }
52
- /** @returns {typeof import("./base-model.js").default} */
94
+ /** @returns {BaseModelClass} */
53
95
  modelClass() {
54
96
  if (typeof this.p.modelClassArg == "object") {
55
97
  return this.p.modelClassArg.callback({ queryParams: this.queryParams });
@@ -78,7 +120,7 @@ class UseModelShapeHook extends ShapeHook {
78
120
  modelVariableName() {
79
121
  return inflection.camelize(this.modelClass().modelClassData().name, true);
80
122
  }
81
- /** @returns {any[]} */
123
+ /** @returns {UseModelCacheValue[]} */
82
124
  cacheArgs() {
83
125
  return [this.modelId()].concat(this.args().cacheArgs || [], this.queryParams);
84
126
  }
@@ -86,25 +128,35 @@ class UseModelShapeHook extends ShapeHook {
86
128
  shouldWaitForUpdatedConnection() {
87
129
  return Boolean(this.args().eventUpdated && this.modelId() && !this.s.model);
88
130
  }
89
- /** @returns {object} */
131
+ /** @returns {UseModelDefaults} */
90
132
  newModelDataFromParams() {
91
- return this.queryParams?.[this.modelClass().modelName()
92
- .paramKey()] || {};
133
+ const modelDataFromParams = this.queryParams?.[this.modelClass().modelName()
134
+ .paramKey()];
135
+ return typeof modelDataFromParams == "object" && modelDataFromParams ? modelDataFromParams : {};
93
136
  }
94
137
  /** @returns {boolean} */
95
138
  hasAsyncDefaults() {
96
139
  return Boolean(this.newIfNoIdDefaultsResult && typeof this.newIfNoIdDefaultsResult.then == "function");
97
140
  }
98
- /** @returns {object | null} */
141
+ /** @returns {UseModelNewIfNoIdConfig | null} */
142
+ newIfNoIdConfig() {
143
+ const { newIfNoId } = this.args();
144
+ if (!newIfNoId || newIfNoId === true) {
145
+ return null;
146
+ }
147
+ return newIfNoId;
148
+ }
149
+ /** @returns {UseModelDefaults | null} */
99
150
  syncDefaultsForNewModel() {
100
- if (!this.args().newIfNoId?.defaults) {
151
+ const newIfNoIdConfig = this.newIfNoIdConfig();
152
+ if (!newIfNoIdConfig?.defaults) {
101
153
  return {};
102
154
  }
103
155
  else if (this.hasAsyncDefaults()) {
104
156
  return null;
105
157
  }
106
158
  if (this.newIfNoIdDefaultsResult === null) {
107
- const defaultsResult = this.args().newIfNoId.defaults();
159
+ const defaultsResult = newIfNoIdConfig.defaults();
108
160
  if (defaultsResult && typeof defaultsResult.then == "function") {
109
161
  this.newIfNoIdDefaultsResult = defaultsResult.catch((error) => {
110
162
  throw error;
@@ -115,7 +167,7 @@ class UseModelShapeHook extends ShapeHook {
115
167
  }
116
168
  return this.newIfNoIdDefaultsResult || {};
117
169
  }
118
- /** @returns {import("./base-model.js").default | undefined} */
170
+ /** @returns {BaseModelInstance | undefined} */
119
171
  syncNewModel() {
120
172
  if (!this.active() || !this.args().newIfNoId || this.modelId()) {
121
173
  return undefined;
@@ -129,7 +181,7 @@ class UseModelShapeHook extends ShapeHook {
129
181
  data: { a: Object.assign(defaults, this.args().newAttributes, this.newModelDataFromParams()) }
130
182
  });
131
183
  }
132
- /** @returns {import("./base-model.js").default | undefined} */
184
+ /** @returns {BaseModelInstance | undefined} */
133
185
  subscriptionModel() {
134
186
  if (!this.args().eventUpdated) {
135
187
  return undefined;
@@ -180,10 +232,11 @@ class UseModelShapeHook extends ShapeHook {
180
232
  /** @param {number} loadModelGeneration */
181
233
  loadNewModel = async (loadModelGeneration) => {
182
234
  let defaults = {};
183
- if (this.args().newIfNoId?.defaults) {
235
+ const newIfNoIdConfig = this.newIfNoIdConfig();
236
+ if (newIfNoIdConfig?.defaults) {
184
237
  let defaultsResult = this.newIfNoIdDefaultsResult;
185
238
  if (defaultsResult === null) {
186
- defaultsResult = this.args().newIfNoId.defaults();
239
+ defaultsResult = newIfNoIdConfig.defaults();
187
240
  }
188
241
  this.newIfNoIdDefaultsResult = null;
189
242
  defaults = await defaultsResult;
@@ -228,7 +281,7 @@ class UseModelShapeHook extends ShapeHook {
228
281
  }
229
282
  }, 1000);
230
283
  }
231
- /** @param {{model: import("./base-model.js").default}} args */
284
+ /** @param {{model: BaseModelInstance}} args */
232
285
  onDestroyed = (args) => {
233
286
  const forwardArgs = { model: args.model };
234
287
  forwardArgs[this.modelVariableName()] = args.model;
@@ -250,7 +303,7 @@ class UseModelShapeHook extends ShapeHook {
250
303
  this.loadModel();
251
304
  }
252
305
  };
253
- /** @returns {import("./base-model.js").default | undefined} */
306
+ /** @returns {BaseModelInstance | undefined} */
254
307
  visibleModel() {
255
308
  let model = this.s.model;
256
309
  if (!model) {
@@ -259,7 +312,7 @@ class UseModelShapeHook extends ShapeHook {
259
312
  if (!this.active()) {
260
313
  return undefined;
261
314
  }
262
- else if (this.modelId() && model && model.id() != this.modelId()) {
315
+ else if (this.modelId() && model && /** @type {BaseModelWithId} */ (model).id() != this.modelId()) {
263
316
  return undefined;
264
317
  }
265
318
  else if (!this.modelId() && !this.args().query && !this.args().newIfNoId) {
@@ -328,15 +381,15 @@ class UseModelShapeHook extends ShapeHook {
328
381
  return () => {
329
382
  connectDestroyed.unsubscribe();
330
383
  };
331
- }, [this.args().onDestroyed, this.s.model ? this.s.model.id() : undefined]);
384
+ }, [this.args().onDestroyed, this.s.model ? /** @type {BaseModelWithId} */ (this.s.model).id() : undefined]);
332
385
  }
333
386
  }
334
387
  /**
335
- * @param {Function|object} modelClassArg
336
- * @param {object | ((args: {modelClass: typeof import("./base-model.js").default}) => useModelArgs)} [argsArg]
337
- * @returns {Record<string, any>}
388
+ * useModel.
389
+ * @param {BaseModelClass | UseModelModelClassResolver} modelClassArg
390
+ * @param {UseModelArgsArg} [argsArg]
391
+ * @returns {UseModelResult}
338
392
  */
339
- /** useModel. */
340
393
  const useModel = (modelClassArg, argsArg = {}) => {
341
394
  const shapeHook = useShapeHook(UseModelShapeHook, { argsArg, modelClassArg });
342
395
  const model = shapeHook.visibleModel();
@@ -354,4 +407,4 @@ const useModel = (modelClassArg, argsArg = {}) => {
354
407
  return result;
355
408
  };
356
409
  export default useModel;
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDekQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMvQixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFDMUUsT0FBTyxlQUFlLE1BQU0sd0JBQXdCLENBQUE7QUFFcEQ7Ozs7Ozs7OztHQVNHO0FBRUgseUNBQXlDO0FBQ3pDOzs7O0dBSUc7QUFFSCxnRUFBZ0U7QUFDaEUsTUFBTSxpQkFBa0IsU0FBUSxTQUFTO0lBQ3ZDLEtBQUssR0FBRyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFFBQVEsRUFBRSxTQUFTO0tBQ3BCLENBQUMsQ0FBQTtJQUVGLGtDQUFrQyxHQUFHLFNBQVMsQ0FBQTtJQUU5QyxtQkFBbUI7SUFDbkIsWUFBWSxLQUFLO1FBQ2YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQTtRQUNqQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUE7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtJQUNyQyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLE1BQU07UUFDSixPQUFPLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFD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QUFRO0tBQ1QsQ0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNqQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUE7SUFFakQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtTaGFwZUhvb2ssIHVzZVNoYXBlSG9va30gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcbmltcG9ydCB1c2VVcGRhdGVkRXZlbnQgZnJvbSBcIi4vdXNlLXVwZGF0ZWQtZXZlbnQuanNcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHVzZU1vZGVsQXJnc1xuICogQHByb3BlcnR5IHsoYXJnOiBvYmplY3QpID0+IEZ1bmN0aW9ufSBbY2FsbGJhY2tdXG4gKiBAcHJvcGVydHkgeyhhcmc6IG9iamVjdCkgPT4gb2JqZWN0fSBbYXJnc11cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZH0pID0+IG51bWJlcnxzdHJpbmd9IFtsb2FkQnlRdWVyeVBhcmFtXVxuICogQHByb3BlcnR5IHthbnlbXX0gW2NhY2hlQXJnc11cbiAqIEBwcm9wZXJ0eSB7e3BhcmFtczogb2JqZWN0fX0gW21hdGNoXVxuICogQHByb3BlcnR5IHsoY3R4OiB7IG1vZGVsOiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCB9KSA9PiB2b2lkfSBbb25EZXN0cm95ZWRdXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5kZWZhdWx0fSBbcXVlcnldXG4gKi9cblxuLyoqIEhvb2sgc3RhdGUgY29udGFpbmVyIGZvciB1c2VNb2RlbC4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gVXNlTW9kZWxTdGF0ZVxuICogQHByb3BlcnR5IHthbnkgfCB1bmRlZmluZWR9IG1vZGVsXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCB1bmRlZmluZWR9IG5vdEZvdW5kXG4gKi9cblxuLyoqIEBhdWdtZW50cyB7U2hhcGVIb29rPFJlY29yZDxzdHJpbmcsIGFueT4sIFVzZU1vZGVsU3RhdGU+fSAqL1xuY2xhc3MgVXNlTW9kZWxTaGFwZUhvb2sgZXh0ZW5kcyBTaGFwZUhvb2sge1xuICBzdGF0ZSA9IC8qKiBAdHlwZSB7VXNlTW9kZWxTdGF0ZX0gKi8gKHtcbiAgICBtb2RlbDogdW5kZWZpbmVkLFxuICAgIG5vdEZvdW5kOiB1bmRlZmluZWRcbiAgfSlcblxuICB1cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkID0gdW5kZWZpbmVkXG5cbiAgLyoqIENvbnN0cnVjdG9yLiAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKVxuICAgIHRoaXMuaW5pdGlhbExvYWRUcmlnZ2VyZWQgPSBmYWxzZVxuICAgIHRoaXMubG9hZE1vZGVsR2VuZXJhdGlvbiA9IDBcbiAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1bmRlZmluZWRcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgPSBmYWxzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBhY3RpdmUoKSB7XG4gICAgcmV0dXJuICEoXCJhY3RpdmVcIiBpbiB0aGlzLmFyZ3MoKSkgfHwgQm9vbGVhbih0aGlzLmFyZ3MoKS5hY3RpdmUpXG4gIH1cblxuICAvKiogQHJldHVybnMge3VzZU1vZGVsQXJncyAmIFJlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIGFyZ3MoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnAuYXJnc0FyZyA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnAuYXJnc0FyZyh7bW9kZWxDbGFzczogdGhpcy5tb2RlbENsYXNzKCl9KVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnAuYXJnc0FyZyB8fCB7fVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9ICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnAubW9kZWxDbGFzc0FyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmcuY2FsbGJhY2soe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmdcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBwYXJhbXNWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kZWxDbGFzcygpLm1vZGVsTmFtZSgpXG4gICAgICAucGFyYW1LZXkoKX1faWRgXG4gIH1cblxuICAvKiogQHJldHVybnMge251bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbW9kZWxJZCgpIHtcbiAgICBpZiAodGhpcy5hcmdzKCkubG9hZEJ5UXVlcnlQYXJhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncygpLmxvYWRCeVF1ZXJ5UGFyYW0oe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncygpLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmdzKCkubWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MoKS5tYXRjaC5wYXJhbXNbdGhpcy5wYXJhbXNWYXJpYWJsZU5hbWUoKV0gfHwgdGhpcy5hcmdzKCkubWF0Y2gucGFyYW1zLmlkXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUodGhpcy5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHthbnlbXX0gKi9cbiAgY2FjaGVBcmdzKCkge1xuICAgIHJldHVybiBbdGhpcy5tb2RlbElkKCldLmNvbmNhdCh0aGlzLmFyZ3MoKS5jYWNoZUFyZ3MgfHwgW10sIHRoaXMucXVlcnlQYXJhbXMpXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIHNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQgJiYgdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMucy5tb2RlbClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7b2JqZWN0fSAqL1xuICBuZXdNb2RlbERhdGFGcm9tUGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5UGFyYW1zPy5bdGhpcy5tb2RlbENsYXNzKCkubW9kZWxOYW1lKClcbiAgICAgIC5wYXJhbUtleSgpXSB8fCB7fVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBoYXNBc3luY0RlZmF1bHRzKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQudGhlbiA9PSBcImZ1bmN0aW9uXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge29iamVjdCB8IG51bGx9ICovXG4gIHN5bmNEZWZhdWx0c0Zvck5ld01vZGVsKCkge1xuICAgIGlmICghdGhpcy5hcmdzKCkubmV3SWZOb0lkPy5kZWZhdWx0cykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0FzeW5jRGVmYXVsdHMoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmYXVsdHNSZXN1bHQgPSB0aGlzLmFyZ3MoKS5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0IHx8IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqL1xuICBzeW5jTmV3TW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpIHx8ICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgfHwgdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuc3luY0RlZmF1bHRzRm9yTmV3TW9kZWwoKVxuXG4gICAgaWYgKGRlZmF1bHRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHRoaXMuYXJncygpLm5ld0F0dHJpYnV0ZXMsIHRoaXMubmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpKX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgc3Vic2NyaXB0aW9uTW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbCkge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbFxuICAgIH0gZWxzZSBpZiAoIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGRhdGE6IHthOiB7W3RoaXMubW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV06IHRoaXMubW9kZWxJZCgpfX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWRFeGlzdGluZ01vZGVsID0gYXN5bmMgKGxvYWRNb2RlbEdlbmVyYXRpb24pID0+IHtcbiAgICBsZXQgcXVlcnlcblxuICAgIGlmICh0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgcXVlcnkgPSB0aGlzLm1vZGVsQ2xhc3MoKS5yYW5zYWNrKHtpZF9lcTogdGhpcy5tb2RlbElkKCl9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5hcmdzKCkucXVlcnkpIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5hcmdzKCkucXVlcnkuY2xvbmUoKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaFBhcmFtcyA9IHRoaXMuYXJncygpLm1hdGNoPy5wYXJhbXMgfHwge31cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7dGhpcy5tb2RlbElkKCl9IGJ5ICcke3RoaXMucGFyYW1zVmFyaWFibGVOYW1lKCl9JyBpbiBxdWVyeSBwYXJhbXM6ICR7T2JqZWN0LmtleXMobWF0Y2hQYXJhbXMpLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMuYXJncygpLnByZWxvYWQpIHF1ZXJ5LnByZWxvYWQodGhpcy5hcmdzKCkucHJlbG9hZClcbiAgICBpZiAodGhpcy5hcmdzKCkuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5hcmdzKCkuc2VsZWN0KVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zLm1vZGVsICYmXG4gICAgICBtb2RlbCAmJlxuICAgICAgIXRoaXMucy5ub3RGb3VuZCAmJlxuICAgICAgdGhpcy5zLm1vZGVsLmZ1bGxDYWNoZUtleSgpID09IG1vZGVsLmZ1bGxDYWNoZUtleSgpXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnMubW9kZWwgJiYgIW1vZGVsICYmIHRoaXMucy5ub3RGb3VuZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiAhbW9kZWx9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWROZXdNb2RlbCA9IGFzeW5jIChsb2FkTW9kZWxHZW5lcmF0aW9uKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRzID0ge31cblxuICAgIGlmICh0aGlzLmFyZ3MoKS5uZXdJZk5vSWQ/LmRlZmF1bHRzKSB7XG4gICAgICBsZXQgZGVmYXVsdHNSZXN1bHQgPSB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0XG5cbiAgICAgIGlmIChkZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICBkZWZhdWx0c1Jlc3VsdCA9IHRoaXMuYXJncygpLm5ld0lmTm9JZC5kZWZhdWx0cygpXG4gICAgICB9XG5cbiAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBudWxsXG4gICAgICBkZWZhdWx0cyA9IGF3YWl0IGRlZmF1bHRzUmVzdWx0XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWwgPSBuZXcgKHRoaXMubW9kZWxDbGFzcygpKSh7XG4gICAgICBpc05ld1JlY29yZDogdHJ1ZSxcbiAgICAgIGRhdGE6IHthOiBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCB0aGlzLmFyZ3MoKS5uZXdBdHRyaWJ1dGVzLCB0aGlzLm5ld01vZGVsRGF0YUZyb21QYXJhbXMoKSl9XG4gICAgfSlcblxuICAgIGlmIChsb2FkTW9kZWxHZW5lcmF0aW9uICE9IHRoaXMubG9hZE1vZGVsR2VuZXJhdGlvbikgcmV0dXJuXG5cbiAgICB0aGlzLnNldFN0YXRlKHttb2RlbCwgbm90Rm91bmQ6IGZhbHNlfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgbG9hZE1vZGVsID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIE9ubHkgdGhlIG5ld2VzdCBtb2RlbCByZXF1ZXN0IG1heSB1cGRhdGUgc3RhdGUgYWZ0ZXIgcm91dGUgb3IgYXV0aCBjaGFuZ2VzLlxuICAgIGNvbnN0IGxvYWRNb2RlbEdlbmVyYXRpb24gPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gKyAxXG5cbiAgICB0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkID0gdHJ1ZVxuICAgIHRoaXMubG9hZE1vZGVsR2VuZXJhdGlvbiA9IGxvYWRNb2RlbEdlbmVyYXRpb25cbiAgICBpZiAodGhpcy5hY3RpdmUoKSAmJiB0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgJiYgIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWROZXdNb2RlbChsb2FkTW9kZWxHZW5lcmF0aW9uKVxuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmUoKSAmJiAoIXRoaXMuYXJncygpLm9wdGlvbmFsIHx8IHRoaXMubW9kZWxJZCgpIHx8IHRoaXMuYXJncygpLnF1ZXJ5KSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRXhpc3RpbmdNb2RlbChsb2FkTW9kZWxHZW5lcmF0aW9uKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgY2xlYXJVcGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dCgpIHtcbiAgICBpZiAodGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkKVxuICAgICAgdGhpcy51cGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dElkID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBlbnN1cmVJbml0aWFsTG9hZEZhbGxiYWNrKCkge1xuICAgIGlmICghdGhpcy5zaG91bGRXYWl0Rm9yVXBkYXRlZENvbm5lY3Rpb24oKSB8fCB0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKVxuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgJiYgIXRoaXMuaW5pdGlhbExvYWRUcmlnZ2VyZWQpIHtcbiAgICAgICAgdGhpcy5sb2FkTW9kZWwoKVxuICAgICAgfVxuICAgIH0sIDEwMDApXG4gIH1cblxuICAvKiogQHBhcmFtIHt7bW9kZWw6IGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fX0gYXJncyAqL1xuICBvbkRlc3Ryb3llZCA9IChhcmdzKSA9PiB7XG4gICAgY29uc3QgZm9yd2FyZEFyZ3MgPSB7bW9kZWw6IGFyZ3MubW9kZWx9XG5cbiAgICBmb3J3YXJkQXJnc1t0aGlzLm1vZGVsVmFyaWFibGVOYW1lKCldID0gYXJncy5tb2RlbFxuXG4gICAgdGhpcy5hcmdzKCkub25EZXN0cm95ZWQoZm9yd2FyZEFyZ3MpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIG9uU2lnbmVkSW4gPSAoKSA9PiB7XG4gICAgdGhpcy5sb2FkTW9kZWwoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblNpZ25lZE91dCA9ICgpID0+IHtcbiAgICB0aGlzLmxvYWRNb2RlbCgpXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIG9uVXBkYXRlZEV2ZW50Q29ubmVjdGVkID0gKCkgPT4ge1xuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25SZWFkeSA9IHRydWVcbiAgICB0aGlzLmNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKVxuXG4gICAgaWYgKHRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkgJiYgIXRoaXMuaW5pdGlhbExvYWRUcmlnZ2VyZWQpIHtcbiAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqL1xuICB2aXNpYmxlTW9kZWwoKSB7XG4gICAgbGV0IG1vZGVsID0gdGhpcy5zLm1vZGVsXG5cbiAgICBpZiAoIW1vZGVsKSB7XG4gICAgICBtb2RlbCA9IHRoaXMuc3luY05ld01vZGVsKClcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWN0aXZlKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZWxJZCgpICYmIG1vZGVsICYmIG1vZGVsLmlkKCkgIT0gdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsSWQoKSAmJiAhdGhpcy5hcmdzKCkucXVlcnkgJiYgIXRoaXMuYXJncygpLm5ld0lmTm9JZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICB2aXNpYmxlTm90Rm91bmQoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsSWQoKSAmJiB0aGlzLnZpc2libGVNb2RlbCgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsSWQoKSAmJiAhdGhpcy5hcmdzKCkucXVlcnkgJiYgIXRoaXMuYXJncygpLm5ld0lmTm9JZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnMubm90Rm91bmRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHVzZUVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucy5tb2RlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgc3luY05ld01vZGVsID0gdGhpcy5zeW5jTmV3TW9kZWwoKVxuXG4gICAgICAgICAgaWYgKHN5bmNOZXdNb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWw6IHN5bmNOZXdNb2RlbCwgbm90Rm91bmQ6IGZhbHNlfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaG91bGRXYWl0Rm9yVXBkYXRlZENvbm5lY3Rpb24oKSkge1xuICAgICAgICAgIHRoaXMuZW5zdXJlSW5pdGlhbExvYWRGYWxsYmFjaygpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkTW9kZWwoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdGhpcy5jYWNoZUFyZ3MoKVxuICAgIClcblxuICAgIC8vIEludmFsaWRhdGUgaW4tZmxpZ2h0IGFzeW5jIHJlc3BvbnNlcyBzbyBzdGFsZSBsb2FkcyBjYW5ub3Qgd3JpdGUgYWZ0ZXIgdW5tb3VudC5cbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcbiAgICAgIHRoaXMubG9hZE1vZGVsR2VuZXJhdGlvbiArPSAxXG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFyZ3MoKS5ldmVudHMpIHJldHVyblxuXG4gICAgICB0aGlzLmFyZ3MoKS5ldmVudHMuYWRkTGlzdGVuZXIoXCJyZWxvYWRNb2RlbFwiLCB0aGlzLmxvYWRNb2RlbClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgdGhpcy5hcmdzKCkuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgdGhpcy5sb2FkTW9kZWwpXG4gICAgICB9XG4gICAgfSwgW3RoaXMuYXJncygpLmV2ZW50c10pXG5cbiAgICB1c2VVcGRhdGVkRXZlbnQodGhpcy5zdWJzY3JpcHRpb25Nb2RlbCgpLCB0aGlzLmxvYWRNb2RlbCwge1xuICAgICAgb25Db25uZWN0ZWQ6IHRoaXMub25VcGRhdGVkRXZlbnRDb25uZWN0ZWRcbiAgICB9KVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIERldmlzZS5ldmVudHMoKS5hZGRMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIHRoaXMub25TaWduZWRJbilcbiAgICAgIERldmlzZS5ldmVudHMoKS5hZGRMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbk91dFwiLCB0aGlzLm9uU2lnbmVkT3V0KVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCB0aGlzLm9uU2lnbmVkSW4pXG4gICAgICAgIERldmlzZS5ldmVudHMoKS5yZW1vdmVMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbk91dFwiLCB0aGlzLm9uU2lnbmVkT3V0KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnMubW9kZWwgfHwgIXRoaXMuYXJncygpLm9uRGVzdHJveWVkKSByZXR1cm5cblxuICAgICAgY29uc3QgY29ubmVjdERlc3Ryb3llZCA9IE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQodGhpcy5zLm1vZGVsLCB0aGlzLm9uRGVzdHJveWVkKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb25uZWN0RGVzdHJveWVkLnVuc3Vic2NyaWJlKClcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5hcmdzKCkub25EZXN0cm95ZWQsIHRoaXMucy5tb2RlbCA/IHRoaXMucy5tb2RlbC5pZCgpIDogdW5kZWZpbmVkXSlcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RnVuY3Rpb258b2JqZWN0fSBtb2RlbENsYXNzQXJnXG4gKiBAcGFyYW0ge29iamVjdCB8ICgoYXJnczoge21vZGVsQ2xhc3M6IHR5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0pID0+IHVzZU1vZGVsQXJncyl9IFthcmdzQXJnXVxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59XG4gKi9cbi8qKiB1c2VNb2RlbC4gKi9cbmNvbnN0IHVzZU1vZGVsID0gKG1vZGVsQ2xhc3NBcmcsIGFyZ3NBcmcgPSB7fSkgPT4ge1xuICBjb25zdCBzaGFwZUhvb2sgPSB1c2VTaGFwZUhvb2soVXNlTW9kZWxTaGFwZUhvb2ssIHthcmdzQXJnLCBtb2RlbENsYXNzQXJnfSlcbiAgY29uc3QgbW9kZWwgPSBzaGFwZUhvb2sudmlzaWJsZU1vZGVsKClcbiAgY29uc3QgbW9kZWxJZCA9IHNoYXBlSG9vay5tb2RlbElkKClcbiAgY29uc3Qgbm90Rm91bmQgPSBzaGFwZUhvb2sudmlzaWJsZU5vdEZvdW5kKClcbiAgY29uc3QgbW9kZWxWYXJpYWJsZU5hbWUgPSBzaGFwZUhvb2subW9kZWxWYXJpYWJsZU5hbWUoKVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgbW9kZWwsXG4gICAgbW9kZWxJZCxcbiAgICBub3RGb3VuZFxuICB9XG5cbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IG1vZGVsXG4gIHJlc3VsdFtgJHttb2RlbFZhcmlhYmxlTmFtZX1JZGBdID0gbW9kZWxJZFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9Tm90Rm91bmRgXSA9IG5vdEZvdW5kXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VNb2RlbFxuIl19
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sV0FBVyxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFBO0FBRXBELHlFQUF5RTtBQUN6RSxxRUFBcUU7QUFDckUsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNuRSxvR0FBb0c7QUFDcEcsMEZBQTBGO0FBQzFGLGlGQUFpRjtBQUNqRiw2REFBNkQ7QUFDN0QsaUdBQWlHO0FBQ2pHLHlHQUF5RztBQUN6RyxpSUFBaUk7QUFDakksc0VBQXNFO0FBQ3RFLHdHQUF3RztBQUN4Rzs7OztHQUlHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxrR0FBa0c7QUFDbEc7Ozs7R0FJRztBQUVILHlDQUF5QztBQUN6Qzs7OztHQUlHO0FBRUg7Ozs7OztHQU1HO0FBRUgsbUVBQW1FO0FBQ25FLE1BQU0saUJBQWtCLFNBQVEsU0FBUztJQUN2QyxLQUFLLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztRQUNwQyxLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsU0FBUztLQUNwQixDQUFDLENBQUE7SUFFRixrQ0FBa0MsR0FBRyxTQUFTLENBQUE7SUFFOUM7OztPQUdHO0lBQ0gsWUFBWSxLQUFLO1FBQ2YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ1osSUFBSSxDQUFDLG9CQUFv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QUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUM5RyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sUUFBUSxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUMvQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxPQUFPLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDdEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ25DLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtJQUM1QyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3ZELE1BQU0sTUFBTSxHQUFHO1FBQ2IsS0FBSztRQUNMLE9BQU87UUFDUCxRQUFRO0tBQ1QsQ0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNqQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUE7SUFFakQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1NoYXBlSG9vaywgdXNlU2hhcGVIb29rfSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmVcIlxuaW1wb3J0IHt1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgRGV2aXNlIGZyb20gXCIuL2RldmlzZS5qc1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBNb2RlbEV2ZW50cyBmcm9tIFwiLi9tb2RlbC1ldmVudHMuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IHVzZVVwZGF0ZWRFdmVudCBmcm9tIFwiLi91c2UtdXBkYXRlZC1ldmVudC5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWxDbGFzcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsSW5zdGFuY2UgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsSW5zdGFuY2UgJiB7aWQ6ICgpID0+IG51bWJlciB8IHN0cmluZ319IEJhc2VNb2RlbFdpdGhJZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gTW9kZWxDb2xsZWN0aW9uICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCB1bmRlZmluZWQ+fSBVc2VNb2RlbFF1ZXJ5UGFyYW1zICovXG4vKiogQHR5cGVkZWYge3N0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QgfCBudWxsIHwgdW5kZWZpbmVkfSBVc2VNb2RlbENhY2hlVmFsdWUgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxNYXRjaFBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHt7cGFyYW1zOiBVc2VNb2RlbE1hdGNoUGFyYW1zfX0gVXNlTW9kZWxNYXRjaCAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0IHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxEZWZhdWx0cyAqL1xuLyoqIEB0eXBlZGVmIHt7ZGVmYXVsdHM/OiAoKSA9PiBVc2VNb2RlbERlZmF1bHRzIHwgUHJvbWlzZTxVc2VNb2RlbERlZmF1bHRzPn19IFVzZU1vZGVsTmV3SWZOb0lkQ29uZmlnICovXG4vKiogQHR5cGVkZWYge3tjYWxsYmFjazogKGFyZ3M6IHtxdWVyeVBhcmFtczogVXNlTW9kZWxRdWVyeVBhcmFtcyB8IHVuZGVmaW5lZH0pID0+IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXIgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsQ2xhc3M6IEJhc2VNb2RlbENsYXNzfX0gVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX0gJiBSZWNvcmQ8c3RyaW5nLCBCYXNlTW9kZWxJbnN0YW5jZT59IFVzZU1vZGVsT25EZXN0cm95ZWRBcmdzICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFVzZU1vZGVsRXZlbnRzXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IGFkZExpc3RlbmVyXG4gKiBAcHJvcGVydHkgeyhldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHZvaWR9IHJlbW92ZUxpc3RlbmVyXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFthY3RpdmVdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FiaWxpdGllc11cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxDYWNoZVZhbHVlW119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtldmVudFVwZGF0ZWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRXZlbnRzfSBbZXZlbnRzXVxuICogQHByb3BlcnR5IHsoYXJnczoge3F1ZXJ5UGFyYW1zOiBVc2VNb2RlbFF1ZXJ5UGFyYW1zIHwgdW5kZWZpbmVkfSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7VXNlTW9kZWxNYXRjaH0gW21hdGNoXVxuICogQHByb3BlcnR5IHtVc2VNb2RlbE5ld0lmTm9JZENvbmZpZyB8IGJvb2xlYW59IFtuZXdJZk5vSWRdXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsRGVmYXVsdHN9IFtuZXdBdHRyaWJ1dGVzXVxuICogQHByb3BlcnR5IHsoY3R4OiBVc2VNb2RlbE9uRGVzdHJveWVkQXJncykgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbb3B0aW9uYWxdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbcHJlbG9hZF1cbiAqIEBwcm9wZXJ0eSB7TW9kZWxDb2xsZWN0aW9ufSBbcXVlcnldXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgb2JqZWN0fSBbc2VsZWN0XVxuICovXG4vKiogQHR5cGVkZWYge3VzZU1vZGVsQXJncyB8ICgoYXJnczogVXNlTW9kZWxBcmdzRmFjdG9yeUFyZ3MpID0+IHVzZU1vZGVsQXJncyl9IFVzZU1vZGVsQXJnc0FyZyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFNoYXBlSG9va1Byb3BzXG4gKiBAcHJvcGVydHkge1VzZU1vZGVsQXJnc0FyZ30gW2FyZ3NBcmddXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbENsYXNzIHwgVXNlTW9kZWxNb2RlbENsYXNzUmVzb2x2ZXJ9IG1vZGVsQ2xhc3NBcmdcbiAqL1xuXG4vKiogSG9vayBzdGF0ZSBjb250YWluZXIgZm9yIHVzZU1vZGVsLiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBVc2VNb2RlbFN0YXRlXG4gKiBAcHJvcGVydHkge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSBtb2RlbFxuICogQHByb3BlcnR5IHtib29sZWFuIHwgdW5kZWZpbmVkfSBub3RGb3VuZFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgbW9kZWw6IEJhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkLFxuICogICBtb2RlbElkOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsXG4gKiAgIG5vdEZvdW5kOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gKiB9ICYgUmVjb3JkPHN0cmluZywgQmFzZU1vZGVsSW5zdGFuY2UgfCBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkPn0gVXNlTW9kZWxSZXN1bHRcbiAqL1xuXG4vKiogQGF1Z21lbnRzIHtTaGFwZUhvb2s8VXNlTW9kZWxTaGFwZUhvb2tQcm9wcywgVXNlTW9kZWxTdGF0ZT59ICovXG5jbGFzcyBVc2VNb2RlbFNoYXBlSG9vayBleHRlbmRzIFNoYXBlSG9vayB7XG4gIHN0YXRlID0gLyoqIEB0eXBlIHtVc2VNb2RlbFN0YXRlfSAqLyAoe1xuICAgIG1vZGVsOiB1bmRlZmluZWQsXG4gICAgbm90Rm91bmQ6IHVuZGVmaW5lZFxuICB9KVxuXG4gIHVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSB1bmRlZmluZWRcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7VXNlTW9kZWxTaGFwZUhvb2tQcm9wc30gcHJvcHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IGZhbHNlXG4gICAgdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uID0gMFxuICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBudWxsXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25SZWFkeSA9IGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gIShcImFjdGl2ZVwiIGluIHRoaXMuYXJncygpKSB8fCBCb29sZWFuKHRoaXMuYXJncygpLmFjdGl2ZSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dXNlTW9kZWxBcmdzfSAqL1xuICBhcmdzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wLmFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcoe21vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcygpfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcgfHwge31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QmFzZU1vZGVsQ2xhc3N9ICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnAubW9kZWxDbGFzc0FyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmcuY2FsbGJhY2soe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLm1vZGVsQ2xhc3NBcmdcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBwYXJhbXNWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMubW9kZWxDbGFzcygpLm1vZGVsTmFtZSgpXG4gICAgICAucGFyYW1LZXkoKX1faWRgXG4gIH1cblxuICAvKiogQHJldHVybnMge251bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgbW9kZWxJZCgpIHtcbiAgICBpZiAodGhpcy5hcmdzKCkubG9hZEJ5UXVlcnlQYXJhbSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJncygpLmxvYWRCeVF1ZXJ5UGFyYW0oe3F1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncygpLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmdzKCkubWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MoKS5tYXRjaC5wYXJhbXNbdGhpcy5wYXJhbXNWYXJpYWJsZU5hbWUoKV0gfHwgdGhpcy5hcmdzKCkubWF0Y2gucGFyYW1zLmlkXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgbW9kZWxWYXJpYWJsZU5hbWUoKSB7XG4gICAgcmV0dXJuIGluZmxlY3Rpb24uY2FtZWxpemUodGhpcy5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lLCB0cnVlKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtVc2VNb2RlbENhY2hlVmFsdWVbXX0gKi9cbiAgY2FjaGVBcmdzKCkge1xuICAgIHJldHVybiBbdGhpcy5tb2RlbElkKCldLmNvbmNhdCh0aGlzLmFyZ3MoKS5jYWNoZUFyZ3MgfHwgW10sIHRoaXMucXVlcnlQYXJhbXMpXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIHNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQgJiYgdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMucy5tb2RlbClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0c30gKi9cbiAgbmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpIHtcbiAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gdGhpcy5xdWVyeVBhcmFtcz8uW1xuICAgICAgdGhpcy5tb2RlbENsYXNzKCkubW9kZWxOYW1lKClcbiAgICAgICAgLnBhcmFtS2V5KClcbiAgICBdXG5cbiAgICByZXR1cm4gdHlwZW9mIG1vZGVsRGF0YUZyb21QYXJhbXMgPT0gXCJvYmplY3RcIiAmJiBtb2RlbERhdGFGcm9tUGFyYW1zID8gbW9kZWxEYXRhRnJvbVBhcmFtcyA6IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGhhc0FzeW5jRGVmYXVsdHMoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCAmJiB0eXBlb2YgdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdC50aGVuID09IFwiZnVuY3Rpb25cIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxOZXdJZk5vSWRDb25maWcgfCBudWxsfSAqL1xuICBuZXdJZk5vSWRDb25maWcoKSB7XG4gICAgY29uc3Qge25ld0lmTm9JZH0gPSB0aGlzLmFyZ3MoKVxuXG4gICAgaWYgKCFuZXdJZk5vSWQgfHwgbmV3SWZOb0lkID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBuZXdJZk5vSWRcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VXNlTW9kZWxEZWZhdWx0cyB8IG51bGx9ICovXG4gIHN5bmNEZWZhdWx0c0Zvck5ld01vZGVsKCkge1xuICAgIGNvbnN0IG5ld0lmTm9JZENvbmZpZyA9IHRoaXMubmV3SWZOb0lkQ29uZmlnKClcblxuICAgIGlmICghbmV3SWZOb0lkQ29uZmlnPy5kZWZhdWx0cykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfSBlbHNlIGlmICh0aGlzLmhhc0FzeW5jRGVmYXVsdHMoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmYXVsdHNSZXN1bHQgPSBuZXdJZk5vSWRDb25maWcuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICB9KVxuXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0IHx8IHt9XG4gIH1cblxuICAvKiogQHJldHVybnMge0Jhc2VNb2RlbEluc3RhbmNlIHwgdW5kZWZpbmVkfSAqL1xuICBzeW5jTmV3TW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpIHx8ICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQgfHwgdGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMuc3luY0RlZmF1bHRzRm9yTmV3TW9kZWwoKVxuXG4gICAgaWYgKGRlZmF1bHRzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHRoaXMuYXJncygpLm5ld0F0dHJpYnV0ZXMsIHRoaXMubmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpKX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCYXNlTW9kZWxJbnN0YW5jZSB8IHVuZGVmaW5lZH0gKi9cbiAgc3Vic2NyaXB0aW9uTW9kZWwoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MoKS5ldmVudFVwZGF0ZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9IGVsc2UgaWYgKHRoaXMucy5tb2RlbCkge1xuICAgICAgcmV0dXJuIHRoaXMucy5tb2RlbFxuICAgIH0gZWxzZSBpZiAoIXRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyAodGhpcy5tb2RlbENsYXNzKCkpKHtcbiAgICAgIGRhdGE6IHthOiB7W3RoaXMubW9kZWxDbGFzcygpLnByaW1hcnlLZXkoKV06IHRoaXMubW9kZWxJZCgpfX1cbiAgICB9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWRFeGlzdGluZ01vZGVsID0gYXN5bmMgKGxvYWRNb2RlbEdlbmVyYXRpb24pID0+IHtcbiAgICBsZXQgcXVlcnlcblxuICAgIGlmICh0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgcXVlcnkgPSB0aGlzLm1vZGVsQ2xhc3MoKS5yYW5zYWNrKHtpZF9lcTogdGhpcy5tb2RlbElkKCl9KVxuICAgIH0gZWxzZSBpZiAodGhpcy5hcmdzKCkucXVlcnkpIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5hcmdzKCkucXVlcnkuY2xvbmUoKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaFBhcmFtcyA9IHRoaXMuYXJncygpLm1hdGNoPy5wYXJhbXMgfHwge31cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7dGhpcy5tb2RlbElkKCl9IGJ5ICcke3RoaXMucGFyYW1zVmFyaWFibGVOYW1lKCl9JyBpbiBxdWVyeSBwYXJhbXM6ICR7T2JqZWN0LmtleXMobWF0Y2hQYXJhbXMpLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyh0aGlzLmFyZ3MoKS5hYmlsaXRpZXMpXG4gICAgaWYgKHRoaXMuYXJncygpLnByZWxvYWQpIHF1ZXJ5LnByZWxvYWQodGhpcy5hcmdzKCkucHJlbG9hZClcbiAgICBpZiAodGhpcy5hcmdzKCkuc2VsZWN0KSBxdWVyeS5zZWxlY3QodGhpcy5hcmdzKCkuc2VsZWN0KVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zLm1vZGVsICYmXG4gICAgICBtb2RlbCAmJlxuICAgICAgIXRoaXMucy5ub3RGb3VuZCAmJlxuICAgICAgdGhpcy5zLm1vZGVsLmZ1bGxDYWNoZUtleSgpID09IG1vZGVsLmZ1bGxDYWNoZUtleSgpXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnMubW9kZWwgJiYgIW1vZGVsICYmIHRoaXMucy5ub3RGb3VuZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiAhbW9kZWx9KVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7bnVtYmVyfSBsb2FkTW9kZWxHZW5lcmF0aW9uICovXG4gIGxvYWROZXdNb2RlbCA9IGFzeW5jIChsb2FkTW9kZWxHZW5lcmF0aW9uKSA9PiB7XG4gICAgbGV0IGRlZmF1bHRzID0ge31cbiAgICBjb25zdCBuZXdJZk5vSWRDb25maWcgPSB0aGlzLm5ld0lmTm9JZENvbmZpZygpXG5cbiAgICBpZiAobmV3SWZOb0lkQ29uZmlnPy5kZWZhdWx0cykge1xuICAgICAgbGV0IGRlZmF1bHRzUmVzdWx0ID0gdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdFxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgZGVmYXVsdHNSZXN1bHQgPSBuZXdJZk5vSWRDb25maWcuZGVmYXVsdHMoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuICAgICAgZGVmYXVsdHMgPSBhd2FpdCBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0gbmV3ICh0aGlzLm1vZGVsQ2xhc3MoKSkoe1xuICAgICAgaXNOZXdSZWNvcmQ6IHRydWUsXG4gICAgICBkYXRhOiB7YTogT2JqZWN0LmFzc2lnbihkZWZhdWx0cywgdGhpcy5hcmdzKCkubmV3QXR0cmlidXRlcywgdGhpcy5uZXdNb2RlbERhdGFGcm9tUGFyYW1zKCkpfVxuICAgIH0pXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG4gIGxvYWRNb2RlbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBPbmx5IHRoZSBuZXdlc3QgbW9kZWwgcmVxdWVzdCBtYXkgdXBkYXRlIHN0YXRlIGFmdGVyIHJvdXRlIG9yIGF1dGggY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxHZW5lcmF0aW9uID0gdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uICsgMVxuXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IHRydWVcbiAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gPSBsb2FkTW9kZWxHZW5lcmF0aW9uXG4gICAgaWYgKHRoaXMuYWN0aXZlKCkgJiYgdGhpcy5hcmdzKCkubmV3SWZOb0lkICYmICF0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTmV3TW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlKCkgJiYgKCF0aGlzLmFyZ3MoKS5vcHRpb25hbCB8fCB0aGlzLm1vZGVsSWQoKSB8fCB0aGlzLmFyZ3MoKS5xdWVyeSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEV4aXN0aW5nTW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZClcbiAgICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgZW5zdXJlSW5pdGlhbExvYWRGYWxsYmFjaygpIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkgfHwgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy51cGRhdGVkQ29ubmVjdGlvblJlYWR5ICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgIH1cbiAgICB9LCAxMDAwKVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBCYXNlTW9kZWxJbnN0YW5jZX19IGFyZ3MgKi9cbiAgb25EZXN0cm95ZWQgPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGZvcndhcmRBcmdzID0ge21vZGVsOiBhcmdzLm1vZGVsfVxuXG4gICAgZm9yd2FyZEFyZ3NbdGhpcy5tb2RlbFZhcmlhYmxlTmFtZSgpXSA9IGFyZ3MubW9kZWxcblxuICAgIHRoaXMuYXJncygpLm9uRGVzdHJveWVkKGZvcndhcmRBcmdzKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblNpZ25lZEluID0gKCkgPT4ge1xuICAgIHRoaXMubG9hZE1vZGVsKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb25TaWduZWRPdXQgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2FkTW9kZWwoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblVwZGF0ZWRFdmVudENvbm5lY3RlZCA9ICgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgPSB0cnVlXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcblxuICAgIGlmICh0aGlzLnNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICB0aGlzLmxvYWRNb2RlbCgpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtCYXNlTW9kZWxJbnN0YW5jZSB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU1vZGVsKCkge1xuICAgIGxldCBtb2RlbCA9IHRoaXMucy5tb2RlbFxuXG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgbW9kZWwgPSB0aGlzLnN5bmNOZXdNb2RlbCgpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsSWQoKSAmJiBtb2RlbCAmJiAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKG1vZGVsKS5pZCgpICE9IHRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU5vdEZvdW5kKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbElkKCkgJiYgdGhpcy52aXNpYmxlTW9kZWwoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLm5vdEZvdW5kXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHNldHVwKCkge1xuICAgIHRoaXMucXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnMubW9kZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHN5bmNOZXdNb2RlbCA9IHRoaXMuc3luY05ld01vZGVsKClcblxuICAgICAgICAgIGlmIChzeW5jTmV3TW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsOiBzeW5jTmV3TW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkpIHtcbiAgICAgICAgICB0aGlzLmVuc3VyZUluaXRpYWxMb2FkRmFsbGJhY2soKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRoaXMuY2FjaGVBcmdzKClcbiAgICApXG5cbiAgICAvLyBJbnZhbGlkYXRlIGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gc3RhbGUgbG9hZHMgY2Fubm90IHdyaXRlIGFmdGVyIHVubW91bnQuXG4gICAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICAgIHRoaXMuY2xlYXJVcGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dCgpXG4gICAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gKz0gMVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5hcmdzKCkuZXZlbnRzKSByZXR1cm5cblxuICAgICAgdGhpcy5hcmdzKCkuZXZlbnRzLmFkZExpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgdGhpcy5sb2FkTW9kZWwpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXJncygpLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcInJlbG9hZE1vZGVsXCIsIHRoaXMubG9hZE1vZGVsKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmFyZ3MoKS5ldmVudHNdKVxuXG4gICAgdXNlVXBkYXRlZEV2ZW50KHRoaXMuc3Vic2NyaXB0aW9uTW9kZWwoKSwgdGhpcy5sb2FkTW9kZWwsIHtcbiAgICAgIG9uQ29ubmVjdGVkOiB0aGlzLm9uVXBkYXRlZEV2ZW50Q29ubmVjdGVkXG4gICAgfSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCB0aGlzLm9uU2lnbmVkSW4pXG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgRGV2aXNlLmV2ZW50cygpLnJlbW92ZUxpc3RlbmVyKFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy5vblNpZ25lZEluKVxuICAgICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLm1vZGVsIHx8ICF0aGlzLmFyZ3MoKS5vbkRlc3Ryb3llZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGNvbm5lY3REZXN0cm95ZWQgPSBNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKHRoaXMucy5tb2RlbCwgdGhpcy5vbkRlc3Ryb3llZClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29ubmVjdERlc3Ryb3llZC51bnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfSwgW3RoaXMuYXJncygpLm9uRGVzdHJveWVkLCB0aGlzLnMubW9kZWwgPyAvKiogQHR5cGUge0Jhc2VNb2RlbFdpdGhJZH0gKi8gKHRoaXMucy5tb2RlbCkuaWQoKSA6IHVuZGVmaW5lZF0pXG4gIH1cbn1cblxuLyoqXG4gKiB1c2VNb2RlbC5cbiAqIEBwYXJhbSB7QmFzZU1vZGVsQ2xhc3MgfCBVc2VNb2RlbE1vZGVsQ2xhc3NSZXNvbHZlcn0gbW9kZWxDbGFzc0FyZ1xuICogQHBhcmFtIHtVc2VNb2RlbEFyZ3NBcmd9IFthcmdzQXJnXVxuICogQHJldHVybnMge1VzZU1vZGVsUmVzdWx0fVxuICovXG5jb25zdCB1c2VNb2RlbCA9IChtb2RlbENsYXNzQXJnLCBhcmdzQXJnID0ge30pID0+IHtcbiAgY29uc3Qgc2hhcGVIb29rID0gdXNlU2hhcGVIb29rKFVzZU1vZGVsU2hhcGVIb29rLCB7YXJnc0FyZywgbW9kZWxDbGFzc0FyZ30pXG4gIGNvbnN0IG1vZGVsID0gc2hhcGVIb29rLnZpc2libGVNb2RlbCgpXG4gIGNvbnN0IG1vZGVsSWQgPSBzaGFwZUhvb2subW9kZWxJZCgpXG4gIGNvbnN0IG5vdEZvdW5kID0gc2hhcGVIb29rLnZpc2libGVOb3RGb3VuZCgpXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gc2hhcGVIb29rLm1vZGVsVmFyaWFibGVOYW1lKClcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIG1vZGVsLFxuICAgIG1vZGVsSWQsXG4gICAgbm90Rm91bmRcbiAgfVxuXG4gIHJlc3VsdFttb2RlbFZhcmlhYmxlTmFtZV0gPSBtb2RlbFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9SWRgXSA9IG1vZGVsSWRcbiAgcmVzdWx0W2Ake21vZGVsVmFyaWFibGVOYW1lfU5vdEZvdW5kYF0gPSBub3RGb3VuZFxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTW9kZWxcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"use-resize-observer.d.ts","sourceRoot":"/src/","sources":["use-resize-observer.js"],"names":[],"mappings":";AAGA;;;;GAIG;AACH,4CAJW,MAAM,uBAEJ,IAAI,CAoBhB"}
1
+ {"version":3,"file":"use-resize-observer.d.ts","sourceRoot":"/src/","sources":["use-resize-observer.js"],"names":[],"mappings":";AAIA;;;;GAIG;AACH,4CAJW,MAAM,uBAEJ,IAAI,CAoBhB"}
@@ -1,3 +1,4 @@
1
+ // @ts-check
1
2
  import { useCallback, useLayoutEffect, useMemo } from "react";
2
3
  import useShape from "./use-shape.js";
3
4
  /**
@@ -23,4 +24,4 @@ const useResizeObserver = (element, callback) => {
23
24
  }, [element]);
24
25
  };
25
26
  export default useResizeObserver;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJlc2l6ZS1vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLXJlc2l6ZS1vYnNlcnZlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDM0QsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUE7QUFFckM7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7SUFDOUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQTtJQUM5QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7SUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ04sTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRWhFLGVBQWUsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0IsQ0FBQztRQUVELE9BQU8sR0FBRyxFQUFFO1lBQ1YsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixRQUFRLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQTtJQUNILENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLGlCQUFpQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCIuL3VzZS1zaGFwZS5qc1wiXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgdXNlUmVzaXplT2JzZXJ2ZXIgPSAoZWxlbWVudCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHtjYWxsYmFja30pXG4gIGNvbnN0IG9uUmVzaXplID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBzLnAuY2FsbGJhY2soLi4uYXJncylcbiAgfSwgW10pXG4gIGNvbnN0IG9ic2VydmVyID0gdXNlTWVtbygoKSA9PiBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpLCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VsZW1lbnRdKVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VSZXNpemVPYnNlcnZlclxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJlc2l6ZS1vYnNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLXJlc2l6ZS1vYnNlcnZlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxFQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzNELE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDOzs7O0dBSUc7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUE7SUFDOUIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtRQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNOLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVoRSxlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ25CLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzNCLENBQUM7UUFFRCxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsZUFBZSxpQkFBaUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCIuL3VzZS1zaGFwZS5qc1wiXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuY29uc3QgdXNlUmVzaXplT2JzZXJ2ZXIgPSAoZWxlbWVudCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHtjYWxsYmFja30pXG4gIGNvbnN0IG9uUmVzaXplID0gdXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+IHtcbiAgICBzLnAuY2FsbGJhY2soLi4uYXJncylcbiAgfSwgW10pXG4gIGNvbnN0IG9ic2VydmVyID0gdXNlTWVtbygoKSA9PiBuZXcgUmVzaXplT2JzZXJ2ZXIob25SZXNpemUpLCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2VsZW1lbnRdKVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VSZXNpemVPYnNlcnZlclxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"use-router.d.ts","sourceRoot":"/src/","sources":["use-router.jsx"],"names":[],"mappings":";AAgBA;;;;;;;;EA8GC"}
1
+ {"version":3,"file":"use-router.d.ts","sourceRoot":"/src/","sources":["use-router.jsx"],"names":[],"mappings":";AAiBA;;;;;;;;EA8GC"}
@@ -1,3 +1,4 @@
1
+ // @ts-check
1
2
  /* eslint-disable sort-imports */
2
3
  import config from "./config.js";
3
4
  import escapeStringRegexp from "escape-string-regexp";
@@ -93,4 +94,4 @@ const useRouter = (props) => {
93
94
  return { match };
94
95
  };
95
96
  export default useRouter;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLXJvdXRlci5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMxQyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyQyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQztJQUN4QyxPQUFPLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVO0lBQ25DLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN0QixnQkFBZ0IsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7SUFDN0MsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtDQUNwQyxDQUFDLENBQUE7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQzFCLFNBQVMsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUV4RSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFekIsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7UUFDdEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ2pCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRTdDLEtBQUssTUFBTSxJ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LElBQUkscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxHQUFHO2dCQUFFLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFDbkYsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLEVBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFDLENBQUE7WUFDeEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFTixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLGFBQWEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO0lBQzFDLE1BQU0sS0FBSyxHQUFHO1FBQ1osYUFBYTtRQUNiLE1BQU07S0FDUCxDQUFBO0lBRUQsT0FBTyxFQUFDLEtBQUssRUFBQyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUVELGVBQWUsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuL2NvbmZpZy5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcIi4vdXNlLXNoYXBlLmpzXCJcblxuY29uc3QgdXNlUm91dGVyUHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICBsb2NhbGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgcm91dGVEZWZpbml0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICByb3V0ZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufSlcblxuY29uc3QgdXNlUm91dGVyID0gKHByb3BzKSA9PiB7XG4gIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyh1c2VSb3V0ZXJQcm9wVHlwZXMsIHByb3BzLCBcInByb3BcIiwgXCJ1c2VSb3V0ZXJcIilcblxuICBjb25zdCBzID0gdXNlU2hhcGUocHJvcHMpXG5cbiAgY29uc3QgZmluZFJvdXRlUGFyYW1zID0gdXNlQ2FsbGJhY2soKHJvdXRlRGVmaW5pdGlvbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdXG4gICAgY29uc3QgcGFydHMgPSByb3V0ZURlZmluaXRpb24ucGF0aC5zcGxpdChcIi9cIilcblxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgaWYgKHBhcnQubWF0Y2goL146KFthLXpfXSspJC8pKVxuICAgICAgICByZXN1bHQucHVzaChwYXJ0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSwgW10pXG5cbiAgY29uc3QgZ2V0UGF0aCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsZXQgcGF0aCA9IHMucC5wYXRoIHx8IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZVxuXG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvWy9dKyQvLCBcIlwiKVxuXG4gICAgcmV0dXJuIHBhdGhcbiAgfSwgW10pXG5cbiAgY29uc3QgZ2V0Um91dGVEZWZpbml0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHMucC5yb3V0ZURlZmluaXRpb25zIHx8IGNvbmZpZy5nZXRSb3V0ZURlZmluaXRpb25zKCksIFtdKVxuICBjb25zdCBnZXRSb3V0ZXMgPSB1c2VDYWxsYmFjaygoKSA9PiBzLnAucm91dGVzIHx8IGNvbmZpZy5nZXRSb3V0ZXMoKSwgW10pXG5cbiAgY29uc3QgcGFyc2VSb3V0ZURlZmluaXRpb25zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvdXRlRGVmaW5pdGlvbnMgPSBnZXRSb3V0ZURlZmluaXRpb25zKClcbiAgICBjb25zdCByb3V0ZXMgPSBnZXRSb3V0ZXMoKVxuICAgIGNvbnN0IHJlZ2V4ID0gLzooW0EtelxcZF9dKykvXG4gICAgY29uc3QgcGFyc2VkUm91dGVEZWZpbml0aW9ucyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBzLnAubG9jYWxlcykge1xuICAgICAgZm9yIChjb25zdCByb3V0ZURlZmluaXRpb24gb2Ygcm91dGVEZWZpbml0aW9ucy5yb3V0ZXMpIHtcbiAgICAgICAgY29uc3Qgcm91dGVQYXRoTmFtZSA9IGAke2luZmxlY3Rpb24uY2FtZWxpemUocm91dGVEZWZpbml0aW9uLm5hbWUsIHRydWUpfVBhdGhgXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpbmRSb3V0ZVBhcmFtcyhyb3V0ZURlZmluaXRpb24pXG5cbiAgICAgICAgcGFyYW1zLnB1c2goe2xvY2FsZX0pXG5cbiAgICAgICAgaWYgKCEocm91dGVQYXRoTmFtZSBpbiByb3V0ZXMpKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyb3V0ZVBhdGhOYW1lfSBub3QgZm91bmQgaW4gcm91dGVzOiAke09iamVjdC5rZXlzKHJvdXRlcykuam9pbihcIiwgXCIpfWApXG5cbiAgICAgICAgY29uc3Qgcm91dGVQYXRoID0gcm91dGVzW3JvdXRlUGF0aE5hbWVdKC4uLnBhcmFtcykucmVwbGFjZSgvWy9dKyQvLCBcIlwiKVxuICAgICAgICBjb25zdCBncm91cHMgPSBbXVxuICAgICAgICBsZXQgcGF0aFJlZ2V4U3RyaW5nID0gXCJeXCJcblxuICAgICAgICBwYXRoUmVnZXhTdHJpbmcgKz0gZXNjYXBlU3RyaW5nUmVnZXhwKHJvdXRlUGF0aClcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1hdGNoID0gcGF0aFJlZ2V4U3RyaW5nLm1hdGNoKHJlZ2V4KVxuXG4gICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWtcblxuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IG1hdGNoWzFdXG5cbiAgICAgICAgICBncm91cHMucHVzaCh2YXJpYWJsZU5hbWUpXG5cbiAgICAgICAgICBwYXRoUmVnZXhTdHJpbmcgPSBwYXRoUmVnZXhTdHJpbmcucmVwbGFjZShtYXRjaFswXSwgXCIoW14vXSspXCIpXG4gICAgICAgIH1cblxuICAgICAgICBwYXRoUmVnZXhTdHJpbmcgKz0gXCIkXCJcblxuICAgICAgICBjb25zdCBwYXRoUmVnZXggPSBuZXcgUmVnRXhwKHBhdGhSZWdleFN0cmluZylcblxuICAgICAgICBwYXJzZWRSb3V0ZURlZmluaXRpb25zLnB1c2goe2dyb3VwcywgcGF0aFJlZ2V4LCByb3V0ZURlZmluaXRpb259KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRSb3V0ZURlZmluaXRpb25zXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHBhcnNlZFJvdXRlRGVmaW5pdGlvbnMgPSB1c2VNZW1vKCgpID0+IHBhcnNlUm91dGVEZWZpbml0aW9ucygpLCBbXSlcblxuICBzLnVwZGF0ZU1ldGEoe3BhcnNlZFJvdXRlRGVmaW5pdGlvbnN9KVxuXG4gIGNvbnN0IGZpbmRNYXRjaGluZ1JvdXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoKClcblxuICAgIGZvciAoY29uc3QgcGFyc2VkUm91dGVEZWZpbml0aW9uIG9mIHMubS5wYXJzZWRSb3V0ZURlZmluaXRpb25zKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHBhdGgubWF0Y2gocGFyc2VkUm91dGVEZWZpbml0aW9uLnBhdGhSZWdleClcbiAgICAgIGxldCBtYXRjaGVkLCBwYXJhbXNcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoZWQgPSB0cnVlXG4gICAgICAgIHBhcmFtcyA9IHt9XG5cbiAgICAgICAgZm9yIChjb25zdCBncm91cEtleSBpbiBwYXJzZWRSb3V0ZURlZmluaXRpb24uZ3JvdXBzKSB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gcGFyc2VkUm91dGVEZWZpbml0aW9uLmdyb3Vwc1tncm91cEtleV1cblxuICAgICAgICAgIHBhcmFtc1tncm91cE5hbWVdID0gbWF0Y2hbTnVtYmVyKGdyb3VwS2V5KSArIDFdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGggPT0gXCJcIiAmJiBwYXJzZWRSb3V0ZURlZmluaXRpb24ucm91dGVEZWZpbml0aW9uLnBhdGggPT0gXCIvXCIpIG1hdGNoZWQgPSB0cnVlXG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICByZXR1cm4ge3BhcmFtcywgcGFyc2VkUm91dGVEZWZpbml0aW9ufVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgbWF0Y2hpbmdSb3V0ZSA9IGZpbmRNYXRjaGluZ1JvdXRlKClcbiAgY29uc3QgcGFyYW1zID0gbWF0Y2hpbmdSb3V0ZT8ucGFyYW1zIHx8IHt9XG4gIGNvbnN0IG1hdGNoID0ge1xuICAgIG1hdGNoaW5nUm91dGUsXG4gICAgcGFyYW1zXG4gIH1cblxuICByZXR1cm4ge21hdGNofVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VSb3V0ZXJcbiJdfQ==
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXJvdXRlci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidXNlLXJvdXRlci5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLGlDQUFpQztBQUNqQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxrQkFBa0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDMUMsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUE7QUFFckMsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUM7SUFDeEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVTtJQUNuQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDdEIsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0lBQzdDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7Q0FDcEMsQ0FBQyxDQUFBO0FBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUMxQixTQUFTLENBQUMsY0FBYyxDQUFDLGtCQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFFeEUsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXpCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUU3QyxL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LElBQUksRUFBRSxJQUFJLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksR0FBRztnQkFBRSxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQ25GLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBQyxDQUFBO1lBQ3hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRU4sTUFBTSxhQUFhLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQTtJQUN6QyxNQUFNLE1BQU0sR0FBRyxhQUFhLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUMxQyxNQUFNLEtBQUssR0FBRztRQUNaLGFBQWE7UUFDYixNQUFNO0tBQ1AsQ0FBQTtJQUVELE9BQU8sRUFBQyxLQUFLLEVBQUMsQ0FBQTtBQUNoQixDQUFDLENBQUE7QUFFRCxlQUFlLFNBQVMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuL2NvbmZpZy5qc1wiXG5pbXBvcnQgZXNjYXBlU3RyaW5nUmVnZXhwIGZyb20gXCJlc2NhcGUtc3RyaW5nLXJlZ2V4cFwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcIi4vdXNlLXNoYXBlLmpzXCJcblxuY29uc3QgdXNlUm91dGVyUHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICBsb2NhbGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgcGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgcm91dGVEZWZpbml0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICByb3V0ZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufSlcblxuY29uc3QgdXNlUm91dGVyID0gKHByb3BzKSA9PiB7XG4gIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyh1c2VSb3V0ZXJQcm9wVHlwZXMsIHByb3BzLCBcInByb3BcIiwgXCJ1c2VSb3V0ZXJcIilcblxuICBjb25zdCBzID0gdXNlU2hhcGUocHJvcHMpXG5cbiAgY29uc3QgZmluZFJvdXRlUGFyYW1zID0gdXNlQ2FsbGJhY2soKHJvdXRlRGVmaW5pdGlvbikgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdXG4gICAgY29uc3QgcGFydHMgPSByb3V0ZURlZmluaXRpb24ucGF0aC5zcGxpdChcIi9cIilcblxuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgaWYgKHBhcnQubWF0Y2goL146KFthLXpfXSspJC8pKVxuICAgICAgICByZXN1bHQucHVzaChwYXJ0KVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSwgW10pXG5cbiAgY29uc3QgZ2V0UGF0aCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsZXQgcGF0aCA9IHMucC5wYXRoIHx8IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZVxuXG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgvWy9dKyQvLCBcIlwiKVxuXG4gICAgcmV0dXJuIHBhdGhcbiAgfSwgW10pXG5cbiAgY29uc3QgZ2V0Um91dGVEZWZpbml0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHMucC5yb3V0ZURlZmluaXRpb25zIHx8IGNvbmZpZy5nZXRSb3V0ZURlZmluaXRpb25zKCksIFtdKVxuICBjb25zdCBnZXRSb3V0ZXMgPSB1c2VDYWxsYmFjaygoKSA9PiBzLnAucm91dGVzIHx8IGNvbmZpZy5nZXRSb3V0ZXMoKSwgW10pXG5cbiAgY29uc3QgcGFyc2VSb3V0ZURlZmluaXRpb25zID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJvdXRlRGVmaW5pdGlvbnMgPSBnZXRSb3V0ZURlZmluaXRpb25zKClcbiAgICBjb25zdCByb3V0ZXMgPSBnZXRSb3V0ZXMoKVxuICAgIGNvbnN0IHJlZ2V4ID0gLzooW0EtelxcZF9dKykvXG4gICAgY29uc3QgcGFyc2VkUm91dGVEZWZpbml0aW9ucyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBzLnAubG9jYWxlcykge1xuICAgICAgZm9yIChjb25zdCByb3V0ZURlZmluaXRpb24gb2Ygcm91dGVEZWZpbml0aW9ucy5yb3V0ZXMpIHtcbiAgICAgICAgY29uc3Qgcm91dGVQYXRoTmFtZSA9IGAke2luZmxlY3Rpb24uY2FtZWxpemUocm91dGVEZWZpbml0aW9uLm5hbWUsIHRydWUpfVBhdGhgXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IGZpbmRSb3V0ZVBhcmFtcyhyb3V0ZURlZmluaXRpb24pXG5cbiAgICAgICAgcGFyYW1zLnB1c2goe2xvY2FsZX0pXG5cbiAgICAgICAgaWYgKCEocm91dGVQYXRoTmFtZSBpbiByb3V0ZXMpKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtyb3V0ZVBhdGhOYW1lfSBub3QgZm91bmQgaW4gcm91dGVzOiAke09iamVjdC5rZXlzKHJvdXRlcykuam9pbihcIiwgXCIpfWApXG5cbiAgICAgICAgY29uc3Qgcm91dGVQYXRoID0gcm91dGVzW3JvdXRlUGF0aE5hbWVdKC4uLnBhcmFtcykucmVwbGFjZSgvWy9dKyQvLCBcIlwiKVxuICAgICAgICBjb25zdCBncm91cHMgPSBbXVxuICAgICAgICBsZXQgcGF0aFJlZ2V4U3RyaW5nID0gXCJeXCJcblxuICAgICAgICBwYXRoUmVnZXhTdHJpbmcgKz0gZXNjYXBlU3RyaW5nUmVnZXhwKHJvdXRlUGF0aClcblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IG1hdGNoID0gcGF0aFJlZ2V4U3RyaW5nLm1hdGNoKHJlZ2V4KVxuXG4gICAgICAgICAgaWYgKCFtYXRjaCkgYnJlYWtcblxuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IG1hdGNoWzFdXG5cbiAgICAgICAgICBncm91cHMucHVzaCh2YXJpYWJsZU5hbWUpXG5cbiAgICAgICAgICBwYXRoUmVnZXhTdHJpbmcgPSBwYXRoUmVnZXhTdHJpbmcucmVwbGFjZShtYXRjaFswXSwgXCIoW14vXSspXCIpXG4gICAgICAgIH1cblxuICAgICAgICBwYXRoUmVnZXhTdHJpbmcgKz0gXCIkXCJcblxuICAgICAgICBjb25zdCBwYXRoUmVnZXggPSBuZXcgUmVnRXhwKHBhdGhSZWdleFN0cmluZylcblxuICAgICAgICBwYXJzZWRSb3V0ZURlZmluaXRpb25zLnB1c2goe2dyb3VwcywgcGF0aFJlZ2V4LCByb3V0ZURlZmluaXRpb259KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRSb3V0ZURlZmluaXRpb25zXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHBhcnNlZFJvdXRlRGVmaW5pdGlvbnMgPSB1c2VNZW1vKCgpID0+IHBhcnNlUm91dGVEZWZpbml0aW9ucygpLCBbXSlcblxuICBzLnVwZGF0ZU1ldGEoe3BhcnNlZFJvdXRlRGVmaW5pdGlvbnN9KVxuXG4gIGNvbnN0IGZpbmRNYXRjaGluZ1JvdXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHBhdGggPSBnZXRQYXRoKClcblxuICAgIGZvciAoY29uc3QgcGFyc2VkUm91dGVEZWZpbml0aW9uIG9mIHMubS5wYXJzZWRSb3V0ZURlZmluaXRpb25zKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IHBhdGgubWF0Y2gocGFyc2VkUm91dGVEZWZpbml0aW9uLnBhdGhSZWdleClcbiAgICAgIGxldCBtYXRjaGVkLCBwYXJhbXNcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIG1hdGNoZWQgPSB0cnVlXG4gICAgICAgIHBhcmFtcyA9IHt9XG5cbiAgICAgICAgZm9yIChjb25zdCBncm91cEtleSBpbiBwYXJzZWRSb3V0ZURlZmluaXRpb24uZ3JvdXBzKSB7XG4gICAgICAgICAgY29uc3QgZ3JvdXBOYW1lID0gcGFyc2VkUm91dGVEZWZpbml0aW9uLmdyb3Vwc1tncm91cEtleV1cblxuICAgICAgICAgIHBhcmFtc1tncm91cE5hbWVdID0gbWF0Y2hbTnVtYmVyKGdyb3VwS2V5KSArIDFdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGggPT0gXCJcIiAmJiBwYXJzZWRSb3V0ZURlZmluaXRpb24ucm91dGVEZWZpbml0aW9uLnBhdGggPT0gXCIvXCIpIG1hdGNoZWQgPSB0cnVlXG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICByZXR1cm4ge3BhcmFtcywgcGFyc2VkUm91dGVEZWZpbml0aW9ufVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgbWF0Y2hpbmdSb3V0ZSA9IGZpbmRNYXRjaGluZ1JvdXRlKClcbiAgY29uc3QgcGFyYW1zID0gbWF0Y2hpbmdSb3V0ZT8ucGFyYW1zIHx8IHt9XG4gIGNvbnN0IG1hdGNoID0ge1xuICAgIG1hdGNoaW5nUm91dGUsXG4gICAgcGFyYW1zXG4gIH1cblxuICByZXR1cm4ge21hdGNofVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VSb3V0ZXJcbiJdfQ==
@@ -1,4 +1,9 @@
1
1
  export default useScreenLayout;
2
- /** @returns {"xs" | "sm" | "md" | "lg" | "xl" | "xxl" | undefined} */
3
- declare function useScreenLayout(): "xs" | "sm" | "md" | "lg" | "xl" | "xxl" | undefined;
2
+ export type ScreenLayout = "xs" | "sm" | "md" | "lg" | "xl" | "xxl";
3
+ export type SharedScreenLayout = {
4
+ screenLayout?: ScreenLayout;
5
+ width?: number;
6
+ };
7
+ /** @returns {ScreenLayout | undefined} */
8
+ declare function useScreenLayout(): ScreenLayout | undefined;
4
9
  //# sourceMappingURL=use-screen-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-screen-layout.d.ts","sourceRoot":"/src/","sources":["use-screen-layout.js"],"names":[],"mappings":";AA0BA,sEAAsE;AACtE,oCADc,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,CA2BjE"}
1
+ {"version":3,"file":"use-screen-layout.d.ts","sourceRoot":"/src/","sources":["use-screen-layout.js"],"names":[],"mappings":";2BAKc,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;iCACxC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC;AAwB3D,0CAA0C;AAC1C,oCADc,YAAY,GAAG,SAAS,CA2BrC"}
@@ -1,9 +1,12 @@
1
+ // @ts-check
1
2
  import { Platform, useWindowDimensions } from "react-native";
2
3
  import { useCallback, useMemo, useState } from "react";
3
4
  import useEventListener from "ya-use-event-listener";
5
+ /** @typedef {"xs" | "sm" | "md" | "lg" | "xl" | "xxl"} ScreenLayout */
6
+ /** @typedef {{screenLayout?: ScreenLayout, width?: number}} SharedScreenLayout */
4
7
  /**
5
8
  * @param {number} width
6
- * @returns {"xs" | "sm" | "md" | "lg" | "xl" | "xxl" | undefined}
9
+ * @returns {ScreenLayout | undefined}
7
10
  */
8
11
  const getWindowLayout = (width) => {
9
12
  if (width <= 575) {
@@ -28,15 +31,15 @@ const getWindowLayout = (width) => {
28
31
  console.error(`Couldn't determine window layout from width: ${width}`);
29
32
  }
30
33
  };
31
- /** @returns {"xs" | "sm" | "md" | "lg" | "xl" | "xxl" | undefined} */
34
+ /** @returns {ScreenLayout | undefined} */
32
35
  const useScreenLayout = () => {
33
36
  if (Platform.OS == "web") {
34
- const shared = useMemo(() => /** @type {any} */ ({}), []);
37
+ const shared = useMemo(() => /** @type {SharedScreenLayout} */ ({}), []);
35
38
  shared.width = window.innerWidth;
36
39
  const [screenLayout, setScreenLayout] = useState(() => getWindowLayout(shared.width));
37
40
  const onResize = useCallback(() => {
38
41
  const newWindowLayout = getWindowLayout(window.innerWidth);
39
- if (shared.screenlayout != newWindowLayout) {
42
+ if (shared.screenLayout != newWindowLayout) {
40
43
  setScreenLayout(newWindowLayout);
41
44
  }
42
45
  }, []);
@@ -50,4 +53,4 @@ const useScreenLayout = () => {
50
53
  }
51
54
  };
52
55
  export default useScreenLayout;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNjcmVlbi1sYXlvdXQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1zY3JlZW4tbGF5b3V0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDMUQsT0FBTyxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ3BELE9BQU8sZ0JBQWdCLE1BQU0sdUJBQXVCLENBQUE7QUFFcEQ7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNoQyxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsc0VBQXNFO0FBQ3RFLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUMzQixJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFekQsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBRWhDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVyRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7WUFFMUQsSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUMzQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDbEMsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVOLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7UUFFbEMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFBO0lBQzVCLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsRUFBRSxDQUFBO1FBRTlDLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hELENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRCxlQUFlLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGxhdGZvcm0sIHVzZVdpbmRvd0RpbWVuc2lvbnN9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgdXNlRXZlbnRMaXN0ZW5lciBmcm9tIFwieWEtdXNlLWV2ZW50LWxpc3RlbmVyXCJcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gd2lkdGhcbiAqIEByZXR1cm5zIHtcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgdW5kZWZpbmVkfVxuICovXG5jb25zdCBnZXRXaW5kb3dMYXlvdXQgPSAod2lkdGgpID0+IHtcbiAgaWYgKHdpZHRoIDw9IDU3NSkge1xuICAgIHJldHVybiBcInhzXCJcbiAgfSBlbHNlIGlmICh3aWR0aCA8PSA3NjcpIHtcbiAgICByZXR1cm4gXCJzbVwiXG4gIH0gZWxzZSBpZiAod2lkdGggPD0gOTkxKSB7XG4gICAgcmV0dXJuIFwibWRcIlxuICB9IGVsc2UgaWYgKHdpZHRoIDw9IDExOTkpIHtcbiAgICByZXR1cm4gXCJsZ1wiXG4gIH0gZWxzZSBpZiAod2lkdGggPD0gMTM5OSkge1xuICAgIHJldHVybiBcInhsXCJcbiAgfSBlbHNlIGlmICh3aWR0aCA+PSAxNDAwKSB7XG4gICAgcmV0dXJuIFwieHhsXCJcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZG4ndCBkZXRlcm1pbmUgd2luZG93IGxheW91dCBmcm9tIHdpZHRoOiAke3dpZHRofWApXG4gIH1cbn1cblxuLyoqIEByZXR1cm5zIHtcInhzXCIgfCBcInNtXCIgfCBcIm1kXCIgfCBcImxnXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgdW5kZWZpbmVkfSAqL1xuY29uc3QgdXNlU2NyZWVuTGF5b3V0ID0gKCkgPT4ge1xuICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgIGNvbnN0IHNoYXJlZCA9IHVzZU1lbW8oKCkgPT4gLyoqIEB0eXBlIHthbnl9ICovICh7fSksIFtdKVxuXG4gICAgc2hhcmVkLndpZHRoID0gd2luZG93LmlubmVyV2lkdGhcblxuICAgIGNvbnN0IFtzY3JlZW5MYXlvdXQsIHNldFNjcmVlbkxheW91dF0gPSB1c2VTdGF0ZSgoKSA9PiBnZXRXaW5kb3dMYXlvdXQoc2hhcmVkLndpZHRoKSlcblxuICAgIGNvbnN0IG9uUmVzaXplID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgbmV3V2luZG93TGF5b3V0ID0gZ2V0V2luZG93TGF5b3V0KHdpbmRvdy5pbm5lcldpZHRoKVxuXG4gICAgICBpZiAoc2hhcmVkLnNjcmVlbmxheW91dCAhPSBuZXdXaW5kb3dMYXlvdXQpIHtcbiAgICAgICAgc2V0U2NyZWVuTGF5b3V0KG5ld1dpbmRvd0xheW91dClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInJlc2l6ZVwiLCBvblJlc2l6ZSlcblxuICAgIHNoYXJlZC5zY3JlZW5MYXlvdXQgPSBzY3JlZW5MYXlvdXRcblxuICAgIHJldHVybiBzaGFyZWQuc2NyZWVuTGF5b3V0XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgd2luZG93RGltZW5zaW9ucyA9IHVzZVdpbmRvd0RpbWVuc2lvbnMoKVxuXG4gICAgcmV0dXJuIGdldFdpbmRvd0xheW91dCh3aW5kb3dEaW1lbnNpb25zLndpZHRoKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcmVlbkxheW91dFxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNjcmVlbi1sYXlvdXQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1zY3JlZW4tbGF5b3V0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFDWixPQUFPLEVBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQzFELE9BQU8sRUFBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNwRCxPQUFPLGdCQUFnQixNQUFNLHVCQUF1QixDQUFBO0FBRXBELHVFQUF1RTtBQUN2RSxrRkFBa0Y7QUFFbEY7OztHQUdHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNoQyxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7U0FBTSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsMENBQTBDO0FBQzFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUMzQixJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFeEUsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFBO1FBRWhDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUVyRixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sZUFBZSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7WUFFMUQsSUFBSSxNQUFNLENBQUMsWUFBWSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUMzQyxlQUFlLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDbEMsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVOLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7UUFFbEMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFBO0lBQzVCLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsRUFBRSxDQUFBO1FBRTlDLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hELENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRCxlQUFlLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuaW1wb3J0IHtQbGF0Zm9ybSwgdXNlV2luZG93RGltZW5zaW9uc30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB1c2VFdmVudExpc3RlbmVyIGZyb20gXCJ5YS11c2UtZXZlbnQtbGlzdGVuZXJcIlxuXG4vKiogQHR5cGVkZWYge1wieHNcIiB8IFwic21cIiB8IFwibWRcIiB8IFwibGdcIiB8IFwieGxcIiB8IFwieHhsXCJ9IFNjcmVlbkxheW91dCAqL1xuLyoqIEB0eXBlZGVmIHt7c2NyZWVuTGF5b3V0PzogU2NyZWVuTGF5b3V0LCB3aWR0aD86IG51bWJlcn19IFNoYXJlZFNjcmVlbkxheW91dCAqL1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxuICogQHJldHVybnMge1NjcmVlbkxheW91dCB8IHVuZGVmaW5lZH1cbiAqL1xuY29uc3QgZ2V0V2luZG93TGF5b3V0ID0gKHdpZHRoKSA9PiB7XG4gIGlmICh3aWR0aCA8PSA1NzUpIHtcbiAgICByZXR1cm4gXCJ4c1wiXG4gIH0gZWxzZSBpZiAod2lkdGggPD0gNzY3KSB7XG4gICAgcmV0dXJuIFwic21cIlxuICB9IGVsc2UgaWYgKHdpZHRoIDw9IDk5MSkge1xuICAgIHJldHVybiBcIm1kXCJcbiAgfSBlbHNlIGlmICh3aWR0aCA8PSAxMTk5KSB7XG4gICAgcmV0dXJuIFwibGdcIlxuICB9IGVsc2UgaWYgKHdpZHRoIDw9IDEzOTkpIHtcbiAgICByZXR1cm4gXCJ4bFwiXG4gIH0gZWxzZSBpZiAod2lkdGggPj0gMTQwMCkge1xuICAgIHJldHVybiBcInh4bFwiXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihgQ291bGRuJ3QgZGV0ZXJtaW5lIHdpbmRvdyBsYXlvdXQgZnJvbSB3aWR0aDogJHt3aWR0aH1gKVxuICB9XG59XG5cbi8qKiBAcmV0dXJucyB7U2NyZWVuTGF5b3V0IHwgdW5kZWZpbmVkfSAqL1xuY29uc3QgdXNlU2NyZWVuTGF5b3V0ID0gKCkgPT4ge1xuICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgIGNvbnN0IHNoYXJlZCA9IHVzZU1lbW8oKCkgPT4gLyoqIEB0eXBlIHtTaGFyZWRTY3JlZW5MYXlvdXR9ICovICh7fSksIFtdKVxuXG4gICAgc2hhcmVkLndpZHRoID0gd2luZG93LmlubmVyV2lkdGhcblxuICAgIGNvbnN0IFtzY3JlZW5MYXlvdXQsIHNldFNjcmVlbkxheW91dF0gPSB1c2VTdGF0ZSgoKSA9PiBnZXRXaW5kb3dMYXlvdXQoc2hhcmVkLndpZHRoKSlcblxuICAgIGNvbnN0IG9uUmVzaXplID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgbmV3V2luZG93TGF5b3V0ID0gZ2V0V2luZG93TGF5b3V0KHdpbmRvdy5pbm5lcldpZHRoKVxuXG4gICAgICBpZiAoc2hhcmVkLnNjcmVlbkxheW91dCAhPSBuZXdXaW5kb3dMYXlvdXQpIHtcbiAgICAgICAgc2V0U2NyZWVuTGF5b3V0KG5ld1dpbmRvd0xheW91dClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIHVzZUV2ZW50TGlzdGVuZXIod2luZG93LCBcInJlc2l6ZVwiLCBvblJlc2l6ZSlcblxuICAgIHNoYXJlZC5zY3JlZW5MYXlvdXQgPSBzY3JlZW5MYXlvdXRcblxuICAgIHJldHVybiBzaGFyZWQuc2NyZWVuTGF5b3V0XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgd2luZG93RGltZW5zaW9ucyA9IHVzZVdpbmRvd0RpbWVuc2lvbnMoKVxuXG4gICAgcmV0dXJuIGdldFdpbmRvd0xheW91dCh3aW5kb3dEaW1lbnNpb25zLndpZHRoKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcmVlbkxheW91dFxuIl19
@@ -1,2 +1,3 @@
1
+ // @ts-check
1
2
  export { default } from "set-state-compare/build/use-shape.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNoYXBlLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2Utc2hhcGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHNDQUFzQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXNoYXBlLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2Utc2hhcGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuZXhwb3J0IHtkZWZhdWx0fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvdXNlLXNoYXBlLmpzXCJcbiJdfQ==
@@ -1,8 +1,14 @@
1
1
  /**
2
- * @param {Record<string, any>} styles
3
- * @param {string | Array<string | Record<string, any>> | Record<string, any>} args
4
- * @param {Array<any>} [dependencies]
5
- * @returns {Array<Record<string, any>>}
2
+ * @param {StyleDictionary} styles
3
+ * @param {string | Array<string | StyleFlags> | StyleFlags} args
4
+ * @param {Array<boolean | number | string | null | undefined>} [dependencies]
5
+ * @returns {Array<NamedStyle>}
6
6
  */
7
- export default function useStyles(styles: Record<string, any>, args: string | Array<string | Record<string, any>> | Record<string, any>, dependencies?: Array<any>): Array<Record<string, any>>;
7
+ export default function useStyles(styles: StyleDictionary, args: string | Array<string | StyleFlags> | StyleFlags, dependencies?: Array<boolean | number | string | null | undefined>): Array<NamedStyle>;
8
+ export type BreakpointValue = boolean | string | ((args: object) => object);
9
+ export type BreakpointState = Record<string, BreakpointValue>;
10
+ export type NamedStyle = import("react-native").ImageStyle | import("react-native").TextStyle | import("react-native").ViewStyle;
11
+ export type StyleDictionary = Record<string, NamedStyle>;
12
+ export type StyleFlags = Record<string, boolean>;
13
+ export type ReverseBreakpoints = Array<[string, BreakpointValue]>;
8
14
  //# sourceMappingURL=use-styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-styles.d.ts","sourceRoot":"/src/","sources":["use-styles.js"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,0CALW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QACnB,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAClE,KAAK,CAAC,GAAG,CAAC,GACR,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAiCtC"}
1
+ {"version":3,"file":"use-styles.d.ts","sourceRoot":"/src/","sources":["use-styles.js"],"names":[],"mappings":"AA+CA;;;;;GAKG;AACH,0CALW,eAAe,QACf,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,UAAU,iBAChD,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GACjD,KAAK,CAAC,UAAU,CAAC,CAiC7B;8BA5Ea,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;8BAC7C,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;yBAC/B,OAAO,cAAc,EAAE,UAAU,GAAG,OAAO,cAAc,EAAE,SAAS,GAAG,OAAO,cAAc,EAAE,SAAS;8BACvG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;yBAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;iCACvB,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC"}