velocious 1.0.577 → 1.0.579

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 (1676) hide show
  1. package/README.md +12 -6
  2. package/build/application.js +3 -3
  3. package/build/authorization/ability.js +6 -6
  4. package/build/authorization/base-resource.js +1 -1
  5. package/build/background-jobs/client.js +2 -2
  6. package/build/background-jobs/forked-runner-child.js +4 -4
  7. package/build/background-jobs/job-runner.js +2 -2
  8. package/build/background-jobs/job.js +6 -6
  9. package/build/background-jobs/json-socket.js +1 -1
  10. package/build/background-jobs/main.js +13 -13
  11. package/build/background-jobs/normalize-error.js +2 -2
  12. package/build/background-jobs/pooled-runner-child.js +3 -3
  13. package/build/background-jobs/scheduler.js +1 -1
  14. package/build/background-jobs/status-reporter.js +2 -2
  15. package/build/background-jobs/store.js +23 -23
  16. package/build/background-jobs/types.js +6 -6
  17. package/build/background-jobs/web/controller.js +6 -6
  18. package/build/background-jobs/web/counts-channel.js +1 -1
  19. package/build/background-jobs/worker.js +8 -8
  20. package/build/beacon/client.js +3 -3
  21. package/build/beacon/in-process-client.js +3 -3
  22. package/build/beacon/types.js +1 -1
  23. package/build/cli/base-command.js +1 -1
  24. package/build/cli/commands/console.js +1 -1
  25. package/build/cli/commands/db/schema/dump.js +1 -1
  26. package/build/cli/commands/db/schema/load.js +1 -1
  27. package/build/cli/commands/db/seed.js +1 -1
  28. package/build/cli/commands/generate/frontend-models.js +1 -1
  29. package/build/cli/commands/lint/relationships.js +1 -1
  30. package/build/cli/commands/run-script.js +1 -1
  31. package/build/cli/commands/runner.js +1 -1
  32. package/build/cli/index.js +2 -2
  33. package/build/cli/tenant-database-command-helper.js +2 -2
  34. package/build/configuration-types.js +48 -47
  35. package/build/configuration.js +150 -65
  36. package/build/controller.js +11 -8
  37. package/build/current.js +2 -2
  38. package/build/database/annotations-async-hooks.js +3 -3
  39. package/build/database/annotations.js +1 -1
  40. package/build/database/drivers/base-column.js +1 -1
  41. package/build/database/drivers/base-foreign-key.js +1 -1
  42. package/build/database/drivers/base-table.js +1 -1
  43. package/build/database/drivers/base.js +18 -18
  44. package/build/database/drivers/mssql/column.js +1 -1
  45. package/build/database/drivers/mssql/index.js +2 -2
  46. package/build/database/drivers/mssql/options.js +1 -1
  47. package/build/database/drivers/mssql/structure-sql.js +1 -1
  48. package/build/database/drivers/mssql/table.js +1 -1
  49. package/build/database/drivers/mysql/column.js +1 -1
  50. package/build/database/drivers/mysql/index.js +4 -4
  51. package/build/database/drivers/mysql/options.js +1 -1
  52. package/build/database/drivers/mysql/query.js +7 -7
  53. package/build/database/drivers/mysql/structure-sql.js +71 -10
  54. package/build/database/drivers/pgsql/column.js +1 -1
  55. package/build/database/drivers/pgsql/index.js +6 -6
  56. package/build/database/drivers/pgsql/structure-sql.js +1 -1
  57. package/build/database/drivers/sqlite/base.js +7 -7
  58. package/build/database/drivers/sqlite/column.js +1 -1
  59. package/build/database/drivers/sqlite/connection-sql-js.js +1 -1
  60. package/build/database/drivers/sqlite/foreign-key.js +1 -1
  61. package/build/database/drivers/sqlite/index.js +1 -1
  62. package/build/database/drivers/sqlite/index.native.js +2 -2
  63. package/build/database/drivers/sqlite/index.web.js +2 -2
  64. package/build/database/drivers/sqlite/query.js +2 -2
  65. package/build/database/drivers/sqlite/query.native.js +2 -2
  66. package/build/database/drivers/sqlite/query.web.js +2 -2
  67. package/build/database/drivers/sqlite/table-rebuilder.js +1 -1
  68. package/build/database/migration/index.js +2 -2
  69. package/build/database/migrator/types.js +2 -2
  70. package/build/database/operation.js +59 -6
  71. package/build/database/pool/async-tracked-multi-connection.js +75 -24
  72. package/build/database/pool/base-methods-forward.js +2 -2
  73. package/build/database/pool/base.js +48 -17
  74. package/build/database/pool/single-multi-use.js +501 -103
  75. package/build/database/query/delete-base.js +1 -1
  76. package/build/database/query/index.js +3 -3
  77. package/build/database/query/insert-base.js +4 -4
  78. package/build/database/query/model-class-query.js +39 -39
  79. package/build/database/query/preloader/belongs-to.js +2 -2
  80. package/build/database/query/preloader/ensure-model-class-initialized.js +3 -2
  81. package/build/database/query/preloader/has-many.js +3 -3
  82. package/build/database/query/preloader/has-one.js +1 -1
  83. package/build/database/query/preloader.js +9 -2
  84. package/build/database/query/query-data.js +7 -7
  85. package/build/database/query/update-base.js +3 -3
  86. package/build/database/query/upsert-base.js +2 -2
  87. package/build/database/query/where-model-class-hash.js +13 -13
  88. package/build/database/query/with-count.js +12 -12
  89. package/build/database/query-parser/options.js +2 -2
  90. package/build/database/query-parser/select-parser.js +1 -1
  91. package/build/database/record/acts-as-list.js +2 -2
  92. package/build/database/record/attachments/handle.js +6 -6
  93. package/build/database/record/attachments/normalize-input.js +11 -11
  94. package/build/database/record/attachments/storage-drivers/filesystem.js +1 -1
  95. package/build/database/record/attachments/storage-drivers/native.js +5 -5
  96. package/build/database/record/attachments/storage-drivers/s3.js +10 -10
  97. package/build/database/record/attachments/store.js +24 -20
  98. package/build/database/record/auditing.js +123 -29
  99. package/build/database/record/counter-cache-magnitude.js +11 -11
  100. package/build/database/record/index.js +227 -174
  101. package/build/database/record/instance-relationships/base.js +4 -4
  102. package/build/database/record/instance-relationships/belongs-to.js +1 -1
  103. package/build/database/record/instance-relationships/has-many.js +3 -3
  104. package/build/database/record/instance-relationships/has-one.js +1 -1
  105. package/build/database/record/record-not-found-error.js +1 -0
  106. package/build/database/record/relationships/base.js +22 -0
  107. package/build/database/record/state-machine.js +6 -6
  108. package/build/database/record/validators/base.js +1 -1
  109. package/build/database/structure-sql-loader.js +3 -3
  110. package/build/database/table-data/table-column.js +3 -3
  111. package/build/database/use-live-query.js +3 -3
  112. package/build/environment-handlers/base.js +56 -37
  113. package/build/environment-handlers/browser.js +1 -1
  114. package/build/environment-handlers/node/cli/commands/console.js +4 -4
  115. package/build/environment-handlers/node/cli/commands/db/seed.js +2 -2
  116. package/build/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
  117. package/build/environment-handlers/node/cli/commands/run-script.js +2 -2
  118. package/build/environment-handlers/node/cli/commands/runner.js +2 -2
  119. package/build/environment-handlers/node/cli/commands/server.js +1 -1
  120. package/build/environment-handlers/node.js +36 -36
  121. package/build/error-logger.js +2 -2
  122. package/build/error-reporting/request-details.js +32 -32
  123. package/build/frontend-model-controller.js +215 -213
  124. package/build/frontend-model-resource/base-resource.js +44 -44
  125. package/build/frontend-model-resource/velocious-attachment-resource.js +1 -1
  126. package/build/frontend-models/base.js +146 -142
  127. package/build/frontend-models/clear-pending-debounced-callback.js +2 -2
  128. package/build/frontend-models/model-registry.js +4 -4
  129. package/build/frontend-models/outgoing-event-buffer.js +1 -1
  130. package/build/frontend-models/preloader.js +1 -1
  131. package/build/frontend-models/query.js +60 -60
  132. package/build/frontend-models/resource-definition.js +9 -9
  133. package/build/frontend-models/transport-serialization.js +27 -27
  134. package/build/frontend-models/websocket-channel.js +4 -4
  135. package/build/frontend-models/websocket-publishers.js +1 -1
  136. package/build/http-client/request.js +1 -1
  137. package/build/http-client/response.js +1 -1
  138. package/build/http-server/client/index.js +4 -4
  139. package/build/http-server/client/params-to-object.js +16 -16
  140. package/build/http-server/client/request-buffer/index.js +5 -2
  141. package/build/http-server/client/request-parser.js +2 -2
  142. package/build/http-server/client/request-runner.js +2 -2
  143. package/build/http-server/client/request.js +2 -2
  144. package/build/http-server/client/websocket-request.js +6 -6
  145. package/build/http-server/client/websocket-session.js +28 -28
  146. package/build/http-server/cookie.js +2 -2
  147. package/build/http-server/development-reloader.js +1 -1
  148. package/build/http-server/index.js +5 -5
  149. package/build/http-server/remote-address.js +1 -1
  150. package/build/http-server/server-lock.js +4 -4
  151. package/build/http-server/websocket-channel-subscribers.js +4 -4
  152. package/build/http-server/websocket-channel.js +1 -1
  153. package/build/http-server/websocket-connection.js +3 -3
  154. package/build/http-server/websocket-event-log-store.js +9 -9
  155. package/build/http-server/websocket-events-host.js +7 -7
  156. package/build/http-server/websocket-events.js +4 -4
  157. package/build/http-server/worker-handler/channel-subscriber-dispatch.js +1 -1
  158. package/build/http-server/worker-handler/in-process.js +5 -5
  159. package/build/http-server/worker-handler/index.js +10 -10
  160. package/build/http-server/worker-handler/worker-thread.js +8 -8
  161. package/build/index.d.ts.map +1 -1
  162. package/build/logger/base-logger.js +1 -1
  163. package/build/logger.js +12 -12
  164. package/build/mailer/backends/smtp.js +3 -3
  165. package/build/mailer/base.js +14 -14
  166. package/build/mailer/delivery.js +3 -3
  167. package/build/mailer/index.js +1 -1
  168. package/build/mailer.js +1 -1
  169. package/build/plugins/sqljs-wasm-route-controller.js +1 -1
  170. package/build/record-payload-values.js +3 -3
  171. package/build/routes/base-route.js +5 -5
  172. package/build/routes/basic-route.js +4 -4
  173. package/build/routes/get-route.js +2 -2
  174. package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
  175. package/build/routes/index.js +3 -3
  176. package/build/routes/namespace-route.js +1 -1
  177. package/build/routes/plugin-routes.js +1 -1
  178. package/build/routes/post-route.js +2 -2
  179. package/build/routes/resolver.js +5 -5
  180. package/build/routes/resource-route.js +1 -1
  181. package/build/src/application.d.ts +26 -29
  182. package/build/src/application.d.ts.map +1 -1
  183. package/build/src/application.js +4 -4
  184. package/build/src/authorization/ability.d.ts +47 -53
  185. package/build/src/authorization/ability.d.ts.map +1 -1
  186. package/build/src/authorization/ability.js +7 -7
  187. package/build/src/authorization/base-resource.d.ts +13 -13
  188. package/build/src/authorization/base-resource.d.ts.map +1 -1
  189. package/build/src/authorization/base-resource.js +2 -2
  190. package/build/src/background-jobs/client.d.ts +9 -9
  191. package/build/src/background-jobs/client.d.ts.map +1 -1
  192. package/build/src/background-jobs/client.js +3 -3
  193. package/build/src/background-jobs/cron-expression.d.ts +25 -16
  194. package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
  195. package/build/src/background-jobs/forked-runner-child.js +5 -5
  196. package/build/src/background-jobs/job-record.d.ts +4 -3
  197. package/build/src/background-jobs/job-record.d.ts.map +1 -1
  198. package/build/src/background-jobs/job-registry.d.ts +6 -6
  199. package/build/src/background-jobs/job-registry.d.ts.map +1 -1
  200. package/build/src/background-jobs/job-runner.d.ts +9 -9
  201. package/build/src/background-jobs/job-runner.d.ts.map +1 -1
  202. package/build/src/background-jobs/job-runner.js +3 -3
  203. package/build/src/background-jobs/job.d.ts +14 -14
  204. package/build/src/background-jobs/job.d.ts.map +1 -1
  205. package/build/src/background-jobs/job.js +7 -7
  206. package/build/src/background-jobs/json-socket.d.ts +9 -10
  207. package/build/src/background-jobs/json-socket.d.ts.map +1 -1
  208. package/build/src/background-jobs/json-socket.js +2 -2
  209. package/build/src/background-jobs/main.d.ts +56 -59
  210. package/build/src/background-jobs/main.d.ts.map +1 -1
  211. package/build/src/background-jobs/main.js +14 -14
  212. package/build/src/background-jobs/normalize-error.d.ts +2 -2
  213. package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
  214. package/build/src/background-jobs/normalize-error.js +3 -3
  215. package/build/src/background-jobs/pooled-runner-child.js +4 -4
  216. package/build/src/background-jobs/runner-graceful-shutdown.d.ts +7 -12
  217. package/build/src/background-jobs/runner-graceful-shutdown.d.ts.map +1 -1
  218. package/build/src/background-jobs/runner-process-title.d.ts.map +1 -1
  219. package/build/src/background-jobs/scheduler.d.ts +41 -41
  220. package/build/src/background-jobs/scheduler.d.ts.map +1 -1
  221. package/build/src/background-jobs/scheduler.js +2 -2
  222. package/build/src/background-jobs/socket-request.d.ts +14 -14
  223. package/build/src/background-jobs/socket-request.d.ts.map +1 -1
  224. package/build/src/background-jobs/status-reporter.d.ts +28 -28
  225. package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
  226. package/build/src/background-jobs/status-reporter.js +3 -3
  227. package/build/src/background-jobs/store.d.ts +100 -103
  228. package/build/src/background-jobs/store.d.ts.map +1 -1
  229. package/build/src/background-jobs/store.js +24 -24
  230. package/build/src/background-jobs/types.d.ts +124 -124
  231. package/build/src/background-jobs/types.d.ts.map +1 -1
  232. package/build/src/background-jobs/types.js +7 -7
  233. package/build/src/background-jobs/web/authorization.d.ts +2 -2
  234. package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
  235. package/build/src/background-jobs/web/controller.d.ts +13 -13
  236. package/build/src/background-jobs/web/controller.d.ts.map +1 -1
  237. package/build/src/background-jobs/web/controller.js +7 -7
  238. package/build/src/background-jobs/web/counts-channel.d.ts +8 -8
  239. package/build/src/background-jobs/web/counts-channel.d.ts.map +1 -1
  240. package/build/src/background-jobs/web/counts-channel.js +2 -2
  241. package/build/src/background-jobs/web/index.d.ts +4 -4
  242. package/build/src/background-jobs/web/index.d.ts.map +1 -1
  243. package/build/src/background-jobs/web/path-matcher.d.ts +18 -13
  244. package/build/src/background-jobs/web/path-matcher.d.ts.map +1 -1
  245. package/build/src/background-jobs/web/registry.d.ts +21 -24
  246. package/build/src/background-jobs/web/registry.d.ts.map +1 -1
  247. package/build/src/background-jobs/worker.d.ts +74 -77
  248. package/build/src/background-jobs/worker.d.ts.map +1 -1
  249. package/build/src/background-jobs/worker.js +9 -9
  250. package/build/src/beacon/client.d.ts +30 -34
  251. package/build/src/beacon/client.d.ts.map +1 -1
  252. package/build/src/beacon/client.js +4 -4
  253. package/build/src/beacon/in-process-broker.d.ts +6 -9
  254. package/build/src/beacon/in-process-broker.d.ts.map +1 -1
  255. package/build/src/beacon/in-process-client.d.ts +17 -21
  256. package/build/src/beacon/in-process-client.d.ts.map +1 -1
  257. package/build/src/beacon/in-process-client.js +4 -4
  258. package/build/src/beacon/server.d.ts +15 -15
  259. package/build/src/beacon/server.d.ts.map +1 -1
  260. package/build/src/beacon/types.d.ts +21 -46
  261. package/build/src/beacon/types.d.ts.map +1 -1
  262. package/build/src/beacon/types.js +2 -2
  263. package/build/src/cli/base-command.d.ts +25 -28
  264. package/build/src/cli/base-command.d.ts.map +1 -1
  265. package/build/src/cli/base-command.js +2 -2
  266. package/build/src/cli/browser-cli.d.ts +1 -1
  267. package/build/src/cli/browser-cli.d.ts.map +1 -1
  268. package/build/src/cli/commands/background-jobs-main.d.ts +2 -1
  269. package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
  270. package/build/src/cli/commands/background-jobs-runner.d.ts +2 -1
  271. package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
  272. package/build/src/cli/commands/background-jobs-worker.d.ts +2 -1
  273. package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
  274. package/build/src/cli/commands/beacon.d.ts +2 -1
  275. package/build/src/cli/commands/beacon.d.ts.map +1 -1
  276. package/build/src/cli/commands/console.d.ts +6 -1
  277. package/build/src/cli/commands/console.d.ts.map +1 -1
  278. package/build/src/cli/commands/console.js +2 -2
  279. package/build/src/cli/commands/db/base-command.d.ts +1 -1
  280. package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
  281. package/build/src/cli/commands/db/create.d.ts +1 -1
  282. package/build/src/cli/commands/db/create.d.ts.map +1 -1
  283. package/build/src/cli/commands/db/drop.d.ts +1 -1
  284. package/build/src/cli/commands/db/drop.d.ts.map +1 -1
  285. package/build/src/cli/commands/db/migrate.d.ts +1 -1
  286. package/build/src/cli/commands/db/migrate.d.ts.map +1 -1
  287. package/build/src/cli/commands/db/reset.d.ts +1 -1
  288. package/build/src/cli/commands/db/reset.d.ts.map +1 -1
  289. package/build/src/cli/commands/db/rollback.d.ts +1 -1
  290. package/build/src/cli/commands/db/rollback.d.ts.map +1 -1
  291. package/build/src/cli/commands/db/schema/dump.d.ts +6 -1
  292. package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
  293. package/build/src/cli/commands/db/schema/dump.js +2 -2
  294. package/build/src/cli/commands/db/schema/load.d.ts +6 -1
  295. package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
  296. package/build/src/cli/commands/db/schema/load.js +2 -2
  297. package/build/src/cli/commands/db/seed.d.ts +6 -1
  298. package/build/src/cli/commands/db/seed.d.ts.map +1 -1
  299. package/build/src/cli/commands/db/seed.js +2 -2
  300. package/build/src/cli/commands/db/tenants/check.d.ts +1 -1
  301. package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
  302. package/build/src/cli/commands/db/tenants/create.d.ts +1 -1
  303. package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
  304. package/build/src/cli/commands/db/tenants/drop.d.ts +1 -1
  305. package/build/src/cli/commands/db/tenants/drop.d.ts.map +1 -1
  306. package/build/src/cli/commands/db/tenants/migrate.d.ts +1 -1
  307. package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
  308. package/build/src/cli/commands/destroy/migration.d.ts +2 -1
  309. package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
  310. package/build/src/cli/commands/generate/base-models.d.ts +2 -1
  311. package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
  312. package/build/src/cli/commands/generate/frontend-models.d.ts +6 -1
  313. package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
  314. package/build/src/cli/commands/generate/frontend-models.js +2 -2
  315. package/build/src/cli/commands/generate/migration.d.ts +2 -1
  316. package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
  317. package/build/src/cli/commands/generate/model.d.ts +2 -1
  318. package/build/src/cli/commands/generate/model.d.ts.map +1 -1
  319. package/build/src/cli/commands/init.d.ts +4 -2
  320. package/build/src/cli/commands/init.d.ts.map +1 -1
  321. package/build/src/cli/commands/lint/relationships.d.ts +6 -1
  322. package/build/src/cli/commands/lint/relationships.d.ts.map +1 -1
  323. package/build/src/cli/commands/lint/relationships.js +2 -2
  324. package/build/src/cli/commands/routes.d.ts +2 -1
  325. package/build/src/cli/commands/routes.d.ts.map +1 -1
  326. package/build/src/cli/commands/run-script.d.ts +6 -1
  327. package/build/src/cli/commands/run-script.d.ts.map +1 -1
  328. package/build/src/cli/commands/run-script.js +2 -2
  329. package/build/src/cli/commands/runner.d.ts +6 -1
  330. package/build/src/cli/commands/runner.d.ts.map +1 -1
  331. package/build/src/cli/commands/runner.js +2 -2
  332. package/build/src/cli/commands/server.d.ts +2 -1
  333. package/build/src/cli/commands/server.d.ts.map +1 -1
  334. package/build/src/cli/commands/test.d.ts +2 -1
  335. package/build/src/cli/commands/test.d.ts.map +1 -1
  336. package/build/src/cli/index.d.ts +20 -20
  337. package/build/src/cli/index.d.ts.map +1 -1
  338. package/build/src/cli/index.js +3 -3
  339. package/build/src/cli/tenant-database-command-helper.d.ts +13 -13
  340. package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
  341. package/build/src/cli/tenant-database-command-helper.js +3 -3
  342. package/build/src/cli/use-browser-cli.d.ts +1 -1
  343. package/build/src/cli/use-browser-cli.d.ts.map +1 -1
  344. package/build/src/configuration-resolver.d.ts +1 -1
  345. package/build/src/configuration-resolver.d.ts.map +1 -1
  346. package/build/src/configuration-types.d.ts +947 -1038
  347. package/build/src/configuration-types.d.ts.map +1 -1
  348. package/build/src/configuration-types.js +49 -48
  349. package/build/src/configuration.d.ts +145 -139
  350. package/build/src/configuration.d.ts.map +1 -1
  351. package/build/src/configuration.js +149 -66
  352. package/build/src/controller.d.ts +37 -35
  353. package/build/src/controller.d.ts.map +1 -1
  354. package/build/src/controller.js +11 -9
  355. package/build/src/current-configuration.d.ts +5 -4
  356. package/build/src/current-configuration.d.ts.map +1 -1
  357. package/build/src/current.d.ts +3 -3
  358. package/build/src/current.d.ts.map +1 -1
  359. package/build/src/current.js +3 -3
  360. package/build/src/database/advisory-lock-runner.d.ts +61 -60
  361. package/build/src/database/advisory-lock-runner.d.ts.map +1 -1
  362. package/build/src/database/annotations-async-hooks.js +4 -4
  363. package/build/src/database/annotations.d.ts +4 -6
  364. package/build/src/database/annotations.d.ts.map +1 -1
  365. package/build/src/database/annotations.js +2 -2
  366. package/build/src/database/column-types.d.ts +1 -1
  367. package/build/src/database/column-types.d.ts.map +1 -1
  368. package/build/src/database/datetime-storage.d.ts +6 -6
  369. package/build/src/database/datetime-storage.d.ts.map +1 -1
  370. package/build/src/database/drivers/base-column.d.ts +3 -3
  371. package/build/src/database/drivers/base-column.d.ts.map +1 -1
  372. package/build/src/database/drivers/base-column.js +2 -2
  373. package/build/src/database/drivers/base-columns-index.d.ts +2 -2
  374. package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
  375. package/build/src/database/drivers/base-foreign-key.d.ts +7 -7
  376. package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
  377. package/build/src/database/drivers/base-foreign-key.js +2 -2
  378. package/build/src/database/drivers/base-table.d.ts +3 -3
  379. package/build/src/database/drivers/base-table.d.ts.map +1 -1
  380. package/build/src/database/drivers/base-table.js +2 -2
  381. package/build/src/database/drivers/base.d.ts +297 -342
  382. package/build/src/database/drivers/base.d.ts.map +1 -1
  383. package/build/src/database/drivers/base.js +19 -19
  384. package/build/src/database/drivers/index-metadata.d.ts +15 -18
  385. package/build/src/database/drivers/index-metadata.d.ts.map +1 -1
  386. package/build/src/database/drivers/mssql/column.d.ts +10 -5
  387. package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
  388. package/build/src/database/drivers/mssql/column.js +2 -2
  389. package/build/src/database/drivers/mssql/columns-index.d.ts +30 -22
  390. package/build/src/database/drivers/mssql/columns-index.d.ts.map +1 -1
  391. package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
  392. package/build/src/database/drivers/mssql/foreign-key.d.ts +1 -1
  393. package/build/src/database/drivers/mssql/foreign-key.d.ts.map +1 -1
  394. package/build/src/database/drivers/mssql/index.d.ts +250 -9
  395. package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
  396. package/build/src/database/drivers/mssql/index.js +3 -3
  397. package/build/src/database/drivers/mssql/options.d.ts +31 -1
  398. package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
  399. package/build/src/database/drivers/mssql/options.js +2 -2
  400. package/build/src/database/drivers/mssql/query-parser.d.ts +1 -1
  401. package/build/src/database/drivers/mssql/query-parser.d.ts.map +1 -1
  402. package/build/src/database/drivers/mssql/sql/alter-table.d.ts +1 -1
  403. package/build/src/database/drivers/mssql/sql/alter-table.d.ts.map +1 -1
  404. package/build/src/database/drivers/mssql/sql/create-database.d.ts +3 -2
  405. package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
  406. package/build/src/database/drivers/mssql/sql/create-index.d.ts +1 -1
  407. package/build/src/database/drivers/mssql/sql/create-index.d.ts.map +1 -1
  408. package/build/src/database/drivers/mssql/sql/create-table.d.ts +1 -1
  409. package/build/src/database/drivers/mssql/sql/create-table.d.ts.map +1 -1
  410. package/build/src/database/drivers/mssql/sql/delete.d.ts +1 -1
  411. package/build/src/database/drivers/mssql/sql/delete.d.ts.map +1 -1
  412. package/build/src/database/drivers/mssql/sql/drop-database.d.ts +14 -1
  413. package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
  414. package/build/src/database/drivers/mssql/sql/drop-table.d.ts +1 -1
  415. package/build/src/database/drivers/mssql/sql/drop-table.d.ts.map +1 -1
  416. package/build/src/database/drivers/mssql/sql/insert.d.ts +1 -1
  417. package/build/src/database/drivers/mssql/sql/insert.d.ts.map +1 -1
  418. package/build/src/database/drivers/mssql/sql/remove-index.d.ts +1 -1
  419. package/build/src/database/drivers/mssql/sql/remove-index.d.ts.map +1 -1
  420. package/build/src/database/drivers/mssql/sql/update.d.ts +1 -1
  421. package/build/src/database/drivers/mssql/sql/update.d.ts.map +1 -1
  422. package/build/src/database/drivers/mssql/sql/upsert.d.ts +1 -1
  423. package/build/src/database/drivers/mssql/sql/upsert.d.ts.map +1 -1
  424. package/build/src/database/drivers/mssql/structure-sql.d.ts +3 -3
  425. package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
  426. package/build/src/database/drivers/mssql/structure-sql.js +2 -2
  427. package/build/src/database/drivers/mssql/table.d.ts +39 -29
  428. package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
  429. package/build/src/database/drivers/mssql/table.js +2 -2
  430. package/build/src/database/drivers/mysql/column.d.ts +10 -6
  431. package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
  432. package/build/src/database/drivers/mysql/column.js +2 -2
  433. package/build/src/database/drivers/mysql/columns-index.d.ts +3 -1
  434. package/build/src/database/drivers/mysql/columns-index.d.ts.map +1 -1
  435. package/build/src/database/drivers/mysql/foreign-key.d.ts +1 -1
  436. package/build/src/database/drivers/mysql/foreign-key.d.ts.map +1 -1
  437. package/build/src/database/drivers/mysql/index.d.ts +225 -6
  438. package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
  439. package/build/src/database/drivers/mysql/index.js +5 -5
  440. package/build/src/database/drivers/mysql/options.d.ts +7 -1
  441. package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
  442. package/build/src/database/drivers/mysql/options.js +2 -2
  443. package/build/src/database/drivers/mysql/query-parser.d.ts +1 -1
  444. package/build/src/database/drivers/mysql/query-parser.d.ts.map +1 -1
  445. package/build/src/database/drivers/mysql/query-stream.d.ts.map +1 -1
  446. package/build/src/database/drivers/mysql/query.d.ts +2 -2
  447. package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
  448. package/build/src/database/drivers/mysql/query.js +8 -8
  449. package/build/src/database/drivers/mysql/sql/alter-table.d.ts +12 -1
  450. package/build/src/database/drivers/mysql/sql/alter-table.d.ts.map +1 -1
  451. package/build/src/database/drivers/mysql/sql/create-database.d.ts +6 -1
  452. package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
  453. package/build/src/database/drivers/mysql/sql/create-index.d.ts +1 -1
  454. package/build/src/database/drivers/mysql/sql/create-index.d.ts.map +1 -1
  455. package/build/src/database/drivers/mysql/sql/create-table.d.ts +1 -1
  456. package/build/src/database/drivers/mysql/sql/create-table.d.ts.map +1 -1
  457. package/build/src/database/drivers/mysql/sql/delete.d.ts +1 -1
  458. package/build/src/database/drivers/mysql/sql/delete.d.ts.map +1 -1
  459. package/build/src/database/drivers/mysql/sql/drop-database.d.ts +1 -1
  460. package/build/src/database/drivers/mysql/sql/drop-database.d.ts.map +1 -1
  461. package/build/src/database/drivers/mysql/sql/drop-table.d.ts +1 -1
  462. package/build/src/database/drivers/mysql/sql/drop-table.d.ts.map +1 -1
  463. package/build/src/database/drivers/mysql/sql/insert.d.ts +1 -1
  464. package/build/src/database/drivers/mysql/sql/insert.d.ts.map +1 -1
  465. package/build/src/database/drivers/mysql/sql/remove-index.d.ts +1 -1
  466. package/build/src/database/drivers/mysql/sql/remove-index.d.ts.map +1 -1
  467. package/build/src/database/drivers/mysql/sql/update.d.ts +1 -1
  468. package/build/src/database/drivers/mysql/sql/update.d.ts.map +1 -1
  469. package/build/src/database/drivers/mysql/sql/upsert.d.ts +1 -1
  470. package/build/src/database/drivers/mysql/sql/upsert.d.ts.map +1 -1
  471. package/build/src/database/drivers/mysql/structure-sql.d.ts +14 -3
  472. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  473. package/build/src/database/drivers/mysql/structure-sql.js +62 -11
  474. package/build/src/database/drivers/mysql/table.d.ts +11 -6
  475. package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
  476. package/build/src/database/drivers/pgsql/column.d.ts +10 -5
  477. package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
  478. package/build/src/database/drivers/pgsql/column.js +2 -2
  479. package/build/src/database/drivers/pgsql/columns-index.d.ts +30 -22
  480. package/build/src/database/drivers/pgsql/columns-index.d.ts.map +1 -1
  481. package/build/src/database/drivers/pgsql/foreign-key.d.ts +1 -1
  482. package/build/src/database/drivers/pgsql/foreign-key.d.ts.map +1 -1
  483. package/build/src/database/drivers/pgsql/index.d.ts +157 -6
  484. package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
  485. package/build/src/database/drivers/pgsql/index.js +7 -7
  486. package/build/src/database/drivers/pgsql/options.d.ts +1 -1
  487. package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
  488. package/build/src/database/drivers/pgsql/query-parser.d.ts +1 -1
  489. package/build/src/database/drivers/pgsql/query-parser.d.ts.map +1 -1
  490. package/build/src/database/drivers/pgsql/sql/alter-table.d.ts +1 -1
  491. package/build/src/database/drivers/pgsql/sql/alter-table.d.ts.map +1 -1
  492. package/build/src/database/drivers/pgsql/sql/create-database.d.ts +2 -1
  493. package/build/src/database/drivers/pgsql/sql/create-database.d.ts.map +1 -1
  494. package/build/src/database/drivers/pgsql/sql/create-index.d.ts +1 -1
  495. package/build/src/database/drivers/pgsql/sql/create-index.d.ts.map +1 -1
  496. package/build/src/database/drivers/pgsql/sql/create-table.d.ts +1 -1
  497. package/build/src/database/drivers/pgsql/sql/create-table.d.ts.map +1 -1
  498. package/build/src/database/drivers/pgsql/sql/delete.d.ts +1 -1
  499. package/build/src/database/drivers/pgsql/sql/delete.d.ts.map +1 -1
  500. package/build/src/database/drivers/pgsql/sql/drop-database.d.ts +1 -1
  501. package/build/src/database/drivers/pgsql/sql/drop-database.d.ts.map +1 -1
  502. package/build/src/database/drivers/pgsql/sql/drop-table.d.ts +1 -1
  503. package/build/src/database/drivers/pgsql/sql/drop-table.d.ts.map +1 -1
  504. package/build/src/database/drivers/pgsql/sql/insert.d.ts +1 -1
  505. package/build/src/database/drivers/pgsql/sql/insert.d.ts.map +1 -1
  506. package/build/src/database/drivers/pgsql/sql/remove-index.d.ts +1 -1
  507. package/build/src/database/drivers/pgsql/sql/remove-index.d.ts.map +1 -1
  508. package/build/src/database/drivers/pgsql/sql/update.d.ts +1 -1
  509. package/build/src/database/drivers/pgsql/sql/update.d.ts.map +1 -1
  510. package/build/src/database/drivers/pgsql/sql/upsert.d.ts +1 -1
  511. package/build/src/database/drivers/pgsql/sql/upsert.d.ts.map +1 -1
  512. package/build/src/database/drivers/pgsql/structure-sql.d.ts +3 -3
  513. package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
  514. package/build/src/database/drivers/pgsql/structure-sql.js +2 -2
  515. package/build/src/database/drivers/pgsql/table.d.ts +33 -31
  516. package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
  517. package/build/src/database/drivers/sqlite/base.d.ts +162 -12
  518. package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
  519. package/build/src/database/drivers/sqlite/base.js +8 -8
  520. package/build/src/database/drivers/sqlite/column.d.ts +12 -6
  521. package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
  522. package/build/src/database/drivers/sqlite/column.js +2 -2
  523. package/build/src/database/drivers/sqlite/columns-index.d.ts +5 -1
  524. package/build/src/database/drivers/sqlite/columns-index.d.ts.map +1 -1
  525. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +9 -9
  526. package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
  527. package/build/src/database/drivers/sqlite/connection-sql-js.js +2 -2
  528. package/build/src/database/drivers/sqlite/foreign-key.d.ts +5 -4
  529. package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
  530. package/build/src/database/drivers/sqlite/foreign-key.js +2 -2
  531. package/build/src/database/drivers/sqlite/index.d.ts +53 -3
  532. package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
  533. package/build/src/database/drivers/sqlite/index.js +2 -2
  534. package/build/src/database/drivers/sqlite/index.native.d.ts +13 -5
  535. package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
  536. package/build/src/database/drivers/sqlite/index.native.js +3 -3
  537. package/build/src/database/drivers/sqlite/index.web.d.ts +48 -14
  538. package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
  539. package/build/src/database/drivers/sqlite/index.web.js +3 -3
  540. package/build/src/database/drivers/sqlite/options.d.ts +1 -1
  541. package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
  542. package/build/src/database/drivers/sqlite/query-parser.d.ts +1 -1
  543. package/build/src/database/drivers/sqlite/query-parser.d.ts.map +1 -1
  544. package/build/src/database/drivers/sqlite/query.d.ts +2 -2
  545. package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
  546. package/build/src/database/drivers/sqlite/query.js +3 -3
  547. package/build/src/database/drivers/sqlite/query.native.d.ts +4 -4
  548. package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
  549. package/build/src/database/drivers/sqlite/query.native.js +3 -3
  550. package/build/src/database/drivers/sqlite/query.web.d.ts +2 -2
  551. package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
  552. package/build/src/database/drivers/sqlite/query.web.js +3 -3
  553. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts +19 -4
  554. package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
  555. package/build/src/database/drivers/sqlite/sql/create-index.d.ts +1 -1
  556. package/build/src/database/drivers/sqlite/sql/create-index.d.ts.map +1 -1
  557. package/build/src/database/drivers/sqlite/sql/create-table.d.ts +1 -1
  558. package/build/src/database/drivers/sqlite/sql/create-table.d.ts.map +1 -1
  559. package/build/src/database/drivers/sqlite/sql/delete.d.ts +1 -1
  560. package/build/src/database/drivers/sqlite/sql/delete.d.ts.map +1 -1
  561. package/build/src/database/drivers/sqlite/sql/drop-table.d.ts +1 -1
  562. package/build/src/database/drivers/sqlite/sql/drop-table.d.ts.map +1 -1
  563. package/build/src/database/drivers/sqlite/sql/insert.d.ts +1 -1
  564. package/build/src/database/drivers/sqlite/sql/insert.d.ts.map +1 -1
  565. package/build/src/database/drivers/sqlite/sql/remove-index.d.ts +1 -1
  566. package/build/src/database/drivers/sqlite/sql/remove-index.d.ts.map +1 -1
  567. package/build/src/database/drivers/sqlite/sql/update.d.ts +1 -1
  568. package/build/src/database/drivers/sqlite/sql/update.d.ts.map +1 -1
  569. package/build/src/database/drivers/sqlite/sql/upsert.d.ts +1 -1
  570. package/build/src/database/drivers/sqlite/sql/upsert.d.ts.map +1 -1
  571. package/build/src/database/drivers/sqlite/structure-sql.d.ts +1 -1
  572. package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
  573. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +5 -5
  574. package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
  575. package/build/src/database/drivers/sqlite/table-rebuilder.js +2 -2
  576. package/build/src/database/drivers/sqlite/table.d.ts +15 -5
  577. package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
  578. package/build/src/database/drivers/sqlite/web-persistence.d.ts +28 -34
  579. package/build/src/database/drivers/sqlite/web-persistence.d.ts.map +1 -1
  580. package/build/src/database/drivers/structure-sql/utils.d.ts +2 -2
  581. package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
  582. package/build/src/database/handler.d.ts.map +1 -1
  583. package/build/src/database/initializer-from-require-context.d.ts +18 -16
  584. package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
  585. package/build/src/database/live-query.d.ts +13 -24
  586. package/build/src/database/live-query.d.ts.map +1 -1
  587. package/build/src/database/migration/index.d.ts +146 -169
  588. package/build/src/database/migration/index.d.ts.map +1 -1
  589. package/build/src/database/migration/index.js +3 -3
  590. package/build/src/database/migrations-ledger.d.ts.map +1 -1
  591. package/build/src/database/migrator/files-finder.d.ts +1 -1
  592. package/build/src/database/migrator/files-finder.d.ts.map +1 -1
  593. package/build/src/database/migrator/types.d.ts +26 -2
  594. package/build/src/database/migrator/types.d.ts.map +1 -1
  595. package/build/src/database/migrator/types.js +24 -1
  596. package/build/src/database/migrator.d.ts +10 -10
  597. package/build/src/database/migrator.d.ts.map +1 -1
  598. package/build/src/database/operation-connection.d.ts +3 -3
  599. package/build/src/database/operation-connection.d.ts.map +1 -1
  600. package/build/src/database/operation-lease.d.ts +4 -4
  601. package/build/src/database/operation-lease.d.ts.map +1 -1
  602. package/build/src/database/operation.d.ts +38 -7
  603. package/build/src/database/operation.d.ts.map +1 -1
  604. package/build/src/database/operation.js +55 -8
  605. package/build/src/database/pool/async-tracked-multi-connection.d.ts +174 -79
  606. package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
  607. package/build/src/database/pool/async-tracked-multi-connection.js +70 -25
  608. package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
  609. package/build/src/database/pool/base-methods-forward.js +3 -3
  610. package/build/src/database/pool/base.d.ts +93 -71
  611. package/build/src/database/pool/base.d.ts.map +1 -1
  612. package/build/src/database/pool/base.js +47 -17
  613. package/build/src/database/pool/single-multi-use.d.ts +243 -10
  614. package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
  615. package/build/src/database/pool/single-multi-use.js +467 -103
  616. package/build/src/database/query/alter-table-base.d.ts +8 -3
  617. package/build/src/database/query/alter-table-base.d.ts.map +1 -1
  618. package/build/src/database/query/base.d.ts +3 -3
  619. package/build/src/database/query/base.d.ts.map +1 -1
  620. package/build/src/database/query/create-database-base.d.ts +28 -22
  621. package/build/src/database/query/create-database-base.d.ts.map +1 -1
  622. package/build/src/database/query/create-index-base.d.ts +32 -30
  623. package/build/src/database/query/create-index-base.d.ts.map +1 -1
  624. package/build/src/database/query/create-table-base.d.ts +7 -7
  625. package/build/src/database/query/create-table-base.d.ts.map +1 -1
  626. package/build/src/database/query/delete-base.d.ts +5 -5
  627. package/build/src/database/query/delete-base.d.ts.map +1 -1
  628. package/build/src/database/query/delete-base.js +2 -2
  629. package/build/src/database/query/drop-database-base.d.ts +22 -18
  630. package/build/src/database/query/drop-database-base.d.ts.map +1 -1
  631. package/build/src/database/query/drop-table-base.d.ts +11 -6
  632. package/build/src/database/query/drop-table-base.d.ts.map +1 -1
  633. package/build/src/database/query/from-base.d.ts.map +1 -1
  634. package/build/src/database/query/from-plain.d.ts +3 -2
  635. package/build/src/database/query/from-plain.d.ts.map +1 -1
  636. package/build/src/database/query/from-table.d.ts +3 -2
  637. package/build/src/database/query/from-table.d.ts.map +1 -1
  638. package/build/src/database/query/index.d.ts +92 -107
  639. package/build/src/database/query/index.d.ts.map +1 -1
  640. package/build/src/database/query/index.js +4 -4
  641. package/build/src/database/query/insert-base.d.ts +18 -18
  642. package/build/src/database/query/insert-base.d.ts.map +1 -1
  643. package/build/src/database/query/insert-base.js +5 -5
  644. package/build/src/database/query/join-base.d.ts +1 -1
  645. package/build/src/database/query/join-base.d.ts.map +1 -1
  646. package/build/src/database/query/join-object.d.ts +9 -15
  647. package/build/src/database/query/join-object.d.ts.map +1 -1
  648. package/build/src/database/query/join-plain.d.ts +2 -2
  649. package/build/src/database/query/join-plain.d.ts.map +1 -1
  650. package/build/src/database/query/join-tracker.d.ts +3 -3
  651. package/build/src/database/query/join-tracker.d.ts.map +1 -1
  652. package/build/src/database/query/model-class-query.d.ts +39 -36
  653. package/build/src/database/query/model-class-query.d.ts.map +1 -1
  654. package/build/src/database/query/model-class-query.js +40 -40
  655. package/build/src/database/query/order-base.d.ts +1 -1
  656. package/build/src/database/query/order-base.d.ts.map +1 -1
  657. package/build/src/database/query/order-column.d.ts +19 -22
  658. package/build/src/database/query/order-column.d.ts.map +1 -1
  659. package/build/src/database/query/order-plain.d.ts +3 -3
  660. package/build/src/database/query/order-plain.d.ts.map +1 -1
  661. package/build/src/database/query/preloader/belongs-to.d.ts +5 -5
  662. package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
  663. package/build/src/database/query/preloader/belongs-to.js +3 -3
  664. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +2 -1
  665. package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
  666. package/build/src/database/query/preloader/ensure-model-class-initialized.js +4 -3
  667. package/build/src/database/query/preloader/has-many.d.ts +6 -6
  668. package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
  669. package/build/src/database/query/preloader/has-many.js +4 -4
  670. package/build/src/database/query/preloader/has-one.d.ts +5 -5
  671. package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
  672. package/build/src/database/query/preloader/has-one.js +2 -2
  673. package/build/src/database/query/preloader/query-for-model.d.ts.map +1 -1
  674. package/build/src/database/query/preloader/selection.d.ts +6 -6
  675. package/build/src/database/query/preloader/selection.d.ts.map +1 -1
  676. package/build/src/database/query/preloader.d.ts +8 -8
  677. package/build/src/database/query/preloader.d.ts.map +1 -1
  678. package/build/src/database/query/preloader.js +9 -3
  679. package/build/src/database/query/query-data.d.ts +43 -55
  680. package/build/src/database/query/query-data.d.ts.map +1 -1
  681. package/build/src/database/query/query-data.js +8 -8
  682. package/build/src/database/query/remove-index-base.d.ts +21 -19
  683. package/build/src/database/query/remove-index-base.d.ts.map +1 -1
  684. package/build/src/database/query/select-base.d.ts +1 -1
  685. package/build/src/database/query/select-base.d.ts.map +1 -1
  686. package/build/src/database/query/select-plain.d.ts +3 -2
  687. package/build/src/database/query/select-plain.d.ts.map +1 -1
  688. package/build/src/database/query/select-table-and-column.d.ts +4 -3
  689. package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
  690. package/build/src/database/query/update-base.d.ts +10 -10
  691. package/build/src/database/query/update-base.d.ts.map +1 -1
  692. package/build/src/database/query/update-base.js +4 -4
  693. package/build/src/database/query/upsert-base.d.ts +9 -9
  694. package/build/src/database/query/upsert-base.d.ts.map +1 -1
  695. package/build/src/database/query/upsert-base.js +3 -3
  696. package/build/src/database/query/where-base.d.ts +1 -1
  697. package/build/src/database/query/where-base.d.ts.map +1 -1
  698. package/build/src/database/query/where-combinator.d.ts +9 -4
  699. package/build/src/database/query/where-combinator.d.ts.map +1 -1
  700. package/build/src/database/query/where-hash.d.ts +11 -9
  701. package/build/src/database/query/where-hash.d.ts.map +1 -1
  702. package/build/src/database/query/where-model-class-hash.d.ts +28 -26
  703. package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
  704. package/build/src/database/query/where-model-class-hash.js +14 -14
  705. package/build/src/database/query/where-not.d.ts +8 -3
  706. package/build/src/database/query/where-not.d.ts.map +1 -1
  707. package/build/src/database/query/where-plain.d.ts +4 -3
  708. package/build/src/database/query/where-plain.d.ts.map +1 -1
  709. package/build/src/database/query/with-count.d.ts +22 -28
  710. package/build/src/database/query/with-count.d.ts.map +1 -1
  711. package/build/src/database/query/with-count.js +12 -12
  712. package/build/src/database/query-aborted-error.d.ts +5 -5
  713. package/build/src/database/query-aborted-error.d.ts.map +1 -1
  714. package/build/src/database/query-parser/base-query-parser.d.ts +3 -3
  715. package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
  716. package/build/src/database/query-parser/from-parser.d.ts +2 -2
  717. package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
  718. package/build/src/database/query-parser/group-parser.d.ts +2 -2
  719. package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
  720. package/build/src/database/query-parser/joins-parser.d.ts +3 -3
  721. package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
  722. package/build/src/database/query-parser/limit-parser.d.ts +2 -2
  723. package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
  724. package/build/src/database/query-parser/options.d.ts +31 -34
  725. package/build/src/database/query-parser/options.d.ts.map +1 -1
  726. package/build/src/database/query-parser/options.js +3 -3
  727. package/build/src/database/query-parser/order-parser.d.ts +2 -2
  728. package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
  729. package/build/src/database/query-parser/select-parser.d.ts +2 -2
  730. package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
  731. package/build/src/database/query-parser/select-parser.js +2 -2
  732. package/build/src/database/query-parser/where-parser.d.ts +2 -2
  733. package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
  734. package/build/src/database/record/acts-as-list.d.ts.map +1 -1
  735. package/build/src/database/record/acts-as-list.js +3 -3
  736. package/build/src/database/record/attachments/attachment-record.d.ts +7 -3
  737. package/build/src/database/record/attachments/attachment-record.d.ts.map +1 -1
  738. package/build/src/database/record/attachments/download.d.ts +9 -9
  739. package/build/src/database/record/attachments/download.d.ts.map +1 -1
  740. package/build/src/database/record/attachments/handle.d.ts +12 -12
  741. package/build/src/database/record/attachments/handle.d.ts.map +1 -1
  742. package/build/src/database/record/attachments/handle.js +7 -7
  743. package/build/src/database/record/attachments/normalize-input.d.ts +16 -22
  744. package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
  745. package/build/src/database/record/attachments/normalize-input.js +12 -12
  746. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +4 -4
  747. package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
  748. package/build/src/database/record/attachments/storage-drivers/filesystem.js +2 -2
  749. package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -12
  750. package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
  751. package/build/src/database/record/attachments/storage-drivers/native.js +6 -6
  752. package/build/src/database/record/attachments/storage-drivers/s3.d.ts +17 -17
  753. package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
  754. package/build/src/database/record/attachments/storage-drivers/s3.js +11 -11
  755. package/build/src/database/record/attachments/store.d.ts +38 -41
  756. package/build/src/database/record/attachments/store.d.ts.map +1 -1
  757. package/build/src/database/record/attachments/store.js +24 -21
  758. package/build/src/database/record/auditing.d.ts +67 -87
  759. package/build/src/database/record/auditing.d.ts.map +1 -1
  760. package/build/src/database/record/auditing.js +109 -30
  761. package/build/src/database/record/counter-cache-magnitude.d.ts +15 -35
  762. package/build/src/database/record/counter-cache-magnitude.d.ts.map +1 -1
  763. package/build/src/database/record/counter-cache-magnitude.js +12 -12
  764. package/build/src/database/record/index.d.ts +2390 -488
  765. package/build/src/database/record/index.d.ts.map +1 -1
  766. package/build/src/database/record/index.js +222 -172
  767. package/build/src/database/record/instance-relationships/base.d.ts +20 -23
  768. package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
  769. package/build/src/database/record/instance-relationships/base.js +5 -5
  770. package/build/src/database/record/instance-relationships/belongs-to.d.ts +9 -1
  771. package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
  772. package/build/src/database/record/instance-relationships/belongs-to.js +2 -2
  773. package/build/src/database/record/instance-relationships/has-many.d.ts +15 -3
  774. package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
  775. package/build/src/database/record/instance-relationships/has-many.js +4 -4
  776. package/build/src/database/record/instance-relationships/has-one.d.ts +19 -1
  777. package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
  778. package/build/src/database/record/instance-relationships/has-one.js +2 -2
  779. package/build/src/database/record/record-not-found-error.d.ts +1 -0
  780. package/build/src/database/record/record-not-found-error.d.ts.map +1 -1
  781. package/build/src/database/record/record-not-found-error.js +2 -1
  782. package/build/src/database/record/relationships/base.d.ts +83 -71
  783. package/build/src/database/record/relationships/base.d.ts.map +1 -1
  784. package/build/src/database/record/relationships/base.js +21 -1
  785. package/build/src/database/record/relationships/belongs-to.d.ts +11 -1
  786. package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
  787. package/build/src/database/record/relationships/has-many.d.ts +11 -1
  788. package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
  789. package/build/src/database/record/relationships/has-one.d.ts +11 -1
  790. package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
  791. package/build/src/database/record/state-machine.d.ts +20 -29
  792. package/build/src/database/record/state-machine.d.ts.map +1 -1
  793. package/build/src/database/record/state-machine.js +7 -7
  794. package/build/src/database/record/user-module.d.ts +1 -1
  795. package/build/src/database/record/user-module.d.ts.map +1 -1
  796. package/build/src/database/record/validation-messages.d.ts +19 -22
  797. package/build/src/database/record/validation-messages.d.ts.map +1 -1
  798. package/build/src/database/record/validators/base.d.ts +4 -4
  799. package/build/src/database/record/validators/base.d.ts.map +1 -1
  800. package/build/src/database/record/validators/base.js +2 -2
  801. package/build/src/database/record/validators/format.d.ts +12 -1
  802. package/build/src/database/record/validators/format.d.ts.map +1 -1
  803. package/build/src/database/record/validators/length.d.ts +14 -1
  804. package/build/src/database/record/validators/length.d.ts.map +1 -1
  805. package/build/src/database/record/validators/presence.d.ts +11 -1
  806. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  807. package/build/src/database/record/validators/uniqueness.d.ts +12 -1
  808. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  809. package/build/src/database/record-changes.d.ts +7 -18
  810. package/build/src/database/record-changes.d.ts.map +1 -1
  811. package/build/src/database/structure-sql-loader.d.ts +2 -2
  812. package/build/src/database/structure-sql-loader.d.ts.map +1 -1
  813. package/build/src/database/structure-sql-loader.js +4 -4
  814. package/build/src/database/table-data/index.d.ts +21 -24
  815. package/build/src/database/table-data/index.d.ts.map +1 -1
  816. package/build/src/database/table-data/table-column.d.ts +74 -80
  817. package/build/src/database/table-data/table-column.d.ts.map +1 -1
  818. package/build/src/database/table-data/table-column.js +4 -4
  819. package/build/src/database/table-data/table-foreign-key.d.ts +10 -10
  820. package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
  821. package/build/src/database/table-data/table-index.d.ts +12 -15
  822. package/build/src/database/table-data/table-index.d.ts.map +1 -1
  823. package/build/src/database/table-data/table-reference.d.ts +2 -2
  824. package/build/src/database/table-data/table-reference.d.ts.map +1 -1
  825. package/build/src/database/tenants/data-copier.d.ts +7 -7
  826. package/build/src/database/tenants/data-copier.d.ts.map +1 -1
  827. package/build/src/database/tenants/schema-cloner.d.ts +3 -3
  828. package/build/src/database/tenants/schema-cloner.d.ts.map +1 -1
  829. package/build/src/database/tenants/tenant-table-plan.d.ts +20 -14
  830. package/build/src/database/tenants/tenant-table-plan.d.ts.map +1 -1
  831. package/build/src/database/tenants/tenant-table-plan.js +17 -1
  832. package/build/src/database/use-database.d.ts.map +1 -1
  833. package/build/src/database/use-live-query.d.ts +17 -29
  834. package/build/src/database/use-live-query.d.ts.map +1 -1
  835. package/build/src/database/use-live-query.js +4 -4
  836. package/build/src/environment-handlers/base.d.ts +112 -103
  837. package/build/src/environment-handlers/base.d.ts.map +1 -1
  838. package/build/src/environment-handlers/base.js +54 -38
  839. package/build/src/environment-handlers/browser.d.ts +63 -56
  840. package/build/src/environment-handlers/browser.d.ts.map +1 -1
  841. package/build/src/environment-handlers/browser.js +2 -2
  842. package/build/src/environment-handlers/node/attachment-path-source.d.ts +9 -9
  843. package/build/src/environment-handlers/node/attachment-path-source.d.ts.map +1 -1
  844. package/build/src/environment-handlers/node/cli/commands/background-jobs-main.d.ts +1 -1
  845. package/build/src/environment-handlers/node/cli/commands/background-jobs-main.d.ts.map +1 -1
  846. package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.d.ts +1 -1
  847. package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.d.ts.map +1 -1
  848. package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.d.ts +1 -1
  849. package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.d.ts.map +1 -1
  850. package/build/src/environment-handlers/node/cli/commands/beacon.d.ts +1 -1
  851. package/build/src/environment-handlers/node/cli/commands/beacon.d.ts.map +1 -1
  852. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +7 -10
  853. package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
  854. package/build/src/environment-handlers/node/cli/commands/console.d.ts +9 -7
  855. package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
  856. package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
  857. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
  858. package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
  859. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
  860. package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
  861. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +7 -5
  862. package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
  863. package/build/src/environment-handlers/node/cli/commands/db/seed.js +3 -3
  864. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +4 -7
  865. package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
  866. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +1 -1
  867. package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
  868. package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +2 -2
  869. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +93 -108
  870. package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
  871. package/build/src/environment-handlers/node/cli/commands/generate/generated-file-banner.d.ts.map +1 -1
  872. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +9 -12
  873. package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
  874. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +8 -11
  875. package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
  876. package/build/src/environment-handlers/node/cli/commands/init.d.ts +7 -9
  877. package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
  878. package/build/src/environment-handlers/node/cli/commands/lint/relationships.d.ts +7 -7
  879. package/build/src/environment-handlers/node/cli/commands/lint/relationships.d.ts.map +1 -1
  880. package/build/src/environment-handlers/node/cli/commands/routes.d.ts +1 -1
  881. package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
  882. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +7 -5
  883. package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
  884. package/build/src/environment-handlers/node/cli/commands/run-script.js +3 -3
  885. package/build/src/environment-handlers/node/cli/commands/runner.d.ts +9 -7
  886. package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
  887. package/build/src/environment-handlers/node/cli/commands/runner.js +3 -3
  888. package/build/src/environment-handlers/node/cli/commands/server.d.ts +24 -30
  889. package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
  890. package/build/src/environment-handlers/node/cli/commands/server.js +2 -2
  891. package/build/src/environment-handlers/node/cli/commands/test.d.ts +5 -5
  892. package/build/src/environment-handlers/node/cli/commands/test.d.ts.map +1 -1
  893. package/build/src/environment-handlers/node/source-peer-package.d.ts +5 -7
  894. package/build/src/environment-handlers/node/source-peer-package.d.ts.map +1 -1
  895. package/build/src/environment-handlers/node/source-peer-package.js +1 -1
  896. package/build/src/environment-handlers/node.d.ts +362 -13
  897. package/build/src/environment-handlers/node.d.ts.map +1 -1
  898. package/build/src/environment-handlers/node.js +37 -37
  899. package/build/src/error-logger.d.ts +3 -3
  900. package/build/src/error-logger.d.ts.map +1 -1
  901. package/build/src/error-logger.js +3 -3
  902. package/build/src/error-reporting/request-details.d.ts +1 -1
  903. package/build/src/error-reporting/request-details.d.ts.map +1 -1
  904. package/build/src/error-reporting/request-details.js +33 -33
  905. package/build/src/frontend-model-controller.d.ts +216 -230
  906. package/build/src/frontend-model-controller.d.ts.map +1 -1
  907. package/build/src/frontend-model-controller.js +217 -211
  908. package/build/src/frontend-model-resource/base-resource.d.ts +315 -365
  909. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  910. package/build/src/frontend-model-resource/base-resource.js +45 -45
  911. package/build/src/frontend-model-resource/velocious-attachment-resource.d.ts +11 -5
  912. package/build/src/frontend-model-resource/velocious-attachment-resource.d.ts.map +1 -1
  913. package/build/src/frontend-model-resource/velocious-attachment-resource.js +2 -2
  914. package/build/src/frontend-models/base.d.ts +632 -726
  915. package/build/src/frontend-models/base.d.ts.map +1 -1
  916. package/build/src/frontend-models/base.js +147 -143
  917. package/build/src/frontend-models/built-in-resources.d.ts +2 -2
  918. package/build/src/frontend-models/built-in-resources.d.ts.map +1 -1
  919. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -2
  920. package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
  921. package/build/src/frontend-models/clear-pending-debounced-callback.js +3 -3
  922. package/build/src/frontend-models/event-hook-models.d.ts +3 -6
  923. package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
  924. package/build/src/frontend-models/model-registry.d.ts +5 -5
  925. package/build/src/frontend-models/model-registry.d.ts.map +1 -1
  926. package/build/src/frontend-models/model-registry.js +5 -5
  927. package/build/src/frontend-models/outgoing-event-buffer.d.ts +20 -17
  928. package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
  929. package/build/src/frontend-models/outgoing-event-buffer.js +2 -2
  930. package/build/src/frontend-models/preloader.d.ts.map +1 -1
  931. package/build/src/frontend-models/preloader.js +2 -2
  932. package/build/src/frontend-models/query.d.ts +286 -331
  933. package/build/src/frontend-models/query.d.ts.map +1 -1
  934. package/build/src/frontend-models/query.js +61 -61
  935. package/build/src/frontend-models/resource-config-validation.d.ts +2 -2
  936. package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
  937. package/build/src/frontend-models/resource-definition.d.ts +30 -33
  938. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  939. package/build/src/frontend-models/resource-definition.js +10 -10
  940. package/build/src/frontend-models/transport-deadline.d.ts.map +1 -1
  941. package/build/src/frontend-models/transport-serialization.d.ts +26 -32
  942. package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
  943. package/build/src/frontend-models/transport-serialization.js +28 -28
  944. package/build/src/frontend-models/use-created-event.d.ts +4 -4
  945. package/build/src/frontend-models/use-created-event.d.ts.map +1 -1
  946. package/build/src/frontend-models/use-destroyed-event.d.ts +8 -29
  947. package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
  948. package/build/src/frontend-models/use-model-class-event.d.ts +9 -33
  949. package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
  950. package/build/src/frontend-models/use-updated-event.d.ts +8 -29
  951. package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
  952. package/build/src/frontend-models/websocket-channel.d.ts +30 -34
  953. package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
  954. package/build/src/frontend-models/websocket-channel.js +5 -5
  955. package/build/src/frontend-models/websocket-publishers.d.ts +4 -4
  956. package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
  957. package/build/src/frontend-models/websocket-publishers.js +2 -2
  958. package/build/src/http-client/header.d.ts +2 -2
  959. package/build/src/http-client/header.d.ts.map +1 -1
  960. package/build/src/http-client/index.d.ts +23 -23
  961. package/build/src/http-client/index.d.ts.map +1 -1
  962. package/build/src/http-client/request.d.ts +9 -9
  963. package/build/src/http-client/request.d.ts.map +1 -1
  964. package/build/src/http-client/request.js +2 -2
  965. package/build/src/http-client/response.d.ts +12 -12
  966. package/build/src/http-client/response.d.ts.map +1 -1
  967. package/build/src/http-client/response.js +2 -2
  968. package/build/src/http-client/websocket-client.d.ts +20 -4
  969. package/build/src/http-client/websocket-client.d.ts.map +1 -1
  970. package/build/src/http-server/client/index.d.ts +26 -26
  971. package/build/src/http-server/client/index.d.ts.map +1 -1
  972. package/build/src/http-server/client/index.js +5 -5
  973. package/build/src/http-server/client/params-to-object.d.ts +11 -11
  974. package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
  975. package/build/src/http-server/client/params-to-object.js +17 -17
  976. package/build/src/http-server/client/request-buffer/form-data-part.d.ts +9 -9
  977. package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
  978. package/build/src/http-server/client/request-buffer/header.d.ts +3 -3
  979. package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
  980. package/build/src/http-server/client/request-buffer/index.d.ts +28 -30
  981. package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
  982. package/build/src/http-server/client/request-buffer/index.js +5 -3
  983. package/build/src/http-server/client/request-parser.d.ts +11 -11
  984. package/build/src/http-server/client/request-parser.d.ts.map +1 -1
  985. package/build/src/http-server/client/request-parser.js +3 -3
  986. package/build/src/http-server/client/request-runner.d.ts +11 -11
  987. package/build/src/http-server/client/request-runner.d.ts.map +1 -1
  988. package/build/src/http-server/client/request-runner.js +3 -3
  989. package/build/src/http-server/client/request-timing.d.ts +5 -11
  990. package/build/src/http-server/client/request-timing.d.ts.map +1 -1
  991. package/build/src/http-server/client/request.d.ts +10 -10
  992. package/build/src/http-server/client/request.d.ts.map +1 -1
  993. package/build/src/http-server/client/request.js +3 -3
  994. package/build/src/http-server/client/response-compression.d.ts +5 -5
  995. package/build/src/http-server/client/response-compression.d.ts.map +1 -1
  996. package/build/src/http-server/client/response.d.ts +13 -13
  997. package/build/src/http-server/client/response.d.ts.map +1 -1
  998. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +8 -2
  999. package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
  1000. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +8 -2
  1001. package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
  1002. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +4 -4
  1003. package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
  1004. package/build/src/http-server/client/websocket-request.d.ts +26 -26
  1005. package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
  1006. package/build/src/http-server/client/websocket-request.js +7 -7
  1007. package/build/src/http-server/client/websocket-session.d.ts +105 -108
  1008. package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
  1009. package/build/src/http-server/client/websocket-session.js +29 -29
  1010. package/build/src/http-server/client-delivery-queue.d.ts +30 -30
  1011. package/build/src/http-server/client-delivery-queue.d.ts.map +1 -1
  1012. package/build/src/http-server/cookie.d.ts +80 -108
  1013. package/build/src/http-server/cookie.d.ts.map +1 -1
  1014. package/build/src/http-server/cookie.js +3 -3
  1015. package/build/src/http-server/development-reloader.d.ts +24 -24
  1016. package/build/src/http-server/development-reloader.d.ts.map +1 -1
  1017. package/build/src/http-server/development-reloader.js +2 -2
  1018. package/build/src/http-server/index.d.ts +66 -72
  1019. package/build/src/http-server/index.d.ts.map +1 -1
  1020. package/build/src/http-server/index.js +6 -6
  1021. package/build/src/http-server/remote-address.d.ts.map +1 -1
  1022. package/build/src/http-server/remote-address.js +2 -2
  1023. package/build/src/http-server/server-client.d.ts +9 -9
  1024. package/build/src/http-server/server-client.d.ts.map +1 -1
  1025. package/build/src/http-server/server-lock.d.ts +11 -11
  1026. package/build/src/http-server/server-lock.d.ts.map +1 -1
  1027. package/build/src/http-server/server-lock.js +5 -5
  1028. package/build/src/http-server/websocket-channel-subscribers.d.ts +11 -10
  1029. package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
  1030. package/build/src/http-server/websocket-channel-subscribers.js +6 -6
  1031. package/build/src/http-server/websocket-channel.d.ts +8 -14
  1032. package/build/src/http-server/websocket-channel.d.ts.map +1 -1
  1033. package/build/src/http-server/websocket-channel.js +2 -2
  1034. package/build/src/http-server/websocket-connection.d.ts +10 -10
  1035. package/build/src/http-server/websocket-connection.d.ts.map +1 -1
  1036. package/build/src/http-server/websocket-connection.js +4 -4
  1037. package/build/src/http-server/websocket-event-log-store.d.ts +58 -64
  1038. package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
  1039. package/build/src/http-server/websocket-event-log-store.js +10 -10
  1040. package/build/src/http-server/websocket-events-host.d.ts +17 -16
  1041. package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
  1042. package/build/src/http-server/websocket-events-host.js +8 -8
  1043. package/build/src/http-server/websocket-events.d.ts +9 -9
  1044. package/build/src/http-server/websocket-events.d.ts.map +1 -1
  1045. package/build/src/http-server/websocket-events.js +5 -5
  1046. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +2 -2
  1047. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
  1048. package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +2 -2
  1049. package/build/src/http-server/worker-handler/in-process.d.ts +22 -22
  1050. package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
  1051. package/build/src/http-server/worker-handler/in-process.js +6 -6
  1052. package/build/src/http-server/worker-handler/index.d.ts +50 -50
  1053. package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
  1054. package/build/src/http-server/worker-handler/index.js +11 -11
  1055. package/build/src/http-server/worker-handler/worker-thread.d.ts +61 -61
  1056. package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
  1057. package/build/src/http-server/worker-handler/worker-thread.js +9 -9
  1058. package/build/src/initializer.d.ts +2 -2
  1059. package/build/src/initializer.d.ts.map +1 -1
  1060. package/build/src/jobs/mail-delivery.d.ts +7 -2
  1061. package/build/src/jobs/mail-delivery.d.ts.map +1 -1
  1062. package/build/src/jobs/prune-terminal-background-jobs.d.ts +15 -2
  1063. package/build/src/jobs/prune-terminal-background-jobs.d.ts.map +1 -1
  1064. package/build/src/jobs/prune-terminal-background-jobs.js +1 -1
  1065. package/build/src/logger/base-logger.d.ts.map +1 -1
  1066. package/build/src/logger/base-logger.js +2 -2
  1067. package/build/src/logger/console-logger.d.ts +3 -3
  1068. package/build/src/logger/console-logger.d.ts.map +1 -1
  1069. package/build/src/logger/file-logger.d.ts +4 -4
  1070. package/build/src/logger/file-logger.d.ts.map +1 -1
  1071. package/build/src/logger/outputs/array-output.d.ts +9 -12
  1072. package/build/src/logger/outputs/array-output.d.ts.map +1 -1
  1073. package/build/src/logger/outputs/console-output.d.ts +1 -4
  1074. package/build/src/logger/outputs/console-output.d.ts.map +1 -1
  1075. package/build/src/logger/outputs/file-output.d.ts +13 -16
  1076. package/build/src/logger/outputs/file-output.d.ts.map +1 -1
  1077. package/build/src/logger/outputs/stdout-output.d.ts +1 -4
  1078. package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
  1079. package/build/src/logger.d.ts +30 -29
  1080. package/build/src/logger.d.ts.map +1 -1
  1081. package/build/src/logger.js +13 -13
  1082. package/build/src/mailer/backends/smtp.d.ts +8 -11
  1083. package/build/src/mailer/backends/smtp.d.ts.map +1 -1
  1084. package/build/src/mailer/backends/smtp.js +4 -4
  1085. package/build/src/mailer/base.d.ts +61 -61
  1086. package/build/src/mailer/base.d.ts.map +1 -1
  1087. package/build/src/mailer/base.js +15 -15
  1088. package/build/src/mailer/delivery.d.ts +16 -16
  1089. package/build/src/mailer/delivery.d.ts.map +1 -1
  1090. package/build/src/mailer/delivery.js +4 -4
  1091. package/build/src/mailer/index.d.ts +8 -13
  1092. package/build/src/mailer/index.d.ts.map +1 -1
  1093. package/build/src/mailer/index.js +2 -2
  1094. package/build/src/mailer.d.ts +9 -7
  1095. package/build/src/mailer.d.ts.map +1 -1
  1096. package/build/src/mailer.js +2 -2
  1097. package/build/src/packages/velocious-package.d.ts +5 -5
  1098. package/build/src/packages/velocious-package.d.ts.map +1 -1
  1099. package/build/src/plugins/sqljs-wasm-route-controller.d.ts +1 -1
  1100. package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
  1101. package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
  1102. package/build/src/plugins/sqljs-wasm-route.d.ts +14 -20
  1103. package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
  1104. package/build/src/plugins/sqljs-wasm-route.js +1 -1
  1105. package/build/src/record-payload-values.d.ts +14 -14
  1106. package/build/src/record-payload-values.d.ts.map +1 -1
  1107. package/build/src/record-payload-values.js +4 -4
  1108. package/build/src/routes/app-routes.d.ts.map +1 -1
  1109. package/build/src/routes/base-route.d.ts +11 -10
  1110. package/build/src/routes/base-route.d.ts.map +1 -1
  1111. package/build/src/routes/base-route.js +6 -6
  1112. package/build/src/routes/basic-route.d.ts +36 -3
  1113. package/build/src/routes/basic-route.d.ts.map +1 -1
  1114. package/build/src/routes/basic-route.js +5 -5
  1115. package/build/src/routes/built-in/api-manifest/controller.d.ts +1 -1
  1116. package/build/src/routes/built-in/api-manifest/controller.d.ts.map +1 -1
  1117. package/build/src/routes/built-in/debug/controller.d.ts +1 -1
  1118. package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
  1119. package/build/src/routes/built-in/errors/controller.d.ts +1 -1
  1120. package/build/src/routes/built-in/errors/controller.d.ts.map +1 -1
  1121. package/build/src/routes/get-route.d.ts +19 -4
  1122. package/build/src/routes/get-route.d.ts.map +1 -1
  1123. package/build/src/routes/get-route.js +3 -3
  1124. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -1
  1125. package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
  1126. package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
  1127. package/build/src/routes/index.d.ts +5 -5
  1128. package/build/src/routes/index.d.ts.map +1 -1
  1129. package/build/src/routes/index.js +4 -4
  1130. package/build/src/routes/namespace-route.d.ts +19 -4
  1131. package/build/src/routes/namespace-route.d.ts.map +1 -1
  1132. package/build/src/routes/namespace-route.js +2 -2
  1133. package/build/src/routes/plugin-routes.d.ts +16 -19
  1134. package/build/src/routes/plugin-routes.d.ts.map +1 -1
  1135. package/build/src/routes/plugin-routes.js +2 -2
  1136. package/build/src/routes/post-route.d.ts +19 -4
  1137. package/build/src/routes/post-route.d.ts.map +1 -1
  1138. package/build/src/routes/post-route.js +3 -3
  1139. package/build/src/routes/resolver.d.ts +16 -16
  1140. package/build/src/routes/resolver.d.ts.map +1 -1
  1141. package/build/src/routes/resolver.js +6 -6
  1142. package/build/src/routes/resource-route.d.ts +23 -8
  1143. package/build/src/routes/resource-route.d.ts.map +1 -1
  1144. package/build/src/routes/resource-route.js +2 -2
  1145. package/build/src/routes/root-route.d.ts +1 -1
  1146. package/build/src/routes/root-route.d.ts.map +1 -1
  1147. package/build/src/sync/conflict-strategy.d.ts +50 -35
  1148. package/build/src/sync/conflict-strategy.d.ts.map +1 -1
  1149. package/build/src/sync/conflict-strategy.js +2 -2
  1150. package/build/src/sync/device-identity.d.ts +109 -79
  1151. package/build/src/sync/device-identity.d.ts.map +1 -1
  1152. package/build/src/sync/local-mutation-log.d.ts +115 -92
  1153. package/build/src/sync/local-mutation-log.d.ts.map +1 -1
  1154. package/build/src/sync/offline-grant.d.ts +80 -63
  1155. package/build/src/sync/offline-grant.d.ts.map +1 -1
  1156. package/build/src/sync/peer-mutation-bundle.d.ts +33 -39
  1157. package/build/src/sync/peer-mutation-bundle.d.ts.map +1 -1
  1158. package/build/src/sync/query-scope.d.ts +3 -3
  1159. package/build/src/sync/query-scope.d.ts.map +1 -1
  1160. package/build/src/sync/query-scope.js +8 -8
  1161. package/build/src/sync/server-change-feed.d.ts +129 -129
  1162. package/build/src/sync/server-change-feed.d.ts.map +1 -1
  1163. package/build/src/sync/server-change-feed.js +14 -14
  1164. package/build/src/sync/server-sequence-allocator.d.ts +36 -36
  1165. package/build/src/sync/server-sequence-allocator.d.ts.map +1 -1
  1166. package/build/src/sync/server-sequence-allocator.js +6 -6
  1167. package/build/src/sync/signed-sync-envelope-replay-service.d.ts +60 -48
  1168. package/build/src/sync/signed-sync-envelope-replay-service.d.ts.map +1 -1
  1169. package/build/src/sync/signed-sync-envelope-replay-service.js +21 -21
  1170. package/build/src/sync/stable-json.d.ts +2 -2
  1171. package/build/src/sync/stable-json.d.ts.map +1 -1
  1172. package/build/src/sync/stable-json.js +5 -5
  1173. package/build/src/sync/sync-api-client-types.d.ts +98 -25
  1174. package/build/src/sync/sync-api-client-types.d.ts.map +1 -1
  1175. package/build/src/sync/sync-api-client-types.js +73 -1
  1176. package/build/src/sync/sync-api-client.d.ts +71 -71
  1177. package/build/src/sync/sync-api-client.d.ts.map +1 -1
  1178. package/build/src/sync/sync-api-client.js +30 -30
  1179. package/build/src/sync/sync-api-controller.d.ts +23 -23
  1180. package/build/src/sync/sync-api-controller.d.ts.map +1 -1
  1181. package/build/src/sync/sync-change-fanout.d.ts +32 -38
  1182. package/build/src/sync/sync-change-fanout.d.ts.map +1 -1
  1183. package/build/src/sync/sync-change-fanout.js +7 -7
  1184. package/build/src/sync/sync-channel-name.d.ts +1 -1
  1185. package/build/src/sync/sync-channel-name.d.ts.map +1 -1
  1186. package/build/src/sync/sync-client-registry.d.ts +4 -4
  1187. package/build/src/sync/sync-client-registry.d.ts.map +1 -1
  1188. package/build/src/sync/sync-client-registry.js +4 -4
  1189. package/build/src/sync/sync-client-types.d.ts +130 -82
  1190. package/build/src/sync/sync-client-types.d.ts.map +1 -1
  1191. package/build/src/sync/sync-client-types.js +89 -1
  1192. package/build/src/sync/sync-client.d.ts +76 -76
  1193. package/build/src/sync/sync-client.d.ts.map +1 -1
  1194. package/build/src/sync/sync-client.js +19 -19
  1195. package/build/src/sync/sync-envelope-replay-service.d.ts +266 -298
  1196. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  1197. package/build/src/sync/sync-envelope-replay-service.js +77 -77
  1198. package/build/src/sync/sync-model-change-feed-service.d.ts +23 -23
  1199. package/build/src/sync/sync-model-change-feed-service.d.ts.map +1 -1
  1200. package/build/src/sync/sync-model-change-feed-service.js +8 -8
  1201. package/build/src/sync/sync-publish-suppression.d.ts +5 -5
  1202. package/build/src/sync/sync-publish-suppression.d.ts.map +1 -1
  1203. package/build/src/sync/sync-publish-suppression.js +3 -3
  1204. package/build/src/sync/sync-publisher-types.d.ts +98 -55
  1205. package/build/src/sync/sync-publisher-types.d.ts.map +1 -1
  1206. package/build/src/sync/sync-publisher-types.js +75 -1
  1207. package/build/src/sync/sync-publisher.d.ts +43 -43
  1208. package/build/src/sync/sync-publisher.d.ts.map +1 -1
  1209. package/build/src/sync/sync-publisher.js +20 -20
  1210. package/build/src/sync/sync-realtime-bridge.d.ts +23 -23
  1211. package/build/src/sync/sync-realtime-bridge.d.ts.map +1 -1
  1212. package/build/src/sync/sync-realtime-bridge.js +9 -9
  1213. package/build/src/sync/sync-replay-upsert-applier.d.ts +70 -70
  1214. package/build/src/sync/sync-replay-upsert-applier.d.ts.map +1 -1
  1215. package/build/src/sync/sync-replay-upsert-applier.js +17 -17
  1216. package/build/src/sync/sync-resource-base.d.ts +52 -51
  1217. package/build/src/sync/sync-resource-base.d.ts.map +1 -1
  1218. package/build/src/sync/sync-resource-base.js +15 -15
  1219. package/build/src/sync/sync-scope-attributes.d.ts +2 -2
  1220. package/build/src/sync/sync-scope-attributes.d.ts.map +1 -1
  1221. package/build/src/sync/sync-scope-attributes.js +2 -2
  1222. package/build/src/sync/sync-scope-store.d.ts +36 -36
  1223. package/build/src/sync/sync-scope-store.d.ts.map +1 -1
  1224. package/build/src/sync/sync-scope-store.js +6 -6
  1225. package/build/src/sync/sync-websocket-channel.d.ts +11 -6
  1226. package/build/src/sync/sync-websocket-channel.d.ts.map +1 -1
  1227. package/build/src/sync/sync-websocket-channel.js +6 -6
  1228. package/build/src/tenants/default-tenant-database-provisioning.d.ts +4 -4
  1229. package/build/src/tenants/default-tenant-database-provisioning.d.ts.map +1 -1
  1230. package/build/src/tenants/default-tenant-database-provisioning.js +2 -2
  1231. package/build/src/tenants/tenant-aggregator.d.ts +81 -81
  1232. package/build/src/tenants/tenant-aggregator.d.ts.map +1 -1
  1233. package/build/src/tenants/tenant-aggregator.js +13 -13
  1234. package/build/src/tenants/tenant-handle.d.ts +64 -0
  1235. package/build/src/tenants/tenant-handle.d.ts.map +1 -0
  1236. package/build/src/tenants/tenant-handle.js +221 -0
  1237. package/build/src/tenants/tenant-iterator.d.ts +17 -17
  1238. package/build/src/tenants/tenant-iterator.d.ts.map +1 -1
  1239. package/build/src/tenants/tenant-iterator.js +7 -7
  1240. package/build/src/tenants/tenant-model-scope.d.ts +73 -0
  1241. package/build/src/tenants/tenant-model-scope.d.ts.map +1 -0
  1242. package/build/src/tenants/tenant-model-scope.js +115 -0
  1243. package/build/src/tenants/tenant.d.ts +16 -6
  1244. package/build/src/tenants/tenant.d.ts.map +1 -1
  1245. package/build/src/tenants/tenant.js +15 -3
  1246. package/build/src/testing/base-expect.d.ts.map +1 -1
  1247. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +19 -31
  1248. package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
  1249. package/build/src/testing/browser-test-app.js +6 -6
  1250. package/build/src/testing/expect-to-change.d.ts +9 -7
  1251. package/build/src/testing/expect-to-change.d.ts.map +1 -1
  1252. package/build/src/testing/expect-to-change.js +2 -2
  1253. package/build/src/testing/expect-utils.d.ts +30 -29
  1254. package/build/src/testing/expect-utils.d.ts.map +1 -1
  1255. package/build/src/testing/expect-utils.js +30 -30
  1256. package/build/src/testing/expect.d.ts +30 -30
  1257. package/build/src/testing/expect.d.ts.map +1 -1
  1258. package/build/src/testing/expect.js +19 -19
  1259. package/build/src/testing/factory/association-declaration.d.ts +16 -16
  1260. package/build/src/testing/factory/association-declaration.d.ts.map +1 -1
  1261. package/build/src/testing/factory/association-declaration.js +3 -3
  1262. package/build/src/testing/factory/declarations.d.ts +90 -115
  1263. package/build/src/testing/factory/declarations.d.ts.map +1 -1
  1264. package/build/src/testing/factory/declarations.js +6 -6
  1265. package/build/src/testing/factory/definition-builder.d.ts +72 -70
  1266. package/build/src/testing/factory/definition-builder.d.ts.map +1 -1
  1267. package/build/src/testing/factory/definition-builder.js +40 -40
  1268. package/build/src/testing/factory/errors.d.ts +30 -29
  1269. package/build/src/testing/factory/errors.d.ts.map +1 -1
  1270. package/build/src/testing/factory/evaluation-context.d.ts +29 -29
  1271. package/build/src/testing/factory/evaluation-context.d.ts.map +1 -1
  1272. package/build/src/testing/factory/evaluation-context.js +17 -17
  1273. package/build/src/testing/factory/events.d.ts +4 -5
  1274. package/build/src/testing/factory/events.d.ts.map +1 -1
  1275. package/build/src/testing/factory/factory-definition.d.ts +14 -14
  1276. package/build/src/testing/factory/factory-definition.d.ts.map +1 -1
  1277. package/build/src/testing/factory/factory-definition.js +3 -3
  1278. package/build/src/testing/factory/factory-registry.d.ts +56 -54
  1279. package/build/src/testing/factory/factory-registry.d.ts.map +1 -1
  1280. package/build/src/testing/factory/factory-registry.js +35 -35
  1281. package/build/src/testing/factory/factory-runner.d.ts +67 -73
  1282. package/build/src/testing/factory/factory-runner.d.ts.map +1 -1
  1283. package/build/src/testing/factory/factory-runner.js +9 -9
  1284. package/build/src/testing/factory/index.d.ts +7 -7
  1285. package/build/src/testing/factory/index.d.ts.map +1 -1
  1286. package/build/src/testing/factory/linter.d.ts +7 -7
  1287. package/build/src/testing/factory/linter.d.ts.map +1 -1
  1288. package/build/src/testing/factory/linter.js +3 -3
  1289. package/build/src/testing/factory/model-contract.d.ts +3 -3
  1290. package/build/src/testing/factory/model-contract.d.ts.map +1 -1
  1291. package/build/src/testing/factory/model-contract.js +4 -4
  1292. package/build/src/testing/factory/node/load-definitions.d.ts +2 -2
  1293. package/build/src/testing/factory/node/load-definitions.d.ts.map +1 -1
  1294. package/build/src/testing/factory/sequence.d.ts +19 -23
  1295. package/build/src/testing/factory/sequence.d.ts.map +1 -1
  1296. package/build/src/testing/factory/sequence.js +3 -3
  1297. package/build/src/testing/factory/strategies/attributes-for.d.ts +3 -3
  1298. package/build/src/testing/factory/strategies/attributes-for.d.ts.map +1 -1
  1299. package/build/src/testing/factory/strategies/attributes-for.js +2 -2
  1300. package/build/src/testing/factory/strategies/base.d.ts +32 -32
  1301. package/build/src/testing/factory/strategies/base.d.ts.map +1 -1
  1302. package/build/src/testing/factory/strategies/base.js +25 -25
  1303. package/build/src/testing/factory/strategies/build.d.ts +3 -3
  1304. package/build/src/testing/factory/strategies/build.d.ts.map +1 -1
  1305. package/build/src/testing/factory/strategies/build.js +3 -3
  1306. package/build/src/testing/factory/strategies/create.d.ts +6 -6
  1307. package/build/src/testing/factory/strategies/create.d.ts.map +1 -1
  1308. package/build/src/testing/factory/strategies/create.js +5 -5
  1309. package/build/src/testing/factory/trait-definition.d.ts +4 -4
  1310. package/build/src/testing/factory/trait-definition.d.ts.map +1 -1
  1311. package/build/src/testing/request-client.d.ts +19 -19
  1312. package/build/src/testing/request-client.d.ts.map +1 -1
  1313. package/build/src/testing/test-files-finder.d.ts +15 -15
  1314. package/build/src/testing/test-files-finder.d.ts.map +1 -1
  1315. package/build/src/testing/test-files-finder.js +2 -2
  1316. package/build/src/testing/test-filter-parser.d.ts +19 -12
  1317. package/build/src/testing/test-filter-parser.d.ts.map +1 -1
  1318. package/build/src/testing/test-runner.d.ts +204 -251
  1319. package/build/src/testing/test-runner.d.ts.map +1 -1
  1320. package/build/src/testing/test-runner.js +15 -15
  1321. package/build/src/testing/test-suite-splitter.d.ts +25 -31
  1322. package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
  1323. package/build/src/testing/test.d.ts +51 -55
  1324. package/build/src/testing/test.d.ts.map +1 -1
  1325. package/build/src/testing/test.js +20 -18
  1326. package/build/src/testing/wait-for-event.d.ts +25 -25
  1327. package/build/src/testing/wait-for-event.d.ts.map +1 -1
  1328. package/build/src/testing/wait-for-event.js +6 -6
  1329. package/build/src/time-zone.d.ts +3 -3
  1330. package/build/src/time-zone.d.ts.map +1 -1
  1331. package/build/src/utils/backtrace-cleaner-node.d.ts +35 -2
  1332. package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
  1333. package/build/src/utils/backtrace-cleaner-node.js +1 -1
  1334. package/build/src/utils/backtrace-cleaner.d.ts +33 -28
  1335. package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
  1336. package/build/src/utils/bearer-token.d.ts +2 -2
  1337. package/build/src/utils/bearer-token.d.ts.map +1 -1
  1338. package/build/src/utils/deburr-column-name.d.ts.map +1 -1
  1339. package/build/src/utils/event-emitter.d.ts +1 -1
  1340. package/build/src/utils/event-emitter.d.ts.map +1 -1
  1341. package/build/src/utils/event-emitter.js +2 -2
  1342. package/build/src/utils/file-exists.d.ts.map +1 -1
  1343. package/build/src/utils/format-value.d.ts +9 -8
  1344. package/build/src/utils/format-value.d.ts.map +1 -1
  1345. package/build/src/utils/format-value.js +7 -7
  1346. package/build/src/utils/is-date.d.ts +2 -2
  1347. package/build/src/utils/is-date.d.ts.map +1 -1
  1348. package/build/src/utils/is-date.js +2 -2
  1349. package/build/src/utils/model-scope.d.ts +29 -24
  1350. package/build/src/utils/model-scope.d.ts.map +1 -1
  1351. package/build/src/utils/model-scope.js +11 -11
  1352. package/build/src/utils/mount-prefix.d.ts +2 -2
  1353. package/build/src/utils/mount-prefix.d.ts.map +1 -1
  1354. package/build/src/utils/nest-callbacks.d.ts.map +1 -1
  1355. package/build/src/utils/plain-object.d.ts +3 -3
  1356. package/build/src/utils/plain-object.d.ts.map +1 -1
  1357. package/build/src/utils/plain-object.js +3 -3
  1358. package/build/src/utils/ransack.d.ts +69 -90
  1359. package/build/src/utils/ransack.d.ts.map +1 -1
  1360. package/build/src/utils/ransack.js +36 -36
  1361. package/build/src/utils/rest-args-error.d.ts.map +1 -1
  1362. package/build/src/utils/sha256-hex.d.ts.map +1 -1
  1363. package/build/src/utils/shutdown-lifecycle.d.ts +1 -1
  1364. package/build/src/utils/shutdown-lifecycle.d.ts.map +1 -1
  1365. package/build/src/utils/singularize-model-name.d.ts.map +1 -1
  1366. package/build/src/utils/split-sql-statements.d.ts.map +1 -1
  1367. package/build/src/utils/to-import-specifier.d.ts.map +1 -1
  1368. package/build/src/utils/with-tracked-stack-async-hooks.d.ts +6 -5
  1369. package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
  1370. package/build/src/utils/with-tracked-stack-async-hooks.js +9 -9
  1371. package/build/src/utils/with-tracked-stack.d.ts +6 -5
  1372. package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
  1373. package/build/src/utils/with-tracked-stack.js +7 -7
  1374. package/build/src/velocious-error.d.ts +27 -17
  1375. package/build/src/velocious-error.d.ts.map +1 -1
  1376. package/build/src/velocious-error.js +10 -4
  1377. package/build/sync/conflict-strategy.js +1 -1
  1378. package/build/sync/query-scope.js +7 -7
  1379. package/build/sync/server-change-feed.js +13 -13
  1380. package/build/sync/server-sequence-allocator.js +5 -5
  1381. package/build/sync/signed-sync-envelope-replay-service.js +20 -20
  1382. package/build/sync/stable-json.js +4 -4
  1383. package/build/sync/sync-api-client-types.js +7 -7
  1384. package/build/sync/sync-api-client.js +26 -26
  1385. package/build/sync/sync-change-fanout.js +6 -6
  1386. package/build/sync/sync-client-registry.js +3 -3
  1387. package/build/sync/sync-client-types.js +10 -10
  1388. package/build/sync/sync-client.js +18 -18
  1389. package/build/sync/sync-envelope-replay-service.js +76 -76
  1390. package/build/sync/sync-model-change-feed-service.js +7 -7
  1391. package/build/sync/sync-publish-suppression.js +2 -2
  1392. package/build/sync/sync-publisher-types.js +11 -11
  1393. package/build/sync/sync-publisher.js +19 -19
  1394. package/build/sync/sync-realtime-bridge.js +8 -8
  1395. package/build/sync/sync-replay-upsert-applier.js +16 -16
  1396. package/build/sync/sync-resource-base.js +14 -14
  1397. package/build/sync/sync-scope-attributes.js +1 -1
  1398. package/build/sync/sync-scope-store.js +5 -5
  1399. package/build/sync/sync-websocket-channel.js +5 -5
  1400. package/build/tenants/default-tenant-database-provisioning.js +1 -1
  1401. package/build/tenants/tenant-aggregator.js +13 -13
  1402. package/build/tenants/tenant-handle.js +252 -0
  1403. package/build/tenants/tenant-iterator.js +6 -6
  1404. package/build/tenants/tenant-model-scope.js +132 -0
  1405. package/build/tenants/tenant.js +15 -2
  1406. package/build/testing/browser-test-app.js +2 -2
  1407. package/build/testing/expect-to-change.js +1 -1
  1408. package/build/testing/expect-utils.js +29 -29
  1409. package/build/testing/expect.js +18 -18
  1410. package/build/testing/factory/association-declaration.js +2 -2
  1411. package/build/testing/factory/declarations.js +5 -5
  1412. package/build/testing/factory/definition-builder.js +39 -39
  1413. package/build/testing/factory/evaluation-context.js +16 -16
  1414. package/build/testing/factory/factory-definition.js +2 -2
  1415. package/build/testing/factory/factory-registry.js +34 -34
  1416. package/build/testing/factory/factory-runner.js +8 -8
  1417. package/build/testing/factory/linter.js +2 -2
  1418. package/build/testing/factory/model-contract.js +3 -3
  1419. package/build/testing/factory/sequence.js +2 -2
  1420. package/build/testing/factory/strategies/attributes-for.js +1 -1
  1421. package/build/testing/factory/strategies/base.js +24 -24
  1422. package/build/testing/factory/strategies/build.js +2 -2
  1423. package/build/testing/factory/strategies/create.js +4 -4
  1424. package/build/testing/test-files-finder.js +1 -1
  1425. package/build/testing/test-runner.js +14 -14
  1426. package/build/testing/test.js +19 -17
  1427. package/build/testing/wait-for-event.js +5 -5
  1428. package/build/tsconfig.tsbuildinfo +1 -1
  1429. package/build/utils/event-emitter.js +1 -1
  1430. package/build/utils/format-value.js +6 -6
  1431. package/build/utils/is-date.js +1 -1
  1432. package/build/utils/model-scope.js +10 -10
  1433. package/build/utils/plain-object.js +2 -2
  1434. package/build/utils/ransack.js +35 -35
  1435. package/build/utils/with-tracked-stack-async-hooks.js +8 -8
  1436. package/build/utils/with-tracked-stack.js +6 -6
  1437. package/build/velocious-error.js +9 -3
  1438. package/package.json +3 -3
  1439. package/src/application.js +3 -3
  1440. package/src/authorization/ability.js +6 -6
  1441. package/src/authorization/base-resource.js +1 -1
  1442. package/src/background-jobs/client.js +2 -2
  1443. package/src/background-jobs/forked-runner-child.js +4 -4
  1444. package/src/background-jobs/job-runner.js +2 -2
  1445. package/src/background-jobs/job.js +6 -6
  1446. package/src/background-jobs/json-socket.js +1 -1
  1447. package/src/background-jobs/main.js +13 -13
  1448. package/src/background-jobs/normalize-error.js +2 -2
  1449. package/src/background-jobs/pooled-runner-child.js +3 -3
  1450. package/src/background-jobs/scheduler.js +1 -1
  1451. package/src/background-jobs/status-reporter.js +2 -2
  1452. package/src/background-jobs/store.js +23 -23
  1453. package/src/background-jobs/types.js +6 -6
  1454. package/src/background-jobs/web/controller.js +6 -6
  1455. package/src/background-jobs/web/counts-channel.js +1 -1
  1456. package/src/background-jobs/worker.js +8 -8
  1457. package/src/beacon/client.js +3 -3
  1458. package/src/beacon/in-process-client.js +3 -3
  1459. package/src/beacon/types.js +1 -1
  1460. package/src/cli/base-command.js +1 -1
  1461. package/src/cli/commands/console.js +1 -1
  1462. package/src/cli/commands/db/schema/dump.js +1 -1
  1463. package/src/cli/commands/db/schema/load.js +1 -1
  1464. package/src/cli/commands/db/seed.js +1 -1
  1465. package/src/cli/commands/generate/frontend-models.js +1 -1
  1466. package/src/cli/commands/lint/relationships.js +1 -1
  1467. package/src/cli/commands/run-script.js +1 -1
  1468. package/src/cli/commands/runner.js +1 -1
  1469. package/src/cli/index.js +2 -2
  1470. package/src/cli/tenant-database-command-helper.js +2 -2
  1471. package/src/configuration-types.js +48 -47
  1472. package/src/configuration.js +150 -65
  1473. package/src/controller.js +11 -8
  1474. package/src/current.js +2 -2
  1475. package/src/database/annotations-async-hooks.js +3 -3
  1476. package/src/database/annotations.js +1 -1
  1477. package/src/database/drivers/base-column.js +1 -1
  1478. package/src/database/drivers/base-foreign-key.js +1 -1
  1479. package/src/database/drivers/base-table.js +1 -1
  1480. package/src/database/drivers/base.js +18 -18
  1481. package/src/database/drivers/mssql/column.js +1 -1
  1482. package/src/database/drivers/mssql/index.js +2 -2
  1483. package/src/database/drivers/mssql/options.js +1 -1
  1484. package/src/database/drivers/mssql/structure-sql.js +1 -1
  1485. package/src/database/drivers/mssql/table.js +1 -1
  1486. package/src/database/drivers/mysql/column.js +1 -1
  1487. package/src/database/drivers/mysql/index.js +4 -4
  1488. package/src/database/drivers/mysql/options.js +1 -1
  1489. package/src/database/drivers/mysql/query.js +7 -7
  1490. package/src/database/drivers/mysql/structure-sql.js +71 -10
  1491. package/src/database/drivers/pgsql/column.js +1 -1
  1492. package/src/database/drivers/pgsql/index.js +6 -6
  1493. package/src/database/drivers/pgsql/structure-sql.js +1 -1
  1494. package/src/database/drivers/sqlite/base.js +7 -7
  1495. package/src/database/drivers/sqlite/column.js +1 -1
  1496. package/src/database/drivers/sqlite/connection-sql-js.js +1 -1
  1497. package/src/database/drivers/sqlite/foreign-key.js +1 -1
  1498. package/src/database/drivers/sqlite/index.js +1 -1
  1499. package/src/database/drivers/sqlite/index.native.js +2 -2
  1500. package/src/database/drivers/sqlite/index.web.js +2 -2
  1501. package/src/database/drivers/sqlite/query.js +2 -2
  1502. package/src/database/drivers/sqlite/query.native.js +2 -2
  1503. package/src/database/drivers/sqlite/query.web.js +2 -2
  1504. package/src/database/drivers/sqlite/table-rebuilder.js +1 -1
  1505. package/src/database/migration/index.js +2 -2
  1506. package/src/database/migrator/types.js +2 -2
  1507. package/src/database/operation.js +59 -6
  1508. package/src/database/pool/async-tracked-multi-connection.js +75 -24
  1509. package/src/database/pool/base-methods-forward.js +2 -2
  1510. package/src/database/pool/base.js +48 -17
  1511. package/src/database/pool/single-multi-use.js +501 -103
  1512. package/src/database/query/delete-base.js +1 -1
  1513. package/src/database/query/index.js +3 -3
  1514. package/src/database/query/insert-base.js +4 -4
  1515. package/src/database/query/model-class-query.js +39 -39
  1516. package/src/database/query/preloader/belongs-to.js +2 -2
  1517. package/src/database/query/preloader/ensure-model-class-initialized.js +3 -2
  1518. package/src/database/query/preloader/has-many.js +3 -3
  1519. package/src/database/query/preloader/has-one.js +1 -1
  1520. package/src/database/query/preloader.js +9 -2
  1521. package/src/database/query/query-data.js +7 -7
  1522. package/src/database/query/update-base.js +3 -3
  1523. package/src/database/query/upsert-base.js +2 -2
  1524. package/src/database/query/where-model-class-hash.js +13 -13
  1525. package/src/database/query/with-count.js +12 -12
  1526. package/src/database/query-parser/options.js +2 -2
  1527. package/src/database/query-parser/select-parser.js +1 -1
  1528. package/src/database/record/acts-as-list.js +2 -2
  1529. package/src/database/record/attachments/handle.js +6 -6
  1530. package/src/database/record/attachments/normalize-input.js +11 -11
  1531. package/src/database/record/attachments/storage-drivers/filesystem.js +1 -1
  1532. package/src/database/record/attachments/storage-drivers/native.js +5 -5
  1533. package/src/database/record/attachments/storage-drivers/s3.js +10 -10
  1534. package/src/database/record/attachments/store.js +24 -20
  1535. package/src/database/record/auditing.js +123 -29
  1536. package/src/database/record/counter-cache-magnitude.js +11 -11
  1537. package/src/database/record/index.js +227 -174
  1538. package/src/database/record/instance-relationships/base.js +4 -4
  1539. package/src/database/record/instance-relationships/belongs-to.js +1 -1
  1540. package/src/database/record/instance-relationships/has-many.js +3 -3
  1541. package/src/database/record/instance-relationships/has-one.js +1 -1
  1542. package/src/database/record/record-not-found-error.js +1 -0
  1543. package/src/database/record/relationships/base.js +22 -0
  1544. package/src/database/record/state-machine.js +6 -6
  1545. package/src/database/record/validators/base.js +1 -1
  1546. package/src/database/structure-sql-loader.js +3 -3
  1547. package/src/database/table-data/table-column.js +3 -3
  1548. package/src/database/use-live-query.js +3 -3
  1549. package/src/environment-handlers/base.js +56 -37
  1550. package/src/environment-handlers/browser.js +1 -1
  1551. package/src/environment-handlers/node/cli/commands/console.js +4 -4
  1552. package/src/environment-handlers/node/cli/commands/db/seed.js +2 -2
  1553. package/src/environment-handlers/node/cli/commands/generate/base-models.js +1 -1
  1554. package/src/environment-handlers/node/cli/commands/run-script.js +2 -2
  1555. package/src/environment-handlers/node/cli/commands/runner.js +2 -2
  1556. package/src/environment-handlers/node/cli/commands/server.js +1 -1
  1557. package/src/environment-handlers/node.js +36 -36
  1558. package/src/error-logger.js +2 -2
  1559. package/src/error-reporting/request-details.js +32 -32
  1560. package/src/frontend-model-controller.js +215 -213
  1561. package/src/frontend-model-resource/base-resource.js +44 -44
  1562. package/src/frontend-model-resource/velocious-attachment-resource.js +1 -1
  1563. package/src/frontend-models/base.js +146 -142
  1564. package/src/frontend-models/clear-pending-debounced-callback.js +2 -2
  1565. package/src/frontend-models/model-registry.js +4 -4
  1566. package/src/frontend-models/outgoing-event-buffer.js +1 -1
  1567. package/src/frontend-models/preloader.js +1 -1
  1568. package/src/frontend-models/query.js +60 -60
  1569. package/src/frontend-models/resource-definition.js +9 -9
  1570. package/src/frontend-models/transport-serialization.js +27 -27
  1571. package/src/frontend-models/websocket-channel.js +4 -4
  1572. package/src/frontend-models/websocket-publishers.js +1 -1
  1573. package/src/http-client/request.js +1 -1
  1574. package/src/http-client/response.js +1 -1
  1575. package/src/http-server/client/index.js +4 -4
  1576. package/src/http-server/client/params-to-object.js +16 -16
  1577. package/src/http-server/client/request-buffer/index.js +5 -2
  1578. package/src/http-server/client/request-parser.js +2 -2
  1579. package/src/http-server/client/request-runner.js +2 -2
  1580. package/src/http-server/client/request.js +2 -2
  1581. package/src/http-server/client/websocket-request.js +6 -6
  1582. package/src/http-server/client/websocket-session.js +28 -28
  1583. package/src/http-server/cookie.js +2 -2
  1584. package/src/http-server/development-reloader.js +1 -1
  1585. package/src/http-server/index.js +5 -5
  1586. package/src/http-server/remote-address.js +1 -1
  1587. package/src/http-server/server-lock.js +4 -4
  1588. package/src/http-server/websocket-channel-subscribers.js +4 -4
  1589. package/src/http-server/websocket-channel.js +1 -1
  1590. package/src/http-server/websocket-connection.js +3 -3
  1591. package/src/http-server/websocket-event-log-store.js +9 -9
  1592. package/src/http-server/websocket-events-host.js +7 -7
  1593. package/src/http-server/websocket-events.js +4 -4
  1594. package/src/http-server/worker-handler/channel-subscriber-dispatch.js +1 -1
  1595. package/src/http-server/worker-handler/in-process.js +5 -5
  1596. package/src/http-server/worker-handler/index.js +10 -10
  1597. package/src/http-server/worker-handler/worker-thread.js +8 -8
  1598. package/src/logger/base-logger.js +1 -1
  1599. package/src/logger.js +12 -12
  1600. package/src/mailer/backends/smtp.js +3 -3
  1601. package/src/mailer/base.js +14 -14
  1602. package/src/mailer/delivery.js +3 -3
  1603. package/src/mailer/index.js +1 -1
  1604. package/src/mailer.js +1 -1
  1605. package/src/plugins/sqljs-wasm-route-controller.js +1 -1
  1606. package/src/record-payload-values.js +3 -3
  1607. package/src/routes/base-route.js +5 -5
  1608. package/src/routes/basic-route.js +4 -4
  1609. package/src/routes/get-route.js +2 -2
  1610. package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
  1611. package/src/routes/index.js +3 -3
  1612. package/src/routes/namespace-route.js +1 -1
  1613. package/src/routes/plugin-routes.js +1 -1
  1614. package/src/routes/post-route.js +2 -2
  1615. package/src/routes/resolver.js +5 -5
  1616. package/src/routes/resource-route.js +1 -1
  1617. package/src/sync/conflict-strategy.js +1 -1
  1618. package/src/sync/query-scope.js +7 -7
  1619. package/src/sync/server-change-feed.js +13 -13
  1620. package/src/sync/server-sequence-allocator.js +5 -5
  1621. package/src/sync/signed-sync-envelope-replay-service.js +20 -20
  1622. package/src/sync/stable-json.js +4 -4
  1623. package/src/sync/sync-api-client-types.js +7 -7
  1624. package/src/sync/sync-api-client.js +26 -26
  1625. package/src/sync/sync-change-fanout.js +6 -6
  1626. package/src/sync/sync-client-registry.js +3 -3
  1627. package/src/sync/sync-client-types.js +10 -10
  1628. package/src/sync/sync-client.js +18 -18
  1629. package/src/sync/sync-envelope-replay-service.js +76 -76
  1630. package/src/sync/sync-model-change-feed-service.js +7 -7
  1631. package/src/sync/sync-publish-suppression.js +2 -2
  1632. package/src/sync/sync-publisher-types.js +11 -11
  1633. package/src/sync/sync-publisher.js +19 -19
  1634. package/src/sync/sync-realtime-bridge.js +8 -8
  1635. package/src/sync/sync-replay-upsert-applier.js +16 -16
  1636. package/src/sync/sync-resource-base.js +14 -14
  1637. package/src/sync/sync-scope-attributes.js +1 -1
  1638. package/src/sync/sync-scope-store.js +5 -5
  1639. package/src/sync/sync-websocket-channel.js +5 -5
  1640. package/src/tenants/default-tenant-database-provisioning.js +1 -1
  1641. package/src/tenants/tenant-aggregator.js +13 -13
  1642. package/src/tenants/tenant-handle.js +252 -0
  1643. package/src/tenants/tenant-iterator.js +6 -6
  1644. package/src/tenants/tenant-model-scope.js +132 -0
  1645. package/src/tenants/tenant.js +15 -2
  1646. package/src/testing/browser-test-app.js +2 -2
  1647. package/src/testing/expect-to-change.js +1 -1
  1648. package/src/testing/expect-utils.js +29 -29
  1649. package/src/testing/expect.js +18 -18
  1650. package/src/testing/factory/association-declaration.js +2 -2
  1651. package/src/testing/factory/declarations.js +5 -5
  1652. package/src/testing/factory/definition-builder.js +39 -39
  1653. package/src/testing/factory/evaluation-context.js +16 -16
  1654. package/src/testing/factory/factory-definition.js +2 -2
  1655. package/src/testing/factory/factory-registry.js +34 -34
  1656. package/src/testing/factory/factory-runner.js +8 -8
  1657. package/src/testing/factory/linter.js +2 -2
  1658. package/src/testing/factory/model-contract.js +3 -3
  1659. package/src/testing/factory/sequence.js +2 -2
  1660. package/src/testing/factory/strategies/attributes-for.js +1 -1
  1661. package/src/testing/factory/strategies/base.js +24 -24
  1662. package/src/testing/factory/strategies/build.js +2 -2
  1663. package/src/testing/factory/strategies/create.js +4 -4
  1664. package/src/testing/test-files-finder.js +1 -1
  1665. package/src/testing/test-runner.js +14 -14
  1666. package/src/testing/test.js +19 -17
  1667. package/src/testing/wait-for-event.js +5 -5
  1668. package/src/utils/event-emitter.js +1 -1
  1669. package/src/utils/format-value.js +6 -6
  1670. package/src/utils/is-date.js +1 -1
  1671. package/src/utils/model-scope.js +10 -10
  1672. package/src/utils/plain-object.js +2 -2
  1673. package/src/utils/ransack.js +35 -35
  1674. package/src/utils/with-tracked-stack-async-hooks.js +8 -8
  1675. package/src/utils/with-tracked-stack.js +6 -6
  1676. package/src/velocious-error.js +9 -3
@@ -1,10 +1,10 @@
1
1
  export default class VelociousDatabaseQueryOrderBase {
2
+ query: import("./index.js").default;
2
3
  /**
3
4
  * Runs constructor.
4
5
  * @param {import("./index.js").default} query - Query instance.
5
6
  */
6
7
  constructor(query: import("./index.js").default);
7
- query: import("./index.js").default;
8
8
  /**
9
9
  * Runs get options.
10
10
  * @returns {import("../query-parser/options.js").default} - The options options.
@@ -1 +1 @@
1
- {"version":3,"file":"order-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-base.js"],"names":[],"mappings":"AAEA;IACE;;;OAGG;IACH,mBAFW,OAAO,YAAY,EAAE,OAAO,EAItC;IADC,oCAAkB;IAGpB;;;OAGG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;;;;OAKG;IACH,+BAHW,OAAO,GACL,IAAI,CAIhB;IAED,cAEC;CACF"}
1
+ {"version":3,"file":"order-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-base.js"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,+BAA+B;IAM3C,KAAK;IALZ;;;OAGG;IACH,YAAY,KAAK,EAFN,OAAO,YAAY,EAAE,OAEf,EAEhB;IAED;;;OAGG;IACH,UAAU,IAFG,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;;;;OAKG;IACH,eAAe,CAAC,aAAa,EAHlB,OAGkB,GAFhB,IAAI,CAIhB;IAED,KAAK,SAEJ;CACF"}
@@ -1,14 +1,29 @@
1
+ import OrderBase from "./order-base.js";
2
+ export type OrderColumnInput = {
3
+ /**
4
+ * - Column name.
5
+ */
6
+ column: string;
7
+ /**
8
+ * - Sort direction.
9
+ */
10
+ direction?: "ASC" | "DESC" | "asc" | "desc";
11
+ /**
12
+ * - Optional table or alias name.
13
+ */
14
+ tableName?: string;
15
+ };
1
16
  export default class VelociousDatabaseQueryOrderColumn extends OrderBase {
17
+ column: string;
18
+ direction: "ASC" | "DESC";
19
+ reverseOrder: boolean;
20
+ tableName: string | undefined;
2
21
  /**
3
22
  * Runs constructor.
4
23
  * @param {import("./index.js").default} query - Query instance.
5
24
  * @param {OrderColumnInput} input - Column order input.
6
25
  */
7
26
  constructor(query: import("./index.js").default, input: OrderColumnInput);
8
- column: string;
9
- direction: "ASC" | "DESC";
10
- reverseOrder: boolean;
11
- tableName: string | undefined;
12
27
  /**
13
28
  * Runs set reverse order.
14
29
  * @param {boolean} [reverseOrder] - Whether to reverse the order.
@@ -21,22 +36,4 @@ export default class VelociousDatabaseQueryOrderColumn extends OrderBase {
21
36
  */
22
37
  toSql(): string;
23
38
  }
24
- /**
25
- * OrderColumnInput type.
26
- */
27
- export type OrderColumnInput = {
28
- /**
29
- * - Column name.
30
- */
31
- column: string;
32
- /**
33
- * - Sort direction.
34
- */
35
- direction?: "ASC" | "DESC" | "asc" | "desc" | undefined;
36
- /**
37
- * - Optional table or alias name.
38
- */
39
- tableName?: string | undefined;
40
- };
41
- import OrderBase from "./order-base.js";
42
39
  //# sourceMappingURL=order-column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-column.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-column.js"],"names":[],"mappings":"AAmCA;IACE;;;;OAIG;IACH,mBAHW,OAAO,YAAY,EAAE,OAAO,SAC5B,gBAAgB,EAW1B;IAJC,eAA0B;IAC1B,0BAAoD;IACpD,sBAAyB;IACzB,8BAAgC;IAGlC;;;;OAIG;IACH,+BAHW,OAAO,GACL,IAAI,CAIhB;IAED;;;OAGG;IACH,SAFa,MAAM,CAYlB;CACF;;;;;;;;YArEa,MAAM;;;;;;;;;;sBALE,iBAAiB"}
1
+ {"version":3,"file":"order-column.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-column.js"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,iBAAiB,CAAA;AAIpC,YAAkB,gBAAgB,GAClC;;;;IAAmB,MAAM,EAAd,MAAM,CACjB;;;;IAA6C,SAAS,AAAtD,CACA,EADW,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAC1C;;;;IAAoB,SAAS,AAA7B,CACF,EADa,MAAM,CACnB;CAAA,CAAA;AAyBD,MAAM,CAAC,OAAO,OAAO,iCAAkC,SAAQ,SAAS;IAW/D,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IAbhB;;;;OAIG;IACH,YAAY,KAAK,EAHN,OAAO,YAAY,EAAE,OAGf,EAAE,KAAK,EAFb,gBAEa,EASvB;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,AAHzB,CACA,EADQ,OAGwB,GAFtB,IAAI,CAIhB;IAED;;;OAGG;IACH,KAAK,IAFQ,MAAM,CAYlB;CACF"}
@@ -1,14 +1,14 @@
1
+ import OrderBase from "./order-base.js";
1
2
  export default class VelociousDatabaseQueryOrderPlain extends OrderBase {
3
+ plain: string;
4
+ reverseOrder: boolean;
2
5
  /**
3
6
  * Runs constructor.
4
7
  * @param {import("./index.js").default} query - Query instance.
5
8
  * @param {string} plain - Plain.
6
9
  */
7
10
  constructor(query: import("./index.js").default, plain: string);
8
- plain: string;
9
- reverseOrder: boolean;
10
11
  setReverseOrder(): void;
11
12
  toSql(): string;
12
13
  }
13
- import OrderBase from "./order-base.js";
14
14
  //# sourceMappingURL=order-plain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-plain.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,mBAHW,OAAO,YAAY,EAAE,OAAO,SAC5B,MAAM,EAMhB;IAFC,cAAkB;IAClB,sBAAyB;IAG3B,wBAEC;IAED,gBAMC;CACF;sBAzBqB,iBAAiB"}
1
+ {"version":3,"file":"order-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/order-plain.js"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,iBAAiB,CAAA;AAEvC,MAAM,CAAC,OAAO,OAAO,gCAAiC,SAAQ,SAAS;IAQ9D,KAAK;IACL,YAAY;IARnB;;;;OAIG;IACH,YAAY,KAAK,EAHN,OAAO,YAAY,EAAE,OAGf,EAAE,KAAK,EAFb,MAEa,EAIvB;IAED,eAAe,SAEd;IAED,KAAK,WAMJ;CACF"}
@@ -1,4 +1,8 @@
1
+ import PreloaderSelection from "./selection.js";
1
2
  export default class VelociousDatabaseQueryPreloaderBelongsTo {
3
+ models: import("../../record/index.js").default<Record<string, any>>[];
4
+ relationship: import("../../record/relationships/belongs-to.js").default;
5
+ selection: PreloaderSelection;
2
6
  /**
3
7
  * Runs constructor.
4
8
  * @param {object} args - Options object.
@@ -9,11 +13,8 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
9
13
  constructor({ models, relationship, selection, ...restArgs }: {
10
14
  models: import("../../record/index.js").default[];
11
15
  relationship: import("../../record/relationships/belongs-to.js").default;
12
- selection?: PreloaderSelection | undefined;
16
+ selection?: PreloaderSelection;
13
17
  });
14
- models: import("../../record/index.js").default<Record<string, any>>[];
15
- relationship: import("../../record/relationships/belongs-to.js").default;
16
- selection: PreloaderSelection;
17
18
  run(): Promise<import("../../record/index.js").default<Record<string, any>>[] | {
18
19
  targetModels: import("../../record/index.js").default[];
19
20
  targetModelsByClassName: Record<string, import("../../record/index.js").default[]>;
@@ -36,5 +37,4 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
36
37
  targetModelsByClassName: Record<string, import("../../record/index.js").default[]>;
37
38
  }>;
38
39
  }
39
- import PreloaderSelection from "./selection.js";
40
40
  //# sourceMappingURL=belongs-to.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/belongs-to.js"],"names":[],"mappings":"AAOA;IACE;;;;;;OAMG;IACH,8DAJG;QAAwD,MAAM,EAAtD,OAAO,uBAAuB,EAAE,OAAO,EAAE;QACwB,YAAY,EAA7E,OAAO,0CAA0C,EAAE,OAAO;QAChC,SAAS;KAC7C,EAOA;IAHC,uEAAoB;IACpB,yEAAgC;IAChC,8BAAsD;IAGxD;sBA4GoC,OAAO,uBAAuB,EAAE,OAAO,EAAE;iCAA2B,MAAM,CAAC,MAAM,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;OAThK;IAED;;;;;;;;OAQG;IACH,8DALG;QAAqB,UAAU,EAAvB,MAAM;QACO,UAAU,EAAvB,MAAM;QACO,gBAAgB,EAA7B,MAAM;KACd,GAAU,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;QAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAAA;KAAC,CAAC,CAqHlK;CACF;+BAtP8B,gBAAgB"}
1
+ {"version":3,"file":"belongs-to.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/belongs-to.js"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,gBAAgB,CAAA;AAI/C,MAAM,CAAC,OAAO,OAAO,wCAAwC;IAWpD,MAAM;IACN,YAAY;IACZ,SAAS;IAZhB;;;;;;OAMG;IACH,YAAY,EAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAC,EAJvD;QAAwD,MAAM,EAAtD,OAAO,uBAAuB,EAAE,OAAO,EAAE,CACjD;QAAyE,YAAY,EAA7E,OAAO,0CAA0C,EAAE,OAAO,CAClE;QAAkC,SAAS,AAA3C,CACF,EADU,kBAAkB,CAC5B;KACyD,EAMzD;IAEK,GAAG;sBA4G2B,OAAO,uBAAuB,EAAE,OAAO,EAAE;iCAA2B,MAAM,CAAC,MAAM,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;OAThK;IAED;;;;;;;;OAQG;IACG,eAAe,CAAC,EAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAC,EAL7D;QAAqB,UAAU,EAAvB,MAAM,CACd;QAAqB,UAAU,EAAvB,MAAM,CACd;QAAqB,gBAAgB,EAA7B,MAAM,CACd;KAE6D,GAFnD,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;QAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAAA;KAAC,CAAC,CAqHlK;CACF"}
@@ -71,7 +71,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
71
71
  let targetModels = [];
72
72
  // Only query when at least one model has a non-null foreign key.
73
73
  if (foreignKeyValues.size > 0) {
74
- await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
74
+ await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration(), modelsToLoad[0]);
75
75
  /**
76
76
  * Where args.
77
77
  * @type {Record<string, string | number | Array<string | number>>} */
@@ -165,7 +165,7 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
165
165
  const targetModels = [];
166
166
  for (const targetType in foreignKeyValuesByType) {
167
167
  const targetModelClass = configuration.getModelClass(targetType);
168
- await ensureModelClassInitialized(targetModelClass, configuration);
168
+ await ensureModelClassInitialized(targetModelClass, configuration, this.models[0]);
169
169
  /**
170
170
  * Where args.
171
171
  * @type {Record<string, string | number | Array<string | number>>} */
@@ -197,4 +197,4 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
197
197
  return { targetModels: [...satisfiedTargets, ...targetModels], targetModelsByClassName };
198
198
  }
199
199
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGtCQUFrQixNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sb0JBQW9CLE1BQU0sc0JBQXNCLENBQUE7QUFDdkQsT0FBTyxhQUFhLE1BQU0sbUNBQW1DLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTyx3Q0FBd0M7SUFDM0Q7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUE7UUFDL0UsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhFLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUE7UUFFakc7OytEQUV1RDtRQUN2RCxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMzQjs7K0RBRXVEO1FBQ3ZELE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUV2QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBRTFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBQyxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdkcsTUFBTSxNQUFNLEdBQUcsa0VBQWtFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUE7Z0JBRS9ILElBQUksTUFBTTtvQkFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDMUIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE9BQU8sZ0JBQWdCLENBQUE7UUFFckQ7OzBDQUVrQztRQUNsQyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFFbEMsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQyxNQUFNLGVBQWUsR0FBRyxpREFBaUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUV4RywyRUFBMkU7WUFDM0UsdUVBQXVFO1lBQ3ZFLDRDQUE0QztZQUM1QyxJQUFJLGVBQWUsS0FBSyxJQUFJLElBQUksZUFBZSxLQUFLLFNBQVM7Z0JBQUUsU0FBUTtZQUV2RSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUVEOzs2RUFFcUU7UUFDckUsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7UUFFM0I7OytEQUV1RDtRQUN2RCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUE7UUFFckIsaUVBQWlFO1FBQ2pFLElBQUksZ0JBQWdCLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUE7WUFFekY7O2tGQUVzRTtZQUN0RSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFFcEIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFBO1lBRTdDLHlEQUF5RDtZQUN6RCxJQUFJLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7WUFFakYsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzNDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLENBQUE7WUFFNUYsWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRXBDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sZUFBZSxHQUFHLDhCQUE4QixDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO2dCQUUzRixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxXQUFXLENBQUE7WUFDakQsQ0FBQztRQUNILENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQyxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUNyRixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUNyRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1lBRXZFLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNwQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDMUMsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUM7UUFDOUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO1FBQy9ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUUxRDs7c0pBRThJO1FBQzlJLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTtRQUVwQjs7K0RBRXVEO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO1FBRTNCOzsrRUFFdUU7UUFDdkUsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUE7UUFFbEMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsTUFBTSxVQUFVLEdBQUcsaUNBQWlDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7WUFDbkYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUMxRSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1lBRXpGLElBQUksZ0JBQWdCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBQyxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0gsTUFBTSxNQUFNLEdBQUcsa0VBQWtFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUE7Z0JBRS9ILElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUU3QixNQUFNLFNBQVMsR0FBRyw2REFBNkQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtvQkFFbkgsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQzt3QkFBRSx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUE7b0JBQ2hGLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDakQsQ0FBQztnQkFFRCxTQUFRO1lBQ1YsQ0FBQztZQUVELFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2IsZUFBZSxFQUFFLDBDQUEwQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUYsS0FBSztnQkFDTCxVQUFVO2FBQ1gsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVEOzswREFFa0Q7UUFDbEQsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUE7UUFFakMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSTtnQkFBRSxTQUFRO1lBQ3ZFLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJO2dCQUFFLFNBQVE7WUFFakYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7WUFDakcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDbkUsQ0FBQztRQUVEOztzR0FFOEY7UUFDOUYsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUE7UUFFbEM7OytEQUV1RDtRQUN2RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUE7UUFFdkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1lBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUVoRSxNQUFNLDJCQUEyQixDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFBO1lBRWxFOztrRkFFc0U7WUFDdEUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBRXBCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUUvRCxJQUFJLEtBQUssR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBRWhGLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMzQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUMsQ0FBQyxDQUFBO1lBRTVGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUE7WUFFdkMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUE7WUFFakQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztnQkFBRSx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDaEYsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQTtZQUU3RCx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUE7WUFFeEMsS0FBSyxNQUFNLFdBQVcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtnQkFFM0YsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsV0FBVyxDQUFBO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUM1RSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUM7Z0JBQzFHLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFBO1lBRWIsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3BDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsT0FBTyxFQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxZQUFZLENBQUMsRUFBRSx1QkFBdUIsRUFBQyxDQUFBO0lBQ3hGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkIGZyb20gXCIuL2Vuc3VyZS1tb2RlbC1jbGFzcy1pbml0aWFsaXplZC5qc1wiXG5pbXBvcnQgUHJlbG9hZGVyU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvbi5qc1wiXG5pbXBvcnQgcHJlbG9hZFF1ZXJ5Rm9yTW9kZWwgZnJvbSBcIi4vcXVlcnktZm9yLW1vZGVsLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyQmVsb25nc1RvIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5tb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcC5cbiAgICogQHBhcmFtIHtQcmVsb2FkZXJTZWxlY3Rpb259IFthcmdzLnNlbGVjdGlvbl0gLSBDb2x1bW4gc2VsZWN0aW9uIGFuZCBpZGVtcG90ZW5jeSBydWxlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbHMsIHJlbGF0aW9uc2hpcCwgc2VsZWN0aW9uLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uIHx8IG5ldyBQcmVsb2FkZXJTZWxlY3Rpb24oKVxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwTmFtZSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9ydW5Qb2x5bW9ycGhpYyh7Zm9yZWlnbktleSwgcHJpbWFyeUtleSwgcmVsYXRpb25zaGlwTmFtZX0pXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMucmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0YXJnZXQgbW9kZWwgY2xhc3MgY291bGQgYmUgZ290dGVuIGZyb20gcmVsYXRpb25zaGlwXCIpXG5cbiAgICAvKipcbiAgICAgKiBTYXRpc2ZpZWQgdGFyZ2V0cy5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBzYXRpc2ZpZWRUYXJnZXRzID0gW11cbiAgICAvKipcbiAgICAgKiBNb2RlbHMgdG8gbG9hZC5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBtb2RlbHNUb0xvYWQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2F0aXNmaWVkKHtpbnN0YW5jZVJlbGF0aW9uc2hpcCwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZCA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovIChpbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpKVxuXG4gICAgICAgIGlmIChsb2FkZWQpIHNhdGlzZmllZFRhcmdldHMucHVzaChsb2FkZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb2RlbHNUb0xvYWQucHVzaChtb2RlbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZWxzVG9Mb2FkLmxlbmd0aCA9PSAwKSByZXR1cm4gc2F0aXNmaWVkVGFyZ2V0c1xuXG4gICAgLyoqXG4gICAgICogRm9yZWlnbiBrZXkgdmFsdWVzLlxuICAgICAqIEB0eXBlIHtTZXQ8bnVtYmVyIHwgc3RyaW5nPn0gKi9cbiAgICBjb25zdCBmb3JlaWduS2V5VmFsdWVzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVsc1RvTG9hZCkge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCBmb3JlaWduIGtleXM6IGEgYmVsb25nc1RvIHdpdGggbm8gZm9yZWlnbiBrZXkgaGFzIG5vXG4gICAgICAvLyB0YXJnZXQsIGFuZCBpbmNsdWRpbmcgdGhlbSB3b3VsZCBzZXJpYWxpemUgdG8gZS5nLiBgSU4gKG51bGwpYCB3aGljaFxuICAgICAgLy8gdGhyb3dzIG9uIG5vbi1zdHJpbmcgcHJpbWFyeS1rZXkgY29sdW1ucy5cbiAgICAgIGlmIChmb3JlaWduS2V5VmFsdWUgPT09IG51bGwgfHwgZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICAgIGZvcmVpZ25LZXlWYWx1ZXMuYWRkKGZvcmVpZ25LZXlWYWx1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzIGJ5IGlkLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlJZCA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGxldCB0YXJnZXRNb2RlbHMgPSBbXVxuXG4gICAgLy8gT25seSBxdWVyeSB3aGVuIGF0IGxlYXN0IG9uZSBtb2RlbCBoYXMgYSBub24tbnVsbCBmb3JlaWduIGtleS5cbiAgICBpZiAoZm9yZWlnbktleVZhbHVlcy5zaXplID4gMCkge1xuICAgICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgICAgLyoqXG4gICAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+fSAqL1xuICAgICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gWy4uLmZvcmVpZ25LZXlWYWx1ZXNdXG5cbiAgICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgICAgbGV0IHF1ZXJ5ID0gcHJlbG9hZFF1ZXJ5Rm9yTW9kZWwobW9kZWxzVG9Mb2FkLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICAgIHF1ZXJ5ID0gdGhpcy5zZWxlY3Rpb24uYXBwbHlUb1F1ZXJ5KHtxdWVyeSwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pXG5cbiAgICAgIHRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuXG4gICAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIHRhcmdldE1vZGVscykge1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgICAgdGFyZ2V0TW9kZWxzQnlJZFtwcmltYXJ5S2V5VmFsdWVdID0gdGFyZ2V0TW9kZWxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHRhcmdldCBwcmVsb2FkZWQgbW9kZWxzIG9uIHRoZSBnaXZlbiBtb2RlbHNcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVsc1RvTG9hZCkge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSB0YXJnZXRNb2RlbHNCeUlkW2ZvcmVpZ25LZXlWYWx1ZV1cbiAgICAgIGNvbnN0IG1vZGVsUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG5cbiAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHRhcmdldE1vZGVsKVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG5cbiAgLyoqXG4gICAqIFByZWxvYWQgYSBwb2x5bW9ycGhpYyBiZWxvbmdzVG8sIGdyb3VwaW5nIG1vZGVscyBieSB0aGVpciB0YXJnZXQgdHlwZSBzb1xuICAgKiBlYWNoIGNvbmNyZXRlIHRhcmdldCBtb2RlbCBjbGFzcyBpcyBxdWVyaWVkIHNlcGFyYXRlbHkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmZvcmVpZ25LZXkgLSBGb3JlaWduIGtleSBjb2x1bW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnByaW1hcnlLZXkgLSBQcmltYXJ5IGtleSBjb2x1bW4gb24gdGhlIHRhcmdldC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucmVsYXRpb25zaGlwTmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7dGFyZ2V0TW9kZWxzOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdLCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZTogUmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXT59Pn0gLSBMb2FkZWQgdGFyZ2V0cyBhbmQgYSBwZXItY2xhc3MtbmFtZSBncm91cGluZy5cbiAgICovXG4gIGFzeW5jIF9ydW5Qb2x5bW9ycGhpYyh7Zm9yZWlnbktleSwgcHJpbWFyeUtleSwgcmVsYXRpb25zaGlwTmFtZX0pIHtcbiAgICBjb25zdCB0eXBlQ29sdW1uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWNUeXBlQ29sdW1uKClcbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICAvKipcbiAgICAgKiBNb2RlbCBtZXRhLlxuICAgICAqIEB0eXBlIHt7Zm9yZWlnbktleVZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsIG1vZGVsOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCwgdGFyZ2V0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkfVtdfSAqL1xuICAgIGNvbnN0IG1vZGVsTWV0YSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBTYXRpc2ZpZWQgdGFyZ2V0cy5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBzYXRpc2ZpZWRUYXJnZXRzID0gW11cblxuICAgIC8qKlxuICAgICAqIFRhcmdldCBtb2RlbHMgYnkgY2xhc3MgbmFtZS5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXT59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWUgPSB7fVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgdGFyZ2V0VHlwZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbih0eXBlQ29sdW1uKSlcbiAgICAgIGNvbnN0IGluc3RhbmNlUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGFyZ2V0VHlwZSA/IGNvbmZpZ3VyYXRpb24uZ2V0TW9kZWxDbGFzcyh0YXJnZXRUeXBlKSA6IHVuZGVmaW5lZFxuXG4gICAgICBpZiAodGFyZ2V0TW9kZWxDbGFzcyAmJiB0aGlzLnNlbGVjdGlvbi5pc1NhdGlzZmllZCh7aW5zdGFuY2VSZWxhdGlvbnNoaXAsIHRhcmdldE1vZGVsQ2xhc3MsIG1hcHBpbmdDb2x1bW5zOiBbcHJpbWFyeUtleV19KSkge1xuICAgICAgICBjb25zdCBsb2FkZWQgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqLyAoaW5zdGFuY2VSZWxhdGlvbnNoaXAuZ2V0TG9hZGVkT3JVbmRlZmluZWQoKSlcblxuICAgICAgICBpZiAobG9hZGVkKSB7XG4gICAgICAgICAgc2F0aXNmaWVkVGFyZ2V0cy5wdXNoKGxvYWRlZClcblxuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobG9hZGVkLmNvbnN0cnVjdG9yKS5nZXRNb2RlbE5hbWUoKVxuXG4gICAgICAgICAgaWYgKCF0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVtjbGFzc05hbWVdKSB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVtjbGFzc05hbWVdID0gW11cbiAgICAgICAgICB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVtjbGFzc05hbWVdLnB1c2gobG9hZGVkKVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbW9kZWxNZXRhLnB1c2goe1xuICAgICAgICBmb3JlaWduS2V5VmFsdWU6IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSksXG4gICAgICAgIG1vZGVsLFxuICAgICAgICB0YXJnZXRUeXBlXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvcmVpZ24ga2V5IHZhbHVlcyBieSB0eXBlLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBTZXQ8bnVtYmVyIHwgc3RyaW5nPj59ICovXG4gICAgY29uc3QgZm9yZWlnbktleVZhbHVlc0J5VHlwZSA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG1ldGEgb2YgbW9kZWxNZXRhKSB7XG4gICAgICBpZiAobWV0YS50YXJnZXRUeXBlID09PSB1bmRlZmluZWQgfHwgbWV0YS50YXJnZXRUeXBlID09PSBudWxsKSBjb250aW51ZVxuICAgICAgaWYgKG1ldGEuZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQgfHwgbWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IG51bGwpIGNvbnRpbnVlXG5cbiAgICAgIGlmICghZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdKSBmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0gPSBuZXcgU2V0KClcbiAgICAgIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXS5hZGQobWV0YS5mb3JlaWduS2V5VmFsdWUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFyZ2V0IG1vZGVscyBieSB0eXBlIGFuZCBpZC5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgUmVjb3JkPG51bWJlciB8IHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICBjb25zdCB0YXJnZXRNb2RlbHNCeVR5cGVBbmRJZCA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGNvbnN0IHRhcmdldE1vZGVscyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldFR5cGUgaW4gZm9yZWlnbktleVZhbHVlc0J5VHlwZSkge1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IGNvbmZpZ3VyYXRpb24uZ2V0TW9kZWxDbGFzcyh0YXJnZXRUeXBlKVxuXG4gICAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGFyZ2V0TW9kZWxDbGFzcywgY29uZmlndXJhdGlvbilcblxuICAgICAgLyoqXG4gICAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+fSAqL1xuICAgICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gWy4uLmZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbdGFyZ2V0VHlwZV1dXG5cbiAgICAgIGxldCBxdWVyeSA9IHByZWxvYWRRdWVyeUZvck1vZGVsKHRoaXMubW9kZWxzLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICAgIHF1ZXJ5ID0gdGhpcy5zZWxlY3Rpb24uYXBwbHlUb1F1ZXJ5KHtxdWVyeSwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pXG5cbiAgICAgIGNvbnN0IGZvdW5kVGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgIHRhcmdldE1vZGVscy5wdXNoKC4uLmZvdW5kVGFyZ2V0TW9kZWxzKVxuXG4gICAgICBjb25zdCBjbGFzc05hbWUgPSB0YXJnZXRNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG5cbiAgICAgIGlmICghdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXSkgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXSA9IFtdXG4gICAgICB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVtjbGFzc05hbWVdLnB1c2goLi4uZm91bmRUYXJnZXRNb2RlbHMpXG5cbiAgICAgIHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW3RhcmdldFR5cGVdID0ge31cblxuICAgICAgZm9yIChjb25zdCB0YXJnZXRNb2RlbCBvZiBmb3VuZFRhcmdldE1vZGVscykge1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV1bcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtZXRhLm1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShyZWxhdGlvbnNoaXBOYW1lKVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSAobWV0YS50YXJnZXRUeXBlICYmIG1ldGEuZm9yZWlnbktleVZhbHVlICE9PSB1bmRlZmluZWQgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IG51bGwpXG4gICAgICAgID8gdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbbWV0YS50YXJnZXRUeXBlXT8uW21ldGEuZm9yZWlnbktleVZhbHVlXVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldExvYWRlZCh0YXJnZXRNb2RlbClcbiAgICB9XG5cbiAgICByZXR1cm4ge3RhcmdldE1vZGVsczogWy4uLnNhdGlzZmllZFRhcmdldHMsIC4uLnRhcmdldE1vZGVsc10sIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lfVxuICB9XG59XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGtCQUFrQixNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sb0JBQW9CLE1BQU0sc0JBQXNCLENBQUE7QUFDdkQsT0FBTyxhQUFhLE1BQU0sbUNBQW1DLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTyx3Q0FBd0M7SUFDM0Q7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRWhFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDLENBQUE7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LElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUM7Z0JBQzFHLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFBO1lBRWIsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3BDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsT0FBTyxFQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxZQUFZLENBQUMsRUFBRSx1QkFBdUIsRUFBQyxDQUFBO0lBQ3hGLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkIGZyb20gXCIuL2Vuc3VyZS1tb2RlbC1jbGFzcy1pbml0aWFsaXplZC5qc1wiXG5pbXBvcnQgUHJlbG9hZGVyU2VsZWN0aW9uIGZyb20gXCIuL3NlbGVjdGlvbi5qc1wiXG5pbXBvcnQgcHJlbG9hZFF1ZXJ5Rm9yTW9kZWwgZnJvbSBcIi4vcXVlcnktZm9yLW1vZGVsLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyQmVsb25nc1RvIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5tb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcC5cbiAgICogQHBhcmFtIHtQcmVsb2FkZXJTZWxlY3Rpb259IFthcmdzLnNlbGVjdGlvbl0gLSBDb2x1bW4gc2VsZWN0aW9uIGFuZCBpZGVtcG90ZW5jeSBydWxlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbHMsIHJlbGF0aW9uc2hpcCwgc2VsZWN0aW9uLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uIHx8IG5ldyBQcmVsb2FkZXJTZWxlY3Rpb24oKVxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwTmFtZSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9ydW5Qb2x5bW9ycGhpYyh7Zm9yZWlnbktleSwgcHJpbWFyeUtleSwgcmVsYXRpb25zaGlwTmFtZX0pXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMucmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0YXJnZXQgbW9kZWwgY2xhc3MgY291bGQgYmUgZ290dGVuIGZyb20gcmVsYXRpb25zaGlwXCIpXG5cbiAgICAvKipcbiAgICAgKiBTYXRpc2ZpZWQgdGFyZ2V0cy5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBzYXRpc2ZpZWRUYXJnZXRzID0gW11cbiAgICAvKipcbiAgICAgKiBNb2RlbHMgdG8gbG9hZC5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBtb2RlbHNUb0xvYWQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2F0aXNmaWVkKHtpbnN0YW5jZVJlbGF0aW9uc2hpcCwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZCA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovIChpbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpKVxuXG4gICAgICAgIGlmIChsb2FkZWQpIHNhdGlzZmllZFRhcmdldHMucHVzaChsb2FkZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb2RlbHNUb0xvYWQucHVzaChtb2RlbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kZWxzVG9Mb2FkLmxlbmd0aCA9PSAwKSByZXR1cm4gc2F0aXNmaWVkVGFyZ2V0c1xuXG4gICAgLyoqXG4gICAgICogRm9yZWlnbiBrZXkgdmFsdWVzLlxuICAgICAqIEB0eXBlIHtTZXQ8bnVtYmVyIHwgc3RyaW5nPn0gKi9cbiAgICBjb25zdCBmb3JlaWduS2V5VmFsdWVzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVsc1RvTG9hZCkge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCBmb3JlaWduIGtleXM6IGEgYmVsb25nc1RvIHdpdGggbm8gZm9yZWlnbiBrZXkgaGFzIG5vXG4gICAgICAvLyB0YXJnZXQsIGFuZCBpbmNsdWRpbmcgdGhlbSB3b3VsZCBzZXJpYWxpemUgdG8gZS5nLiBgSU4gKG51bGwpYCB3aGljaFxuICAgICAgLy8gdGhyb3dzIG9uIG5vbi1zdHJpbmcgcHJpbWFyeS1rZXkgY29sdW1ucy5cbiAgICAgIGlmIChmb3JlaWduS2V5VmFsdWUgPT09IG51bGwgfHwgZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICAgIGZvcmVpZ25LZXlWYWx1ZXMuYWRkKGZvcmVpZ25LZXlWYWx1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzIGJ5IGlkLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlJZCA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGxldCB0YXJnZXRNb2RlbHMgPSBbXVxuXG4gICAgLy8gT25seSBxdWVyeSB3aGVuIGF0IGxlYXN0IG9uZSBtb2RlbCBoYXMgYSBub24tbnVsbCBmb3JlaWduIGtleS5cbiAgICBpZiAoZm9yZWlnbktleVZhbHVlcy5zaXplID4gMCkge1xuICAgICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKSwgbW9kZWxzVG9Mb2FkWzBdKVxuXG4gICAgICAvKipcbiAgICAgICAqIFdoZXJlIGFyZ3MuXG4gICAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBbLi4uZm9yZWlnbktleVZhbHVlc11cblxuICAgICAgLy8gTG9hZCB0YXJnZXQgbW9kZWxzIHRvIGJlIHByZWxvYWRlZCBvbiB0aGUgZ2l2ZW4gbW9kZWxzXG4gICAgICBsZXQgcXVlcnkgPSBwcmVsb2FkUXVlcnlGb3JNb2RlbChtb2RlbHNUb0xvYWQsIHRhcmdldE1vZGVsQ2xhc3MpLndoZXJlKHdoZXJlQXJncylcblxuICAgICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuICAgICAgcXVlcnkgPSB0aGlzLnNlbGVjdGlvbi5hcHBseVRvUXVlcnkoe3F1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1uczogW3ByaW1hcnlLZXldfSlcblxuICAgICAgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbihwcmltYXJ5S2V5KSlcblxuICAgICAgICB0YXJnZXRNb2RlbHNCeUlkW3ByaW1hcnlLZXlWYWx1ZV0gPSB0YXJnZXRNb2RlbFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFyZ2V0IHByZWxvYWRlZCBtb2RlbHMgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzVG9Mb2FkKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4oZm9yZWlnbktleSkpXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IHRhcmdldE1vZGVsc0J5SWRbZm9yZWlnbktleVZhbHVlXVxuICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0UHJlbG9hZGVkKHRydWUpXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRMb2FkZWQodGFyZ2V0TW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5zYXRpc2ZpZWRUYXJnZXRzLCAuLi50YXJnZXRNb2RlbHNdXG4gIH1cblxuICAvKipcbiAgICogUHJlbG9hZCBhIHBvbHltb3JwaGljIGJlbG9uZ3NUbywgZ3JvdXBpbmcgbW9kZWxzIGJ5IHRoZWlyIHRhcmdldCB0eXBlIHNvXG4gICAqIGVhY2ggY29uY3JldGUgdGFyZ2V0IG1vZGVsIGNsYXNzIGlzIHF1ZXJpZWQgc2VwYXJhdGVseS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuZm9yZWlnbktleSAtIEZvcmVpZ24ga2V5IGNvbHVtbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucHJpbWFyeUtleSAtIFByaW1hcnkga2V5IGNvbHVtbiBvbiB0aGUgdGFyZ2V0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5yZWxhdGlvbnNoaXBOYW1lIC0gUmVsYXRpb25zaGlwIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHt0YXJnZXRNb2RlbHM6IGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10sIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lOiBSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0+fSAtIExvYWRlZCB0YXJnZXRzIGFuZCBhIHBlci1jbGFzcy1uYW1lIGdyb3VwaW5nLlxuICAgKi9cbiAgYXN5bmMgX3J1blBvbHltb3JwaGljKHtmb3JlaWduS2V5LCBwcmltYXJ5S2V5LCByZWxhdGlvbnNoaXBOYW1lfSkge1xuICAgIGNvbnN0IHR5cGVDb2x1bW4gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRDb25maWd1cmF0aW9uKClcblxuICAgIC8qKlxuICAgICAqIE1vZGVsIG1ldGEuXG4gICAgICogQHR5cGUge3tmb3JlaWduS2V5VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgbW9kZWw6IGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCB0YXJnZXRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWR9W119ICovXG4gICAgY29uc3QgbW9kZWxNZXRhID0gW11cblxuICAgIC8qKlxuICAgICAqIFNhdGlzZmllZCB0YXJnZXRzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGNvbnN0IHNhdGlzZmllZFRhcmdldHMgPSBbXVxuXG4gICAgLyoqXG4gICAgICogVGFyZ2V0IG1vZGVscyBieSBjbGFzcyBuYW1lLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0gKi9cbiAgICBjb25zdCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZSA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCB0YXJnZXRUeXBlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKHR5cGVDb2x1bW4pKVxuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0YXJnZXRUeXBlID8gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKHRhcmdldFR5cGUpIDogdW5kZWZpbmVkXG5cbiAgICAgIGlmICh0YXJnZXRNb2RlbENsYXNzICYmIHRoaXMuc2VsZWN0aW9uLmlzU2F0aXNmaWVkKHtpbnN0YW5jZVJlbGF0aW9uc2hpcCwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pKSB7XG4gICAgICAgIGNvbnN0IGxvYWRlZCA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovIChpbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpKVxuXG4gICAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgICBzYXRpc2ZpZWRUYXJnZXRzLnB1c2gobG9hZGVkKVxuXG4gICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChsb2FkZWQuY29uc3RydWN0b3IpLmdldE1vZGVsTmFtZSgpXG5cbiAgICAgICAgICBpZiAoIXRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lW2NsYXNzTmFtZV0pIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lW2NsYXNzTmFtZV0gPSBbXVxuICAgICAgICAgIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lW2NsYXNzTmFtZV0ucHVzaChsb2FkZWQpXG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBtb2RlbE1ldGEucHVzaCh7XG4gICAgICAgIGZvcmVpZ25LZXlWYWx1ZTogLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKSxcbiAgICAgICAgbW9kZWwsXG4gICAgICAgIHRhcmdldFR5cGVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yZWlnbiBrZXkgdmFsdWVzIGJ5IHR5cGUuXG4gICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIFNldDxudW1iZXIgfCBzdHJpbmc+Pn0gKi9cbiAgICBjb25zdCBmb3JlaWduS2V5VmFsdWVzQnlUeXBlID0ge31cblxuICAgIGZvciAoY29uc3QgbWV0YSBvZiBtb2RlbE1ldGEpIHtcbiAgICAgIGlmIChtZXRhLnRhcmdldFR5cGUgPT09IHVuZGVmaW5lZCB8fCBtZXRhLnRhcmdldFR5cGUgPT09IG51bGwpIGNvbnRpbnVlXG4gICAgICBpZiAobWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBtZXRhLmZvcmVpZ25LZXlWYWx1ZSA9PT0gbnVsbCkgY29udGludWVcblxuICAgICAgaWYgKCFmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0pIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXSA9IG5ldyBTZXQoKVxuICAgICAgZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdLmFkZChtZXRhLmZvcmVpZ25LZXlWYWx1ZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzIGJ5IHR5cGUgYW5kIGlkLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5VHlwZUFuZElkID0ge31cblxuICAgIC8qKlxuICAgICAqIFRhcmdldCBtb2RlbHMuXG4gICAgICogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gW11cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0VHlwZSBpbiBmb3JlaWduS2V5VmFsdWVzQnlUeXBlKSB7XG4gICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKHRhcmdldFR5cGUpXG5cbiAgICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCBjb25maWd1cmF0aW9uLCB0aGlzLm1vZGVsc1swXSlcblxuICAgICAgLyoqXG4gICAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+fSAqL1xuICAgICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gWy4uLmZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbdGFyZ2V0VHlwZV1dXG5cbiAgICAgIGxldCBxdWVyeSA9IHByZWxvYWRRdWVyeUZvck1vZGVsKHRoaXMubW9kZWxzLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICAgIHF1ZXJ5ID0gdGhpcy5zZWxlY3Rpb24uYXBwbHlUb1F1ZXJ5KHtxdWVyeSwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFtwcmltYXJ5S2V5XX0pXG5cbiAgICAgIGNvbnN0IGZvdW5kVGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgIHRhcmdldE1vZGVscy5wdXNoKC4uLmZvdW5kVGFyZ2V0TW9kZWxzKVxuXG4gICAgICBjb25zdCBjbGFzc05hbWUgPSB0YXJnZXRNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG5cbiAgICAgIGlmICghdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXSkgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWVbY2xhc3NOYW1lXSA9IFtdXG4gICAgICB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVtjbGFzc05hbWVdLnB1c2goLi4uZm91bmRUYXJnZXRNb2RlbHMpXG5cbiAgICAgIHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW3RhcmdldFR5cGVdID0ge31cblxuICAgICAgZm9yIChjb25zdCB0YXJnZXRNb2RlbCBvZiBmb3VuZFRhcmdldE1vZGVscykge1xuICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV1bcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtZXRhLm1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShyZWxhdGlvbnNoaXBOYW1lKVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSAobWV0YS50YXJnZXRUeXBlICYmIG1ldGEuZm9yZWlnbktleVZhbHVlICE9PSB1bmRlZmluZWQgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IG51bGwpXG4gICAgICAgID8gdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbbWV0YS50YXJnZXRUeXBlXT8uW21ldGEuZm9yZWlnbktleVZhbHVlXVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldExvYWRlZCh0YXJnZXRNb2RlbClcbiAgICB9XG5cbiAgICByZXR1cm4ge3RhcmdldE1vZGVsczogWy4uLnNhdGlzZmllZFRhcmdldHMsIC4uLnRhcmdldE1vZGVsc10sIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lfVxuICB9XG59XG4iXX0=
@@ -2,7 +2,8 @@
2
2
  * Runs ensure model class initialized.
3
3
  * @param {typeof import("../../record/index.js").default} modelClass - Model class to initialize.
4
4
  * @param {import("../../../configuration.js").default} configuration - Current configuration.
5
+ * @param {import("../../record/index.js").default} sourceModel - Operation-owning source record.
5
6
  * @returns {Promise<void>} - Resolves when the model class is initialized.
6
7
  */
7
- export default function ensureModelClassInitialized(modelClass: typeof import("../../record/index.js").default, configuration: import("../../../configuration.js").default): Promise<void>;
8
+ export default function ensureModelClassInitialized(modelClass: typeof import("../../record/index.js").default, configuration: import("../../../configuration.js").default, sourceModel: import("../../record/index.js").default): Promise<void>;
8
9
  //# sourceMappingURL=ensure-model-class-initialized.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-model-class-initialized.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/ensure-model-class-initialized.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,gEAJW,cAAc,uBAAuB,EAAE,OAAO,iBAC9C,OAAO,2BAA2B,EAAE,OAAO,GACzC,OAAO,CAAC,IAAI,CAAC,CAMzB"}
1
+ {"version":3,"file":"ensure-model-class-initialized.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/ensure-model-class-initialized.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAA8B,2BAA2B,CAAC,UAAU,EALzD,cAAc,uBAAuB,EAAE,OAKkB,EAAE,aAAa,EAJxE,OAAO,2BAA2B,EAAE,OAIoC,EAAE,WAAW,EAHrF,OAAO,uBAAuB,EAAE,OAGqD,GAFnF,OAAO,CAAC,IAAI,CAAC,CAMzB"}
@@ -3,11 +3,12 @@
3
3
  * Runs ensure model class initialized.
4
4
  * @param {typeof import("../../record/index.js").default} modelClass - Model class to initialize.
5
5
  * @param {import("../../../configuration.js").default} configuration - Current configuration.
6
+ * @param {import("../../record/index.js").default} sourceModel - Operation-owning source record.
6
7
  * @returns {Promise<void>} - Resolves when the model class is initialized.
7
8
  */
8
- export default async function ensureModelClassInitialized(modelClass, configuration) {
9
+ export default async function ensureModelClassInitialized(modelClass, configuration, sourceModel) {
9
10
  if (modelClass.isInitialized())
10
11
  return;
11
- await modelClass.ensureInitialized({ configuration });
12
+ await sourceModel.ensureModelClassInitialized(modelClass, configuration);
12
13
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3F1ZXJ5L3ByZWxvYWRlci9lbnN1cmUtbW9kZWwtY2xhc3MtaW5pdGlhbGl6ZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQUMsVUFBVSxFQUFFLGFBQWE7SUFDakYsSUFBSSxVQUFVLENBQUMsYUFBYSxFQUFFO1FBQUUsT0FBTTtJQUV0QyxNQUFNLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIFJ1bnMgZW5zdXJlIG1vZGVsIGNsYXNzIGluaXRpYWxpemVkLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcyB0byBpbml0aWFsaXplLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi8uLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGNvbmZpZ3VyYXRpb24gLSBDdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHRoZSBtb2RlbCBjbGFzcyBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKG1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24pIHtcbiAgaWYgKG1vZGVsQ2xhc3MuaXNJbml0aWFsaXplZCgpKSByZXR1cm5cblxuICBhd2FpdCBtb2RlbENsYXNzLmVuc3VyZUluaXRpYWxpemVkKHtjb25maWd1cmF0aW9ufSlcbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3F1ZXJ5L3ByZWxvYWRlci9lbnN1cmUtbW9kZWwtY2xhc3MtaW5pdGlhbGl6ZWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVztJQUM5RixJQUFJLFVBQVUsQ0FBQyxhQUFhLEVBQUU7UUFBRSxPQUFNO0lBRXRDLE1BQU0sV0FBVyxDQUFDLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQTtBQUMxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogUnVucyBlbnN1cmUgbW9kZWwgY2xhc3MgaW5pdGlhbGl6ZWQuXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzIHRvIGluaXRpYWxpemUuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uLy4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIEN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IHNvdXJjZU1vZGVsIC0gT3BlcmF0aW9uLW93bmluZyBzb3VyY2UgcmVjb3JkLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB0aGUgbW9kZWwgY2xhc3MgaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZChtb2RlbENsYXNzLCBjb25maWd1cmF0aW9uLCBzb3VyY2VNb2RlbCkge1xuICBpZiAobW9kZWxDbGFzcy5pc0luaXRpYWxpemVkKCkpIHJldHVyblxuXG4gIGF3YWl0IHNvdXJjZU1vZGVsLmVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZChtb2RlbENsYXNzLCBjb25maWd1cmF0aW9uKVxufVxuIl19
@@ -1,3 +1,4 @@
1
+ import PreloaderSelection from "./selection.js";
1
2
  /**
2
3
  * Resolves the target column that references the through model.
3
4
  * @param {import("../../record/relationships/has-many.js").default} relationship - Has-many through relationship.
@@ -5,8 +6,11 @@
5
6
  * @param {typeof import("../../record/index.js").default} targetModelClass - Model loaded by the through relationship.
6
7
  * @returns {string} Target model foreign key column.
7
8
  */
8
- export function hasManyThroughTargetForeignKey(relationship: import("../../record/relationships/has-many.js").default, throughModelClass: typeof import("../../record/index.js").default, targetModelClass: typeof import("../../record/index.js").default): string;
9
+ export declare function hasManyThroughTargetForeignKey(relationship: import("../../record/relationships/has-many.js").default, throughModelClass: typeof import("../../record/index.js").default, targetModelClass: typeof import("../../record/index.js").default): string;
9
10
  export default class VelociousDatabaseQueryPreloaderHasMany {
11
+ models: import("../../record/index.js").default<Record<string, any>>[];
12
+ relationship: import("../../record/relationships/has-many.js").default;
13
+ selection: PreloaderSelection;
10
14
  /**
11
15
  * Runs constructor.
12
16
  * @param {object} args - Options object.
@@ -17,11 +21,8 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
17
21
  constructor({ models, relationship, selection, ...restArgs }: {
18
22
  models: import("../../record/index.js").default[];
19
23
  relationship: import("../../record/relationships/has-many.js").default;
20
- selection?: PreloaderSelection | undefined;
24
+ selection?: PreloaderSelection;
21
25
  });
22
- models: import("../../record/index.js").default<Record<string, any>>[];
23
- relationship: import("../../record/relationships/has-many.js").default;
24
- selection: PreloaderSelection;
25
26
  /**
26
27
  * Runs run.
27
28
  * @returns {Promise<import("../../record/index.js").default[]>} - Loaded target models.
@@ -50,5 +51,4 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
50
51
  */
51
52
  _runDirect(): Promise<import("../../record/index.js").default[]>;
52
53
  }
53
- import PreloaderSelection from "./selection.js";
54
54
  //# sourceMappingURL=has-many.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/has-many.js"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,6DALW,OAAO,wCAAwC,EAAE,OAAO,qBACxD,cAAc,uBAAuB,EAAE,OAAO,oBAC9C,cAAc,uBAAuB,EAAE,OAAO,GAC5C,MAAM,CAqBlB;AAED;IACE;;;;;;OAMG;IACH,8DAJG;QAAwD,MAAM,EAAtD,OAAO,uBAAuB,EAAE,OAAO,EAAE;QACsB,YAAY,EAA3E,OAAO,wCAAwC,EAAE,OAAO;QAC9B,SAAS;KAC7C,EAOA;IAHC,uEAAoB;IACpB,uEAAgC;IAChC,8BAAsD;IAGxD;;;OAGG;IACH,OAFa,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAQ9D;IAED;;;;;;;OAOG;IACH,6BAJW,cAAc,uBAAuB,EAAE,OAAO,kBAC9C,MAAM,EAAE,GACN;QAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;QAAC,gBAAgB,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAA;KAAC,CA0BlI;IAED;;;OAGG;IACH,eAFa,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CA4I9D;IAED;;;OAGG;IACH,cAFa,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAsF9D;CACF;+BAvU8B,gBAAgB"}
1
+ {"version":3,"file":"has-many.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/has-many.js"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,gBAAgB,CAAA;AAI/C;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EALhD,OAAO,wCAAwC,EAAE,OAKD,EAAE,iBAAiB,EAJnE,cAAc,uBAAuB,EAAE,OAI4B,EAAE,gBAAgB,EAHrF,cAAc,uBAAuB,EAAE,OAG8C,GAFnF,MAAM,CAqBlB;AAED,MAAM,CAAC,OAAO,OAAO,sCAAsC;IAWlD,MAAM;IACN,YAAY;IACZ,SAAS;IAZhB;;;;;;OAMG;IACH,YAAY,EAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAC,EAJvD;QAAwD,MAAM,EAAtD,OAAO,uBAAuB,EAAE,OAAO,EAAE,CACjD;QAAuE,YAAY,EAA3E,OAAO,wCAAwC,EAAE,OAAO,CAChE;QAAkC,SAAS,AAA3C,CACF,EADU,kBAAkB,CAC5B;KACyD,EAMzD;IAED;;;OAGG;IACG,GAAG,IAFI,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAQ9D;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,gBAAgB,EAJhB,cAAc,uBAAuB,EAAE,OAIvB,EAAE,cAAc,EAHhC,MAAM,EAG0B,GAF9B;QAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC;QAAC,gBAAgB,EAAE,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAA;KAAC,CA0BlI;IAED;;;OAGG;IACG,WAAW,IAFJ,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CA4I9D;IAED;;;OAGG;IACG,UAAU,IAFH,OAAO,CAAC,OAAO,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAsF9D;CACF"}
@@ -105,8 +105,8 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
105
105
  if (modelsToLoad.length == 0)
106
106
  return satisfiedTargets;
107
107
  const configuration = this.relationship.getConfiguration();
108
- await ensureModelClassInitialized(throughModelClass, configuration);
109
- await ensureModelClassInitialized(targetModelClass, configuration);
108
+ await ensureModelClassInitialized(throughModelClass, configuration, modelsToLoad[0]);
109
+ await ensureModelClassInitialized(targetModelClass, configuration, modelsToLoad[0]);
110
110
  const throughForeignKey = throughRelationship.getForeignKey();
111
111
  /**
112
112
  * Models primary key values.
@@ -239,7 +239,7 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
239
239
  const typeColumn = this.relationship.getPolymorphicTypeColumn();
240
240
  whereArgs[typeColumn] = this.relationship.getModelClass().getModelName();
241
241
  }
242
- await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
242
+ await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration(), modelsToLoad[0]);
243
243
  let query = preloadQueryForModel(modelsToLoad, targetModelClass).where(whereArgs);
244
244
  query = this.relationship.applyScope(query);
245
245
  query = this.selection.applyToQuery({ query, targetModelClass, mappingColumns: [foreignKey] });
@@ -261,4 +261,4 @@ export default class VelociousDatabaseQueryPreloaderHasMany {
261
261
  return [...satisfiedTargets, ...targetModels];
262
262
  }
263
263
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW1hbnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvcHJlbG9hZGVyL2hhcy1tYW55LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLDJCQUEyQixNQUFNLHFDQUFxQyxDQUFBO0FBQzdFLE9BQU8sa0JBQWtCLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0MsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUN2RCxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQjtJQUM5Riw0RkFBNEY7SUFDNUYsaUdBQWlHO0lBQ2pHLCtGQUErRjtJQUMvRixNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBRS9ELElBQUksa0JBQWtCO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQTtJQUVqRCxLQUFLLE1BQU0sa0JBQWtCLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1FBQ3JFLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVztZQUFFLFNBQVE7UUFFekQsTUFBTSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRTdFLElBQUksNEJBQTRCLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUN2RCxPQUFPLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7QUFDckMsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0NBQXNDO0lBQ3pEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFH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QUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2dCQUU5Rix3RUFBd0U7Z0JBQ3hFLHlFQUF5RTtnQkFDekUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUE7Z0JBQ2hELGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN0QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzXCJcbmltcG9ydCBQcmVsb2FkZXJTZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uLmpzXCJcbmltcG9ydCBwcmVsb2FkUXVlcnlGb3JNb2RlbCBmcm9tIFwiLi9xdWVyeS1mb3ItbW9kZWwuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHRhcmdldCBjb2x1bW4gdGhhdCByZWZlcmVuY2VzIHRoZSB0aHJvdWdoIG1vZGVsLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9oYXMtbWFueS5qc1wiKS5kZWZhdWx0fSByZWxhdGlvbnNoaXAgLSBIYXMtbWFueSB0aHJvdWdoIHJlbGF0aW9uc2hpcC5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSB0aHJvdWdoTW9kZWxDbGFzcyAtIE1vZGVsIHVzZWQgYnkgdGhlIHRocm91Z2ggcmVsYXRpb25zaGlwLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhcmdldE1vZGVsQ2xhc3MgLSBNb2RlbCBsb2FkZWQgYnkgdGhlIHRocm91Z2ggcmVsYXRpb25zaGlwLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IG1vZGVsIGZvcmVpZ24ga2V5IGNvbHVtbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc01hbnlUaHJvdWdoVGFyZ2V0Rm9yZWlnbktleShyZWxhdGlvbnNoaXAsIHRocm91Z2hNb2RlbENsYXNzLCB0YXJnZXRNb2RlbENsYXNzKSB7XG4gIC8vIEFuIGV4cGxpY2l0IGZvcmVpZ24ga2V5IG9uIHRoZSBoYXMtbWFueSBuYW1lcyB0aGUgZXhhY3QgdGFyZ2V0IGNvbHVtbiB0aGF0IHJlZmVyZW5jZXMgdGhlXG4gIC8vIHRocm91Z2ggbW9kZWwg4oCUIGhvbm9yIGl0LiBUaGUgdGFyZ2V0IGNhbiBoYXZlIHNldmVyYWwgYmVsb25ncy10byBwb2ludGluZyBhdCB0aGUgdGhyb3VnaCBtb2RlbFxuICAvLyAoZS5nLiBhIGRlZmF1bHQgcGx1cyBhbiBhbHRlcm5hdGUpLCBzbyBwaWNraW5nIHRoZSBmaXJzdCBtYXRjaCB3b3VsZCBvdGhlcndpc2UgYmUgYW1iaWd1b3VzLlxuICBjb25zdCBleHBsaWNpdEZvcmVpZ25LZXkgPSByZWxhdGlvbnNoaXAuZ2V0RXhwbGljaXRGb3JlaWduS2V5KClcblxuICBpZiAoZXhwbGljaXRGb3JlaWduS2V5KSByZXR1cm4gZXhwbGljaXRGb3JlaWduS2V5XG5cbiAgZm9yIChjb25zdCB0YXJnZXRSZWxhdGlvbnNoaXAgb2YgdGFyZ2V0TW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzKCkpIHtcbiAgICBpZiAodGFyZ2V0UmVsYXRpb25zaGlwLmdldFR5cGUoKSAhPSBcImJlbG9uZ3NUb1wiKSBjb250aW51ZVxuXG4gICAgY29uc3QgcmVsYXRpb25zaGlwVGFyZ2V0TW9kZWxDbGFzcyA9IHRhcmdldFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmIChyZWxhdGlvbnNoaXBUYXJnZXRNb2RlbENsYXNzID09PSB0aHJvdWdoTW9kZWxDbGFzcykge1xuICAgICAgcmV0dXJuIHRhcmdldFJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVySGFzTWFueSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119IGFyZ3MubW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2hhcy1tYW55LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwLlxuICAgKiBAcGFyYW0ge1ByZWxvYWRlclNlbGVjdGlvbn0gW2FyZ3Muc2VsZWN0aW9uXSAtIENvbHVtbiBzZWxlY3Rpb24gYW5kIGlkZW1wb3RlbmN5IHJ1bGVzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVscywgcmVsYXRpb25zaGlwLCBzZWxlY3Rpb24sIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICB0aGlzLm1vZGVscyA9IG1vZGVsc1xuICAgIHRoaXMucmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgbmV3IFByZWxvYWRlclNlbGVjdGlvbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBydW4uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSAtIExvYWRlZCB0YXJnZXQgbW9kZWxzLlxuICAgKi9cbiAgYXN5bmMgcnVuKCkge1xuICAgIGlmICh0aGlzLnJlbGF0aW9uc2hpcC50aHJvdWdoKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fcnVuVGhyb3VnaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3J1bkRpcmVjdCgpXG4gIH1cblxuICAvKipcbiAgICogUGFydGl0aW9ucyBgdGhpcy5tb2RlbHNgIGludG8gdGhvc2UgYWxyZWFkeSBzYXRpc2ZpZWQgYnkgdGhlIGN1cnJlbnRcbiAgICogc2VsZWN0aW9uIChza2lwKSBhbmQgdGhvc2UgdGhhdCBzdGlsbCBuZWVkIGxvYWRpbmcuIFNhdGlzZmllZCBtb2RlbHMnXG4gICAqIGFscmVhZHktbG9hZGVkIHRhcmdldHMgYXJlIGNvbGxlY3RlZCBzbyBuZXN0ZWQgcHJlbG9hZHMga2VlcCB3b3JraW5nLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gdGFyZ2V0TW9kZWxDbGFzcyAtIFRhcmdldCBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gbWFwcGluZ0NvbHVtbnMgLSBDb2x1bW5zIHJlcXVpcmVkIGZvciBtYXBwaW5nIChmb3JlaWduIGtleSkuXG4gICAqIEByZXR1cm5zIHt7bW9kZWxzVG9Mb2FkOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdLCBzYXRpc2ZpZWRUYXJnZXRzOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfX0gLSBUaGUgcGFydGl0aW9uLlxuICAgKi9cbiAgX3BhcnRpdGlvbih0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1ucykge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKClcbiAgICAvKipcbiAgICAgKiBNb2RlbHMgdG8gbG9hZC5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBtb2RlbHNUb0xvYWQgPSBbXVxuICAgIC8qKlxuICAgICAqIFNhdGlzZmllZCB0YXJnZXRzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGNvbnN0IHNhdGlzZmllZFRhcmdldHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2F0aXNmaWVkKHtpbnN0YW5jZVJlbGF0aW9uc2hpcCwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnN9KSkge1xuICAgICAgICBjb25zdCBsb2FkZWQgPSBpbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9hZGVkKSkgc2F0aXNmaWVkVGFyZ2V0cy5wdXNoKC4uLmxvYWRlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vZGVsc1RvTG9hZC5wdXNoKG1vZGVsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7bW9kZWxzVG9Mb2FkLCBzYXRpc2ZpZWRUYXJnZXRzfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZWxvYWQgdGhyb3VnaCBhIGpvaW4gdGFibGUgKGUuZy4gaGFzTWFueShcImludm9pY2VHcm91cHNcIiwge3Rocm91Z2g6IFwiaW52b2ljZUdyb3VwTGlua3NcIn0pKS5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXT59IC0gTG9hZGVkIHRhcmdldCBtb2RlbHMuXG4gICAqL1xuICBhc3luYyBfcnVuVGhyb3VnaCgpIHtcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG5cbiAgICBpZiAoIXByaW1hcnlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnJlbGF0aW9uc2hpcC5nZXRNb2RlbENsYXNzKCkubmFtZX0jJHt0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKCl9IGRvZXNuJ3QgaGF2ZSBhIHByaW1hcnkga2V5YClcbiAgICB9XG5cbiAgICBjb25zdCB0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5yZWxhdGlvbnNoaXAudGhyb3VnaClcbiAgICBjb25zdCBwYXJlbnRNb2RlbENsYXNzID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0TW9kZWxDbGFzcygpXG4gICAgY29uc3QgdGhyb3VnaFJlbGF0aW9uc2hpcCA9IHBhcmVudE1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRocm91Z2hSZWxhdGlvbnNoaXBOYW1lKVxuICAgIGNvbnN0IHRocm91Z2hNb2RlbENsYXNzID0gdGhyb3VnaFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGhyb3VnaE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgVGhyb3VnaCByZWxhdGlvbnNoaXAgJHt0aHJvdWdoUmVsYXRpb25zaGlwTmFtZX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG5cbiAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBtb2RlbCBjbGFzcyBjb3VsZCBiZSBnb3R0ZW4gZnJvbSByZWxhdGlvbnNoaXBcIilcblxuICAgIGNvbnN0IHRhcmdldEZvcmVpZ25LZXkgPSBoYXNNYW55VGhyb3VnaFRhcmdldEZvcmVpZ25LZXkodGhpcy5yZWxhdGlvbnNoaXAsIHRocm91Z2hNb2RlbENsYXNzLCB0YXJnZXRNb2RlbENsYXNzKVxuICAgIGNvbnN0IHttb2RlbHNUb0xvYWQsIHNhdGlzZmllZFRhcmdldHN9ID0gdGhpcy5fcGFydGl0aW9uKHRhcmdldE1vZGVsQ2xhc3MsIFt0YXJnZXRGb3JlaWduS2V5XSlcblxuICAgIGlmIChtb2RlbHNUb0xvYWQubGVuZ3RoID09IDApIHJldHVybiBzYXRpc2ZpZWRUYXJnZXRzXG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGhyb3VnaE1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24pXG4gICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24pXG5cbiAgICBjb25zdCB0aHJvdWdoRm9yZWlnbktleSA9IHRocm91Z2hSZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG5cbiAgICAvKipcbiAgICAgKiBNb2RlbHMgcHJpbWFyeSBrZXkgdmFsdWVzLlxuICAgICAqIEB0eXBlIHtTZXQ8bnVtYmVyIHwgc3RyaW5nPn0gKi9cbiAgICBjb25zdCBtb2RlbHNQcmltYXJ5S2V5VmFsdWVzID0gbmV3IFNldCgpXG5cbiAgICAvKipcbiAgICAgKiBNb2RlbHMgYnkgcHJpbWFyeSBrZXkgdmFsdWUuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIgfCBzdHJpbmcsIEFycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pj59ICovXG4gICAgY29uc3QgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWUgPSB7fVxuXG4gICAgLyoqXG4gICAgICogUHJlbG9hZCBjb2xsZWN0aW9ucy5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPG51bWJlciB8IHN0cmluZywgQXJyYXk8aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICBjb25zdCBwcmVsb2FkQ29sbGVjdGlvbnMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHNUb0xvYWQpIHtcbiAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAobW9kZWwucmVhZENvbHVtbihwcmltYXJ5S2V5KSlcblxuICAgICAgcHJlbG9hZENvbGxlY3Rpb25zW3ByaW1hcnlLZXlWYWx1ZV0gPSBbXVxuXG4gICAgICBtb2RlbHNQcmltYXJ5S2V5VmFsdWVzLmFkZChwcmltYXJ5S2V5VmFsdWUpXG4gICAgICBpZiAoIShwcmltYXJ5S2V5VmFsdWUgaW4gbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWUpKSBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVtwcmltYXJ5S2V5VmFsdWVdID0gW11cblxuICAgICAgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbcHJpbWFyeUtleVZhbHVlXS5wdXNoKG1vZGVsKVxuICAgIH1cblxuICAgIC8vIFN0ZXAgMTogUXVlcnkgdGhlIHRocm91Z2ggdGFibGUgdG8gYnVpbGQgcGFyZW504oaSdGFyZ2V0IElEIG1hcHBpbmdcbiAgICBjb25zdCB0aHJvdWdoTW9kZWxzID0gYXdhaXQgcHJlbG9hZFF1ZXJ5Rm9yTW9kZWwobW9kZWxzVG9Mb2FkLCB0aHJvdWdoTW9kZWxDbGFzcylcbiAgICAgIC53aGVyZSh7W3Rocm91Z2hGb3JlaWduS2V5XTogWy4uLm1vZGVsc1ByaW1hcnlLZXlWYWx1ZXNdfSlcbiAgICAgIC50b0FycmF5KClcblxuICAgIC8qKlxuICAgICAqIFBhcmVudCB0byB0YXJnZXQgaWRzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pn0gKi9cbiAgICBjb25zdCBwYXJlbnRUb1RhcmdldElkcyA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBBbGwgdGFyZ2V0IGlkcy5cbiAgICAgKiBAdHlwZSB7U2V0PHN0cmluZyB8IG51bWJlcj59ICovXG4gICAgY29uc3QgYWxsVGFyZ2V0SWRzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IHRocm91Z2hNb2RlbCBvZiB0aHJvdWdoTW9kZWxzKSB7XG4gICAgICBjb25zdCBwYXJlbnRJZCA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGhyb3VnaE1vZGVsLnJlYWRDb2x1bW4odGhyb3VnaEZvcmVpZ25LZXkpKVxuICAgICAgY29uc3QgdGhyb3VnaElkID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0aHJvdWdoTW9kZWwucmVhZENvbHVtbih0aHJvdWdoTW9kZWxDbGFzcy5wcmltYXJ5S2V5KCkpKVxuXG4gICAgICBpZiAoIShwYXJlbnRJZCBpbiBwYXJlbnRUb1RhcmdldElkcykpIHBhcmVudFRvVGFyZ2V0SWRzW3BhcmVudElkXSA9IFtdXG5cbiAgICAgIHBhcmVudFRvVGFyZ2V0SWRzW3BhcmVudElkXS5wdXNoKHRocm91Z2hJZClcbiAgICAgIGFsbFRhcmdldElkcy5hZGQodGhyb3VnaElkKVxuICAgIH1cblxuICAgIC8vIFN0ZXAgMjogTG9hZCB0YXJnZXQgbW9kZWxzIGJ5IHRoZSBmb3JlaWduIGtleSB0aGF0IHBvaW50cyB0byB0aGUgdGhyb3VnaCB0YWJsZVxuICAgIC8qKlxuICAgICAqIFRhcmdldCBtb2RlbHMuXG4gICAgICogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgbGV0IHRhcmdldE1vZGVscyA9IFtdXG5cbiAgICBpZiAoYWxsVGFyZ2V0SWRzLnNpemUgPiAwKSB7XG4gICAgICBsZXQgcXVlcnkgPSBwcmVsb2FkUXVlcnlGb3JNb2RlbChtb2RlbHNUb0xvYWQsIHRhcmdldE1vZGVsQ2xhc3MpLndoZXJlKHtbdGFyZ2V0Rm9yZWlnbktleV06IFsuLi5hbGxUYXJnZXRJZHNdfSlcblxuICAgICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuICAgICAgcXVlcnkgPSB0aGlzLnNlbGVjdGlvbi5hcHBseVRvUXVlcnkoe3F1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1uczogW3RhcmdldEZvcmVpZ25LZXldfSlcbiAgICAgIHRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuICAgIH1cblxuICAgIC8vIFN0ZXAgMzogSW5kZXggdGFyZ2V0IG1vZGVscyBieSB0aGVpciBmb3JlaWduIGtleSAobWFwcyB0byB0aHJvdWdoIG1vZGVsIElEKVxuICAgIC8qKlxuICAgICAqIFRhcmdldCBtb2RlbHMgYnkgZm9yZWlnbiBrZXkuXG4gICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcgfCBudW1iZXIsIEFycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pj59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlGb3JlaWduS2V5ID0ge31cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICBjb25zdCBma1ZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0YXJnZXRNb2RlbC5yZWFkQ29sdW1uKHRhcmdldEZvcmVpZ25LZXkpKVxuXG4gICAgICBpZiAoIShma1ZhbHVlIGluIHRhcmdldE1vZGVsc0J5Rm9yZWlnbktleSkpIHRhcmdldE1vZGVsc0J5Rm9yZWlnbktleVtma1ZhbHVlXSA9IFtdXG5cbiAgICAgIHRhcmdldE1vZGVsc0J5Rm9yZWlnbktleVtma1ZhbHVlXS5wdXNoKHRhcmdldE1vZGVsKVxuICAgIH1cblxuICAgIC8vIFN0ZXAgNDogTWFwIHRhcmdldHMgdG8gcGFyZW50cyB2aWEgdGhlIHRocm91Z2ggbWFwcGluZ1xuICAgIGZvciAoY29uc3QgcGFyZW50SWQgaW4gcGFyZW50VG9UYXJnZXRJZHMpIHtcbiAgICAgIGNvbnN0IHRocm91Z2hJZHMgPSBwYXJlbnRUb1RhcmdldElkc1twYXJlbnRJZF1cblxuICAgICAgZm9yIChjb25zdCB0aHJvdWdoSWQgb2YgdGhyb3VnaElkcykge1xuICAgICAgICBjb25zdCBtYXRjaGluZ1RhcmdldHMgPSB0YXJnZXRNb2RlbHNCeUZvcmVpZ25LZXlbdGhyb3VnaElkXSB8fCBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgbWF0Y2hpbmdUYXJnZXRzKSB7XG4gICAgICAgICAgaWYgKHBhcmVudElkIGluIHByZWxvYWRDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgcHJlbG9hZENvbGxlY3Rpb25zW3BhcmVudElkXS5wdXNoKHRhcmdldE1vZGVsKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZENvbGxlY3Rpb24gPSBwcmVsb2FkQ29sbGVjdGlvbnNbbW9kZWxWYWx1ZV1cblxuICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVttb2RlbFZhbHVlXSkge1xuICAgICAgICBjb25zdCBtb2RlbFJlbGF0aW9uc2hpcCA9IG1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZSh0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKCkpXG5cbiAgICAgICAgLy8gUmVwbGFjZSByYXRoZXIgdGhhbiBhcHBlbmQ6IGBtb2RlbHNUb0xvYWRgIGFyZSBleGFjdGx5IHRoZSByZWNvcmRzIHdlXG4gICAgICAgIC8vIGludGVuZCB0byAocmUpbG9hZCwgc28gYSBmb3JjZWQgcmUtcHJlbG9hZCBtdXN0IG5vdCBkdXBsaWNhdGUgZW50cmllcy5cbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHByZWxvYWRlZENvbGxlY3Rpb24pXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG5cbiAgLyoqXG4gICAqIFByZWxvYWQgZGlyZWN0IGhhcy1tYW55IHJlbGF0aW9uc2hpcHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSAtIExvYWRlZCB0YXJnZXQgbW9kZWxzLlxuICAgKi9cbiAgYXN5bmMgX3J1bkRpcmVjdCgpIHtcbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuXG4gICAgaWYgKCFwcmltYXJ5S2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0TW9kZWxDbGFzcygpLm5hbWV9IyR7dGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpfSBkb2Vzbid0IGhhdmUgYSBwcmltYXJ5IGtleWApXG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHRoaXMucmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0YXJnZXQgbW9kZWwgY2xhc3MgY291bGQgYmUgZ290dGVuIGZyb20gcmVsYXRpb25zaGlwXCIpXG5cbiAgICBjb25zdCB7bW9kZWxzVG9Mb2FkLCBzYXRpc2ZpZWRUYXJnZXRzfSA9IHRoaXMuX3BhcnRpdGlvbih0YXJnZXRNb2RlbENsYXNzLCBbZm9yZWlnbktleV0pXG5cbiAgICBpZiAobW9kZWxzVG9Mb2FkLmxlbmd0aCA9PSAwKSByZXR1cm4gc2F0aXNmaWVkVGFyZ2V0c1xuXG4gICAgLyoqXG4gICAgICogTW9kZWxzIHByaW1hcnkga2V5IHZhbHVlcy5cbiAgICAgKiBAdHlwZSB7U2V0PG51bWJlciB8IHN0cmluZz59ICovXG4gICAgY29uc3QgbW9kZWxzUHJpbWFyeUtleVZhbHVlcyA9IG5ldyBTZXQoKVxuXG4gICAgLyoqXG4gICAgICogTW9kZWxzIGJ5IHByaW1hcnkga2V5IHZhbHVlLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBBcnJheTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgIGNvbnN0IG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlID0ge31cblxuICAgIC8qKlxuICAgICAqIFByZWxvYWQgY29sbGVjdGlvbnMuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIgfCBzdHJpbmcsIEFycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pj59ICovXG4gICAgY29uc3QgcHJlbG9hZENvbGxlY3Rpb25zID0ge31cblxuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzVG9Mb2FkKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgIHByZWxvYWRDb2xsZWN0aW9uc1twcmltYXJ5S2V5VmFsdWVdID0gW11cblxuICAgICAgbW9kZWxzUHJpbWFyeUtleVZhbHVlcy5hZGQocHJpbWFyeUtleVZhbHVlKVxuICAgICAgaWYgKCEocHJpbWFyeUtleVZhbHVlIGluIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlKSkgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbcHJpbWFyeUtleVZhbHVlXSA9IFtdXG5cbiAgICAgIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlW3ByaW1hcnlLZXlWYWx1ZV0ucHVzaChtb2RlbClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pn0gKi9cbiAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgd2hlcmVBcmdzW2ZvcmVpZ25LZXldID0gWy4uLm1vZGVsc1ByaW1hcnlLZXlWYWx1ZXNdXG5cbiAgICBpZiAodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgICAgY29uc3QgdHlwZUNvbHVtbiA9IHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljVHlwZUNvbHVtbigpXG5cbiAgICAgIHdoZXJlQXJnc1t0eXBlQ29sdW1uXSA9IHRoaXMucmVsYXRpb25zaGlwLmdldE1vZGVsQ2xhc3MoKS5nZXRNb2RlbE5hbWUoKVxuICAgIH1cblxuICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCB0aGlzLnJlbGF0aW9uc2hpcC5nZXRDb25maWd1cmF0aW9uKCkpXG5cbiAgICBsZXQgcXVlcnkgPSBwcmVsb2FkUXVlcnlGb3JNb2RlbChtb2RlbHNUb0xvYWQsIHRhcmdldE1vZGVsQ2xhc3MpLndoZXJlKHdoZXJlQXJncylcblxuICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICBxdWVyeSA9IHRoaXMuc2VsZWN0aW9uLmFwcGx5VG9RdWVyeSh7cXVlcnksIHRhcmdldE1vZGVsQ2xhc3MsIG1hcHBpbmdDb2x1bW5zOiBbZm9yZWlnbktleV19KVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIHRhcmdldE1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0YXJnZXRNb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKVxuXG4gICAgICBwcmVsb2FkQ29sbGVjdGlvbnNbZm9yZWlnbktleVZhbHVlXS5wdXNoKHRhcmdldE1vZGVsKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZENvbGxlY3Rpb24gPSBwcmVsb2FkQ29sbGVjdGlvbnNbbW9kZWxWYWx1ZV1cblxuICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVttb2RlbFZhbHVlXSkge1xuICAgICAgICBjb25zdCBtb2RlbFJlbGF0aW9uc2hpcCA9IG1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZSh0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKCkpXG5cbiAgICAgICAgLy8gUmVwbGFjZSByYXRoZXIgdGhhbiBhcHBlbmQ6IGBtb2RlbHNUb0xvYWRgIGFyZSBleGFjdGx5IHRoZSByZWNvcmRzIHdlXG4gICAgICAgIC8vIGludGVuZCB0byAocmUpbG9hZCwgc28gYSBmb3JjZWQgcmUtcHJlbG9hZCBtdXN0IG5vdCBkdXBsaWNhdGUgZW50cmllcy5cbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHByZWxvYWRlZENvbGxlY3Rpb24pXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG59XG4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW1hbnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvcHJlbG9hZGVyL2hhcy1tYW55LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLDJCQUEyQixNQUFNLHFDQUFxQyxDQUFBO0FBQzdFLE9BQU8sa0JBQWtCLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0MsT0FBTyxvQkFBb0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUN2RCxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsOEJBQThCLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQjtJQUM5Riw0RkFBNEY7SUFDNUYsaUdBQWlHO0lBQ2pHLCtGQUErRjtJQUMvRixNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0lBRS9ELElBQUksa0JBQWtCO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQTtJQUVqRCxLQUFLLE1BQU0sa0JBQWtCLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO1FBQ3JFLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksV0FBVztZQUFFLFNBQVE7UUFFekQsTUFBTSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBRTdFLElBQUksNEJBQTRCLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUN2RCxPQUFPLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7QUFDckMsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0NBQXNDO0lBQ3pEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFH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LHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO2dCQUU5Rix3RUFBd0U7Z0JBQ3hFLHlFQUF5RTtnQkFDekUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUE7Z0JBQ2hELGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUN0QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzXCJcbmltcG9ydCBQcmVsb2FkZXJTZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uLmpzXCJcbmltcG9ydCBwcmVsb2FkUXVlcnlGb3JNb2RlbCBmcm9tIFwiLi9xdWVyeS1mb3ItbW9kZWwuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIHRhcmdldCBjb2x1bW4gdGhhdCByZWZlcmVuY2VzIHRoZSB0aHJvdWdoIG1vZGVsLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9oYXMtbWFueS5qc1wiKS5kZWZhdWx0fSByZWxhdGlvbnNoaXAgLSBIYXMtbWFueSB0aHJvdWdoIHJlbGF0aW9uc2hpcC5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSB0aHJvdWdoTW9kZWxDbGFzcyAtIE1vZGVsIHVzZWQgYnkgdGhlIHRocm91Z2ggcmVsYXRpb25zaGlwLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhcmdldE1vZGVsQ2xhc3MgLSBNb2RlbCBsb2FkZWQgYnkgdGhlIHRocm91Z2ggcmVsYXRpb25zaGlwLlxuICogQHJldHVybnMge3N0cmluZ30gVGFyZ2V0IG1vZGVsIGZvcmVpZ24ga2V5IGNvbHVtbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc01hbnlUaHJvdWdoVGFyZ2V0Rm9yZWlnbktleShyZWxhdGlvbnNoaXAsIHRocm91Z2hNb2RlbENsYXNzLCB0YXJnZXRNb2RlbENsYXNzKSB7XG4gIC8vIEFuIGV4cGxpY2l0IGZvcmVpZ24ga2V5IG9uIHRoZSBoYXMtbWFueSBuYW1lcyB0aGUgZXhhY3QgdGFyZ2V0IGNvbHVtbiB0aGF0IHJlZmVyZW5jZXMgdGhlXG4gIC8vIHRocm91Z2ggbW9kZWwg4oCUIGhvbm9yIGl0LiBUaGUgdGFyZ2V0IGNhbiBoYXZlIHNldmVyYWwgYmVsb25ncy10byBwb2ludGluZyBhdCB0aGUgdGhyb3VnaCBtb2RlbFxuICAvLyAoZS5nLiBhIGRlZmF1bHQgcGx1cyBhbiBhbHRlcm5hdGUpLCBzbyBwaWNraW5nIHRoZSBmaXJzdCBtYXRjaCB3b3VsZCBvdGhlcndpc2UgYmUgYW1iaWd1b3VzLlxuICBjb25zdCBleHBsaWNpdEZvcmVpZ25LZXkgPSByZWxhdGlvbnNoaXAuZ2V0RXhwbGljaXRGb3JlaWduS2V5KClcblxuICBpZiAoZXhwbGljaXRGb3JlaWduS2V5KSByZXR1cm4gZXhwbGljaXRGb3JlaWduS2V5XG5cbiAgZm9yIChjb25zdCB0YXJnZXRSZWxhdGlvbnNoaXAgb2YgdGFyZ2V0TW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzKCkpIHtcbiAgICBpZiAodGFyZ2V0UmVsYXRpb25zaGlwLmdldFR5cGUoKSAhPSBcImJlbG9uZ3NUb1wiKSBjb250aW51ZVxuXG4gICAgY29uc3QgcmVsYXRpb25zaGlwVGFyZ2V0TW9kZWxDbGFzcyA9IHRhcmdldFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmIChyZWxhdGlvbnNoaXBUYXJnZXRNb2RlbENsYXNzID09PSB0aHJvdWdoTW9kZWxDbGFzcykge1xuICAgICAgcmV0dXJuIHRhcmdldFJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVySGFzTWFueSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119IGFyZ3MubW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2hhcy1tYW55LmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwLlxuICAgKiBAcGFyYW0ge1ByZWxvYWRlclNlbGVjdGlvbn0gW2FyZ3Muc2VsZWN0aW9uXSAtIENvbHVtbiBzZWxlY3Rpb24gYW5kIGlkZW1wb3RlbmN5IHJ1bGVzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVscywgcmVsYXRpb25zaGlwLCBzZWxlY3Rpb24sIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICB0aGlzLm1vZGVscyA9IG1vZGVsc1xuICAgIHRoaXMucmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwXG4gICAgdGhpcy5zZWxlY3Rpb24gPSBzZWxlY3Rpb24gfHwgbmV3IFByZWxvYWRlclNlbGVjdGlvbigpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBydW4uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSAtIExvYWRlZCB0YXJnZXQgbW9kZWxzLlxuICAgKi9cbiAgYXN5bmMgcnVuKCkge1xuICAgIGlmICh0aGlzLnJlbGF0aW9uc2hpcC50aHJvdWdoKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5fcnVuVGhyb3VnaCgpXG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3J1bkRpcmVjdCgpXG4gIH1cblxuICAvKipcbiAgICogUGFydGl0aW9ucyBgdGhpcy5tb2RlbHNgIGludG8gdGhvc2UgYWxyZWFkeSBzYXRpc2ZpZWQgYnkgdGhlIGN1cnJlbnRcbiAgICogc2VsZWN0aW9uIChza2lwKSBhbmQgdGhvc2UgdGhhdCBzdGlsbCBuZWVkIGxvYWRpbmcuIFNhdGlzZmllZCBtb2RlbHMnXG4gICAqIGFscmVhZHktbG9hZGVkIHRhcmdldHMgYXJlIGNvbGxlY3RlZCBzbyBuZXN0ZWQgcHJlbG9hZHMga2VlcCB3b3JraW5nLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gdGFyZ2V0TW9kZWxDbGFzcyAtIFRhcmdldCBtb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gbWFwcGluZ0NvbHVtbnMgLSBDb2x1bW5zIHJlcXVpcmVkIGZvciBtYXBwaW5nIChmb3JlaWduIGtleSkuXG4gICAqIEByZXR1cm5zIHt7bW9kZWxzVG9Mb2FkOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdLCBzYXRpc2ZpZWRUYXJnZXRzOiBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfX0gLSBUaGUgcGFydGl0aW9uLlxuICAgKi9cbiAgX3BhcnRpdGlvbih0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1ucykge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKClcbiAgICAvKipcbiAgICAgKiBNb2RlbHMgdG8gbG9hZC5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBtb2RlbHNUb0xvYWQgPSBbXVxuICAgIC8qKlxuICAgICAqIFNhdGlzZmllZCB0YXJnZXRzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGNvbnN0IHNhdGlzZmllZFRhcmdldHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uLmlzU2F0aXNmaWVkKHtpbnN0YW5jZVJlbGF0aW9uc2hpcCwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnN9KSkge1xuICAgICAgICBjb25zdCBsb2FkZWQgPSBpbnN0YW5jZVJlbGF0aW9uc2hpcC5nZXRMb2FkZWRPclVuZGVmaW5lZCgpXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9hZGVkKSkgc2F0aXNmaWVkVGFyZ2V0cy5wdXNoKC4uLmxvYWRlZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vZGVsc1RvTG9hZC5wdXNoKG1vZGVsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7bW9kZWxzVG9Mb2FkLCBzYXRpc2ZpZWRUYXJnZXRzfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZWxvYWQgdGhyb3VnaCBhIGpvaW4gdGFibGUgKGUuZy4gaGFzTWFueShcImludm9pY2VHcm91cHNcIiwge3Rocm91Z2g6IFwiaW52b2ljZUdyb3VwTGlua3NcIn0pKS5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXT59IC0gTG9hZGVkIHRhcmdldCBtb2RlbHMuXG4gICAqL1xuICBhc3luYyBfcnVuVGhyb3VnaCgpIHtcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG5cbiAgICBpZiAoIXByaW1hcnlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnJlbGF0aW9uc2hpcC5nZXRNb2RlbENsYXNzKCkubmFtZX0jJHt0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKCl9IGRvZXNuJ3QgaGF2ZSBhIHByaW1hcnkga2V5YClcbiAgICB9XG5cbiAgICBjb25zdCB0aHJvdWdoUmVsYXRpb25zaGlwTmFtZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAodGhpcy5yZWxhdGlvbnNoaXAudGhyb3VnaClcbiAgICBjb25zdCBwYXJlbnRNb2RlbENsYXNzID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0TW9kZWxDbGFzcygpXG4gICAgY29uc3QgdGhyb3VnaFJlbGF0aW9uc2hpcCA9IHBhcmVudE1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRocm91Z2hSZWxhdGlvbnNoaXBOYW1lKVxuICAgIGNvbnN0IHRocm91Z2hNb2RlbENsYXNzID0gdGhyb3VnaFJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGhyb3VnaE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihgVGhyb3VnaCByZWxhdGlvbnNoaXAgJHt0aHJvdWdoUmVsYXRpb25zaGlwTmFtZX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG5cbiAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBtb2RlbCBjbGFzcyBjb3VsZCBiZSBnb3R0ZW4gZnJvbSByZWxhdGlvbnNoaXBcIilcblxuICAgIGNvbnN0IHRhcmdldEZvcmVpZ25LZXkgPSBoYXNNYW55VGhyb3VnaFRhcmdldEZvcmVpZ25LZXkodGhpcy5yZWxhdGlvbnNoaXAsIHRocm91Z2hNb2RlbENsYXNzLCB0YXJnZXRNb2RlbENsYXNzKVxuICAgIGNvbnN0IHttb2RlbHNUb0xvYWQsIHNhdGlzZmllZFRhcmdldHN9ID0gdGhpcy5fcGFydGl0aW9uKHRhcmdldE1vZGVsQ2xhc3MsIFt0YXJnZXRGb3JlaWduS2V5XSlcblxuICAgIGlmIChtb2RlbHNUb0xvYWQubGVuZ3RoID09IDApIHJldHVybiBzYXRpc2ZpZWRUYXJnZXRzXG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGhyb3VnaE1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24sIG1vZGVsc1RvTG9hZFswXSlcbiAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGFyZ2V0TW9kZWxDbGFzcywgY29uZmlndXJhdGlvbiwgbW9kZWxzVG9Mb2FkWzBdKVxuXG4gICAgY29uc3QgdGhyb3VnaEZvcmVpZ25LZXkgPSB0aHJvdWdoUmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxuXG4gICAgLyoqXG4gICAgICogTW9kZWxzIHByaW1hcnkga2V5IHZhbHVlcy5cbiAgICAgKiBAdHlwZSB7U2V0PG51bWJlciB8IHN0cmluZz59ICovXG4gICAgY29uc3QgbW9kZWxzUHJpbWFyeUtleVZhbHVlcyA9IG5ldyBTZXQoKVxuXG4gICAgLyoqXG4gICAgICogTW9kZWxzIGJ5IHByaW1hcnkga2V5IHZhbHVlLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBBcnJheTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgIGNvbnN0IG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlID0ge31cblxuICAgIC8qKlxuICAgICAqIFByZWxvYWQgY29sbGVjdGlvbnMuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIgfCBzdHJpbmcsIEFycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pj59ICovXG4gICAgY29uc3QgcHJlbG9hZENvbGxlY3Rpb25zID0ge31cblxuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzVG9Mb2FkKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgIHByZWxvYWRDb2xsZWN0aW9uc1twcmltYXJ5S2V5VmFsdWVdID0gW11cblxuICAgICAgbW9kZWxzUHJpbWFyeUtleVZhbHVlcy5hZGQocHJpbWFyeUtleVZhbHVlKVxuICAgICAgaWYgKCEocHJpbWFyeUtleVZhbHVlIGluIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlKSkgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbcHJpbWFyeUtleVZhbHVlXSA9IFtdXG5cbiAgICAgIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlW3ByaW1hcnlLZXlWYWx1ZV0ucHVzaChtb2RlbClcbiAgICB9XG5cbiAgICAvLyBTdGVwIDE6IFF1ZXJ5IHRoZSB0aHJvdWdoIHRhYmxlIHRvIGJ1aWxkIHBhcmVudOKGknRhcmdldCBJRCBtYXBwaW5nXG4gICAgY29uc3QgdGhyb3VnaE1vZGVscyA9IGF3YWl0IHByZWxvYWRRdWVyeUZvck1vZGVsKG1vZGVsc1RvTG9hZCwgdGhyb3VnaE1vZGVsQ2xhc3MpXG4gICAgICAud2hlcmUoe1t0aHJvdWdoRm9yZWlnbktleV06IFsuLi5tb2RlbHNQcmltYXJ5S2V5VmFsdWVzXX0pXG4gICAgICAudG9BcnJheSgpXG5cbiAgICAvKipcbiAgICAgKiBQYXJlbnQgdG8gdGFyZ2V0IGlkcy5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyB8IG51bWJlciwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgY29uc3QgcGFyZW50VG9UYXJnZXRJZHMgPSB7fVxuXG4gICAgLyoqXG4gICAgICogQWxsIHRhcmdldCBpZHMuXG4gICAgICogQHR5cGUge1NldDxzdHJpbmcgfCBudW1iZXI+fSAqL1xuICAgIGNvbnN0IGFsbFRhcmdldElkcyA9IG5ldyBTZXQoKVxuXG4gICAgZm9yIChjb25zdCB0aHJvdWdoTW9kZWwgb2YgdGhyb3VnaE1vZGVscykge1xuICAgICAgY29uc3QgcGFyZW50SWQgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRocm91Z2hNb2RlbC5yZWFkQ29sdW1uKHRocm91Z2hGb3JlaWduS2V5KSlcbiAgICAgIGNvbnN0IHRocm91Z2hJZCA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGhyb3VnaE1vZGVsLnJlYWRDb2x1bW4odGhyb3VnaE1vZGVsQ2xhc3MucHJpbWFyeUtleSgpKSlcblxuICAgICAgaWYgKCEocGFyZW50SWQgaW4gcGFyZW50VG9UYXJnZXRJZHMpKSBwYXJlbnRUb1RhcmdldElkc1twYXJlbnRJZF0gPSBbXVxuXG4gICAgICBwYXJlbnRUb1RhcmdldElkc1twYXJlbnRJZF0ucHVzaCh0aHJvdWdoSWQpXG4gICAgICBhbGxUYXJnZXRJZHMuYWRkKHRocm91Z2hJZClcbiAgICB9XG5cbiAgICAvLyBTdGVwIDI6IExvYWQgdGFyZ2V0IG1vZGVscyBieSB0aGUgZm9yZWlnbiBrZXkgdGhhdCBwb2ludHMgdG8gdGhlIHRocm91Z2ggdGFibGVcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzLlxuICAgICAqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgIGxldCB0YXJnZXRNb2RlbHMgPSBbXVxuXG4gICAgaWYgKGFsbFRhcmdldElkcy5zaXplID4gMCkge1xuICAgICAgbGV0IHF1ZXJ5ID0gcHJlbG9hZFF1ZXJ5Rm9yTW9kZWwobW9kZWxzVG9Mb2FkLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh7W3RhcmdldEZvcmVpZ25LZXldOiBbLi4uYWxsVGFyZ2V0SWRzXX0pXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICAgIHF1ZXJ5ID0gdGhpcy5zZWxlY3Rpb24uYXBwbHlUb1F1ZXJ5KHtxdWVyeSwgdGFyZ2V0TW9kZWxDbGFzcywgbWFwcGluZ0NvbHVtbnM6IFt0YXJnZXRGb3JlaWduS2V5XX0pXG4gICAgICB0YXJnZXRNb2RlbHMgPSBhd2FpdCBxdWVyeS50b0FycmF5KClcbiAgICB9XG5cbiAgICAvLyBTdGVwIDM6IEluZGV4IHRhcmdldCBtb2RlbHMgYnkgdGhlaXIgZm9yZWlnbiBrZXkgKG1hcHMgdG8gdGhyb3VnaCBtb2RlbCBJRClcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgbW9kZWxzIGJ5IGZvcmVpZ24ga2V5LlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCBBcnJheTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5Rm9yZWlnbktleSA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIHRhcmdldE1vZGVscykge1xuICAgICAgY29uc3QgZmtWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbih0YXJnZXRGb3JlaWduS2V5KSlcblxuICAgICAgaWYgKCEoZmtWYWx1ZSBpbiB0YXJnZXRNb2RlbHNCeUZvcmVpZ25LZXkpKSB0YXJnZXRNb2RlbHNCeUZvcmVpZ25LZXlbZmtWYWx1ZV0gPSBbXVxuXG4gICAgICB0YXJnZXRNb2RlbHNCeUZvcmVpZ25LZXlbZmtWYWx1ZV0ucHVzaCh0YXJnZXRNb2RlbClcbiAgICB9XG5cbiAgICAvLyBTdGVwIDQ6IE1hcCB0YXJnZXRzIHRvIHBhcmVudHMgdmlhIHRoZSB0aHJvdWdoIG1hcHBpbmdcbiAgICBmb3IgKGNvbnN0IHBhcmVudElkIGluIHBhcmVudFRvVGFyZ2V0SWRzKSB7XG4gICAgICBjb25zdCB0aHJvdWdoSWRzID0gcGFyZW50VG9UYXJnZXRJZHNbcGFyZW50SWRdXG5cbiAgICAgIGZvciAoY29uc3QgdGhyb3VnaElkIG9mIHRocm91Z2hJZHMpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdUYXJnZXRzID0gdGFyZ2V0TW9kZWxzQnlGb3JlaWduS2V5W3Rocm91Z2hJZF0gfHwgW11cblxuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIG1hdGNoaW5nVGFyZ2V0cykge1xuICAgICAgICAgIGlmIChwYXJlbnRJZCBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIHByZWxvYWRDb2xsZWN0aW9uc1twYXJlbnRJZF0ucHVzaCh0YXJnZXRNb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsVmFsdWUgaW4gcHJlbG9hZENvbGxlY3Rpb25zKSB7XG4gICAgICBjb25zdCBwcmVsb2FkZWRDb2xsZWN0aW9uID0gcHJlbG9hZENvbGxlY3Rpb25zW21vZGVsVmFsdWVdXG5cbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbbW9kZWxWYWx1ZV0pIHtcbiAgICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuXG4gICAgICAgIC8vIFJlcGxhY2UgcmF0aGVyIHRoYW4gYXBwZW5kOiBgbW9kZWxzVG9Mb2FkYCBhcmUgZXhhY3RseSB0aGUgcmVjb3JkcyB3ZVxuICAgICAgICAvLyBpbnRlbmQgdG8gKHJlKWxvYWQsIHNvIGEgZm9yY2VkIHJlLXByZWxvYWQgbXVzdCBub3QgZHVwbGljYXRlIGVudHJpZXMuXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldExvYWRlZChwcmVsb2FkZWRDb2xsZWN0aW9uKVxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWy4uLnNhdGlzZmllZFRhcmdldHMsIC4uLnRhcmdldE1vZGVsc11cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVsb2FkIGRpcmVjdCBoYXMtbWFueSByZWxhdGlvbnNoaXBzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0gLSBMb2FkZWQgdGFyZ2V0IG1vZGVscy5cbiAgICovXG4gIGFzeW5jIF9ydW5EaXJlY3QoKSB7XG4gICAgY29uc3QgZm9yZWlnbktleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxuICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KClcblxuICAgIGlmICghcHJpbWFyeUtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMucmVsYXRpb25zaGlwLmdldE1vZGVsQ2xhc3MoKS5uYW1lfSMke3RoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKX0gZG9lc24ndCBoYXZlIGEgcHJpbWFyeSBrZXlgKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgY29uc3Qge21vZGVsc1RvTG9hZCwgc2F0aXNmaWVkVGFyZ2V0c30gPSB0aGlzLl9wYXJ0aXRpb24odGFyZ2V0TW9kZWxDbGFzcywgW2ZvcmVpZ25LZXldKVxuXG4gICAgaWYgKG1vZGVsc1RvTG9hZC5sZW5ndGggPT0gMCkgcmV0dXJuIHNhdGlzZmllZFRhcmdldHNcblxuICAgIC8qKlxuICAgICAqIE1vZGVscyBwcmltYXJ5IGtleSB2YWx1ZXMuXG4gICAgICogQHR5cGUge1NldDxudW1iZXIgfCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IG1vZGVsc1ByaW1hcnlLZXlWYWx1ZXMgPSBuZXcgU2V0KClcblxuICAgIC8qKlxuICAgICAqIE1vZGVscyBieSBwcmltYXJ5IGtleSB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPG51bWJlciB8IHN0cmluZywgQXJyYXk8aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICBjb25zdCBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZSA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBQcmVsb2FkIGNvbGxlY3Rpb25zLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBBcnJheTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgIGNvbnN0IHByZWxvYWRDb2xsZWN0aW9ucyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVsc1RvTG9hZCkge1xuICAgICAgY29uc3QgcHJpbWFyeUtleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuXG4gICAgICBwcmVsb2FkQ29sbGVjdGlvbnNbcHJpbWFyeUtleVZhbHVlXSA9IFtdXG5cbiAgICAgIG1vZGVsc1ByaW1hcnlLZXlWYWx1ZXMuYWRkKHByaW1hcnlLZXlWYWx1ZSlcbiAgICAgIGlmICghKHByaW1hcnlLZXlWYWx1ZSBpbiBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZSkpIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlW3ByaW1hcnlLZXlWYWx1ZV0gPSBbXVxuXG4gICAgICBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVtwcmltYXJ5S2V5VmFsdWVdLnB1c2gobW9kZWwpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlcmUgYXJncy5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgIHdoZXJlQXJnc1tmb3JlaWduS2V5XSA9IFsuLi5tb2RlbHNQcmltYXJ5S2V5VmFsdWVzXVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW4gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuXG4gICAgICB3aGVyZUFyZ3NbdHlwZUNvbHVtbl0gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRNb2RlbENsYXNzKCkuZ2V0TW9kZWxOYW1lKClcbiAgICB9XG5cbiAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGFyZ2V0TW9kZWxDbGFzcywgdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpLCBtb2RlbHNUb0xvYWRbMF0pXG5cbiAgICBsZXQgcXVlcnkgPSBwcmVsb2FkUXVlcnlGb3JNb2RlbChtb2RlbHNUb0xvYWQsIHRhcmdldE1vZGVsQ2xhc3MpLndoZXJlKHdoZXJlQXJncylcblxuICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcbiAgICBxdWVyeSA9IHRoaXMuc2VsZWN0aW9uLmFwcGx5VG9RdWVyeSh7cXVlcnksIHRhcmdldE1vZGVsQ2xhc3MsIG1hcHBpbmdDb2x1bW5zOiBbZm9yZWlnbktleV19KVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIHRhcmdldE1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0YXJnZXRNb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKVxuXG4gICAgICBwcmVsb2FkQ29sbGVjdGlvbnNbZm9yZWlnbktleVZhbHVlXS5wdXNoKHRhcmdldE1vZGVsKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZENvbGxlY3Rpb24gPSBwcmVsb2FkQ29sbGVjdGlvbnNbbW9kZWxWYWx1ZV1cblxuICAgICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVttb2RlbFZhbHVlXSkge1xuICAgICAgICBjb25zdCBtb2RlbFJlbGF0aW9uc2hpcCA9IG1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZSh0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKCkpXG5cbiAgICAgICAgLy8gUmVwbGFjZSByYXRoZXIgdGhhbiBhcHBlbmQ6IGBtb2RlbHNUb0xvYWRgIGFyZSBleGFjdGx5IHRoZSByZWNvcmRzIHdlXG4gICAgICAgIC8vIGludGVuZCB0byAocmUpbG9hZCwgc28gYSBmb3JjZWQgcmUtcHJlbG9hZCBtdXN0IG5vdCBkdXBsaWNhdGUgZW50cmllcy5cbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHByZWxvYWRlZENvbGxlY3Rpb24pXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG59XG4iXX0=
@@ -1,4 +1,8 @@
1
+ import PreloaderSelection from "./selection.js";
1
2
  export default class VelociousDatabaseQueryPreloaderHasOne {
3
+ models: import("../../record/index.js").default<Record<string, any>>[];
4
+ relationship: import("../../record/relationships/has-one.js").default;
5
+ selection: PreloaderSelection;
2
6
  /**
3
7
  * Runs constructor.
4
8
  * @param {object} args - Options object.
@@ -9,12 +13,8 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
9
13
  constructor({ models, relationship, selection, ...restArgs }: {
10
14
  models: Array<import("../../record/index.js").default>;
11
15
  relationship: import("../../record/relationships/has-one.js").default;
12
- selection?: PreloaderSelection | undefined;
16
+ selection?: PreloaderSelection;
13
17
  });
14
- models: import("../../record/index.js").default<Record<string, any>>[];
15
- relationship: import("../../record/relationships/has-one.js").default;
16
- selection: PreloaderSelection;
17
18
  run(): Promise<import("../../record/index.js").default<Record<string, any>>[]>;
18
19
  }
19
- import PreloaderSelection from "./selection.js";
20
20
  //# sourceMappingURL=has-one.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/has-one.js"],"names":[],"mappings":"AAOA;IACE;;;;;;OAMG;IACH,8DAJG;QAA6D,MAAM,EAA3D,KAAK,CAAC,OAAO,uBAAuB,EAAE,OAAO,CAAC;QACgB,YAAY,EAA1E,OAAO,uCAAuC,EAAE,OAAO;QAC7B,SAAS;KAC7C,EAOA;IAHC,uEAAoB;IACpB,sEAAgC;IAChC,8BAAsD;IAGxD,+EA6FC;CACF;+BAlH8B,gBAAgB"}
1
+ {"version":3,"file":"has-one.d.ts","sourceRoot":"","sources":["../../../../../src/database/query/preloader/has-one.js"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,gBAAgB,CAAA;AAI/C,MAAM,CAAC,OAAO,OAAO,qCAAqC;IAWjD,MAAM;IACN,YAAY;IACZ,SAAS;IAZhB;;;;;;OAMG;IACH,YAAY,EAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAC,EAJvD;QAA6D,MAAM,EAA3D,KAAK,CAAC,OAAO,uBAAuB,EAAE,OAAO,CAAC,CACtD;QAAsE,YAAY,EAA1E,OAAO,uCAAuC,EAAE,OAAO,CAC/D;QAAkC,SAAS,AAA3C,CACF,EADU,kBAAkB,CAC5B;KACyD,EAMzD;IAEK,GAAG,4EA6FR;CACF"}
@@ -66,7 +66,7 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
66
66
  const typeColumn = this.relationship.getPolymorphicTypeColumn();
67
67
  whereArgs[typeColumn] = this.relationship.getModelClass().getModelName();
68
68
  }
69
- await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
69
+ await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration(), this.models[0]);
70
70
  // Load target models to be preloaded on the given models
71
71
  let query = preloadQueryForModel(this.models, targetModelClass).where(whereArgs);
72
72
  query = this.relationship.applyScope(query);
@@ -88,4 +88,4 @@ export default class VelociousDatabaseQueryPreloaderHasOne {
88
88
  return [...satisfiedTargets, ...targetModels];
89
89
  }
90
90
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvaGFzLW9uZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGtCQUFrQixNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sb0JBQW9CLE1BQU0sc0JBQXNCLENBQUE7QUFDdkQsT0FBTyxhQUFhLE1BQU0sbUNBQW1DLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQ0FBcUM7SUFDeEQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1A7OzBDQUVrQztRQUNsQyxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFFeEM7OzZGQUVxRjtRQUNyRixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQTtRQUVsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFFaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFB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QUMsR0FBRyxXQUFXLENBQUE7UUFDbkQsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxLQUFLLE1BQU0sVUFBVSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDNUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUE7WUFFckQsS0FBSyxNQUFNLEtBQUssSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2dCQUV2RSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ3BDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUM3QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzXCJcbmltcG9ydCBQcmVsb2FkZXJTZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uLmpzXCJcbmltcG9ydCBwcmVsb2FkUXVlcnlGb3JNb2RlbCBmcm9tIFwiLi9xdWVyeS1mb3ItbW9kZWwuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlQcmVsb2FkZXJIYXNPbmUge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtBcnJheTxpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IGFyZ3MubW9kZWxzIC0gTW9kZWwgaW5zdGFuY2VzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3JlY29yZC9yZWxhdGlvbnNoaXBzL2hhcy1vbmUuanNcIikuZGVmYXVsdH0gYXJncy5yZWxhdGlvbnNoaXAgLSBSZWxhdGlvbnNoaXAuXG4gICAqIEBwYXJhbSB7UHJlbG9hZGVyU2VsZWN0aW9ufSBbYXJncy5zZWxlY3Rpb25dIC0gQ29sdW1uIHNlbGVjdGlvbiBhbmQgaWRlbXBvdGVuY3kgcnVsZXMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7bW9kZWxzLCByZWxhdGlvbnNoaXAsIHNlbGVjdGlvbiwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIHRoaXMubW9kZWxzID0gbW9kZWxzXG4gICAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHNlbGVjdGlvbiB8fCBuZXcgUHJlbG9hZGVyU2VsZWN0aW9uKClcbiAgfVxuXG4gIGFzeW5jIHJ1bigpIHtcbiAgICAvKipcbiAgICAgKiBNb2RlbHMgcHJpbWFyeSBrZXkgdmFsdWVzLlxuICAgICAqIEB0eXBlIHtTZXQ8bnVtYmVyIHwgc3RyaW5nPn0gKi9cbiAgICBjb25zdCBtb2RlbHNQcmltYXJ5S2V5VmFsdWVzID0gbmV3IFNldCgpXG5cbiAgICAvKipcbiAgICAgKiBNb2RlbHMgYnkgcHJpbWFyeSBrZXkgdmFsdWUuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIgfCBzdHJpbmcsIEFycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pj59ICovXG4gICAgY29uc3QgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWUgPSB7fVxuXG4gICAgY29uc3QgZm9yZWlnbktleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKVxuICAgIGNvbnN0IHByaW1hcnlLZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KClcbiAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpXG5cbiAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIHRhcmdldCBtb2RlbCBjbGFzcyBjb3VsZCBiZSBnb3R0ZW4gZnJvbSByZWxhdGlvbnNoaXBcIilcblxuICAgIC8qKlxuICAgICAqIFByZWxvYWQgY29sbGVjdGlvbnMuXG4gICAgICogQHR5cGUge1JlY29yZDxudW1iZXIgfCBzdHJpbmcsIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkPn0gKi9cbiAgICBjb25zdCBwcmVsb2FkQ29sbGVjdGlvbnMgPSB7fVxuXG4gICAgLyoqXG4gICAgICogU2F0aXNmaWVkIHRhcmdldHMuXG4gICAgICogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgY29uc3Qgc2F0aXNmaWVkVGFyZ2V0cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZVJlbGF0aW9uc2hpcCA9IG1vZGVsLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShyZWxhdGlvbnNoaXBOYW1lKVxuXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb24uaXNTYXRpc2ZpZWQoe2luc3RhbmNlUmVsYXRpb25zaGlwLCB0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1uczogW2ZvcmVpZ25LZXldfSkpIHtcbiAgICAgICAgY29uc3QgbG9hZGVkID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi8gKGluc3RhbmNlUmVsYXRpb25zaGlwLmdldExvYWRlZE9yVW5kZWZpbmVkKCkpXG5cbiAgICAgICAgaWYgKGxvYWRlZCkgc2F0aXNmaWVkVGFyZ2V0cy5wdXNoKGxvYWRlZClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJpbWFyeUtleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuXG4gICAgICBwcmVsb2FkQ29sbGVjdGlvbnNbcHJpbWFyeUtleVZhbHVlXSA9IHVuZGVmaW5lZFxuXG4gICAgICBtb2RlbHNQcmltYXJ5S2V5VmFsdWVzLmFkZChwcmltYXJ5S2V5VmFsdWUpXG4gICAgICBpZiAoIShwcmltYXJ5S2V5VmFsdWUgaW4gbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWUpKSBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVtwcmltYXJ5S2V5VmFsdWVdID0gW11cblxuICAgICAgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbcHJpbWFyeUtleVZhbHVlXS5wdXNoKG1vZGVsKVxuICAgIH1cblxuICAgIGlmIChtb2RlbHNQcmltYXJ5S2V5VmFsdWVzLnNpemUgPT0gMCkgcmV0dXJuIHNhdGlzZmllZFRhcmdldHNcblxuICAgIC8qKlxuICAgICAqIFdoZXJlIGFyZ3MuXG4gICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IEFycmF5PHN0cmluZyB8IG51bWJlcj4+fSAqL1xuICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICB3aGVyZUFyZ3NbZm9yZWlnbktleV0gPSBbLi4ubW9kZWxzUHJpbWFyeUtleVZhbHVlc11cblxuICAgIGlmICh0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpYygpKSB7XG4gICAgICBjb25zdCB0eXBlQ29sdW1uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWNUeXBlQ29sdW1uKClcblxuICAgICAgd2hlcmVBcmdzW3R5cGVDb2x1bW5dID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0TW9kZWxDbGFzcygpLmdldE1vZGVsTmFtZSgpXG4gICAgfVxuXG4gICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGxldCBxdWVyeSA9IHByZWxvYWRRdWVyeUZvck1vZGVsKHRoaXMubW9kZWxzLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICBxdWVyeSA9IHRoaXMucmVsYXRpb25zaGlwLmFwcGx5U2NvcGUocXVlcnkpXG4gICAgcXVlcnkgPSB0aGlzLnNlbGVjdGlvbi5hcHBseVRvUXVlcnkoe3F1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1uczogW2ZvcmVpZ25LZXldfSlcblxuICAgIGNvbnN0IHRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCB0YXJnZXRNb2RlbCBvZiB0YXJnZXRNb2RlbHMpIHtcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgcHJlbG9hZENvbGxlY3Rpb25zW2ZvcmVpZ25LZXlWYWx1ZV0gPSB0YXJnZXRNb2RlbFxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFyZ2V0IHByZWxvYWRlZCBtb2RlbHMgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZE1vZGVsID0gcHJlbG9hZENvbGxlY3Rpb25zW21vZGVsVmFsdWVdXG5cbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbbW9kZWxWYWx1ZV0pIHtcbiAgICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHByZWxvYWRlZE1vZGVsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzLW9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvaGFzLW9uZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGtCQUFrQixNQUFNLGdCQUFnQixDQUFBO0FBQy9DLE9BQU8sb0JBQW9CLE1BQU0sc0JBQXNCLENBQUE7QUFDdkQsT0FBTyxhQUFhLE1BQU0sbUNBQW1DLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQ0FBcUM7SUFDeEQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ3hELGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1A7OzBDQUVrQztRQUNsQyxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7UUFFeEM7OzZGQUVxRjtRQUNyRixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQTtRQUVsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUE7UUFFaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFB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Q0FBQyxDQUFBO1lBRTNGLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxHQUFHLFdBQVcsQ0FBQTtRQUNuRCxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELEtBQUssTUFBTSxVQUFVLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUVyRCxLQUFLLE1BQU0sS0FBSyxJQUFJLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUE7Z0JBRXZFLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDcEMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzdDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCBmcm9tIFwiLi9lbnN1cmUtbW9kZWwtY2xhc3MtaW5pdGlhbGl6ZWQuanNcIlxuaW1wb3J0IFByZWxvYWRlclNlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb24uanNcIlxuaW1wb3J0IHByZWxvYWRRdWVyeUZvck1vZGVsIGZyb20gXCIuL3F1ZXJ5LWZvci1tb2RlbC5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeVByZWxvYWRlckhhc09uZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5PGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gYXJncy5tb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvaGFzLW9uZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcC5cbiAgICogQHBhcmFtIHtQcmVsb2FkZXJTZWxlY3Rpb259IFthcmdzLnNlbGVjdGlvbl0gLSBDb2x1bW4gc2VsZWN0aW9uIGFuZCBpZGVtcG90ZW5jeSBydWxlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbHMsIHJlbGF0aW9uc2hpcCwgc2VsZWN0aW9uLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICAgIHRoaXMuc2VsZWN0aW9uID0gc2VsZWN0aW9uIHx8IG5ldyBQcmVsb2FkZXJTZWxlY3Rpb24oKVxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIC8qKlxuICAgICAqIE1vZGVscyBwcmltYXJ5IGtleSB2YWx1ZXMuXG4gICAgICogQHR5cGUge1NldDxudW1iZXIgfCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IG1vZGVsc1ByaW1hcnlLZXlWYWx1ZXMgPSBuZXcgU2V0KClcblxuICAgIC8qKlxuICAgICAqIE1vZGVscyBieSBwcmltYXJ5IGtleSB2YWx1ZS5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPG51bWJlciB8IHN0cmluZywgQXJyYXk8aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICBjb25zdCBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZSA9IHt9XG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRSZWxhdGlvbnNoaXBOYW1lKClcblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgLyoqXG4gICAgICogUHJlbG9hZCBjb2xsZWN0aW9ucy5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPG51bWJlciB8IHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWQ+fSAqL1xuICAgIGNvbnN0IHByZWxvYWRDb2xsZWN0aW9ucyA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBTYXRpc2ZpZWQgdGFyZ2V0cy5cbiAgICAgKiBAdHlwZSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gKi9cbiAgICBjb25zdCBzYXRpc2ZpZWRUYXJnZXRzID0gW11cblxuICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5tb2RlbHMpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbi5pc1NhdGlzZmllZCh7aW5zdGFuY2VSZWxhdGlvbnNoaXAsIHRhcmdldE1vZGVsQ2xhc3MsIG1hcHBpbmdDb2x1bW5zOiBbZm9yZWlnbktleV19KSkge1xuICAgICAgICBjb25zdCBsb2FkZWQgPSAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAqLyAoaW5zdGFuY2VSZWxhdGlvbnNoaXAuZ2V0TG9hZGVkT3JVbmRlZmluZWQoKSlcblxuICAgICAgICBpZiAobG9hZGVkKSBzYXRpc2ZpZWRUYXJnZXRzLnB1c2gobG9hZGVkKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgIHByZWxvYWRDb2xsZWN0aW9uc1twcmltYXJ5S2V5VmFsdWVdID0gdW5kZWZpbmVkXG5cbiAgICAgIG1vZGVsc1ByaW1hcnlLZXlWYWx1ZXMuYWRkKHByaW1hcnlLZXlWYWx1ZSlcbiAgICAgIGlmICghKHByaW1hcnlLZXlWYWx1ZSBpbiBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZSkpIG1vZGVsc0J5UHJpbWFyeUtleVZhbHVlW3ByaW1hcnlLZXlWYWx1ZV0gPSBbXVxuXG4gICAgICBtb2RlbHNCeVByaW1hcnlLZXlWYWx1ZVtwcmltYXJ5S2V5VmFsdWVdLnB1c2gobW9kZWwpXG4gICAgfVxuXG4gICAgaWYgKG1vZGVsc1ByaW1hcnlLZXlWYWx1ZXMuc2l6ZSA9PSAwKSByZXR1cm4gc2F0aXNmaWVkVGFyZ2V0c1xuXG4gICAgLyoqXG4gICAgICogV2hlcmUgYXJncy5cbiAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgIHdoZXJlQXJnc1tmb3JlaWduS2V5XSA9IFsuLi5tb2RlbHNQcmltYXJ5S2V5VmFsdWVzXVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW4gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuXG4gICAgICB3aGVyZUFyZ3NbdHlwZUNvbHVtbl0gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRNb2RlbENsYXNzKCkuZ2V0TW9kZWxOYW1lKClcbiAgICB9XG5cbiAgICBhd2FpdCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQodGFyZ2V0TW9kZWxDbGFzcywgdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpLCB0aGlzLm1vZGVsc1swXSlcblxuICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGxldCBxdWVyeSA9IHByZWxvYWRRdWVyeUZvck1vZGVsKHRoaXMubW9kZWxzLCB0YXJnZXRNb2RlbENsYXNzKS53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICBxdWVyeSA9IHRoaXMucmVsYXRpb25zaGlwLmFwcGx5U2NvcGUocXVlcnkpXG4gICAgcXVlcnkgPSB0aGlzLnNlbGVjdGlvbi5hcHBseVRvUXVlcnkoe3F1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBtYXBwaW5nQ29sdW1uczogW2ZvcmVpZ25LZXldfSlcblxuICAgIGNvbnN0IHRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuXG4gICAgZm9yIChjb25zdCB0YXJnZXRNb2RlbCBvZiB0YXJnZXRNb2RlbHMpIHtcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgcHJlbG9hZENvbGxlY3Rpb25zW2ZvcmVpZ25LZXlWYWx1ZV0gPSB0YXJnZXRNb2RlbFxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFyZ2V0IHByZWxvYWRlZCBtb2RlbHMgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGZvciAoY29uc3QgbW9kZWxWYWx1ZSBpbiBwcmVsb2FkQ29sbGVjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZE1vZGVsID0gcHJlbG9hZENvbGxlY3Rpb25zW21vZGVsVmFsdWVdXG5cbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzQnlQcmltYXJ5S2V5VmFsdWVbbW9kZWxWYWx1ZV0pIHtcbiAgICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcblxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHByZWxvYWRlZE1vZGVsKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uc2F0aXNmaWVkVGFyZ2V0cywgLi4udGFyZ2V0TW9kZWxzXVxuICB9XG59XG4iXX0=