@decaf-ts/core 0.8.85 → 0.9.1-9.tasks

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 (554) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +6705 -2
  3. package/dist/core.js +6932 -2
  4. package/lib/auth/constants.cjs +1 -1
  5. package/lib/auth/decorators.cjs +1 -1
  6. package/lib/auth/index.cjs +1 -1
  7. package/lib/esm/auth/constants.js +1 -1
  8. package/lib/esm/auth/decorators.js +1 -1
  9. package/lib/esm/auth/index.js +1 -1
  10. package/lib/esm/fs/FilesystemAdapter.d.ts +1 -0
  11. package/lib/esm/fs/FilesystemAdapter.js +3 -2
  12. package/lib/esm/fs/FsDispatch.js +1 -1
  13. package/lib/esm/fs/helpers.js +1 -1
  14. package/lib/esm/fs/index.js +1 -1
  15. package/lib/esm/fs/indexStore.js +1 -1
  16. package/lib/esm/fs/locks/FilesystemLock.js +1 -1
  17. package/lib/esm/fs/locks/FilesystemMultiLock.js +1 -1
  18. package/lib/esm/fs/types.d.ts +6 -0
  19. package/lib/esm/fs/types.js +1 -1
  20. package/lib/esm/identity/decorators.js +1 -1
  21. package/lib/esm/identity/index.js +1 -1
  22. package/lib/esm/index.d.ts +1 -1
  23. package/lib/esm/index.js +2 -2
  24. package/lib/esm/interfaces/ContextuallyLogged.js +1 -1
  25. package/lib/esm/interfaces/ErrorParser.js +1 -1
  26. package/lib/esm/interfaces/Executor.js +1 -1
  27. package/lib/esm/interfaces/Observable.js +1 -1
  28. package/lib/esm/interfaces/Observer.js +1 -1
  29. package/lib/esm/interfaces/Paginatable.js +1 -1
  30. package/lib/esm/interfaces/Queriable.js +1 -1
  31. package/lib/esm/interfaces/RawExecutor.js +1 -1
  32. package/lib/esm/interfaces/SequenceOptions.js +1 -1
  33. package/lib/esm/interfaces/index.js +1 -1
  34. package/lib/esm/migrations/Migration.js +1 -1
  35. package/lib/esm/migrations/MigrationService.js +1 -1
  36. package/lib/esm/migrations/MigrationTasks.js +1 -1
  37. package/lib/esm/migrations/constants.js +1 -1
  38. package/lib/esm/migrations/decorators.js +1 -1
  39. package/lib/esm/migrations/index.js +1 -1
  40. package/lib/esm/migrations/types.js +1 -1
  41. package/lib/esm/model/BaseModel.js +1 -1
  42. package/lib/esm/model/SequenceModel.js +1 -1
  43. package/lib/esm/model/construction.d.ts +1 -1
  44. package/lib/esm/model/construction.js +25 -3
  45. package/lib/esm/model/decorators.js +1 -1
  46. package/lib/esm/model/index.js +1 -1
  47. package/lib/esm/model/indexing.js +1 -1
  48. package/lib/esm/model/types.js +1 -1
  49. package/lib/esm/overrides/Metadata.js +1 -1
  50. package/lib/esm/overrides/Model.js +1 -1
  51. package/lib/esm/overrides/ModelBuilder.js +1 -1
  52. package/lib/esm/overrides/index.js +1 -1
  53. package/lib/esm/overrides/injectables.js +1 -1
  54. package/lib/esm/overrides/overrides.js +29 -1
  55. package/lib/esm/persistence/Adapter.js +14 -2
  56. package/lib/esm/persistence/Context.js +1 -1
  57. package/lib/esm/persistence/ContextLock.js +1 -1
  58. package/lib/esm/persistence/Dispatch.d.ts +7 -0
  59. package/lib/esm/persistence/Dispatch.js +20 -3
  60. package/lib/esm/persistence/ObserverHandler.js +1 -1
  61. package/lib/esm/persistence/Sequence.js +1 -1
  62. package/lib/esm/persistence/constants.js +2 -1
  63. package/lib/esm/persistence/decorators.js +1 -1
  64. package/lib/esm/persistence/errors.js +1 -1
  65. package/lib/esm/persistence/event-filters.js +1 -1
  66. package/lib/esm/persistence/generators.js +1 -1
  67. package/lib/esm/persistence/index.js +1 -1
  68. package/lib/esm/persistence/transactions.js +1 -1
  69. package/lib/esm/persistence/types.d.ts +1 -0
  70. package/lib/esm/persistence/types.js +1 -1
  71. package/lib/esm/query/Condition.js +1 -1
  72. package/lib/esm/query/MethodQueryBuilder.js +1 -1
  73. package/lib/esm/query/Paginator.js +1 -1
  74. package/lib/esm/query/Statement.js +1 -1
  75. package/lib/esm/query/constants.js +1 -1
  76. package/lib/esm/query/decorators.js +1 -1
  77. package/lib/esm/query/errors.js +1 -1
  78. package/lib/esm/query/index.js +1 -1
  79. package/lib/esm/query/options.js +1 -1
  80. package/lib/esm/query/selectors.js +1 -1
  81. package/lib/esm/query/types.js +1 -1
  82. package/lib/esm/query/utils.js +1 -1
  83. package/lib/esm/ram/RamAdapter.js +1 -1
  84. package/lib/esm/ram/RamPaginator.js +1 -1
  85. package/lib/esm/ram/RamStatement.js +1 -1
  86. package/lib/esm/ram/constants.js +1 -1
  87. package/lib/esm/ram/handlers.js +1 -1
  88. package/lib/esm/ram/index.js +1 -1
  89. package/lib/esm/ram/types.js +1 -1
  90. package/lib/esm/repository/Repository.d.ts +2 -2
  91. package/lib/esm/repository/Repository.js +19 -16
  92. package/lib/esm/repository/constants.js +1 -1
  93. package/lib/esm/repository/decorators.js +2 -2
  94. package/lib/esm/repository/errors.js +1 -1
  95. package/lib/esm/repository/index.js +1 -1
  96. package/lib/esm/repository/injectables.js +4 -2
  97. package/lib/esm/repository/types.js +1 -1
  98. package/lib/esm/repository/utils.js +1 -1
  99. package/lib/esm/services/ModelService.d.ts +4 -5
  100. package/lib/esm/services/ModelService.js +4 -2
  101. package/lib/esm/services/PersistenceService.js +1 -1
  102. package/lib/esm/services/index.js +1 -1
  103. package/lib/esm/services/services.js +1 -1
  104. package/lib/esm/tasks/CleanUpTask.js +1 -1
  105. package/lib/esm/tasks/TaskContext.d.ts +3 -1
  106. package/lib/esm/tasks/TaskContext.js +9 -2
  107. package/lib/esm/tasks/TaskEngine.d.ts +2 -0
  108. package/lib/esm/tasks/TaskEngine.js +84 -20
  109. package/lib/esm/tasks/TaskErrors.js +1 -1
  110. package/lib/esm/tasks/TaskEventBus.js +1 -1
  111. package/lib/esm/tasks/TaskEventService.d.ts +7 -0
  112. package/lib/esm/tasks/TaskEventService.js +16 -0
  113. package/lib/esm/tasks/TaskHandler.js +1 -1
  114. package/lib/esm/tasks/TaskHandlerRegistry.js +1 -1
  115. package/lib/esm/tasks/TaskService.d.ts +5 -1
  116. package/lib/esm/tasks/TaskService.js +11 -37
  117. package/lib/esm/tasks/TaskStateChangeError.js +1 -1
  118. package/lib/esm/tasks/TaskTracker.js +1 -1
  119. package/lib/esm/tasks/builder.js +1 -1
  120. package/lib/esm/tasks/constants.js +1 -1
  121. package/lib/esm/tasks/decorators.js +1 -1
  122. package/lib/esm/tasks/index.d.ts +1 -0
  123. package/lib/esm/tasks/index.js +2 -1
  124. package/lib/esm/tasks/logging.js +4 -7
  125. package/lib/esm/tasks/models/TaskBackoffModel.js +1 -1
  126. package/lib/esm/tasks/models/TaskErrorModel.js +1 -1
  127. package/lib/esm/tasks/models/TaskEventModel.js +1 -1
  128. package/lib/esm/tasks/models/TaskIOSerializer.js +1 -1
  129. package/lib/esm/tasks/models/TaskLogEntryModel.d.ts +1 -0
  130. package/lib/esm/tasks/models/TaskLogEntryModel.js +6 -2
  131. package/lib/esm/tasks/models/TaskModel.js +1 -1
  132. package/lib/esm/tasks/models/TaskStepResultModel.js +1 -1
  133. package/lib/esm/tasks/models/TaskStepSpecModel.d.ts +1 -0
  134. package/lib/esm/tasks/models/TaskStepSpecModel.js +7 -3
  135. package/lib/esm/tasks/models/index.js +1 -1
  136. package/lib/esm/tasks/types.d.ts +8 -3
  137. package/lib/esm/tasks/types.js +1 -1
  138. package/lib/esm/tasks/utils.js +1 -1
  139. package/lib/esm/utils/ContextualLoggedClass.js +1 -1
  140. package/lib/esm/utils/decorators.js +1 -1
  141. package/lib/esm/utils/errors.js +1 -1
  142. package/lib/esm/utils/index.js +1 -1
  143. package/lib/esm/utils/throttling.js +1 -1
  144. package/lib/esm/utils/types.js +1 -1
  145. package/lib/esm/utils/utils.d.ts +2 -1
  146. package/lib/esm/utils/utils.js +23 -6
  147. package/lib/esm/workers/TaskEngine.js +15 -4
  148. package/lib/esm/workers/WorkThreadEnvironment.js +1 -1
  149. package/lib/esm/workers/index.js +1 -1
  150. package/lib/esm/workers/messages.js +1 -1
  151. package/lib/esm/workers/types.js +1 -1
  152. package/lib/esm/workers/workerThread.js +36 -8
  153. package/lib/fs/FilesystemAdapter.cjs +3 -2
  154. package/lib/fs/FilesystemAdapter.d.ts +1 -0
  155. package/lib/fs/FsDispatch.cjs +1 -1
  156. package/lib/fs/helpers.cjs +1 -1
  157. package/lib/fs/index.cjs +1 -1
  158. package/lib/fs/indexStore.cjs +1 -1
  159. package/lib/fs/locks/FilesystemLock.cjs +1 -1
  160. package/lib/fs/locks/FilesystemMultiLock.cjs +1 -1
  161. package/lib/fs/types.cjs +1 -1
  162. package/lib/fs/types.d.ts +6 -0
  163. package/lib/identity/decorators.cjs +1 -1
  164. package/lib/identity/index.cjs +1 -1
  165. package/lib/index.cjs +2 -2
  166. package/lib/index.d.ts +1 -1
  167. package/lib/interfaces/ContextuallyLogged.cjs +1 -1
  168. package/lib/interfaces/ErrorParser.cjs +1 -1
  169. package/lib/interfaces/Executor.cjs +1 -1
  170. package/lib/interfaces/Observable.cjs +1 -1
  171. package/lib/interfaces/Observer.cjs +1 -1
  172. package/lib/interfaces/Paginatable.cjs +1 -1
  173. package/lib/interfaces/Queriable.cjs +1 -1
  174. package/lib/interfaces/RawExecutor.cjs +1 -1
  175. package/lib/interfaces/SequenceOptions.cjs +1 -1
  176. package/lib/interfaces/index.cjs +1 -1
  177. package/lib/migrations/Migration.cjs +1 -1
  178. package/lib/migrations/MigrationService.cjs +1 -1
  179. package/lib/migrations/MigrationTasks.cjs +1 -1
  180. package/lib/migrations/constants.cjs +1 -1
  181. package/lib/migrations/decorators.cjs +1 -1
  182. package/lib/migrations/index.cjs +1 -1
  183. package/lib/migrations/types.cjs +1 -1
  184. package/lib/model/BaseModel.cjs +1 -1
  185. package/lib/model/SequenceModel.cjs +1 -1
  186. package/lib/model/construction.cjs +25 -3
  187. package/lib/model/construction.d.ts +1 -1
  188. package/lib/model/decorators.cjs +1 -1
  189. package/lib/model/index.cjs +1 -1
  190. package/lib/model/indexing.cjs +1 -1
  191. package/lib/model/types.cjs +1 -1
  192. package/lib/overrides/Metadata.cjs +1 -1
  193. package/lib/overrides/Model.cjs +1 -1
  194. package/lib/overrides/ModelBuilder.cjs +1 -1
  195. package/lib/overrides/index.cjs +1 -1
  196. package/lib/overrides/injectables.cjs +1 -1
  197. package/lib/overrides/overrides.cjs +29 -1
  198. package/lib/persistence/Adapter.cjs +14 -2
  199. package/lib/persistence/Context.cjs +1 -1
  200. package/lib/persistence/ContextLock.cjs +1 -1
  201. package/lib/persistence/Dispatch.cjs +20 -3
  202. package/lib/persistence/Dispatch.d.ts +7 -0
  203. package/lib/persistence/ObserverHandler.cjs +1 -1
  204. package/lib/persistence/Sequence.cjs +1 -1
  205. package/lib/persistence/constants.cjs +2 -1
  206. package/lib/persistence/decorators.cjs +1 -1
  207. package/lib/persistence/errors.cjs +1 -1
  208. package/lib/persistence/event-filters.cjs +1 -1
  209. package/lib/persistence/generators.cjs +1 -1
  210. package/lib/persistence/index.cjs +1 -1
  211. package/lib/persistence/transactions.cjs +1 -1
  212. package/lib/persistence/types.cjs +1 -1
  213. package/lib/persistence/types.d.ts +1 -0
  214. package/lib/query/Condition.cjs +1 -1
  215. package/lib/query/MethodQueryBuilder.cjs +1 -1
  216. package/lib/query/Paginator.cjs +1 -1
  217. package/lib/query/Statement.cjs +1 -1
  218. package/lib/query/constants.cjs +1 -1
  219. package/lib/query/decorators.cjs +1 -1
  220. package/lib/query/errors.cjs +1 -1
  221. package/lib/query/index.cjs +1 -1
  222. package/lib/query/options.cjs +1 -1
  223. package/lib/query/selectors.cjs +1 -1
  224. package/lib/query/types.cjs +1 -1
  225. package/lib/query/utils.cjs +1 -1
  226. package/lib/ram/RamAdapter.cjs +1 -1
  227. package/lib/ram/RamPaginator.cjs +1 -1
  228. package/lib/ram/RamStatement.cjs +1 -1
  229. package/lib/ram/constants.cjs +1 -1
  230. package/lib/ram/handlers.cjs +1 -1
  231. package/lib/ram/index.cjs +1 -1
  232. package/lib/ram/types.cjs +1 -1
  233. package/lib/repository/Repository.cjs +19 -16
  234. package/lib/repository/Repository.d.ts +2 -2
  235. package/lib/repository/constants.cjs +1 -1
  236. package/lib/repository/decorators.cjs +2 -2
  237. package/lib/repository/errors.cjs +1 -1
  238. package/lib/repository/index.cjs +1 -1
  239. package/lib/repository/injectables.cjs +4 -2
  240. package/lib/repository/types.cjs +1 -1
  241. package/lib/repository/utils.cjs +1 -1
  242. package/lib/services/ModelService.cjs +4 -2
  243. package/lib/services/ModelService.d.ts +4 -5
  244. package/lib/services/PersistenceService.cjs +1 -1
  245. package/lib/services/index.cjs +1 -1
  246. package/lib/services/services.cjs +1 -1
  247. package/lib/tasks/CleanUpTask.cjs +1 -1
  248. package/lib/tasks/TaskContext.cjs +9 -2
  249. package/lib/tasks/TaskContext.d.ts +3 -1
  250. package/lib/tasks/TaskEngine.cjs +84 -20
  251. package/lib/tasks/TaskEngine.d.ts +2 -0
  252. package/lib/tasks/TaskErrors.cjs +1 -1
  253. package/lib/tasks/TaskEventBus.cjs +1 -1
  254. package/lib/tasks/TaskEventService.cjs +20 -0
  255. package/lib/tasks/TaskEventService.d.ts +7 -0
  256. package/lib/tasks/TaskHandler.cjs +1 -1
  257. package/lib/tasks/TaskHandlerRegistry.cjs +1 -1
  258. package/lib/tasks/TaskService.cjs +10 -36
  259. package/lib/tasks/TaskService.d.ts +5 -1
  260. package/lib/tasks/TaskStateChangeError.cjs +1 -1
  261. package/lib/tasks/TaskTracker.cjs +1 -1
  262. package/lib/tasks/builder.cjs +1 -1
  263. package/lib/tasks/constants.cjs +1 -1
  264. package/lib/tasks/decorators.cjs +1 -1
  265. package/lib/tasks/index.cjs +2 -1
  266. package/lib/tasks/index.d.ts +1 -0
  267. package/lib/tasks/logging.cjs +4 -7
  268. package/lib/tasks/models/TaskBackoffModel.cjs +1 -1
  269. package/lib/tasks/models/TaskErrorModel.cjs +1 -1
  270. package/lib/tasks/models/TaskEventModel.cjs +1 -1
  271. package/lib/tasks/models/TaskIOSerializer.cjs +1 -1
  272. package/lib/tasks/models/TaskLogEntryModel.cjs +5 -1
  273. package/lib/tasks/models/TaskLogEntryModel.d.ts +1 -0
  274. package/lib/tasks/models/TaskModel.cjs +1 -1
  275. package/lib/tasks/models/TaskStepResultModel.cjs +1 -1
  276. package/lib/tasks/models/TaskStepSpecModel.cjs +6 -2
  277. package/lib/tasks/models/TaskStepSpecModel.d.ts +1 -0
  278. package/lib/tasks/models/index.cjs +1 -1
  279. package/lib/tasks/types.cjs +1 -1
  280. package/lib/tasks/types.d.ts +8 -3
  281. package/lib/tasks/utils.cjs +1 -1
  282. package/lib/utils/ContextualLoggedClass.cjs +1 -1
  283. package/lib/utils/decorators.cjs +1 -1
  284. package/lib/utils/errors.cjs +1 -1
  285. package/lib/utils/index.cjs +1 -1
  286. package/lib/utils/throttling.cjs +1 -1
  287. package/lib/utils/types.cjs +1 -1
  288. package/lib/utils/utils.cjs +22 -5
  289. package/lib/utils/utils.d.ts +2 -1
  290. package/lib/workers/TaskEngine.cjs +15 -4
  291. package/lib/workers/WorkThreadEnvironment.cjs +1 -1
  292. package/lib/workers/index.cjs +1 -1
  293. package/lib/workers/messages.cjs +1 -1
  294. package/lib/workers/types.cjs +1 -1
  295. package/lib/workers/workerThread.cjs +35 -7
  296. package/package.json +1 -1
  297. package/dist/core.cjs.map +0 -1
  298. package/dist/core.js.map +0 -1
  299. package/lib/auth/constants.js.map +0 -1
  300. package/lib/auth/decorators.js.map +0 -1
  301. package/lib/auth/index.js.map +0 -1
  302. package/lib/esm/auth/constants.js.map +0 -1
  303. package/lib/esm/auth/decorators.js.map +0 -1
  304. package/lib/esm/auth/index.js.map +0 -1
  305. package/lib/esm/fs/FilesystemAdapter.js.map +0 -1
  306. package/lib/esm/fs/FsDispatch.js.map +0 -1
  307. package/lib/esm/fs/helpers.js.map +0 -1
  308. package/lib/esm/fs/index.js.map +0 -1
  309. package/lib/esm/fs/indexStore.js.map +0 -1
  310. package/lib/esm/fs/locks/FilesystemLock.js.map +0 -1
  311. package/lib/esm/fs/locks/FilesystemMultiLock.js.map +0 -1
  312. package/lib/esm/fs/types.js.map +0 -1
  313. package/lib/esm/identity/decorators.js.map +0 -1
  314. package/lib/esm/identity/index.js.map +0 -1
  315. package/lib/esm/index.js.map +0 -1
  316. package/lib/esm/interfaces/ContextuallyLogged.js.map +0 -1
  317. package/lib/esm/interfaces/ErrorParser.js.map +0 -1
  318. package/lib/esm/interfaces/Executor.js.map +0 -1
  319. package/lib/esm/interfaces/Observable.js.map +0 -1
  320. package/lib/esm/interfaces/Observer.js.map +0 -1
  321. package/lib/esm/interfaces/Paginatable.js.map +0 -1
  322. package/lib/esm/interfaces/Queriable.js.map +0 -1
  323. package/lib/esm/interfaces/RawExecutor.js.map +0 -1
  324. package/lib/esm/interfaces/SequenceOptions.js.map +0 -1
  325. package/lib/esm/interfaces/index.js.map +0 -1
  326. package/lib/esm/migrations/Migration.js.map +0 -1
  327. package/lib/esm/migrations/MigrationService.js.map +0 -1
  328. package/lib/esm/migrations/MigrationTasks.js.map +0 -1
  329. package/lib/esm/migrations/constants.js.map +0 -1
  330. package/lib/esm/migrations/decorators.js.map +0 -1
  331. package/lib/esm/migrations/index.js.map +0 -1
  332. package/lib/esm/migrations/types.js.map +0 -1
  333. package/lib/esm/model/BaseModel.js.map +0 -1
  334. package/lib/esm/model/SequenceModel.js.map +0 -1
  335. package/lib/esm/model/construction.js.map +0 -1
  336. package/lib/esm/model/decorators.js.map +0 -1
  337. package/lib/esm/model/index.js.map +0 -1
  338. package/lib/esm/model/indexing.js.map +0 -1
  339. package/lib/esm/model/types.js.map +0 -1
  340. package/lib/esm/overrides/Metadata.js.map +0 -1
  341. package/lib/esm/overrides/Model.js.map +0 -1
  342. package/lib/esm/overrides/ModelBuilder.js.map +0 -1
  343. package/lib/esm/overrides/index.js.map +0 -1
  344. package/lib/esm/overrides/injectables.js.map +0 -1
  345. package/lib/esm/overrides/overrides.js.map +0 -1
  346. package/lib/esm/persistence/Adapter.js.map +0 -1
  347. package/lib/esm/persistence/Context.js.map +0 -1
  348. package/lib/esm/persistence/ContextLock.js.map +0 -1
  349. package/lib/esm/persistence/Dispatch.js.map +0 -1
  350. package/lib/esm/persistence/ObserverHandler.js.map +0 -1
  351. package/lib/esm/persistence/Sequence.js.map +0 -1
  352. package/lib/esm/persistence/constants.js.map +0 -1
  353. package/lib/esm/persistence/decorators.js.map +0 -1
  354. package/lib/esm/persistence/errors.js.map +0 -1
  355. package/lib/esm/persistence/event-filters.js.map +0 -1
  356. package/lib/esm/persistence/generators.js.map +0 -1
  357. package/lib/esm/persistence/index.js.map +0 -1
  358. package/lib/esm/persistence/transactions.js.map +0 -1
  359. package/lib/esm/persistence/types.js.map +0 -1
  360. package/lib/esm/query/Condition.js.map +0 -1
  361. package/lib/esm/query/MethodQueryBuilder.js.map +0 -1
  362. package/lib/esm/query/Paginator.js.map +0 -1
  363. package/lib/esm/query/Statement.js.map +0 -1
  364. package/lib/esm/query/constants.js.map +0 -1
  365. package/lib/esm/query/decorators.js.map +0 -1
  366. package/lib/esm/query/errors.js.map +0 -1
  367. package/lib/esm/query/index.js.map +0 -1
  368. package/lib/esm/query/options.js.map +0 -1
  369. package/lib/esm/query/selectors.js.map +0 -1
  370. package/lib/esm/query/types.js.map +0 -1
  371. package/lib/esm/query/utils.js.map +0 -1
  372. package/lib/esm/ram/RamAdapter.js.map +0 -1
  373. package/lib/esm/ram/RamPaginator.js.map +0 -1
  374. package/lib/esm/ram/RamStatement.js.map +0 -1
  375. package/lib/esm/ram/constants.js.map +0 -1
  376. package/lib/esm/ram/handlers.js.map +0 -1
  377. package/lib/esm/ram/index.js.map +0 -1
  378. package/lib/esm/ram/types.js.map +0 -1
  379. package/lib/esm/repository/Repository.js.map +0 -1
  380. package/lib/esm/repository/constants.js.map +0 -1
  381. package/lib/esm/repository/decorators.js.map +0 -1
  382. package/lib/esm/repository/errors.js.map +0 -1
  383. package/lib/esm/repository/index.js.map +0 -1
  384. package/lib/esm/repository/injectables.js.map +0 -1
  385. package/lib/esm/repository/types.js.map +0 -1
  386. package/lib/esm/repository/utils.js.map +0 -1
  387. package/lib/esm/services/ModelService.js.map +0 -1
  388. package/lib/esm/services/PersistenceService.js.map +0 -1
  389. package/lib/esm/services/index.js.map +0 -1
  390. package/lib/esm/services/services.js.map +0 -1
  391. package/lib/esm/tasks/CleanUpTask.js.map +0 -1
  392. package/lib/esm/tasks/TaskContext.js.map +0 -1
  393. package/lib/esm/tasks/TaskEngine.js.map +0 -1
  394. package/lib/esm/tasks/TaskErrors.js.map +0 -1
  395. package/lib/esm/tasks/TaskEventBus.js.map +0 -1
  396. package/lib/esm/tasks/TaskHandler.js.map +0 -1
  397. package/lib/esm/tasks/TaskHandlerRegistry.js.map +0 -1
  398. package/lib/esm/tasks/TaskService.js.map +0 -1
  399. package/lib/esm/tasks/TaskStateChangeError.js.map +0 -1
  400. package/lib/esm/tasks/TaskTracker.js.map +0 -1
  401. package/lib/esm/tasks/builder.js.map +0 -1
  402. package/lib/esm/tasks/constants.js.map +0 -1
  403. package/lib/esm/tasks/decorators.js.map +0 -1
  404. package/lib/esm/tasks/index.js.map +0 -1
  405. package/lib/esm/tasks/logging.js.map +0 -1
  406. package/lib/esm/tasks/models/TaskBackoffModel.js.map +0 -1
  407. package/lib/esm/tasks/models/TaskErrorModel.js.map +0 -1
  408. package/lib/esm/tasks/models/TaskEventModel.js.map +0 -1
  409. package/lib/esm/tasks/models/TaskIOSerializer.js.map +0 -1
  410. package/lib/esm/tasks/models/TaskLogEntryModel.js.map +0 -1
  411. package/lib/esm/tasks/models/TaskModel.js.map +0 -1
  412. package/lib/esm/tasks/models/TaskStepResultModel.js.map +0 -1
  413. package/lib/esm/tasks/models/TaskStepSpecModel.js.map +0 -1
  414. package/lib/esm/tasks/models/index.js.map +0 -1
  415. package/lib/esm/tasks/types.js.map +0 -1
  416. package/lib/esm/tasks/utils.js.map +0 -1
  417. package/lib/esm/utils/ContextualLoggedClass.js.map +0 -1
  418. package/lib/esm/utils/decorators.js.map +0 -1
  419. package/lib/esm/utils/errors.js.map +0 -1
  420. package/lib/esm/utils/index.js.map +0 -1
  421. package/lib/esm/utils/throttling.js.map +0 -1
  422. package/lib/esm/utils/types.js.map +0 -1
  423. package/lib/esm/utils/utils.js.map +0 -1
  424. package/lib/esm/workers/TaskEngine.js.map +0 -1
  425. package/lib/esm/workers/WorkThreadEnvironment.js.map +0 -1
  426. package/lib/esm/workers/index.js.map +0 -1
  427. package/lib/esm/workers/messages.js.map +0 -1
  428. package/lib/esm/workers/types.js.map +0 -1
  429. package/lib/esm/workers/workerThread.js.map +0 -1
  430. package/lib/fs/FilesystemAdapter.js.map +0 -1
  431. package/lib/fs/FsDispatch.js.map +0 -1
  432. package/lib/fs/helpers.js.map +0 -1
  433. package/lib/fs/index.js.map +0 -1
  434. package/lib/fs/indexStore.js.map +0 -1
  435. package/lib/fs/locks/FilesystemLock.js.map +0 -1
  436. package/lib/fs/locks/FilesystemMultiLock.js.map +0 -1
  437. package/lib/fs/types.js.map +0 -1
  438. package/lib/identity/decorators.js.map +0 -1
  439. package/lib/identity/index.js.map +0 -1
  440. package/lib/index.js.map +0 -1
  441. package/lib/interfaces/ContextuallyLogged.js.map +0 -1
  442. package/lib/interfaces/ErrorParser.js.map +0 -1
  443. package/lib/interfaces/Executor.js.map +0 -1
  444. package/lib/interfaces/Observable.js.map +0 -1
  445. package/lib/interfaces/Observer.js.map +0 -1
  446. package/lib/interfaces/Paginatable.js.map +0 -1
  447. package/lib/interfaces/Queriable.js.map +0 -1
  448. package/lib/interfaces/RawExecutor.js.map +0 -1
  449. package/lib/interfaces/SequenceOptions.js.map +0 -1
  450. package/lib/interfaces/index.js.map +0 -1
  451. package/lib/migrations/Migration.js.map +0 -1
  452. package/lib/migrations/MigrationService.js.map +0 -1
  453. package/lib/migrations/MigrationTasks.js.map +0 -1
  454. package/lib/migrations/constants.js.map +0 -1
  455. package/lib/migrations/decorators.js.map +0 -1
  456. package/lib/migrations/index.js.map +0 -1
  457. package/lib/migrations/types.js.map +0 -1
  458. package/lib/model/BaseModel.js.map +0 -1
  459. package/lib/model/SequenceModel.js.map +0 -1
  460. package/lib/model/construction.js.map +0 -1
  461. package/lib/model/decorators.js.map +0 -1
  462. package/lib/model/index.js.map +0 -1
  463. package/lib/model/indexing.js.map +0 -1
  464. package/lib/model/types.js.map +0 -1
  465. package/lib/overrides/Metadata.js.map +0 -1
  466. package/lib/overrides/Model.js.map +0 -1
  467. package/lib/overrides/ModelBuilder.js.map +0 -1
  468. package/lib/overrides/index.js.map +0 -1
  469. package/lib/overrides/injectables.js.map +0 -1
  470. package/lib/overrides/overrides.js.map +0 -1
  471. package/lib/persistence/Adapter.js.map +0 -1
  472. package/lib/persistence/Context.js.map +0 -1
  473. package/lib/persistence/ContextLock.js.map +0 -1
  474. package/lib/persistence/Dispatch.js.map +0 -1
  475. package/lib/persistence/ObserverHandler.js.map +0 -1
  476. package/lib/persistence/Sequence.js.map +0 -1
  477. package/lib/persistence/constants.js.map +0 -1
  478. package/lib/persistence/decorators.js.map +0 -1
  479. package/lib/persistence/errors.js.map +0 -1
  480. package/lib/persistence/event-filters.js.map +0 -1
  481. package/lib/persistence/generators.js.map +0 -1
  482. package/lib/persistence/index.js.map +0 -1
  483. package/lib/persistence/transactions.js.map +0 -1
  484. package/lib/persistence/types.js.map +0 -1
  485. package/lib/query/Condition.js.map +0 -1
  486. package/lib/query/MethodQueryBuilder.js.map +0 -1
  487. package/lib/query/Paginator.js.map +0 -1
  488. package/lib/query/Statement.js.map +0 -1
  489. package/lib/query/constants.js.map +0 -1
  490. package/lib/query/decorators.js.map +0 -1
  491. package/lib/query/errors.js.map +0 -1
  492. package/lib/query/index.js.map +0 -1
  493. package/lib/query/options.js.map +0 -1
  494. package/lib/query/selectors.js.map +0 -1
  495. package/lib/query/types.js.map +0 -1
  496. package/lib/query/utils.js.map +0 -1
  497. package/lib/ram/RamAdapter.js.map +0 -1
  498. package/lib/ram/RamPaginator.js.map +0 -1
  499. package/lib/ram/RamStatement.js.map +0 -1
  500. package/lib/ram/constants.js.map +0 -1
  501. package/lib/ram/handlers.js.map +0 -1
  502. package/lib/ram/index.js.map +0 -1
  503. package/lib/ram/types.js.map +0 -1
  504. package/lib/repository/Repository.js.map +0 -1
  505. package/lib/repository/constants.js.map +0 -1
  506. package/lib/repository/decorators.js.map +0 -1
  507. package/lib/repository/errors.js.map +0 -1
  508. package/lib/repository/index.js.map +0 -1
  509. package/lib/repository/injectables.js.map +0 -1
  510. package/lib/repository/types.js.map +0 -1
  511. package/lib/repository/utils.js.map +0 -1
  512. package/lib/services/ModelService.js.map +0 -1
  513. package/lib/services/PersistenceService.js.map +0 -1
  514. package/lib/services/index.js.map +0 -1
  515. package/lib/services/services.js.map +0 -1
  516. package/lib/tasks/CleanUpTask.js.map +0 -1
  517. package/lib/tasks/TaskContext.js.map +0 -1
  518. package/lib/tasks/TaskEngine.js.map +0 -1
  519. package/lib/tasks/TaskErrors.js.map +0 -1
  520. package/lib/tasks/TaskEventBus.js.map +0 -1
  521. package/lib/tasks/TaskHandler.js.map +0 -1
  522. package/lib/tasks/TaskHandlerRegistry.js.map +0 -1
  523. package/lib/tasks/TaskService.js.map +0 -1
  524. package/lib/tasks/TaskStateChangeError.js.map +0 -1
  525. package/lib/tasks/TaskTracker.js.map +0 -1
  526. package/lib/tasks/builder.js.map +0 -1
  527. package/lib/tasks/constants.js.map +0 -1
  528. package/lib/tasks/decorators.js.map +0 -1
  529. package/lib/tasks/index.js.map +0 -1
  530. package/lib/tasks/logging.js.map +0 -1
  531. package/lib/tasks/models/TaskBackoffModel.js.map +0 -1
  532. package/lib/tasks/models/TaskErrorModel.js.map +0 -1
  533. package/lib/tasks/models/TaskEventModel.js.map +0 -1
  534. package/lib/tasks/models/TaskIOSerializer.js.map +0 -1
  535. package/lib/tasks/models/TaskLogEntryModel.js.map +0 -1
  536. package/lib/tasks/models/TaskModel.js.map +0 -1
  537. package/lib/tasks/models/TaskStepResultModel.js.map +0 -1
  538. package/lib/tasks/models/TaskStepSpecModel.js.map +0 -1
  539. package/lib/tasks/models/index.js.map +0 -1
  540. package/lib/tasks/types.js.map +0 -1
  541. package/lib/tasks/utils.js.map +0 -1
  542. package/lib/utils/ContextualLoggedClass.js.map +0 -1
  543. package/lib/utils/decorators.js.map +0 -1
  544. package/lib/utils/errors.js.map +0 -1
  545. package/lib/utils/index.js.map +0 -1
  546. package/lib/utils/throttling.js.map +0 -1
  547. package/lib/utils/types.js.map +0 -1
  548. package/lib/utils/utils.js.map +0 -1
  549. package/lib/workers/TaskEngine.js.map +0 -1
  550. package/lib/workers/WorkThreadEnvironment.js.map +0 -1
  551. package/lib/workers/index.js.map +0 -1
  552. package/lib/workers/messages.js.map +0 -1
  553. package/lib/workers/types.js.map +0 -1
  554. package/lib/workers/workerThread.js.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { TaskContext } from "./TaskContext";
2
2
  import { TaskLogger } from "./logging";
3
3
  import { LogLevel } from "@decaf-ts/logging";
4
- import { Adapter, ContextFlags, FlagsOf } from "../persistence/index";
4
+ import { Adapter, ContextFlags } from "../persistence/index";
5
+ import { ConfOf } from "../persistence/types";
5
6
  import { TaskEventBus } from "./TaskEventBus";
6
7
  import { TaskHandlerRegistry } from "./TaskHandlerRegistry";
7
8
  import { TaskEventModel } from "./models/TaskEventModel";
@@ -17,7 +18,11 @@ export type LogPipeOptions = {
17
18
  logStatus: boolean;
18
19
  };
19
20
  export type EventPipe = (evt: TaskEventModel, ...args: any[]) => Promise<void>;
20
- export type LogPipe = (logs: [LogLevel, string, any][]) => Promise<void>;
21
+ export interface LogPipe {
22
+ (logs: [LogLevel, string, any][]): Promise<void>;
23
+ (entry: [LogLevel, string] | [LogLevel, string, any]): Promise<void>;
24
+ (level: LogLevel, msg: string, meta?: any): Promise<void>;
25
+ }
21
26
  export interface TaskFlags<LOG extends TaskLogger<any> = TaskLogger<any>> extends ContextFlags<LOG> {
22
27
  taskId: string;
23
28
  attempt: number;
@@ -29,7 +34,7 @@ export interface TaskFlags<LOG extends TaskLogger<any> = TaskLogger<any>> extend
29
34
  }
30
35
  export type TaskEngineConfig<A extends Adapter<any, any, any, any>> = {
31
36
  adapter: A;
32
- overrides?: Partial<FlagsOf<A>>;
37
+ overrides?: Partial<ConfOf<A>>;
33
38
  bus?: TaskEventBus;
34
39
  registry?: TaskHandlerRegistry;
35
40
  workerId: string;
@@ -26,4 +26,4 @@ function serializeError(err) {
26
26
  function sleep(ms) {
27
27
  return new Promise((r) => setTimeout(r, ms));
28
28
  }
29
- //# sourceMappingURL=utils.js.map
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3MvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0Q0FlQztBQUVELHdDQU9DO0FBRUQsc0JBRUM7QUFoQ0QsZ0VBQXlEO0FBRXpELCtDQUE4RDtBQUU5RCxTQUFnQixnQkFBZ0IsQ0FDOUIsT0FBZSxFQUNmLEdBQXFCO0lBRXJCLE1BQU0sR0FBRyxHQUNQLEdBQUcsQ0FBQyxRQUFRLEtBQUssMkJBQWUsQ0FBQyxLQUFLO1FBQ3BDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUNaLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV4QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssMEJBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVE7SUFDckMsT0FBTyxJQUFJLCtCQUFjLENBQUM7UUFDeEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNwQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7UUFDakIsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQ2YsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQixLQUFLLENBQUMsRUFBVTtJQUM5QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhc2tFcnJvck1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL1Rhc2tFcnJvck1vZGVsXCI7XG5pbXBvcnQgeyBUYXNrQmFja29mZk1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL1Rhc2tCYWNrb2ZmTW9kZWxcIjtcbmltcG9ydCB7IEJhY2tvZmZTdHJhdGVneSwgSml0dGVyU3RyYXRlZ3kgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVCYWNrb2ZmTXMoXG4gIGF0dGVtcHQ6IG51bWJlcixcbiAgY2ZnOiBUYXNrQmFja29mZk1vZGVsXG4pOiBudW1iZXIge1xuICBjb25zdCByYXcgPVxuICAgIGNmZy5zdHJhdGVneSA9PT0gQmFja29mZlN0cmF0ZWd5LkZJWEVEXG4gICAgICA/IGNmZy5iYXNlTXNcbiAgICAgIDogY2ZnLmJhc2VNcyAqIE1hdGgucG93KDIsIE1hdGgubWF4KDAsIGF0dGVtcHQgLSAxKSk7XG5cbiAgY29uc3QgY2FwcGVkID0gTWF0aC5taW4ocmF3LCBjZmcubWF4TXMpO1xuXG4gIGlmIChjZmcuaml0dGVyID09PSBKaXR0ZXJTdHJhdGVneS5GVUxMKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNhcHBlZCk7XG4gIH1cbiAgcmV0dXJuIGNhcHBlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUVycm9yKGVycjogYW55KTogVGFza0Vycm9yTW9kZWwge1xuICByZXR1cm4gbmV3IFRhc2tFcnJvck1vZGVsKHtcbiAgICBtZXNzYWdlOiBlcnI/Lm1lc3NhZ2UgPz8gU3RyaW5nKGVyciksXG4gICAgc3RhY2s6IGVycj8uc3RhY2ssXG4gICAgY29kZTogZXJyPy5jb2RlLFxuICAgIGRldGFpbHM6IGVycj8uZGV0YWlscyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtcykpO1xufVxuIl19
@@ -109,4 +109,4 @@ class AbsContextual extends ContextualLoggedClass {
109
109
  }
110
110
  }
111
111
  exports.AbsContextual = AbsContextual;
112
- //# sourceMappingURL=ContextualLoggedClass.js.map
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dHVhbExvZ2dlZENsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL0NvbnRleHR1YWxMb2dnZWRDbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBaUU7QUFDakUsMkRBS2lDO0FBQ2pDLDBEQUFpRDtBQXlDakQsTUFBc0IscUJBRXBCLFNBQVEscUJBQVc7SUErQlQsTUFBTSxDQU1kLElBQXVDLEVBQ3ZDLFNBQWlCLEVBQ2pCLGNBQXNCLEtBQWUsRUFDckMsU0FBcUM7UUFNckMsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QyxJQUFJLEVBQ0osU0FBUyxFQUNULFNBQVMsSUFBSSxFQUFFLEVBQ2YsV0FBVyxFQUNYLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxDQUFDLENBUzBCLENBQUM7SUFDOUUsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBS1osR0FBTSxFQUNOLE1BQXFCLEVBQ3JCLEdBQVksRUFDWixNQUF5QjtRQUV6QixNQUFNLEdBQUcsR0FBSSxHQUFrQixDQUFDLFNBQVMsQ0FBQztZQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFVLENBQUMsQ0FBQyx3QkFBd0I7WUFDekQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsZ0JBQWdCO1FBQ2hCLCtDQUErQztRQUMvQyxvQ0FBb0M7UUFDcEMsNENBQTRDO1FBQzVDLDBCQUEwQjtRQUMxQixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQVcsQ0FBQztJQUMzRCxDQUFDO0lBV0QsTUFBTSxDQUFDLE1BQU0sQ0FRWCxTQUFpQixF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QUssVUFBVSxDQUFDO1FBQzNELHlCQUF5QjtRQUN6QixpQ0FBaUM7UUFDakMsdUJBQXVCO1FBQ3ZCLDBDQUEwQztRQUMxQyxnQkFBZ0I7UUFDaEIsUUFBUTtRQUNSLGlDQUFpQztRQUVqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdkMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBTSxDQUFDO1FBQzFELE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBTSxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQXhERCxzQ0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2dnZWRDbGFzcywgTG9nZ2VyLCBMb2dnaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQge1xuICBCdWxrQ3J1ZE9wZXJhdGlvbktleXMsXG4gIENvbnRleHR1YWwsXG4gIEludGVybmFsRXJyb3IsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9Db250ZXh0XCI7XG5pbXBvcnQgeyBGbGFnc09mLCBMb2dnZXJPZiB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2luZGV4XCI7XG5pbXBvcnQgeyBQcmVwYXJlZFN0YXRlbWVudEtleXMgfSBmcm9tIFwiLi4vcXVlcnkvaW5kZXhcIjtcblxuZXhwb3J0IHR5cGUgQ29udGV4dHVhbEFyZ3M8XG4gIEMgZXh0ZW5kcyBDb250ZXh0PGFueT4sXG4gIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuPiA9IFsuLi5BUkdTLCBDXTtcblxuZXhwb3J0IHR5cGUgTWV0aG9kT3JPcGVyYXRpb24gPVxuICB8ICgoLi4uYXJnczogYW55W10pID0+IGFueSlcbiAgfCBzdHJpbmdcbiAgfCBPcGVyYXRpb25LZXlzXG4gIHwgUGVyc2lzdGVuY2VLZXlzXG4gIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzXG4gIHwgUHJlcGFyZWRTdGF0ZW1lbnRLZXlzO1xuXG5leHBvcnQgdHlwZSBNYXliZUNvbnRleHR1YWxBcmc8XG4gIEMgZXh0ZW5kcyBDb250ZXh0PGFueT4sXG4gIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuPiA9IGFueVtdIHwgQ29udGV4dHVhbEFyZ3M8QywgQVJHUz47XG5cbmV4cG9ydCB0eXBlIENvbnRleHR1YWxpemVkQXJnczxcbiAgQyBleHRlbmRzIENvbnRleHQ8YW55PixcbiAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gIEVYVEVORCBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbj4gPSBFWFRFTkQgZXh0ZW5kcyB0cnVlXG4gID8ge1xuICAgICAgY3R4OiBDO1xuICAgICAgbG9nOiBMb2dnZXJPZjxDPjtcbiAgICAgIGN0eEFyZ3M6IENvbnRleHR1YWxBcmdzPEMsIEFSR1M+O1xuICAgICAgZm9yOiAoLi4uYW55OiBhbnlbXSkgPT4gQ29udGV4dHVhbGl6ZWRBcmdzPEMsIEFSR1MsIGZhbHNlPjtcbiAgICB9XG4gIDoge1xuICAgICAgY3R4OiBDO1xuICAgICAgbG9nOiBMb2dnZXJPZjxDPjtcbiAgICAgIGN0eEFyZ3M6IENvbnRleHR1YWxBcmdzPEMsIEFSR1M+O1xuICAgIH07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250ZXh0dWFsTG9nZ2VkQ2xhc3M8XG4gIEMgZXh0ZW5kcyBDb250ZXh0PGFueT4sXG4+IGV4dGVuZHMgTG9nZ2VkQ2xhc3Mge1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIENPTlRFWFQgZXh0ZW5kcyBDb250ZXh0PGFueT4gPSBDLFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENPTlRFWFQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9EXG4gICk6IENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIENPTlRFWFQgZXh0ZW5kcyBDb250ZXh0PGFueT4gPSBDLFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENPTlRFWFQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiBmYWxzZSxcbiAgICBvdmVycmlkZXM/OiBQYXJ0aWFsPEZsYWdzT2Y8Q09OVEVYVD4+XG4gICk6IENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIENPTlRFWFQgZXh0ZW5kcyBDb250ZXh0PGFueT4gPSBDLFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPENPTlRFWFQsIEFSR1M+LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIGFsbG93Q3JlYXRlOiB0cnVlLFxuICAgIG92ZXJyaWRlcz86IFBhcnRpYWw8RmxhZ3NPZjxDT05URVhUPj5cbiAgKTogUHJvbWlzZTxcbiAgICBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICA+O1xuICBwcm90ZWN0ZWQgbG9nQ3R4PFxuICAgIENPTlRFWFQgZXh0ZW5kcyBDb250ZXh0PGFueT4gPSBDLFxuICAgIENSRUFURSBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZSxcbiAgICBBUkdTIGV4dGVuZHMgYW55W10gPSBhbnlbXSxcbiAgICBNRVRIT0QgZXh0ZW5kcyBNZXRob2RPck9wZXJhdGlvbiA9IE1ldGhvZE9yT3BlcmF0aW9uLFxuICA+KFxuICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDT05URVhULCBBUkdTPixcbiAgICBvcGVyYXRpb246IE1FVEhPRCxcbiAgICBhbGxvd0NyZWF0ZTogQ1JFQVRFID0gZmFsc2UgYXMgQ1JFQVRFLFxuICAgIG92ZXJyaWRlcz86IFBhcnRpYWw8RmxhZ3NPZjxDT05URVhUPj5cbiAgKTpcbiAgICB8IFByb21pc2U8XG4gICAgICAgIENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTLCBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2U+XG4gICAgICA+XG4gICAgfCBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPiB7XG4gICAgcmV0dXJuIENvbnRleHR1YWxMb2dnZWRDbGFzcy5sb2dDdHguY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBvcGVyYXRpb24sXG4gICAgICBvdmVycmlkZXMgfHwge30sXG4gICAgICBhbGxvd0NyZWF0ZSxcbiAgICAgIC4uLmFyZ3MuZmlsdGVyKChlKSA9PiB0eXBlb2YgZSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICApIGFzXG4gICAgICB8IFByb21pc2U8XG4gICAgICAgICAgQ29udGV4dHVhbGl6ZWRBcmdzPFxuICAgICAgICAgICAgQ09OVEVYVCxcbiAgICAgICAgICAgIEFSR1MsXG4gICAgICAgICAgICBNRVRIT0QgZXh0ZW5kcyBzdHJpbmcgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICA+XG4gICAgICAgID5cbiAgICAgIHwgQ29udGV4dHVhbGl6ZWRBcmdzPENPTlRFWFQsIEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT47XG4gIH1cblxuICBzdGF0aWMgbG9nRnJvbTxcbiAgICBDT05URVhUIGV4dGVuZHMgQ29udGV4dDxhbnk+LFxuICAgIEEgPSBhbnkgfCBDb250ZXh0dWFsPENPTlRFWFQ+LFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgb2JqOiBBLFxuICAgIGxvZ2dlcjogTG9nZ2VyT2Y8YW55PixcbiAgICBjdHg6IENPTlRFWFQsXG4gICAgbWV0aG9kPzogTUVUSE9EIHwga2V5b2YgQVxuICApOiBMb2dnZXIge1xuICAgIGNvbnN0IGxvZyA9IChvYmogYXMgQ29udGV4dHVhbClbXCJjb250ZXh0XCJdXG4gICAgICA/IGxvZ2dlci5jbGVhcigpLmZvcihvYmogYXMgYW55KSAvLyBSZXNldCBmb3IgQ29udGV4dHVhbHNcbiAgICAgIDogbG9nZ2VyLmZvcihvYmopO1xuICAgIC8vIGNvbnN0IGxvZyA9IChcbiAgICAvLyAgICh0aGlzIGFzIHVua25vd24gYXMgQ29udGV4dHVhbClbXCJjb250ZXh0XCJdXG4gICAgLy8gICAgID8gY3R4LmxvZ2dlci5mb3IodGhpcyBhcyBhbnkpXG4gICAgLy8gICAgIDogY3R4LmxvZ2dlci5jbGVhcigpLmZvcih0aGlzIGFzIGFueSlcbiAgICAvLyApIGFzIExvZ2dlck9mPENPTlRFWFQ+O1xuICAgIHJldHVybiAobWV0aG9kID8gbG9nLmZvcihtZXRob2QgYXMgYW55KSA6IGxvZykgYXMgTG9nZ2VyO1xuICB9XG5cbiAgc3RhdGljIGxvZ0N0eDxcbiAgICBDT05URVhUIGV4dGVuZHMgQ29udGV4dDxhbnk+LFxuICAgIEFSR1MgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLFxuICAgIE1FVEhPRCBleHRlbmRzIE1ldGhvZE9yT3BlcmF0aW9uID0gTWV0aG9kT3JPcGVyYXRpb24sXG4gID4oXG4gICAgdGhpczogYW55LFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDT05URVhULCBBUkdTPlxuICApOiBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgc3RhdGljIGxvZ0N0eDxcbiAgICBDT05URVhUIGV4dGVuZHMgQ29udGV4dDxhbnk+LFxuICAgIENSRUFURSBleHRlbmRzIGJvb2xlYW4sXG4gICAgQ09OVEVYVFVBTCBleHRlbmRzIENvbnRleHR1YWw8Q09OVEVYVD4gfCBhbnksXG4gICAgQVJHUyBleHRlbmRzIGFueVtdID0gYW55W10sXG4gICAgTUVUSE9EIGV4dGVuZHMgTWV0aG9kT3JPcGVyYXRpb24gPSBNZXRob2RPck9wZXJhdGlvbixcbiAgPihcbiAgICB0aGlzOiBDT05URVhUVUFMLFxuICAgIG9wZXJhdGlvbjogTUVUSE9ELFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGbGFnc09mPENPTlRFWFQ+PiB8IHVuZGVmaW5lZCxcbiAgICBhbGxvd0NyZWF0ZTogQ1JFQVRFID0gZmFsc2UgYXMgQ1JFQVRFLFxuICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDT05URVhULCBBUkdTPlxuICApOiBDUkVBVEUgZXh0ZW5kcyB0cnVlXG4gICAgPyBQcm9taXNlPFxuICAgICAgICBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPlxuICAgICAgPlxuICAgIDogQ29udGV4dHVhbGl6ZWRBcmdzPENPTlRFWFQsIEFSR1MsIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZT4ge1xuICAgIGNvbnN0IGJvb3RDdHggPSBhc3luYyBmdW5jdGlvbiBib290Q3R4KFxuICAgICAgdGhpczogQ09OVEVYVFVBTCxcbiAgICAgIC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxDT05URVhUPlxuICAgICkge1xuICAgICAgaWYgKCF0aGlzKSB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5vIGNvbnRleHR1YWwgcHJvdmlkZWRcIik7XG4gICAgICBpZiAoISh0aGlzIGFzIGFueSlbXCJjb250ZXh0XCJdKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIkludmFsaWQgY29udGV4dHVhbCBwcm92aWRlZFwiKTtcbiAgICAgIHJldHVybiAodGhpcyBhcyB1bmtub3duIGFzIENvbnRleHR1YWw8Q09OVEVYVD4pLmNvbnRleHQoXG4gICAgICAgIHR5cGVvZiBvcGVyYXRpb24gPT09IFwic3RyaW5nXCIgPyBvcGVyYXRpb24gOiBvcGVyYXRpb24ubmFtZSxcbiAgICAgICAgb3ZlcnJpZGVzIHx8ICh7fSBhcyBQYXJ0aWFsPEZsYWdzT2Y8Q09OVEVYVD4+KSxcbiAgICAgICAgLi4uYXJnc1xuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSAoXG4gICAgICBvYmo6IENPTlRFWFRVQUwgfCBhbnksXG4gICAgICByZXNwOiBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUz4sXG4gICAgICBvcDogTUVUSE9EXG4gICAgKTogTUVUSE9EIGV4dGVuZHMgc3RyaW5nXG4gICAgICA/IENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTLCB0cnVlPlxuICAgICAgOiBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUz4gPT4ge1xuICAgICAgLy8gcmVzcC5sb2cgPSBDb250ZXh0dWFsTG9nZ2VkQ2xhc3MubG9nRnJvbShvYmosIHJlc3AubG9nLCBjdHgsIG9wKSBhcyBhbnk7XG4gICAgICBjb25zdCBiYXNlTG9nID0gcmVzcC5sb2cgfHwgTG9nZ2luZy5nZXQoKTtcbiAgICAgIHJlc3AubG9nID0gb2JqLmNvbnRleHRcbiAgICAgICAgPyBiYXNlTG9nLmNsZWFyKCkuZm9yKG9iaikgLy8gUmVzZXQgZm9yIENvbnRleHR1YWxzXG4gICAgICAgIDogYmFzZUxvZy5mb3Iob2JqKTtcblxuICAgICAgaWYgKHR5cGVvZiBvcCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAocmVzcCBhcyBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgdHJ1ZT4pLmZvciA9IChcbiAgICAgICAgICBtZXRob2Q6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJlc3AsIHsgbG9nOiByZXNwLmxvZy5mb3IobWV0aG9kKSB9KTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3AubG9nID0gcmVzcC5sb2cuZm9yKG9wKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwIGFzIE1FVEhPRCBleHRlbmRzIHN0cmluZ1xuICAgICAgICA/IENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTLCB0cnVlPlxuICAgICAgICA6IENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTPjtcbiAgICB9O1xuXG4gICAgbGV0IGN0eDogYW55ID0gYXJncy5wb3AoKTtcbiAgICBjb25zdCBoYXNDb250ZXh0ID0gY3R4IGluc3RhbmNlb2YgQ29udGV4dDtcbiAgICBpZiAoY3R4ICYmICFoYXNDb250ZXh0KSB7XG4gICAgICBhcmdzLnB1c2goY3R4KTtcbiAgICAgIGN0eCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCFhbGxvd0NyZWF0ZSAmJiAhaGFzQ29udGV4dClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm8gY29udGV4dCBwcm92aWRlZFwiKTtcbiAgICBpZiAoaGFzQ29udGV4dCAmJiAhYWxsb3dDcmVhdGUpIHtcbiAgICAgIGlmICghY3R4KVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk1pc3NpbmcgY29udGV4dC4gc2hvdWxkIGJlIGltcG9zc2libGVcIik7XG4gICAgICByZXR1cm4gcmVzcG9uc2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHtcbiAgICAgICAgICBsb2c6IGN0eC5sb2dnZXIsXG4gICAgICAgICAgY3R4OiBjdHgsXG4gICAgICAgICAgY3R4QXJnczogWy4uLmFyZ3MsIGN0eF0sXG4gICAgICAgIH0gYXMgQ29udGV4dHVhbGl6ZWRBcmdzPENPTlRFWFQsIEFSR1M+LFxuICAgICAgICBvcGVyYXRpb25cbiAgICAgICkgYXMgYW55O1xuICAgIH1cbiAgICByZXR1cm4gYm9vdEN0eFxuICAgICAgLmNhbGwodGhpcywgLi4uWy4uLmFyZ3MsIGN0eF0uZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbG9nOiByZXNwLmxvZ2dlcixcbiAgICAgICAgICAgIGN0eDogcmVzcCxcbiAgICAgICAgICAgIGN0eEFyZ3M6IFsuLi5hcmdzLCByZXNwXSxcbiAgICAgICAgICB9IGFzIENvbnRleHR1YWxpemVkQXJnczxDT05URVhULCBBUkdTPixcbiAgICAgICAgICBvcGVyYXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0pIGFzIENSRUFURSBleHRlbmRzIHRydWVcbiAgICAgID8gUHJvbWlzZTxcbiAgICAgICAgICBDb250ZXh0dWFsaXplZEFyZ3M8XG4gICAgICAgICAgICBDT05URVhULFxuICAgICAgICAgICAgQVJHUyxcbiAgICAgICAgICAgIE1FVEhPRCBleHRlbmRzIHN0cmluZyA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgID5cbiAgICAgICAgPlxuICAgICAgOiBDb250ZXh0dWFsaXplZEFyZ3M8Q09OVEVYVCwgQVJHUywgTUVUSE9EIGV4dGVuZHMgc3RyaW5nID8gdHJ1ZSA6IGZhbHNlPjtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzQ29udGV4dHVhbDxDIGV4dGVuZHMgQ29udGV4dDxhbnk+PlxuICBleHRlbmRzIENvbnRleHR1YWxMb2dnZWRDbGFzczxDPlxuICBpbXBsZW1lbnRzIENvbnRleHR1YWw8Qz5cbntcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBjb250ZXh0IGNvbnN0cnVjdG9yIGZvciB0aGlzIGFkYXB0ZXJcbiAgICogQHN1bW1hcnkgUmVmZXJlbmNlIHRvIHRoZSBjb250ZXh0IGNsYXNzIGNvbnN0cnVjdG9yIHVzZWQgYnkgdGhpcyBhZGFwdGVyXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9Db250ZXh0OiBDb25zdHJ1Y3RvcjxDPiA9IENvbnRleHQ8XG4gICAgRmxhZ3NPZjxDPlxuICA+IGFzIHVua25vd24gYXMgQ29uc3RydWN0b3I8Qz47XG4gIHByb3RlY3RlZCBnZXQgQ29udGV4dCgpOiBDb25zdHJ1Y3RvcjxDPiB7XG4gICAgcmV0dXJuIHRoaXMuX0NvbnRleHQ7XG4gIH1cblxuICBhc3luYyBjb250ZXh0KFxuICAgIG9wZXJhdGlvbjpcbiAgICAgIHwgKCguLi5hcmdzOiBhbnlbXSkgPT4gYW55KVxuICAgICAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICAgICAgfCBPcGVyYXRpb25LZXlzLlJFQURcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEVcbiAgICAgIHwgc3RyaW5nLFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxGbGFnc09mPEM+PixcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8Q29udGV4dDxhbnk+LCBhbnlbXT5cbiAgKTogUHJvbWlzZTxDPiB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY29udGV4dCk7XG4gICAgbG9nLmRlYnVnKFxuICAgICAgYENyZWF0aW5nIG5ldyBjb250ZXh0IGZvciAke3R5cGVvZiBvcGVyYXRpb24gPT09IFwic3RyaW5nXCIgPyBvcGVyYXRpb24gOiBvcGVyYXRpb24ubmFtZX0gb3BlcmF0aW9uIHdpdGggZmxhZyBvdmVycmlkZXM6ICR7T2JqZWN0LmtleXMob3ZlcnJpZGVzKX1gXG4gICAgKTtcbiAgICBsZXQgY3R4ID0gYXJncy5wb3AoKTtcbiAgICBpZiAoIShjdHggaW5zdGFuY2VvZiBDb250ZXh0KSkge1xuICAgICAgYXJncy5wdXNoKGN0eCk7XG4gICAgICBjdHggPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gY29uc3Qgb3BlcmF0aW9uTmFtZSA9XG4gICAgLy8gICB0eXBlb2Ygb3BlcmF0aW9uID09PSBcInN0cmluZ1wiID8gb3BlcmF0aW9uIDogb3BlcmF0aW9uLm5hbWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNvbnN0IGhhc0ZsYWdzID0gdHlwZW9mICh0aGlzIGFzIGFueSkuZmxhZ3MgPT09IFwiZnVuY3Rpb25cIjtcbiAgICAvLyBjb25zdCBmbGFncyA9IGhhc0ZsYWdzXG4gICAgLy8gICA/IGF3YWl0ICh0aGlzIGFzIGFueSkuZmxhZ3MoXG4gICAgLy8gICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAvLyAgICAgICBvdmVycmlkZXMgYXMgUGFydGlhbDxGbGFnc09mPEM+PixcbiAgICAvLyAgICAgICAuLi5hcmdzXG4gICAgLy8gICAgIClcbiAgICAvLyAgIDogKG92ZXJyaWRlcyBhcyBGbGFnc09mPEM+KTtcblxuICAgIGlmIChjdHggJiYgIShjdHggaW5zdGFuY2VvZiB0aGlzLkNvbnRleHQpKVxuICAgICAgcmV0dXJuIG5ldyB0aGlzLkNvbnRleHQoY3R4KS5hY2N1bXVsYXRlKG92ZXJyaWRlcykgYXMgQztcbiAgICByZXR1cm4gbmV3IHRoaXMuQ29udGV4dCgpLmFjY3VtdWxhdGUob3ZlcnJpZGVzKSBhcyBDO1xuICB9XG59XG4iXX0=
@@ -119,4 +119,4 @@ function route(httpMethod, path) {
119
119
  })
120
120
  .apply();
121
121
  }
122
- //# sourceMappingURL=decorators.js.map
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdDQSwwQkFxQ0M7QUFFRCxvQkFhQztBQXNCRCxzQkF3QkM7QUExSUQscURBUThCO0FBQzlCLDJFQUFxRTtBQUNyRSw4REFBNEQ7QUFHNUQsdUNBQW1FO0FBQ25FLDJEQUF3RDtBQUl4RCxTQUFTLGNBQWMsQ0FBQyxFQUFrQjtJQUN4QyxPQUFPLFVBQVUsTUFBVyxFQUFFLFlBQWtCLEVBQUUsVUFBZ0I7UUFDaEUsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsR0FBRyxJQUFXO1lBQ3pDLE1BQU0sV0FBVyxHQUFJLElBQStCLENBQUMsS0FBSyxDQUFDO1lBQzNELElBQUksV0FBVyxJQUFJLElBQUEsMEJBQWtCLEVBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELE1BQU0sSUFBSSxHQUFHLFdBQVcsRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDO2dCQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLGNBQWMsRUFBRSx3Q0FBd0MsSUFBSSxHQUFHLENBQ2hFLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLDZCQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFBcEQsUUFBQSxNQUFNLFVBQThDO0FBQzFELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyw2QkFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQWhELFFBQUEsSUFBSSxRQUE0QztBQUN0RCxNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsNkJBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUFwRCxRQUFBLE1BQU0sVUFBOEM7QUFDMUQsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLDZCQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFBakQsUUFBQSxHQUFHLE9BQThDO0FBRTlELFNBQWdCLE9BQU8sQ0FBQyxHQUFvQztJQUMxRCxPQUFPLFNBQVMsT0FBTyxDQUFDLE1BQVcsRUFBRSxJQUFVLEVBQUUsVUFBZ0I7UUFDL0QsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLFFBQVE7WUFDUixHQUFHLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUEsaUJBQVEsR0FBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6QixXQUFXO1lBQ1gsR0FBRyxHQUFHLEdBQUcsSUFBSSxxQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxHQUFHLEdBQUcsSUFBQSw0QkFBb0IsRUFBQyxHQUFVLENBQUMsQ0FBQztRQUV2QyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSw4QkFBTSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQzthQUFNLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxxQkFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBZSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FDUCxJQUFBLGtDQUFVLEVBQUMsR0FBRyxFQUFFO2dCQUNkLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVEsRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFLENBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDbEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFlBQVksRUFBRSxLQUFLO29CQUNuQixRQUFRLEVBQUUsS0FBSztvQkFDZixLQUFLLEVBQUUsR0FBRztpQkFDWCxDQUFDO2FBQ0wsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSw4QkFBTSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQzs7WUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFFeEUscURBQXFEO1FBQ3JELE9BQU8sSUFBQSxrQkFBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsSUFBSSxDQUFDLEtBQTJCO0lBQzlDLE1BQU0sYUFBYSxHQUFHLDJCQUFlLENBQUMsSUFBSSxDQUFDO0lBRTNDLFNBQVMsSUFBSSxDQUFDLEtBQTJCO1FBQ3ZDLE9BQU8sSUFBQSxxQkFBUSxFQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyx1QkFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7U0FDakMsTUFBTSxDQUFDO1FBQ04sU0FBUyxFQUFFLElBQUk7UUFDZixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7S0FDZCxDQUFDO1NBQ0QsS0FBSyxFQUFFLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0ksTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLElBQUEscUJBQVEsRUFBQywyQkFBZSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFGVyxRQUFBLEtBQUssU0FFaEI7QUFFRixTQUFnQixLQUFLLENBQUMsVUFBcUIsRUFBRSxJQUFZO0lBQ3ZELE1BQU0sR0FBRyxHQUFHLDJCQUFlLENBQUMsV0FBVyxDQUFDO0lBQ3hDLFNBQVMsS0FBSztRQUNaLE9BQU8sU0FBUyxLQUFLLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxVQUFnQjtZQUM3RCxNQUFNLE9BQU8sR0FBeUI7Z0JBQ3BDLElBQUksRUFBRSxJQUFJO2dCQUNWLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixPQUFPLEVBQUUsVUFBVTthQUNwQixDQUFDO1lBRUYsT0FBTyxJQUFBLGtCQUFLLEVBQUMsSUFBQSwyQkFBYyxFQUFDLHFCQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUM1RCxHQUFHLEVBQ0gsSUFBSSxFQUNKLFVBQVUsQ0FDWCxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sdUJBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQztRQUNOLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztTQUNELEtBQUssRUFBRSxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGx5LFxuICBDb25zdHJ1Y3RvcixcbiAgRGVjb3JhdGlvbixcbiAgbWV0YWRhdGEsXG4gIE1ldGFkYXRhLFxuICBtZXRob2RNZXRhZGF0YSxcbiAgcHJvcCBhcyBwcm9wZXJ0eSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBpbmplY3QsIGluamVjdGFibGUgfSBmcm9tIFwiQGRlY2FmLXRzL2luamVjdGFibGUtZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlLy9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3J1ZE9wZXJhdGlvbnMgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IGluamVjdGFibGVTZXJ2aWNlS2V5LCBpc09wZXJhdGlvbkJsb2NrZWQgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgTW9kZWxTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL01vZGVsU2VydmljZVwiO1xuaW1wb3J0IHsgRGVjYWZSb3V0ZURlY09wdGlvbnMsIEh0dHBWZXJicyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmZ1bmN0aW9uIE9wZXJhdGlvbkd1YXJkKG9wOiBDcnVkT3BlcmF0aW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogYW55LCBfcHJvcGVydHlLZXk/OiBhbnksIGRlc2NyaXB0b3I/OiBhbnkpIHtcbiAgICBjb25zdCBvcmlnaW5hbCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgY29uc3QgTW9kZWxDb25zdHIgPSAodGhpcyBhcyBNb2RlbFNlcnZpY2U8YW55LCBhbnk+KS5jbGFzcztcbiAgICAgIGlmIChNb2RlbENvbnN0ciAmJiBpc09wZXJhdGlvbkJsb2NrZWQoTW9kZWxDb25zdHIsIG9wKSkge1xuICAgICAgICBjb25zdCBuYW1lID0gTW9kZWxDb25zdHI/Lm5hbWUgPz8gXCJNb2RlbFwiO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE9wZXJhdGlvbiBcIiR7b3B9XCIgaXMgYmxvY2tlZCBieSBAQmxvY2tPcGVyYXRpb25zIGZvciAke25hbWV9LmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlID0gKCkgPT4gT3BlcmF0aW9uR3VhcmQoT3BlcmF0aW9uS2V5cy5DUkVBVEUpO1xuZXhwb3J0IGNvbnN0IHJlYWQgPSAoKSA9PiBPcGVyYXRpb25HdWFyZChPcGVyYXRpb25LZXlzLlJFQUQpO1xuZXhwb3J0IGNvbnN0IHVwZGF0ZSA9ICgpID0+IE9wZXJhdGlvbkd1YXJkKE9wZXJhdGlvbktleXMuVVBEQVRFKTtcbmV4cG9ydCBjb25zdCBkZWwgPSAoKSA9PiBPcGVyYXRpb25HdWFyZChPcGVyYXRpb25LZXlzLkRFTEVURSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlKGtleT86IHN0cmluZyB8IE1vZGVsQ29uc3RydWN0b3I8YW55Pikge1xuICByZXR1cm4gZnVuY3Rpb24gc2VydmljZSh0YXJnZXQ6IGFueSwgcHJvcD86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgIGlmICghZGVzY3JpcHRvciAmJiAhcHJvcCkge1xuICAgICAgLy8gY2xhc3NcbiAgICAgIGtleSA9IGtleSB8fCB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3BlcnR5KCkodGFyZ2V0LCBwcm9wKTtcbiAgICAgIC8vIHByb3BlcnR5XG4gICAgICBrZXkgPSBrZXkgfHwgTWV0YWRhdGEudHlwZSh0YXJnZXQuY29uc3RydWN0b3IsIHByb3ApO1xuICAgIH1cblxuICAgIGtleSA9IGluamVjdGFibGVTZXJ2aWNlS2V5KGtleSBhcyBhbnkpO1xuXG4gICAgY29uc3QgZGVjcyA9IFtdO1xuICAgIGlmIChkZXNjcmlwdG9yICYmIHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICBkZWNzLnB1c2goaW5qZWN0KGtleSkpO1xuICAgIH0gZWxzZSBpZiAoIWRlc2NyaXB0b3IgJiYgIXByb3ApIHtcbiAgICAgIE1ldGFkYXRhLnNldChQZXJzaXN0ZW5jZUtleXMuU0VSVklDRSwga2V5LCB0YXJnZXQpO1xuICAgICAgZGVjcy5wdXNoKFxuICAgICAgICBpbmplY3RhYmxlKGtleSwge1xuICAgICAgICAgIHNpbmdsZXRvbjogdHJ1ZSxcbiAgICAgICAgICBjYWxsYmFjazogKGluc3Q6IGFueSkgPT5cbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIm5hbWVcIiwge1xuICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIHZhbHVlOiBrZXksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghZGVzY3JpcHRvcikge1xuICAgICAgZGVjcy5wdXNoKGluamVjdChrZXkpKTtcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkZWNvcmF0b3IgdXNhZ2UuIFNob3VsZCBiZSBpbXBvc3NpYmxlXCIpO1xuXG4gICAgLy8gZGVjcy5wdXNoKG1ldGFkYXRhKFBlcnNpc3RlbmNlS2V5cy5TRVJWSUNFLCBrZXkpKTtcbiAgICByZXR1cm4gYXBwbHkoLi4uZGVjcykodGFyZ2V0LCBwcm9wLCBkZXNjcmlwdG9yKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1dGgobW9kZWw6IHN0cmluZyB8IENvbnN0cnVjdG9yKSB7XG4gIGNvbnN0IGRlY29yYXRpb25LZXkgPSBQZXJzaXN0ZW5jZUtleXMuQVVUSDtcblxuICBmdW5jdGlvbiBhdXRoKG1vZGVsOiBzdHJpbmcgfCBDb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBtZXRhZGF0YShkZWNvcmF0aW9uS2V5LCBtb2RlbCk7XG4gIH1cblxuICByZXR1cm4gRGVjb3JhdGlvbi5mb3IoZGVjb3JhdGlvbktleSlcbiAgICAuZGVmaW5lKHtcbiAgICAgIGRlY29yYXRvcjogYXV0aCxcbiAgICAgIGFyZ3M6IFttb2RlbF0sXG4gICAgfSlcbiAgICAuYXBwbHkoKTtcbn1cblxuLyoqXG4gKiBBIGRlY29yYXRvciBmdW5jdGlvbiB0aGF0IHNldHMgdGhlIHJvbGVzIHJlcXVpcmVkIGZvciBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiB0byB0aGUgbW9kZWwgaW4gTmVzdEpTLlxuICpcbiAqIEBwYXJhbSByb2xlcyAtIEFuIGFycmF5IG9mIHJvbGUgbmFtZXMgcmVxdWlyZWQgZm9yIGFjY2Vzcy5cbiAqXG4gKiBAcmV0dXJucyAtIEEgZnVuY3Rpb24gdGhhdCBhcHBsaWVzIHRoZSByb2xlIGRlY29yYXRvcnMgdG8gdGhlIHRhcmdldC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogQG1vZGVsKCd1c2VycycpXG4gKiBAUm9sZXMoWydhZG1pbiddKVxuICogZXhwb3J0IGNsYXNzIFVzZXJNb2RlbCB7XG4gKiAgLy8uLi5cbiAqIH1cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCByb2xlcyA9IChyb2xlczogc3RyaW5nW10pID0+IHtcbiAgcmV0dXJuIG1ldGFkYXRhKFBlcnNpc3RlbmNlS2V5cy5BVVRIX1JPTEUsIHJvbGVzKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiByb3V0ZShodHRwTWV0aG9kOiBIdHRwVmVyYnMsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCBrZXkgPSBQZXJzaXN0ZW5jZUtleXMuREVDQUZfUk9VVEU7XG4gIGZ1bmN0aW9uIHJvdXRlKCkge1xuICAgIHJldHVybiBmdW5jdGlvbiByb3V0ZShvYmo6IG9iamVjdCwgcHJvcD86IGFueSwgZGVzY3JpcHRvcj86IGFueSkge1xuICAgICAgY29uc3Qgb3B0aW9uczogRGVjYWZSb3V0ZURlY09wdGlvbnMgPSB7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIGh0dHBNZXRob2Q6IGh0dHBNZXRob2QsXG4gICAgICAgIGhhbmRsZXI6IGRlc2NyaXB0b3IsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gYXBwbHkobWV0aG9kTWV0YWRhdGEoTWV0YWRhdGEua2V5KGtleSwgcHJvcCksIG9wdGlvbnMpKShcbiAgICAgICAgb2JqLFxuICAgICAgICBwcm9wLFxuICAgICAgICBkZXNjcmlwdG9yXG4gICAgICApO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gRGVjb3JhdGlvbi5mb3Ioa2V5KVxuICAgIC5kZWZpbmUoe1xuICAgICAgZGVjb3JhdG9yOiByb3V0ZSxcbiAgICAgIGFyZ3M6IFtdLFxuICAgIH0pXG4gICAgLmFwcGx5KCk7XG59XG4iXX0=
@@ -66,4 +66,4 @@ class ConnectionError extends db_decorators_1.InternalError {
66
66
  }
67
67
  }
68
68
  exports.ConnectionError = ConnectionError;
69
- //# sourceMappingURL=errors.js.map
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBeUU7QUFFekU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsK0JBQWU7SUFDckQsWUFBWSxHQUFtQixFQUFFLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUc7UUFDekUsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBSkQsZ0RBSUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsY0FBZSxTQUFRLGtCQUFrQjtJQUNwRCxZQUFZLEdBQW1CLEVBQUUsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJO1FBQ3pELEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUpELHdDQUlDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsNkJBQWE7SUFDaEQsWUFBWSxHQUFtQjtRQUM3QixLQUFLLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBSkQsMENBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYWRSZXF1ZXN0RXJyb3IsIEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXJyb3IgdGhyb3duIHdoZW4gYSB1c2VyIGlzIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gYW4gYWN0aW9uXG4gKiBAc3VtbWFyeSBUaGlzIGVycm9yIGlzIHRocm93biB3aGVuIGEgdXNlciBhdHRlbXB0cyB0byBhY2Nlc3MgYSByZXNvdXJjZSBvciBwZXJmb3JtIGFuIGFjdGlvbiB3aXRob3V0IHByb3BlciBhdXRoZW50aWNhdGlvblxuICogQHBhcmFtIHtzdHJpbmd8RXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIEVycm9yIG9iamVjdFxuICogQGNsYXNzIEF1dGhvcml6YXRpb25FcnJvclxuICogQGNhdGVnb3J5IEVycm9yc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgb2YgdGhyb3dpbmcgYW4gQXV0aG9yaXphdGlvbkVycm9yXG4gKiBpZiAoIXVzZXIuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAqICAgdGhyb3cgbmV3IEF1dGhvcml6YXRpb25FcnJvcignVXNlciBub3QgYXV0aGVudGljYXRlZCcpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uRXJyb3IgZXh0ZW5kcyBCYWRSZXF1ZXN0RXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yLCBuYW1lID0gQXV0aG9yaXphdGlvbkVycm9yLm5hbWUsIGNvZGUgPSA0MDEpIHtcbiAgICBzdXBlcihtc2csIG5hbWUsIGNvZGUpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGEgdXNlciBpcyBmb3JiaWRkZW4gZnJvbSBhY2Nlc3NpbmcgYSByZXNvdXJjZVxuICogQHN1bW1hcnkgVGhpcyBlcnJvciBpcyB0aHJvd24gd2hlbiBhbiBhdXRoZW50aWNhdGVkIHVzZXIgYXR0ZW1wdHMgdG8gYWNjZXNzIGEgcmVzb3VyY2Ugb3IgcGVyZm9ybSBhbiBhY3Rpb24gdGhleSBkb24ndCBoYXZlIHBlcm1pc3Npb24gZm9yXG4gKiBAcGFyYW0ge3N0cmluZ3xFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgRXJyb3Igb2JqZWN0XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIEZvcmJpZGRlbkVycm9yXG4gKiBAY2F0ZWdvcnkgRXJyb3JzXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gRXhhbXBsZSBvZiB0aHJvd2luZyBhIEZvcmJpZGRlbkVycm9yXG4gKiBpZiAoIXVzZXIuaGFzUGVybWlzc2lvbignYWRtaW4nKSkge1xuICogICB0aHJvdyBuZXcgRm9yYmlkZGVuRXJyb3IoJ1VzZXIgZG9lcyBub3QgaGF2ZSBhZG1pbiBwZXJtaXNzaW9ucycpO1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBGb3JiaWRkZW5FcnJvciBleHRlbmRzIEF1dGhvcml6YXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IsIG5hbWUgPSBGb3JiaWRkZW5FcnJvci5uYW1lKSB7XG4gICAgc3VwZXIobXNnLCBuYW1lLCA0MDMpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGEgY29ubmVjdGlvbiB0byBhIHNlcnZpY2UgZmFpbHNcbiAqIEBzdW1tYXJ5IFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGZhaWxzIHRvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gYSByZXF1aXJlZCBzZXJ2aWNlIG9yIHJlc291cmNlXG4gKiBAcGFyYW0ge3N0cmluZ3xFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgRXJyb3Igb2JqZWN0XG4gKiBAcmV0dXJuIHt2b2lkfVxuICogQGNsYXNzIENvbm5lY3Rpb25FcnJvclxuICogQGNhdGVnb3J5IEVycm9yc1xuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEV4YW1wbGUgb2YgdGhyb3dpbmcgYSBDb25uZWN0aW9uRXJyb3JcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IGRhdGFiYXNlLmNvbm5lY3QoKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIHRocm93IG5ldyBDb25uZWN0aW9uRXJyb3IoJ0ZhaWxlZCB0byBjb25uZWN0IHRvIGRhdGFiYXNlJyk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENvbm5lY3Rpb25FcnJvciBleHRlbmRzIEludGVybmFsRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIobXNnLCBDb25uZWN0aW9uRXJyb3IubmFtZSwgNTAzKTtcbiAgfVxufVxuIl19
@@ -25,4 +25,4 @@ __exportStar(require("./errors.cjs"), exports);
25
25
  __exportStar(require("./utils.cjs"), exports);
26
26
  __exportStar(require("./throttling.cjs"), exports);
27
27
  __exportStar(require("./types.cjs"), exports);
28
- //# sourceMappingURL=index.js.map
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0dBSUc7QUFDSCw4REFBd0M7QUFDeEMsbURBQTZCO0FBQzdCLCtDQUF5QjtBQUN6Qiw4Q0FBd0I7QUFDeEIsbURBQTZCO0FBQzdCLDhDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEV4cG9ydHMgZm9yIHRoZSB1dGlscyBtb2R1bGUuXG4gKiBAc3VtbWFyeSBUaGlzIGZpbGUgZXhwb3J0cyBhbGwgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIGZvciB0aGUgdXRpbHMgZnVuY3Rpb25hbGl0eSwgaW5jbHVkaW5nIHRoZSBDb250ZXh0dWFsTG9nZ2VkQ2xhc3MsIGRlY29yYXRvcnMsIGVycm9ycywgYW5kIG1vcmUuXG4gKiBAbW9kdWxlIGNvcmUvdXRpbHNcbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aHJvdHRsaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl19
@@ -142,4 +142,4 @@ function mergeResult(result, collector) {
142
142
  collector.push(result);
143
143
  }
144
144
  }
145
- //# sourceMappingURL=throttling.js.map
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90aHJvdHRsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsNEJBZ0hDO0FBN0hELHFEQUF1RTtBQUN2RSxzREFBdUQ7QUFDdkQsMkRBQXdEO0FBV3hELFNBQWdCLFFBQVEsQ0FDdEIsTUFBaUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQzdFLFdBQThCLENBQUM7SUFFL0IsT0FBTyxTQUFTLFFBQVEsQ0FDdEIsTUFBYyxFQUNkLFdBQWlCLEVBQ2pCLFVBQWdCO1FBRWhCLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxXQUFpQixFQUFFLFVBQWdCO1lBQ3RFLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDN0MsS0FBSyxDQUFDLEtBQUssQ0FDVCxNQUFNLEVBQ04sT0FBbUMsRUFDbkMsSUFBNkI7b0JBRTdCLE1BQU0sY0FBYyxHQUFHLElBQWEsQ0FBQztvQkFDckMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUU7d0JBQ3pCLElBQUksQ0FBQzs0QkFDSCxPQUFPLE9BQU8sR0FBRyxLQUFLLFVBQVU7Z0NBQzlCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUM7Z0NBQ3hCLENBQUMsQ0FBQyxHQUFHLENBQUM7d0JBQ1YsQ0FBQzt3QkFBQyxPQUFPLENBQVUsRUFBRSxDQUFDOzRCQUNwQixNQUFNLElBQUksNkJBQWEsQ0FDckIsMkRBQTJELENBQUMsRUFBRSxDQUMvRCxDQUFDO3dCQUNKLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFFTCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQ25CLE1BQU0sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSx1QkFBZSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FD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QUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVztRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUFlLEVBQUUsU0FBZ0I7SUFDcEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7U0FBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhcHBseSwgTWV0YWRhdGEsIG1ldGhvZE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvaW5kZXhcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7XG4gIENvbnRleHR1YWxMb2dnZWRDbGFzcyxcbiAgTWF5YmVDb250ZXh0dWFsQXJnLFxufSBmcm9tIFwiLi9Db250ZXh0dWFsTG9nZ2VkQ2xhc3NcIjtcblxuZXhwb3J0IHR5cGUgQnNlVGhyb3R0bGluZ0NvbmZpZyA9IHsgZGVsYXlNcz86IG51bWJlciB9O1xuXG5leHBvcnQgdHlwZSBUaHJvdHRsaW5nQ29uZmlnID0gKHsgY291bnQ6IG51bWJlciB9IHwgeyBidWZmZXJTaXplOiBudW1iZXIgfSkgJlxuICBCc2VUaHJvdHRsaW5nQ29uZmlnO1xuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3R0bGUoXG4gIGNmZzogVGhyb3R0bGluZ0NvbmZpZyB8ICgoLi4uYXJnczogYW55W10pID0+IFRocm90dGxpbmdDb25maWcpID0geyBjb3VudDogMSB9LFxuICBhcmdJbmRleDogbnVtYmVyIHwgbnVtYmVyW10gPSAwXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRocm90dGxlKFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5S2V5PzogYW55LFxuICAgIGRlc2NyaXB0b3I/OiBhbnlcbiAgKSB7XG4gICAgZnVuY3Rpb24gdGhyb3R0bGVEZWModGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5S2V5PzogYW55LCBkZXNjcmlwdG9yPzogYW55KSB7XG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gbmV3IFByb3h5KGRlc2NyaXB0b3IudmFsdWUsIHtcbiAgICAgICAgYXN5bmMgYXBwbHkoXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIHRoaXNBcmc6IENvbnRleHR1YWxMb2dnZWRDbGFzczxhbnk+LFxuICAgICAgICAgIGFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+XG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGludm9jYXRpb25BcmdzID0gYXJncyBhcyBhbnlbXTtcbiAgICAgICAgICBjb25zdCBlZmZlY3RpdmVDZmcgPSAoKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjZmcgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgID8gY2ZnKC4uLmludm9jYXRpb25BcmdzKVxuICAgICAgICAgICAgICAgIDogY2ZnO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmFpbGVkIHRvIG9idGFpbiB0aHJvdHRsaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSBoYW5kbGVyOiAke2V9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKCk7XG5cbiAgICAgICAgICBjb25zdCB7IGxvZywgY3R4IH0gPSAoXG4gICAgICAgICAgICBhd2FpdCB0aGlzQXJnW1wibG9nQ3R4XCJdKGFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5USFJPVFRMRSwgdHJ1ZSlcbiAgICAgICAgICApLmZvcih0aHJvdHRsZSk7XG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEluZGljZXMgPSBub3JtYWxpemVBcmdJbmRleChhcmdJbmRleCk7XG4gICAgICAgICAgaWYgKCFub3JtYWxpemVkSW5kaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICBcIkB0aHJvdHRsaW5nKCkgZXhwZWN0cyBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaW5kZXggdG8gdGhyb3R0bGVcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9ybWFsaXplZEluZGljZXMuZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA+PSBpbnZvY2F0aW9uQXJncy5sZW5ndGgpXG4gICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgIGBAdGhyb3R0bGluZygpIHJlcXVpcmVzIGFyZ3VtZW50IGluZGV4ICR7aW5kZXh9IGJ1dCBvbmx5ICR7aW52b2NhdGlvbkFyZ3MubGVuZ3RofSBwcm92aWRlZGBcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbnZvY2F0aW9uQXJnc1tpbmRleF0pKVxuICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICAgICAgICBgQHRocm90dGxpbmcoKSBleHBlY3RzIGFyZ3VtZW50IGF0IGluZGV4ICR7aW5kZXh9IHRvIGJlIGFuIGFycmF5YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgYXJyYXlzID0gbm9ybWFsaXplZEluZGljZXMubWFwKFxuICAgICAgICAgICAgKGlkeCkgPT4gaW52b2NhdGlvbkFyZ3NbaWR4XSBhcyBhbnlbXVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgdG90YWwgPSBhcnJheXNbMF0ubGVuZ3RoO1xuICAgICAgICAgIGlmICghYXJyYXlzLmV2ZXJ5KChhcnIpID0+IGFyci5sZW5ndGggPT09IHRvdGFsKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgIFwiQHRocm90dGxpbmcoKSByZXF1aXJlcyBhbGwgdGFyZ2V0ZWQgYXJndW1lbnRzIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRvdGFsID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KHRoaXNBcmcsIGludm9jYXRpb25BcmdzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjaHVua0JvdW5kcyA9IGJ1aWxkQ2h1bmtCb3VuZHModG90YWwsIGFycmF5cywgZWZmZWN0aXZlQ2ZnKTtcbiAgICAgICAgICBjb25zdCBjaHVua0FyZ3NMaXN0ID0gY2h1bmtCb3VuZHMubWFwKCh7IHN0YXJ0LCBlbmQgfSkgPT5cbiAgICAgICAgICAgIGludm9jYXRpb25BcmdzLm1hcCgoYXJnLCBpZHgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0SWR4ID0gbm9ybWFsaXplZEluZGljZXMuaW5kZXhPZihpZHgpO1xuICAgICAgICAgICAgICBpZiAodGFyZ2V0SWR4ID09PSAtMSkgcmV0dXJuIGFyZztcbiAgICAgICAgICAgICAgcmV0dXJuIGFycmF5c1t0YXJnZXRJZHhdLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgYnJlYWtPblNpbmdsZUZhaWx1cmUgPVxuICAgICAgICAgICAgY3R4LmdldChcImJyZWFrT25TaW5nbGVGYWlsdXJlSW5CdWxrXCIpID8/IHRydWU7XG4gICAgICAgICAgY29uc3QgY29sbGVjdGVkUmVzdWx0czogYW55W10gPSBbXTtcbiAgICAgICAgICBjb25zdCBlcnJvcnM6IGFueVtdID0gW107XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNodW5rQXJncyBvZiBjaHVua0FyZ3NMaXN0KSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjaHVua1Jlc3VsdCA9IGF3YWl0IHRhcmdldC5hcHBseSh0aGlzQXJnLCBjaHVua0FyZ3MpO1xuICAgICAgICAgICAgICBtZXJnZVJlc3VsdChjaHVua1Jlc3VsdCwgY29sbGVjdGVkUmVzdWx0cyk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBpZiAoYnJlYWtPblNpbmdsZUZhaWx1cmUpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWZmZWN0aXZlQ2ZnLmRlbGF5TXMpIHtcbiAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZWZmZWN0aXZlQ2ZnLmRlbGF5TXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgbG9nLndhcm4oXG4gICAgICAgICAgICAgIGAke1N0cmluZyhwcm9wZXJ0eUtleSl9IHRocm90dGxlZCBleGVjdXRpb24gY29udGludWVkIHdpdGggJHtlcnJvcnMubGVuZ3RofSBmYWlsdXJlKHMpYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZSA9IG5ldyBBZ2dyZWdhdGVFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3JzLFxuICAgICAgICAgICAgICBgVGhyb3R0bGVkICR7U3RyaW5nKHByb3BlcnR5S2V5KX0gZmFpbGVkIGZvciAke2Vycm9ycy5sZW5ndGh9IGNodW5rKHMpYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChhZ2dyZWdhdGUgYXMgYW55KS5yZXN1bHRzID0gY29sbGVjdGVkUmVzdWx0cztcbiAgICAgICAgICAgIHRocm93IGFnZ3JlZ2F0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29sbGVjdGVkUmVzdWx0cztcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcHBseShcbiAgICAgIG1ldGhvZE1ldGFkYXRhKE1ldGFkYXRhLmtleShQZXJzaXN0ZW5jZUtleXMuVEhST1RUTEUsIHByb3BlcnR5S2V5KSwgY2ZnKSxcbiAgICAgIHRocm90dGxlRGVjXG4gICAgKSh0YXJnZXQsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJnSW5kZXgoYXJnSW5kZXg6IG51bWJlciB8IG51bWJlcltdKTogbnVtYmVyW10ge1xuICBjb25zdCBlbnRyaWVzID0gKEFycmF5LmlzQXJyYXkoYXJnSW5kZXgpID8gYXJnSW5kZXggOiBbYXJnSW5kZXhdKS5tYXAoXG4gICAgKGlkeCkgPT4ge1xuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaWR4KSB8fCBpZHggPCAwKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBcIkB0aHJvdHRsaW5nKCkgYXJndW1lbnQgaW5kZXhlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vyc1wiXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gaWR4O1xuICAgIH1cbiAgKTtcbiAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChlbnRyaWVzKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xufVxuXG5mdW5jdGlvbiBidWlsZENodW5rQm91bmRzKFxuICB0b3RhbDogbnVtYmVyLFxuICBhcnJheXM6IGFueVtdW10sXG4gIGNmZzogVGhyb3R0bGluZ0NvbmZpZ1xuKTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9W10ge1xuICBpZiAoXCJjb3VudFwiIGluIGNmZykge1xuICAgIGlmIChjZmcuY291bnQgPD0gMClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBcIkB0aHJvdHRsaW5nKCkgY29uZmlndXJhdGlvbiAnY291bnQnIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm9cIlxuICAgICAgKTtcbiAgICBjb25zdCBzcGFuczogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9W10gPSBbXTtcbiAgICBmb3IgKGxldCBzdGFydCA9IDA7IHN0YXJ0IDwgdG90YWw7IHN0YXJ0ICs9IGNmZy5jb3VudCkge1xuICAgICAgc3BhbnMucHVzaCh7XG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQ6IE1hdGgubWluKHRvdGFsLCBzdGFydCArIGNmZy5jb3VudCksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNwYW5zO1xuICB9XG5cbiAgaWYgKFwiYnVmZmVyU2l6ZVwiIGluIGNmZykge1xuICAgIGlmIChjZmcuYnVmZmVyU2l6ZSA8PSAwKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiQHRocm90dGxpbmcoKSBjb25maWd1cmF0aW9uICdidWZmZXJTaXplJyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvXCJcbiAgICAgICk7XG4gICAgY29uc3Qgc3BhbnM6IHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXIgfVtdID0gW107XG4gICAgbGV0IHN0YXJ0ID0gMDtcbiAgICBsZXQgc2l6ZSA9IDA7XG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgdG90YWw7IGlkeCsrKSB7XG4gICAgICBjb25zdCBlbnRyeVNpemUgPSBlc3RpbWF0ZUVudHJ5U2l6ZShhcnJheXMsIGlkeCk7XG4gICAgICBpZiAoc2l6ZSA+IDAgJiYgc2l6ZSArIGVudHJ5U2l6ZSA+IGNmZy5idWZmZXJTaXplKSB7XG4gICAgICAgIHNwYW5zLnB1c2goeyBzdGFydCwgZW5kOiBpZHggfSk7XG4gICAgICAgIHN0YXJ0ID0gaWR4O1xuICAgICAgICBzaXplID0gZW50cnlTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2l6ZSArPSBlbnRyeVNpemU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdGFydCA8IHRvdGFsIHx8ICFzcGFucy5sZW5ndGgpIHtcbiAgICAgIHNwYW5zLnB1c2goeyBzdGFydCwgZW5kOiB0b3RhbCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNwYW5zO1xuICB9XG5cbiAgcmV0dXJuIFt7IHN0YXJ0OiAwLCBlbmQ6IHRvdGFsIH1dO1xufVxuXG5mdW5jdGlvbiBlc3RpbWF0ZUVudHJ5U2l6ZShhcnJheXM6IGFueVtdW10sIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYXJyYXlzLnJlZHVjZSgoYWNjLCBhcnJheSkgPT4gYWNjICsgc2FmZUJ5dGVMZW5ndGgoYXJyYXlbaW5kZXhdKSwgMCk7XG59XG5cbmZ1bmN0aW9uIHNhZmVCeXRlTGVuZ3RoKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm4gMDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gQnVmZmVyLmJ5dGVMZW5ndGgoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VSZXN1bHQocmVzdWx0OiB1bmtub3duLCBjb2xsZWN0b3I6IGFueVtdKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICBjb2xsZWN0b3IucHVzaCguLi5yZXN1bHQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiByZXN1bHQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjb2xsZWN0b3IucHVzaChyZXN1bHQpO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEh0dHBWZXJicyA9IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiO1xuXG5leHBvcnQgdHlwZSBEZWNhZkFwaVByb3BlcnR5ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHR5cGU/OiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBEZWNhZk1vZGVsUm91dGUgPSB7XG4gIHBhdGg6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGFwaVByb3BlcnRpZXM6IERlY2FmQXBpUHJvcGVydHlbXTtcbiAgZ2V0UEs6ICguLi5hcmdzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSA9PiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBEZWNhZlBhcmFtUHJvcHMgPSB7XG4gIHJhdzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcbiAga2V5c0luT3JkZXI6IEFycmF5PHN0cmluZz47XG4gIHZhbHVlc0luT3JkZXI6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY2FmUm91dGVEZWNPcHRpb25zIHtcbiAgcGF0aDogc3RyaW5nO1xuICBodHRwTWV0aG9kOiBIdHRwVmVyYnM7XG4gIGhhbmRsZXI6IFByb3BlcnR5RGVzY3JpcHRvcjtcbn0iXX0=
@@ -6,7 +6,6 @@ exports.isOperationBlocked = isOperationBlocked;
6
6
  exports.normalizeImport = normalizeImport;
7
7
  exports.prefixMethod = prefixMethod;
8
8
  const db_decorators_1 = require("@decaf-ts/db-decorators");
9
- const db_decorators_2 = require("@decaf-ts/db-decorators");
10
9
  const decoration_1 = require("@decaf-ts/decoration");
11
10
  const errors_1 = require("./../persistence/errors.cjs");
12
11
  function injectableServiceKey(name) {
@@ -37,9 +36,27 @@ async function promiseSequence(tasks, continueOnError = false) {
37
36
  }
38
37
  return settled;
39
38
  }
40
- function isOperationBlocked(ModelConstructor, op) {
41
- const { handler, args } = (decoration_1.Metadata.get(ModelConstructor, db_decorators_2.OperationKeys.REFLECT + db_decorators_2.OperationKeys.BLOCK) || {});
42
- return !handler ? false : (handler(...args, op) ?? false);
39
+ const crudOperations = [
40
+ db_decorators_1.OperationKeys.CREATE,
41
+ db_decorators_1.OperationKeys.READ,
42
+ db_decorators_1.OperationKeys.UPDATE,
43
+ db_decorators_1.OperationKeys.DELETE,
44
+ ];
45
+ function isCrudOperation(value) {
46
+ return crudOperations.includes(value);
47
+ }
48
+ function isOperationBlocked(ModelConstructor, kindOrOperation, value) {
49
+ const metadata = (decoration_1.Metadata.get(ModelConstructor, db_decorators_1.OperationKeys.REFLECT + db_decorators_1.OperationKeys.BLOCK) || {});
50
+ if (!metadata?.handler)
51
+ return false;
52
+ const kind = value === undefined && isCrudOperation(kindOrOperation)
53
+ ? "crud"
54
+ : kindOrOperation;
55
+ const targetValue = value === undefined && isCrudOperation(kindOrOperation)
56
+ ? kindOrOperation
57
+ : value;
58
+ const storedTargets = (metadata.args?.[0] || []);
59
+ return metadata.handler(storedTargets, kind, targetValue) ?? false;
43
60
  }
44
61
  /**
45
62
  * @description Normalizes imports to handle both CommonJS and ESModule formats.
@@ -80,4 +97,4 @@ function prefixMethod(obj, after, prefix, afterName) {
80
97
  });
81
98
  obj[name] = wrapped;
82
99
  }
83
- //# sourceMappingURL=utils.js.map
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxvREFTQztBQVVELDBDQXFCQztBQXdCRCxnREErQkM7QUFjRCwwQ0FLQztBQUVELG9DQTBCQztBQXpKRCwyREFNaUM7QUFFakMscURBQTZEO0FBQzdELHdEQUEyRDtBQUUzRCxTQUFnQixvQkFBb0IsQ0FDbEMsSUFBbUM7SUFFbkMsSUFBSSxDQUFDLElBQUk7UUFBRSxNQUFNLElBQUksNkJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUTtRQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxxQkFBUSxDQUFDLE1BQU0sQ0FBQyxJQUE2QixDQUFDLENBQUM7YUFDNUQsUUFBUSxFQUFFO2FBQ1YsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBVU0sS0FBSyxVQUFVLGVBQWUsQ0FDbkMsS0FBMkIsRUFDM0IsZUFBZSxHQUFHLEtBQUs7SUFFdkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUN4QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQThCLEVBQUUsQ0FBQztJQUM5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxN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QUMsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNyQyxVQUFVLEVBQUUsSUFBSTtRQUNoQixZQUFZLEVBQUUsSUFBSTtRQUNsQixRQUFRLEVBQUUsS0FBSztRQUNmLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQyxDQUFDO0lBQ0gsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmxvY2tPcGVyYXRpb25EZXNjcmlwdG9yLFxuICBCbG9ja09wZXJhdGlvbktpbmQsXG4gIENydWRPcGVyYXRpb25zLFxuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB0eXBlIHsgTW9kZWxDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgTWlncmF0aW9uUnVsZUVycm9yIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2Vycm9yc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0YWJsZVNlcnZpY2VLZXkoXG4gIG5hbWU6IHN0cmluZyB8IHN5bWJvbCB8IENvbnN0cnVjdG9yXG4pOiBzdHJpbmcge1xuICBpZiAoIW5hbWUpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBObyBuYW1lIHByb3ZpZGVkYCk7XG4gIHJldHVybiB0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIlxuICAgID8gbmFtZS5yZXBsYWNlQWxsKFwiLlwiLCBcIi1cIilcbiAgICA6IE1ldGFkYXRhLlN5bWJvbChNZXRhZGF0YS5jb25zdHIobmFtZSBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT4pKVxuICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAucmVwbGFjZUFsbChcIi5cIiwgXCItXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZVNlcXVlbmNlPFQ+KFxuICB0YXNrczogKCgpID0+IFByb21pc2U8VD4pW10sXG4gIGNvbnRpbnVlT25FcnJvcj86IGZhbHNlXG4pOiBQcm9taXNlPFRbXT47XG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZVNlcXVlbmNlPFQ+KFxuICB0YXNrczogKCgpID0+IFByb21pc2U8VD4pW10sXG4gIGNvbnRpbnVlT25FcnJvcjogdHJ1ZVxuKTogUHJvbWlzZTxQcm9taXNlU2V0dGxlZFJlc3VsdDxUPltdPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9taXNlU2VxdWVuY2U8VD4oXG4gIHRhc2tzOiAoKCkgPT4gUHJvbWlzZTxUPilbXSxcbiAgY29udGludWVPbkVycm9yID0gZmFsc2Vcbik6IFByb21pc2U8VFtdIHwgUHJvbWlzZVNldHRsZWRSZXN1bHQ8VD5bXT4ge1xuICBpZiAoIWNvbnRpbnVlT25FcnJvcikge1xuICAgIGNvbnN0IHJlc3VsdHM6IFRbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgcmVzdWx0cy5wdXNoKGF3YWl0IHRhc2soKSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xuICB9XG5cbiAgY29uc3Qgc2V0dGxlZDogUHJvbWlzZVNldHRsZWRSZXN1bHQ8VD5bXSA9IFtdO1xuICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICB0cnkge1xuICAgICAgc2V0dGxlZC5wdXNoKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogYXdhaXQgdGFzaygpIH0pO1xuICAgIH0gY2F0Y2ggKHJlYXNvbikge1xuICAgICAgc2V0dGxlZC5wdXNoKHsgc3RhdHVzOiBcInJlamVjdGVkXCIsIHJlYXNvbiB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNldHRsZWQ7XG59XG5cbmNvbnN0IGNydWRPcGVyYXRpb25zOiBDcnVkT3BlcmF0aW9uc1tdID0gW1xuICBPcGVyYXRpb25LZXlzLkNSRUFURSxcbiAgT3BlcmF0aW9uS2V5cy5SRUFELFxuICBPcGVyYXRpb25LZXlzLlVQREFURSxcbiAgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG5dO1xuXG5mdW5jdGlvbiBpc0NydWRPcGVyYXRpb24odmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIENydWRPcGVyYXRpb25zIHtcbiAgcmV0dXJuIGNydWRPcGVyYXRpb25zLmluY2x1ZGVzKHZhbHVlIGFzIENydWRPcGVyYXRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT3BlcmF0aW9uQmxvY2tlZChcbiAgTW9kZWxDb25zdHJ1Y3RvcjogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBvcDogQ3J1ZE9wZXJhdGlvbnNcbik6IGJvb2xlYW47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09wZXJhdGlvbkJsb2NrZWQoXG4gIE1vZGVsQ29uc3RydWN0b3I6IE1vZGVsQ29uc3RydWN0b3I8YW55PixcbiAga2luZDogQmxvY2tPcGVyYXRpb25LaW5kLFxuICB2YWx1ZTogc3RyaW5nXG4pOiBib29sZWFuO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPcGVyYXRpb25CbG9ja2VkKFxuICBNb2RlbENvbnN0cnVjdG9yOiBNb2RlbENvbnN0cnVjdG9yPGFueT4sXG4gIGtpbmRPck9wZXJhdGlvbjogQ3J1ZE9wZXJhdGlvbnMgfCBCbG9ja09wZXJhdGlvbktpbmQsXG4gIHZhbHVlPzogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgY29uc3QgbWV0YWRhdGEgPSAoTWV0YWRhdGEuZ2V0KFxuICAgIE1vZGVsQ29uc3RydWN0b3IgYXMgYW55LFxuICAgIE9wZXJhdGlvbktleXMuUkVGTEVDVCArIE9wZXJhdGlvbktleXMuQkxPQ0tcbiAgKSB8fCB7fSkgYXMge1xuICAgIGhhbmRsZXI/OiAoXG4gICAgICB0YXJnZXRzOiBhbnlbXSwgLy8ga2VlcCBmbGV4aWJsZSBmb3IgaGFuZGxlciB3cmFwcGVyc1xuICAgICAga2luZDogQmxvY2tPcGVyYXRpb25LaW5kLFxuICAgICAgdmFsdWU6IHN0cmluZ1xuICAgICkgPT4gYm9vbGVhbjtcbiAgICBhcmdzOiBhbnlbXTtcbiAgfTtcblxuICBpZiAoIW1ldGFkYXRhPy5oYW5kbGVyKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3Qga2luZCA9XG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCAmJiBpc0NydWRPcGVyYXRpb24oa2luZE9yT3BlcmF0aW9uKVxuICAgICAgPyAoXCJjcnVkXCIgYXMgQmxvY2tPcGVyYXRpb25LaW5kKVxuICAgICAgOiAoa2luZE9yT3BlcmF0aW9uIGFzIEJsb2NrT3BlcmF0aW9uS2luZCk7XG5cbiAgY29uc3QgdGFyZ2V0VmFsdWUgPVxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgJiYgaXNDcnVkT3BlcmF0aW9uKGtpbmRPck9wZXJhdGlvbilcbiAgICAgID8gKGtpbmRPck9wZXJhdGlvbiBhcyBzdHJpbmcpXG4gICAgICA6ICh2YWx1ZSBhcyBzdHJpbmcpO1xuXG4gIGNvbnN0IHN0b3JlZFRhcmdldHMgPSAobWV0YWRhdGEuYXJncz8uWzBdIHx8IFtdKSBhcyBCbG9ja09wZXJhdGlvbkRlc2NyaXB0b3JbXTtcbiAgcmV0dXJuIG1ldGFkYXRhLmhhbmRsZXIoc3RvcmVkVGFyZ2V0cywga2luZCwgdGFyZ2V0VmFsdWUpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBOb3JtYWxpemVzIGltcG9ydHMgdG8gaGFuZGxlIGJvdGggQ29tbW9uSlMgYW5kIEVTTW9kdWxlIGZvcm1hdHMuXG4gKiBAc3VtbWFyeSBVdGlsaXR5IGZ1bmN0aW9uIHRvIGhhbmRsZSBtb2R1bGUgaW1wb3J0IGRpZmZlcmVuY2VzIGJldHdlZW4gZm9ybWF0cy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFR5cGUgb2YgdGhlIGltcG9ydGVkIG1vZHVsZS5cbiAqIEBwYXJhbSB7UHJvbWlzZTxUPn0gaW1wb3J0UHJvbWlzZSAtIFByb21pc2UgcmV0dXJuZWQgYnkgZHluYW1pYyBpbXBvcnQuXG4gKiBAcmV0dXJuIHtQcm9taXNlPFQ+fSBOb3JtYWxpemVkIG1vZHVsZS5cbiAqXG4gKiBAZnVuY3Rpb24gbm9ybWFsaXplSW1wb3J0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpjb3JlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub3JtYWxpemVJbXBvcnQ8VD4oXG4gIGltcG9ydFByb21pc2U6IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICAvLyBDb21tb25KUydzIGBtb2R1bGUuZXhwb3J0c2AgaXMgd3JhcHBlZCBhcyBgZGVmYXVsdGAgaW4gRVNNb2R1bGUuXG4gIHJldHVybiBpbXBvcnRQcm9taXNlLnRoZW4oKG06IGFueSkgPT4gKG0uZGVmYXVsdCB8fCBtKSBhcyBUKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE1ldGhvZChcbiAgb2JqOiBhbnksXG4gIGFmdGVyOiAoLi4uYXJnczogYW55W10pID0+IGFueSxcbiAgcHJlZml4OiAoLi4uYXJnczogYW55W10pID0+IGFueSxcbiAgYWZ0ZXJOYW1lPzogc3RyaW5nXG4pIHtcbiAgYXN5bmMgZnVuY3Rpb24gd3JhcHBlcih0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbGV0IHJlc3VsdHM6IGFueVtdO1xuICAgIHRyeSB7XG4gICAgICByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHByZWZpeC5jYWxsKHRoaXMsIC4uLmFyZ3MpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE1pZ3JhdGlvblJ1bGVFcnJvcikgcmV0dXJuO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShhZnRlci5hcHBseSh0aGlzLCByZXN1bHRzKSk7XG4gIH1cblxuICBjb25zdCB3cmFwcGVkID0gd3JhcHBlci5iaW5kKG9iaik7XG4gIGNvbnN0IG5hbWUgPSBhZnRlck5hbWUgPyBhZnRlck5hbWUgOiBhZnRlci5uYW1lO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlZCwgXCJuYW1lXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IG5hbWUsXG4gIH0pO1xuICBvYmpbbmFtZV0gPSB3cmFwcGVkO1xufVxuIl19
@@ -1,10 +1,11 @@
1
- import { CrudOperations } from "@decaf-ts/db-decorators";
1
+ import { BlockOperationKind, CrudOperations } from "@decaf-ts/db-decorators";
2
2
  import type { ModelConstructor } from "@decaf-ts/decorator-validation";
3
3
  import { Constructor } from "@decaf-ts/decoration";
4
4
  export declare function injectableServiceKey(name: string | symbol | Constructor): string;
5
5
  export declare function promiseSequence<T>(tasks: (() => Promise<T>)[], continueOnError?: false): Promise<T[]>;
6
6
  export declare function promiseSequence<T>(tasks: (() => Promise<T>)[], continueOnError: true): Promise<PromiseSettledResult<T>[]>;
7
7
  export declare function isOperationBlocked(ModelConstructor: ModelConstructor<any>, op: CrudOperations): boolean;
8
+ export declare function isOperationBlocked(ModelConstructor: ModelConstructor<any>, kind: BlockOperationKind, value: string): boolean;
8
9
  /**
9
10
  * @description Normalizes imports to handle both CommonJS and ESModule formats.
10
11
  * @summary Utility function to handle module import differences between formats.
@@ -71,6 +71,9 @@ class TaskEngine extends tasks_1.TaskEngine {
71
71
  }
72
72
  const configuredImports = this.workerPoolConfig?.modules?.imports ??
73
73
  WorkThreadEnvironment_1.DefaultWorkThreadEnvironment.modules.imports;
74
+ if (!Array.isArray(configuredImports)) {
75
+ throw new db_decorators_1.InternalError("Worker pool modules.imports must be a string[]");
76
+ }
74
77
  const imports = [];
75
78
  const append = (specifier) => {
76
79
  if (!specifier)
@@ -80,6 +83,9 @@ class TaskEngine extends tasks_1.TaskEngine {
80
83
  };
81
84
  append(adapterDescriptor.adapterModule);
82
85
  for (const specifier of configuredImports) {
86
+ if (typeof specifier !== "string") {
87
+ throw new db_decorators_1.InternalError("Worker pool modules.imports must contain only strings");
88
+ }
83
89
  if (specifier === adapterDescriptor.adapterModule)
84
90
  continue;
85
91
  append(specifier);
@@ -384,14 +390,19 @@ class TaskEngine extends tasks_1.TaskEngine {
384
390
  }
385
391
  async executeClaimed(task) {
386
392
  const { ctx, log } = (await this.logCtx([], task.classification, true)).for(this.executeClaimed);
393
+ const engine = this;
387
394
  const taskCtx = TaskEngine.createTaskContext(ctx, {
388
395
  taskId: task.id,
389
396
  logger: new tasks_1.TaskLogger(log, this.config.streamBufferSize, this.config.maxLoggingBuffer),
390
397
  attempt: task.attempt,
391
398
  resultCache: {},
392
- pipe: async (data) => {
393
- const [, logs] = await this.appendLog(taskCtx, task, data);
394
- await this.emitLog(taskCtx, task.id, logs);
399
+ pipe: async function (...args) {
400
+ const normalized = engine.normalizePipeArgs(args);
401
+ if (!normalized.length)
402
+ return;
403
+ const [updated, logs] = await engine.appendLog(this, task, normalized);
404
+ Object.assign(task, updated);
405
+ await engine.emitLog(this, task.id, logs);
395
406
  },
396
407
  flush: async () => {
397
408
  await taskCtx.logger.flush(taskCtx.pipe);
@@ -501,4 +512,4 @@ class TaskEngine extends tasks_1.TaskEngine {
501
512
  }
502
513
  }
503
514
  exports.TaskEngine = TaskEngine;
504
- //# sourceMappingURL=TaskEngine.js.map
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza0VuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXJzL1Rhc2tFbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXdDO0FBR3hDLCtDQUE2QztBQUU3QywyREFBd0Q7QUFFeEQsc0RBQTZEO0FBRTdELHVFQUlpQztBQVFqQyxnREFXa0I7QUFPbEIsOEVBQXFFO0FBRXJFLE1BQWEsVUFBa0QsU0FBUSxrQkFHdEU7SUFRQyxJQUF1QixPQUFPO1FBQzVCLE9BQU8sbUJBQW1ELENBQUM7SUFDN0QsQ0FBQztJQUVELFlBQVksTUFBMkI7UUFDckMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBWE4sa0JBQWEsR0FBdUIsRUFBRSxDQUFDO1FBQ3ZDLG1CQUFjLEdBQXFCLEVBQUUsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBUWpDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksNkJBQWEsQ0FDckIsbUVBQW1FLENBQ3BFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN6QjtZQUNFLGlCQUFpQixFQUFFLENBQUM7U0FDckIsRUFDRCwrQkFBdUIsRUFDdkIsTUFBTSxFQUNOO1lBQ0UsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxvQkFBWSxFQUFFO1lBQ3JDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksMkJBQW1CLEVBQUU7U0FDdkQsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENB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QUFFLElBQUksQ0FBQyxXQUFXO2lCQUM5QixDQUNGLENBQUM7Z0JBQ0YsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUNuQixPQUFPLEVBQ1AsSUFBSSxFQUNKLGtCQUFVLENBQUMsTUFBTSxFQUNqQixVQUFVLEVBQ1YsR0FBRyxDQUNKLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXptQkQsZ0NBeW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtlciB9IGZyb20gXCJ3b3JrZXJfdGhyZWFkc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZS9BZGFwdGVyXCI7XG5pbXBvcnQgeyBDb250ZXh0T2YgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2UvdHlwZXNcIjtcbmltcG9ydCB7IExvZ0xldmVsIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBNYXliZUNvbnRleHR1YWxBcmcgfSBmcm9tIFwiLi4vdXRpbHMvQ29udGV4dHVhbExvZ2dlZENsYXNzXCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VLZXlzLCBVVUlEIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2luZGV4XCI7XG5cbmltcG9ydCB7XG4gIFdvcmtUaHJlYWRFbnZpcm9ubWVudFNoYXBlLFxuICBEZWZhdWx0V29ya1RocmVhZEVudmlyb25tZW50LFxuICBXb3JrVGhyZWFkTW9kdWxlc0NvbmZpZyxcbn0gZnJvbSBcIi4vV29ya1RocmVhZEVudmlyb25tZW50XCI7XG5pbXBvcnQge1xuICBNYWluVG9Xb3JrZXJNZXNzYWdlLFxuICBXb3JrZXJKb2JQYXlsb2FkLFxuICBXb3JrZXJMb2dFbnRyeSxcbiAgV29ya2VyVG9NYWluTWVzc2FnZSxcbn0gZnJvbSBcIi4vbWVzc2FnZXNcIjtcbmltcG9ydCB7IFRhc2tNb2RlbCB9IGZyb20gXCIuLi90YXNrcy9tb2RlbHMvVGFza01vZGVsXCI7XG5pbXBvcnQge1xuICBUYXNrQ29udGV4dCxcbiAgVGFza0VuZ2luZSBhcyBURSxcbiAgRGVmYXVsdFRhc2tFbmdpbmVDb25maWcsXG4gIFRhc2tFdmVudEJ1cyxcbiAgVGFza0hhbmRsZXJSZWdpc3RyeSxcbiAgVGFza1N0YXR1cyxcbiAgVGFza0xvZ2dlcixcbiAgVGFza1R5cGUsXG4gIHNlcmlhbGl6ZUVycm9yLFxuICBjb21wdXRlQmFja29mZk1zLFxufSBmcm9tIFwiLi4vdGFza3NcIjtcbmltcG9ydCB7XG4gIFRhc2tFbmdpbmVDb25maWcsXG4gIFRhc2tXb3JrZXJUaHJlYWQsXG4gIFdvcmtlckpvYlN0YXRlLFxuICBXb3JrVGhyZWFkUG9vbENvbmZpZyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IFRhc2tTdGF0ZUNoYW5nZUVycm9yIH0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tTdGF0ZUNoYW5nZUVycm9yXCI7XG5cbmV4cG9ydCBjbGFzcyBUYXNrRW5naW5lPEEgZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+IGV4dGVuZHMgVEU8XG4gIEEsXG4gIFRhc2tFbmdpbmVDb25maWc8QT5cbj4ge1xuICBwcm90ZWN0ZWQgd29ya2VyUG9vbENvbmZpZz86IFdvcmtUaHJlYWRQb29sQ29uZmlnO1xuICBwcm90ZWN0ZWQgd29ya2VyVGhyZWFkczogVGFza1dvcmtlclRocmVhZFtdID0gW107XG4gIHByb3RlY3RlZCB3b3JrZXJKb2JRdWV1ZTogV29ya2VySm9iU3RhdGVbXSA9IFtdO1xuICBwcm90ZWN0ZWQgd29ya2VySm9icyA9IG5ldyBNYXA8c3RyaW5nLCBXb3JrZXJKb2JTdGF0ZT4oKTtcbiAgcHJvdGVjdGVkIHdvcmtlckNvdW50ZXIgPSAwO1xuICBwcm90ZWN0ZWQgd29ya2VyVGhyZWFkQ2FwYWNpdHkgPSAxO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgQ29udGV4dCgpOiBDb25zdHJ1Y3RvcjxDb250ZXh0T2Y8QT4+IHtcbiAgICByZXR1cm4gVGFza0NvbnRleHQgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3RvcjxDb250ZXh0T2Y8QT4+O1xuICB9XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBUYXNrRW5naW5lQ29uZmlnPEE+KSB7XG4gICAgc3VwZXIoY29uZmlnKTtcbiAgICBpZiAoY29uZmlnLndvcmtlclBvb2wgJiYgIWNvbmZpZy53b3JrZXJBZGFwdGVyKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJXb3JrZXIgcG9vbCByZXF1aXJlcyB3b3JrZXJBZGFwdGVyIGRlc2NyaXB0b3IgaW4gVGFza0VuZ2luZUNvbmZpZ1wiXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHdvcmtlckNvbmN1cnJlbmN5OiAxLFxuICAgICAgfSxcbiAgICAgIERlZmF1bHRUYXNrRW5naW5lQ29uZmlnLFxuICAgICAgY29uZmlnLFxuICAgICAge1xuICAgICAgICBidXM6IGNvbmZpZy5idXMgfHwgbmV3IFRhc2tFdmVudEJ1cygpLFxuICAgICAgICByZWdpc3RyeTogY29uZmlnLnJlZ2lzdHJ5IHx8IG5ldyBUYXNrSGFuZGxlclJlZ2lzdHJ5KCksXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLndvcmtlclRocmVhZENhcGFjaXR5ID0gTWF0aC5tYXgoMSwgdGhpcy5jb25maWcud29ya2VyQ29uY3VycmVuY3kgPz8gMSk7XG4gICAgdGhpcy53b3JrZXJQb29sQ29uZmlnID0gdGhpcy5ub3JtYWxpemVXb3JrZXJQb29sQ29uZmlnKFxuICAgICAgdGhpcy5jb25maWcud29ya2VyUG9vbFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVdvcmtlclBvb2xDb25maWcoXG4gICAgcG9vbD86IFdvcmtUaHJlYWRQb29sQ29uZmlnXG4gICk6IFdvcmtUaHJlYWRQb29sQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXBvb2wpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCFwb29sLmVudHJ5KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJXb3JrZXIgcG9vbCBjb25maWd1cmF0aW9uIHJlcXVpcmVzIGFuIGV4cGxpY2l0IGVudHJ5IGZpbGUgcGF0aFwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocG9vbC5zaXplICE9IG51bGwgJiYgcG9vbC5zaXplICE9PSB0aGlzLmNvbmZpZy5jb25jdXJyZW5jeSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiVGFza0VuZ2luZSBjb25jdXJyZW5jeSBtdXN0IG1hdGNoIHdvcmtlclBvb2wuc2l6ZSB3aGVuIHdvcmtlciBwb29sIGlzIGVuYWJsZWRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHBvb2wsIHtcbiAgICAgIHNpemU6IHRoaXMuY29uZmlnLmNvbmN1cnJlbmN5LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNXb3JrZXJQb29sKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMud29ya2VyUG9vbENvbmZpZyAmJiAodGhpcy53b3JrZXJQb29sQ29uZmlnLnNpemUgPz8gMCkgPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXb3JrZXJDb3VudCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy53b3JrZXJQb29sQ29uZmlnKSByZXR1cm4gMDtcbiAgICByZXR1cm4gdGhpcy53b3JrZXJQb29sQ29uZmlnLnNpemUgPz8gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V29ya2VyRXhlY3V0aW9uU2xvdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRXb3JrZXJDb3VudCgpICogdGhpcy53b3JrZXJUaHJlYWRDYXBhY2l0eTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuRGlzcGF0Y2hUb1dvcmtlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaGFzV29ya2VyUG9vbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeGVjdXRpb25Db25jdXJyZW5jeSgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmhhc1dvcmtlclBvb2woKSkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KDEsIHRoaXMuZ2V0V29ya2VyRXhlY3V0aW9uU2xvdHMoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb25jdXJyZW5jeTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZVdvcmtlck1vZHVsZXMoKTogV29ya1RocmVhZE1vZHVsZXNDb25maWcge1xuICAgIGNvbnN0IGFkYXB0ZXJEZXNjcmlwdG9yID1cbiAgICAgIHRoaXMuY29uZmlnLndvcmtlckFkYXB0ZXIgPz8gRGVmYXVsdFdvcmtUaHJlYWRFbnZpcm9ubWVudC5wZXJzaXN0ZW5jZTtcbiAgICBpZiAoIWFkYXB0ZXJEZXNjcmlwdG9yPy5hZGFwdGVyTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgXCJXb3JrZXIgYWRhcHRlciBkZXNjcmlwdG9yIG11c3QgaW5jbHVkZSBhZGFwdGVyTW9kdWxlXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ3VyZWRJbXBvcnRzID1cbiAgICAgIHRoaXMud29ya2VyUG9vbENvbmZpZz8ubW9kdWxlcz8uaW1wb3J0cyA/P1xuICAgICAgRGVmYXVsdFdvcmtUaHJlYWRFbnZpcm9ubWVudC5tb2R1bGVzLmltcG9ydHM7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZ3VyZWRJbXBvcnRzKSkge1xuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiV29ya2VyIHBvb2wgbW9kdWxlcy5pbXBvcnRzIG11c3QgYmUgYSBzdHJpbmdbXVwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGFwcGVuZCA9IChzcGVjaWZpZXI/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICghc3BlY2lmaWVyKSByZXR1cm47XG4gICAgICBpZiAoIWltcG9ydHMuaW5jbHVkZXMoc3BlY2lmaWVyKSkgaW1wb3J0cy5wdXNoKHNwZWNpZmllcik7XG4gICAgfTtcbiAgICBhcHBlbmQoYWRhcHRlckRlc2NyaXB0b3IuYWRhcHRlck1vZHVsZSk7XG4gICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgY29uZmlndXJlZEltcG9ydHMpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3BlY2lmaWVyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIFwiV29ya2VyIHBvb2wgbW9kdWxlcy5pbXBvcnRzIG11c3QgY29udGFpbiBvbmx5IHN0cmluZ3NcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHNwZWNpZmllciA9PT0gYWRhcHRlckRlc2NyaXB0b3IuYWRhcHRlck1vZHVsZSkgY29udGludWU7XG4gICAgICBhcHBlbmQoc3BlY2lmaWVyKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgYWRhcHRlckRlc2NyaXB0b3IubW9kdWxlcz8uaW1wb3J0cyA/PyBbXSkge1xuICAgICAgYXBwZW5kKHNwZWNpZmllcik7XG4gICAgfVxuICAgIHJldHVybiB7IGltcG9ydHMgfTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHN0YXJ0KC4uLmFyZ3M6IE1heWJlQ29udGV4dHVhbEFyZzxhbnk+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInJ1blwiLCB0cnVlKSkuZm9yKHRoaXMuc3RhcnQpO1xuICAgIGF3YWl0IHRoaXMubG9jay5hY3F1aXJlKCk7XG4gICAgaWYgKHRoaXMucnVubmluZykge1xuICAgICAgdGhpcy5sb2NrLnJlbGVhc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5ydW5uaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmxvY2sucmVsZWFzZSgpO1xuICAgIGF3YWl0IHRoaXMuc3Bhd25Xb3JrZXJzKCk7XG4gICAgdm9pZCB0aGlzLmxvb3AoY3R4KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIHN0b3AoLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChcbiAgICAgIGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIFBlcnNpc3RlbmNlS2V5cy5TSFVURE9XTiwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLnN0b3ApO1xuICAgIGF3YWl0IHN1cGVyLnN0b3AoLi4uY3R4QXJncyk7XG4gICAgYXdhaXQgdGhpcy5zaHV0ZG93bldvcmtlcnMoKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gV29ya2VyIHBvb2wgb3JjaGVzdHJhdGlvblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNwYXduV29ya2VycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaGFzV29ya2VyUG9vbCgpKSByZXR1cm47XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5nZXRXb3JrZXJDb3VudCgpO1xuICAgIGNvbnN0IGNyZWF0aW9uczogUHJvbWlzZTx2b2lkPltdID0gW107XG4gICAgd2hpbGUgKHRoaXMud29ya2VyVGhyZWFkcy5sZW5ndGggPCB0YXJnZXQpIHtcbiAgICAgIGNvbnN0IHJlYWR5ID0gdGhpcy5jcmVhdGVXb3JrZXIoKTtcbiAgICAgIGlmIChyZWFkeSkgY3JlYXRpb25zLnB1c2gocmVhZHkpO1xuICAgIH1cbiAgICBpZiAoY3JlYXRpb25zLmxlbmd0aCkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoY3JlYXRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlV29ya2VyKCk6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy53b3JrZXJQb29sQ29uZmlnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGxldCByZXNvbHZlUmVhZHkhOiAoKSA9PiB2b2lkO1xuICAgIGxldCByZWplY3RSZWFkeSE6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG4gICAgY29uc3QgcmVhZHlQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZVJlYWR5ID0gcmVzb2x2ZTtcbiAgICAgIHJlamVjdFJlYWR5ID0gcmVqZWN0O1xuICAgIH0pO1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy53b3JrZXJQb29sQ29uZmlnLmVudHJ5O1xuICAgIGNvbnN0IHdvcmtlcklkID0gYCR7dGhpcy5jb25maWcud29ya2VySWR9LSR7dGhpcy53b3JrZXJDb3VudGVyKyt9YDtcbiAgICBjb25zdCBlbnY6IFdvcmtUaHJlYWRFbnZpcm9ubWVudFNoYXBlID0ge1xuICAgICAgd29ya2VySWQsXG4gICAgICBtb2RlOiB0aGlzLndvcmtlclBvb2xDb25maWcubW9kZSA/PyBcIm5vZGVcIixcbiAgICAgIHBlcnNpc3RlbmNlOiBPYmplY3QuYXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgdGhpcy5jb25maWcud29ya2VyQWRhcHRlciA/PyBEZWZhdWx0V29ya1RocmVhZEVudmlyb25tZW50LnBlcnNpc3RlbmNlLFxuICAgICAgICB7XG4gICAgICAgICAgYWxpYXM6IHRoaXMuYWRhcHRlci5hbGlhcyxcbiAgICAgICAgICBmbGF2b3VyOiB0aGlzLmFkYXB0ZXIuZmxhdm91cixcbiAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIHRhc2tFbmdpbmU6IHtcbiAgICAgICAgY29uY3VycmVuY3k6IHRoaXMud29ya2VyVGhyZWFkQ2FwYWNpdHksXG4gICAgICAgIGxlYXNlTXM6IHRoaXMuY29uZmlnLmxlYXNlTXMsXG4gICAgICAgIHBvbGxNc0J1c3k6IHRoaXMuY29uZmlnLnBvbGxNc0J1c3ksXG4gICAgICAgIHBvbGxNc0lkbGU6IHRoaXMuY29uZmlnLnBvbGxNc0lkbGUsXG4gICAgICAgIGxvZ1RhaWxNYXg6IHRoaXMuY29uZmlnLmxvZ1RhaWxNYXgsXG4gICAgICAgIHN0cmVhbUJ1ZmZlclNpemU6IHRoaXMuY29uZmlnLnN0cmVhbUJ1ZmZlclNpemUsXG4gICAgICAgIG1heExvZ2dpbmdCdWZmZXI6IHRoaXMuY29uZmlnLm1heExvZ2dpbmdCdWZmZXIsXG4gICAgICAgIGxvZ2dpbmdCdWZmZXJUcnVuY2F0aW9uOiB0aGlzLmNvbmZpZy5sb2dnaW5nQnVmZmVyVHJ1bmNhdGlvbixcbiAgICAgICAgZ3JhY2VmdWxTaHV0ZG93bk1zVGltZW91dDogdGhpcy5jb25maWcuZ3JhY2VmdWxTaHV0ZG93bk1zVGltZW91dCxcbiAgICAgICAgYXV0b1NodXRkb3duOiB0aGlzLmNvbmZpZy5hdXRvU2h1dGRvd24sXG4gICAgICB9LFxuICAgICAgbW9kdWxlczogdGhpcy5jb21wdXRlV29ya2VyTW9kdWxlcygpLFxuICAgIH07XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihlbnRyeSwge1xuICAgICAgd29ya2VyRGF0YTogeyBlbnZpcm9ubWVudDogZW52IH0sXG4gICAgfSk7XG4gICAgY29uc3Qgc3RhdGU6IFRhc2tXb3JrZXJUaHJlYWQgPSB7XG4gICAgICBpZDogd29ya2VySWQsXG4gICAgICB3b3JrZXIsXG4gICAgICByZWFkeTogZmFsc2UsXG4gICAgICBhY3RpdmVKb2JzOiAwLFxuICAgICAgY2FwYWNpdHk6IHRoaXMud29ya2VyVGhyZWFkQ2FwYWNpdHksXG4gICAgICByZWFkeVByb21pc2UsXG4gICAgICByZXNvbHZlUmVhZHksXG4gICAgICByZWplY3RSZWFkeSxcbiAgICB9O1xuICAgIHRoaXMud29ya2VyVGhyZWFkcy5wdXNoKHN0YXRlKTtcbiAgICB3b3JrZXIub24oXCJtZXNzYWdlXCIsIChtc2c6IFdvcmtlclRvTWFpbk1lc3NhZ2UpID0+XG4gICAgICB0aGlzLmhhbmRsZVdvcmtlck1lc3NhZ2Uoc3RhdGUsIG1zZylcbiAgICApO1xuICAgIHdvcmtlci5vbihcImVycm9yXCIsIChlcnI6IEVycm9yKSA9PiB0aGlzLmhhbmRsZVdvcmtlckVycm9yKHN0YXRlLCBlcnIpKTtcbiAgICB3b3JrZXIub24oXCJleGl0XCIsIChjb2RlKSA9PiB0aGlzLmhhbmRsZVdvcmtlckV4aXQoc3RhdGUsIGNvZGUpKTtcbiAgICByZXR1cm4gcmVhZHlQcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaHV0ZG93bldvcmtlcnMoKSB7XG4gICAgZm9yIChjb25zdCBzdGF0ZSBvZiB0aGlzLndvcmtlclRocmVhZHMuc3BsaWNlKDApKSB7XG4gICAgICBjb25zdCBtZXNzYWdlOiBNYWluVG9Xb3JrZXJNZXNzYWdlID0ge1xuICAgICAgICB0eXBlOiBcImNvbnRyb2xcIixcbiAgICAgICAgY29tbWFuZDogXCJzaHV0ZG93blwiLFxuICAgICAgfTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0YXRlLndvcmtlci5wb3N0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICAgIH1cbiAgICAgIGF3YWl0IHN0YXRlLndvcmtlci50ZXJtaW5hdGUoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBqb2Igb2YgdGhpcy53b3JrZXJKb2JRdWV1ZS5zcGxpY2UoMCkpIHtcbiAgICAgIGpvYi5yZWplY3QoXG4gICAgICAgIG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICAgIGBXb3JrZXIgcG9vbCBzaHV0dGluZyBkb3duIGJlZm9yZSBqb2IgJHtqb2IuaWR9IGNvdWxkIHN0YXJ0YFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGpvYiBvZiB0aGlzLndvcmtlckpvYnMudmFsdWVzKCkpIHtcbiAgICAgIGpvYi5yZWplY3QoXG4gICAgICAgIG5ldyBJbnRlcm5hbEVycm9yKGBXb3JrZXIgdGVybWluYXRlZCBiZWZvcmUgZmluaXNoaW5nIGpvYiAke2pvYi5pZH1gKVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy53b3JrZXJKb2JzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVdvcmtlckVycm9yKHN0YXRlOiBUYXNrV29ya2VyVGhyZWFkLCBlcnI6IEVycm9yKSB7XG4gICAgdGhpcy5sb2cuZXJyb3IoYHdvcmtlciAke3N0YXRlLmlkfSBlcnJvcjogJHtlcnIubWVzc2FnZX1gLCBlcnIpO1xuICAgIGlmIChzdGF0ZS5yZWplY3RSZWFkeSkge1xuICAgICAgc3RhdGUucmVqZWN0UmVhZHkoZXJyKTtcbiAgICAgIHN0YXRlLnJlc29sdmVSZWFkeSA9IHVuZGVmaW5lZDtcbiAgICAgIHN0YXRlLnJlamVjdFJlYWR5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlV29ya2VyRXhpdChzdGF0ZTogVGFza1dvcmtlclRocmVhZCwgY29kZTogbnVtYmVyIHwgbnVsbCkge1xuICAgIHRoaXMubG9nLmluZm8oYHdvcmtlciAke3N0YXRlLmlkfSBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKTtcbiAgICBpZiAoc3RhdGUucmVqZWN0UmVhZHkpIHtcbiAgICAgIHN0YXRlLnJlamVjdFJlYWR5KFxuICAgICAgICBuZXcgRXJyb3IoYHdvcmtlciAke3N0YXRlLmlkfSBleGl0ZWQgYmVmb3JlIHJlcG9ydGluZyByZWFkeWApXG4gICAgICApO1xuICAgICAgc3RhdGUucmVzb2x2ZVJlYWR5ID0gdW5kZWZpbmVkO1xuICAgICAgc3RhdGUucmVqZWN0UmVhZHkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGlkeCA9IHRoaXMud29ya2VyVGhyZWFkcy5pbmRleE9mKHN0YXRlKTtcbiAgICBpZiAoaWR4ID49IDApIHRoaXMud29ya2VyVGhyZWFkcy5zcGxpY2UoaWR4LCAxKTtcbiAgICBmb3IgKGNvbnN0IFtqb2JJZCwgam9iXSBvZiB0aGlzLndvcmtlckpvYnMuZW50cmllcygpKSB7XG4gICAgICBpZiAoam9iLndvcmtlciA9PT0gc3RhdGUpIHtcbiAgICAgICAgam9iLndvcmtlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53b3JrZXJKb2JzLmRlbGV0ZShqb2JJZCk7XG4gICAgICAgIHRoaXMud29ya2VySm9iUXVldWUudW5zaGlmdChqb2IpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5ydW5uaW5nKSB7XG4gICAgICB2b2lkIHRoaXMuc3Bhd25Xb3JrZXJzKCkuY2F0Y2goKGVycikgPT5cbiAgICAgICAgdGhpcy5sb2cuZXJyb3IoYGZhaWxlZCB0byByZXNwYXduIHdvcmtlcmAsIGVycilcbiAgICAgICk7XG4gICAgICB0aGlzLnByb2Nlc3NXb3JrZXJRdWV1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlV29ya2VyTWVzc2FnZShcbiAgICBzdGF0ZTogVGFza1dvcmtlclRocmVhZCxcbiAgICBtc2c6IFdvcmtlclRvTWFpbk1lc3NhZ2VcbiAgKSB7XG4gICAgaWYgKG1zZy50eXBlID09PSBcInJlYWR5XCIpIHtcbiAgICAgIHN0YXRlLnJlYWR5ID0gdHJ1ZTtcbiAgICAgIGlmIChzdGF0ZS5yZXNvbHZlUmVhZHkpIHtcbiAgICAgICAgc3RhdGUucmVzb2x2ZVJlYWR5KCk7XG4gICAgICAgIHN0YXRlLnJlc29sdmVSZWFkeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3RhdGUucmVqZWN0UmVhZHkgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5pbmZvKGB3b3JrZXIgJHtzdGF0ZS5pZH0gcmVhZHlgKTtcbiAgICAgIHRoaXMucHJvY2Vzc1dvcmtlclF1ZXVlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtc2cudHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihgd29ya2VyICR7c3RhdGUuaWR9IHJlcG9ydGVkIGVycm9yOiAke21zZy5lcnJvcn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1zZy50eXBlID09PSBcImxvZ1wiKSB7XG4gICAgICBjb25zdCBqb2IgPSB0aGlzLndvcmtlckpvYnMuZ2V0KG1zZy5qb2JJZCk7XG4gICAgICBpZiAoIWpvYikgcmV0dXJuO1xuICAgICAgdm9pZCB0aGlzLmFwcGVuZExvZyhqb2IuY3R4LCBqb2IudGFzaywgbXNnLmVudHJpZXMgYXMgV29ya2VyTG9nRW50cnlbXSlcbiAgICAgICAgLnRoZW4oKFt1cGRhdGVkLCBlbnRyaWVzXSkgPT4ge1xuICAgICAgICAgIGpvYi50YXNrID0gdXBkYXRlZDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5lbWl0TG9nKGpvYi5jdHgsIGpvYi50YXNrLmlkLCBlbnRyaWVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHRoaXMubG9nLmVycm9yKGBGYWlsZWQgdG8gYXBwZW5kIHdvcmtlciBsb2dgLCBlcnIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1zZy50eXBlID09PSBcInByb2dyZXNzXCIpIHtcbiAgICAgIGNvbnN0IGpvYiA9IHRoaXMud29ya2VySm9icy5nZXQobXNnLmpvYklkKTtcbiAgICAgIGlmICgham9iKSByZXR1cm47XG4gICAgICB2b2lkIHRoaXMuZW1pdFByb2dyZXNzKGpvYi5jdHgsIGpvYi50YXNrLmlkLCBtc2cucGF5bG9hZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtc2cudHlwZSA9PT0gXCJoZWFydGJlYXRcIikge1xuICAgICAgY29uc3Qgam9iID0gdGhpcy53b3JrZXJKb2JzLmdldChtc2cuam9iSWQpO1xuICAgICAgaWYgKCFqb2IpIHJldHVybjtcbiAgICAgIGpvYi50YXNrLmxlYXNlRXhwaXJ5ID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIHRoaXMuY29uZmlnLmxlYXNlTXMpO1xuICAgICAgdm9pZCB0aGlzLnRhc2tzLnVwZGF0ZShqb2IudGFzaykuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtc2cudHlwZSA9PT0gXCJyZXN1bHRcIikge1xuICAgICAgY29uc3Qgam9iID0gdGhpcy53b3JrZXJKb2JzLmdldChtc2cuam9iSWQpO1xuICAgICAgaWYgKCFqb2IpIHJldHVybjtcbiAgICAgIHRoaXMud29ya2VySm9icy5kZWxldGUoam9iLmlkKTtcbiAgICAgIHN0YXRlLmFjdGl2ZUpvYnMgPSBNYXRoLm1heCgwLCBzdGF0ZS5hY3RpdmVKb2JzIC0gMSk7XG4gICAgICB0aGlzLmFwcGx5V29ya2VyQ2FjaGUoam9iLmN0eCwgbXNnLmNhY2hlKTtcbiAgICAgIHN3aXRjaCAobXNnLnN0YXR1cykge1xuICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICAgIGpvYi5yZXNvbHZlKG1zZy5vdXRwdXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZXJyb3JcIjoge1xuICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihtc2cuZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgaWYgKG1zZy5lcnJvci5uYW1lKSBlcnIubmFtZSA9IG1zZy5lcnJvci5uYW1lO1xuICAgICAgICAgIGlmIChtc2cuZXJyb3Iuc3RhY2spIGVyci5zdGFjayA9IG1zZy5lcnJvci5zdGFjaztcbiAgICAgICAgICBqb2IucmVqZWN0KGVycik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInN0YXRlLWNoYW5nZVwiOlxuICAgICAgICAgIGpvYi5yZWplY3QobmV3IFRhc2tTdGF0ZUNoYW5nZUVycm9yKG1zZy5yZXF1ZXN0KSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NXb3JrZXJRdWV1ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlXb3JrZXJDYWNoZShcbiAgICBjdHg6IFRhc2tDb250ZXh0LFxuICAgIGNhY2hlPzogUmVjb3JkPHN0cmluZywgYW55PlxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNhY2hlKSByZXR1cm47XG4gICAgT2JqZWN0LmVudHJpZXMoY2FjaGUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY3R4LmNhY2hlUmVzdWx0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzV29ya2VyUXVldWUoKSB7XG4gICAgaWYgKCF0aGlzLmhhc1dvcmtlclBvb2woKSkgcmV0dXJuO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMud29ya2VyVGhyZWFkc1xuICAgICAgLmZpbHRlcigoc3RhdGUpID0+IHN0YXRlLnJlYWR5ICYmIHN0YXRlLmFjdGl2ZUpvYnMgPCBzdGF0ZS5jYXBhY2l0eSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmFjdGl2ZUpvYnMgLSBiLmFjdGl2ZUpvYnMpO1xuICAgIGZvciAoY29uc3Qgc3RhdGUgb2YgYXZhaWxhYmxlKSB7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHN0YXRlLmFjdGl2ZUpvYnMgPCBzdGF0ZS5jYXBhY2l0eSAmJlxuICAgICAgICB0aGlzLndvcmtlckpvYlF1ZXVlLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBjb25zdCBqb2IgPSB0aGlzLndvcmtlckpvYlF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIGlmICgham9iKSBicmVhaztcbiAgICAgICAgdGhpcy5hc3NpZ25Xb3JrZXIoc3RhdGUsIGpvYik7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMud29ya2VySm9iUXVldWUubGVuZ3RoKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzc2lnbldvcmtlcihzdGF0ZTogVGFza1dvcmtlclRocmVhZCwgam9iOiBXb3JrZXJKb2JTdGF0ZSkge1xuICAgIGlmICghdGhpcy53b3JrZXJQb29sQ29uZmlnKSByZXR1cm47XG4gICAgY29uc3QgcGF5bG9hZDogV29ya2VySm9iUGF5bG9hZCA9IHtcbiAgICAgIGpvYklkOiBqb2IuaWQsXG4gICAgICB0YXNrSWQ6IGpvYi50YXNrLmlkLFxuICAgICAgY2xhc3NpZmljYXRpb246IGpvYi5jbGFzc2lmaWNhdGlvbixcbiAgICAgIGlucHV0OiBqb2IuaW5wdXQsXG4gICAgICBhdHRlbXB0OiBqb2IudGFzay5hdHRlbXB0ID8/IDAsXG4gICAgICByZXN1bHRDYWNoZTogam9iLmN0eC5yZXN1bHRDYWNoZSA/PyB7fSxcbiAgICAgIHN0cmVhbUJ1ZmZlclNpemU6IHRoaXMuY29uZmlnLnN0cmVhbUJ1ZmZlclNpemUsXG4gICAgICBtYXhMb2dnaW5nQnVmZmVyOiB0aGlzLmNvbmZpZy5tYXhMb2dnaW5nQnVmZmVyLFxuICAgICAgbG9nZ2luZ0J1ZmZlclRydW5jYXRpb246IHRoaXMuY29uZmlnLmxvZ2dpbmdCdWZmZXJUcnVuY2F0aW9uLFxuICAgIH07XG4gICAgam9iLndvcmtlciA9IHN0YXRlO1xuICAgIHRoaXMud29ya2VySm9icy5zZXQoam9iLmlkLCBqb2IpO1xuICAgIHN0YXRlLmFjdGl2ZUpvYnMgKz0gMTtcbiAgICBjb25zdCBtZXNzYWdlOiBNYWluVG9Xb3JrZXJNZXNzYWdlID0ge1xuICAgICAgdHlwZTogXCJleGVjdXRlXCIsXG4gICAgICBqb2I6IHBheWxvYWQsXG4gICAgfTtcbiAgICBzdGF0ZS53b3JrZXIucG9zdE1lc3NhZ2UobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIGVucXVldWVXb3JrZXJKb2Ioam9iOiBXb3JrZXJKb2JTdGF0ZSkge1xuICAgIHRoaXMud29ya2VySm9iUXVldWUucHVzaChqb2IpO1xuICAgIHRoaXMucHJvY2Vzc1dvcmtlclF1ZXVlKCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEV4ZWN1dGlvblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJ1bkhhbmRsZXJJbmxpbmUoXG4gICAgY2xhc3NpZmljYXRpb246IHN0cmluZyxcbiAgICBpbnB1dDogYW55LFxuICAgIGN0eDogVGFza0NvbnRleHRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5yZWdpc3RyeS5nZXQoY2xhc3NpZmljYXRpb24pO1xuICAgIGlmICghaGFuZGxlcilcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgTm8gdGFzayBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIHR5cGU6ICR7Y2xhc3NpZmljYXRpb259YFxuICAgICAgKTtcbiAgICByZXR1cm4gaGFuZGxlci5ydW4oaW5wdXQsIGN0eCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRpc3BhdGNoVG9Xb3JrZXIoXG4gICAgY2xhc3NpZmljYXRpb246IHN0cmluZyxcbiAgICBpbnB1dDogYW55LFxuICAgIHRhc2s6IFRhc2tNb2RlbCxcbiAgICBjdHg6IFRhc2tDb250ZXh0XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCF0aGlzLmNhbkRpc3BhdGNoVG9Xb3JrZXJzKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJ1bkhhbmRsZXJJbmxpbmUoY2xhc3NpZmljYXRpb24sIGlucHV0LCBjdHgpO1xuICAgIH1cbiAgICBjb25zdCB1dWlkID0gYXdhaXQgVVVJRC5pbnN0YW5jZS5nZW5lcmF0ZSgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBqb2I6IFdvcmtlckpvYlN0YXRlID0ge1xuICAgICAgICBpZDogdXVpZCxcbiAgICAgICAgY2xhc3NpZmljYXRpb24sXG4gICAgICAgIGlucHV0LFxuICAgICAgICB0YXNrLFxuICAgICAgICBjdHgsXG4gICAgICAgIHJlc29sdmUsXG4gICAgICAgIHJlamVjdCxcbiAgICAgIH07XG4gICAgICB0aGlzLmVucXVldWVXb3JrZXJKb2Ioam9iKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW52b2tlSGFuZGxlcihcbiAgICBjbGFzc2lmaWNhdGlvbjogc3RyaW5nLFxuICAgIGlucHV0OiBhbnksXG4gICAgdGFzazogVGFza01vZGVsLFxuICAgIGN0eDogVGFza0NvbnRleHRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaGFzV29ya2VyUG9vbCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ydW5IYW5kbGVySW5saW5lKGNsYXNzaWZpY2F0aW9uLCBpbnB1dCwgY3R4KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hUb1dvcmtlcihjbGFzc2lmaWNhdGlvbiwgaW5wdXQsIHRhc2ssIGN0eCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZUNsYWltZWQodGFzazogVGFza01vZGVsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHgsIGxvZyB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KFtdLCB0YXNrLmNsYXNzaWZpY2F0aW9uLCB0cnVlKSkuZm9yKFxuICAgICAgdGhpcy5leGVjdXRlQ2xhaW1lZFxuICAgICk7XG4gICAgY29uc3QgZW5naW5lID0gdGhpcztcbiAgICBjb25zdCB0YXNrQ3R4ID0gVGFza0VuZ2luZS5jcmVhdGVUYXNrQ29udGV4dChjdHgsIHtcbiAgICAgIHRhc2tJZDogdGFzay5pZCxcbiAgICAgIGxvZ2dlcjogbmV3IFRhc2tMb2dnZXIoXG4gICAgICAgIGxvZyxcbiAgICAgICAgdGhpcy5jb25maWcuc3RyZWFtQnVmZmVyU2l6ZSxcbiAgICAgICAgdGhpcy5jb25maWcubWF4TG9nZ2luZ0J1ZmZlclxuICAgICAgKSxcbiAgICAgIGF0dGVtcHQ6IHRhc2suYXR0ZW1wdCxcbiAgICAgIHJlc3VsdENhY2hlOiB7fSxcbiAgICAgIHBpcGU6IGFzeW5jIGZ1bmN0aW9uIChcbiAgICAgICAgdGhpczogVGFza0NvbnRleHQsXG4gICAgICAgIC4uLmFyZ3M6IGFueVtdXG4gICAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IGVuZ2luZS5ub3JtYWxpemVQaXBlQXJncyhhcmdzKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBbdXBkYXRlZCwgbG9nc10gPSBhd2FpdCBlbmdpbmUuYXBwZW5kTG9nKHRoaXMsIHRhc2ssIG5vcm1hbGl6ZWQpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRhc2ssIHVwZGF0ZWQpO1xuICAgICAgICBhd2FpdCBlbmdpbmUuZW1pdExvZyh0aGlzLCB0YXNrLmlkLCBsb2dzKTtcbiAgICAgIH0sXG4gICAgICBmbHVzaDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0YXNrQ3R4LmxvZ2dlci5mbHVzaCh0YXNrQ3R4LnBpcGUpO1xuICAgICAgfSxcbiAgICAgIHByb2dyZXNzOiBhc3luYyAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFByb2dyZXNzKHRhc2tDdHgsIHRhc2suaWQsIGRhdGEpO1xuICAgICAgfSxcbiAgICAgIGhlYXJ0YmVhdDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBleHRlbmQgbGVhc2VcbiAgICAgICAgaWYgKHRhc2subGVhc2VPd25lciAhPT0gdGhpcy5jb25maWcud29ya2VySWQpIHJldHVybjtcbiAgICAgICAgdGFzay5sZWFzZUV4cGlyeSA9IG5ldyBEYXRlKERhdGUubm93KCkgKyB0aGlzLmNvbmZpZy5sZWFzZU1zKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0YXNrID0gYXdhaXQgdGhpcy50YXNrcy51cGRhdGUodGFzayk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlmIHdlIGxvc2UgdGhlIGNsYWltLCBleGVjdXRpb24gc2hvdWxkIHN0aWxsIHByb2NlZWQ7IG5leHQgdXBkYXRlIHdpbGwgZmFpbCBhbmQgYmUgcmV0cmllZCBieSByZWNvdmVyeVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5lbWl0U3RhdHVzKHRhc2tDdHgsIHRhc2ssIFRhc2tTdGF0dXMuUlVOTklORyk7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IG91dHB1dDogYW55O1xuICAgICAgaWYgKHRhc2suYXRvbWljaXR5ID09PSBUYXNrVHlwZS5DT01QT1NJVEUpIHtcbiAgICAgICAgb3V0cHV0ID0gYXdhaXQgdGhpcy5ydW5Db21wb3NpdGUodGFzaywgdGFza0N0eCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGFzayA9IGF3YWl0IHRoaXMudGFza3MucmVhZCh0YXNrLmlkLCB0YXNrQ3R4KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8ga2VlcCBiZXN0LWVmZm9ydCB0YXNrIHN0YXRlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG91dHB1dD8uc3RlcFJlc3VsdHMpIHtcbiAgICAgICAgICB0YXNrLnN0ZXBSZXN1bHRzID0gb3V0cHV0LnN0ZXBSZXN1bHRzO1xuICAgICAgICAgIHRhc2suY3VycmVudFN0ZXAgPSBvdXRwdXQuc3RlcFJlc3VsdHMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZGVidWcoYGRpc3BhdGNoaW5nIGhhbmRsZXIgZm9yICR7dGFzay5pZH1gKTtcbiAgICAgICAgb3V0cHV0ID0gYXdhaXQgdGhpcy5pbnZva2VIYW5kbGVyKFxuICAgICAgICAgIHRhc2suY2xhc3NpZmljYXRpb24sXG4gICAgICAgICAgdGFzay5pbnB1dCxcbiAgICAgICAgICB0YXNrLFxuICAgICAgICAgIHRhc2tDdHhcbiAgICAgICAgKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGhhbmRsZXIgZmluaXNoZWQgZm9yICR7dGFzay5pZH1gKTtcbiAgICAgIH1cblxuICAgICAgdGFzay5zdGF0dXMgPSBUYXNrU3RhdHVzLlNVQ0NFRURFRDtcbiAgICAgIHRhc2sub3V0cHV0ID0gb3V0cHV0O1xuICAgICAgdGFzay5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgIHRhc2subGVhc2VPd25lciA9IHVuZGVmaW5lZDtcbiAgICAgIHRhc2subGVhc2VFeHBpcnkgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRhc2sgPSBhd2FpdCB0aGlzLnRhc2tzLnVwZGF0ZSh0YXNrLCB0YXNrQ3R4KTtcbiAgICAgIHRhc2tDdHgubG9nZ2VyLmluZm8oYHRhc2sgJHt0YXNrLmlkfSBzdWNjZXNzIHN0YXRlICR7dGFzay5zdGF0dXN9YCk7XG4gICAgICBsb2cuaW5mbyhcbiAgICAgICAgYHRhc2sgJHt0YXNrLmlkfSBzdWNjZXNzIHN0YXRlICR7dGFzay5zdGF0dXN9IGF0dGVtcHQgJHt0YXNrLmF0dGVtcHR9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuZW1pdFN0YXR1cyh0YXNrQ3R4LCB0YXNrLCBUYXNrU3RhdHVzLlNVQ0NFRURFRCwgb3V0cHV0KTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGFzayA9IGF3YWl0IHRoaXMudGFza3MucmVhZCh0YXNrLmlkLCB0YXNrQ3R4KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBrZWVwIGJlc3QtZWZmb3J0IHRhc2sgc3RhdGUgZm9yIHJldHJpZXMvZmFpbHVyZXNcbiAgICAgIH1cbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUYXNrU3RhdGVDaGFuZ2VFcnJvcikge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVRhc2tTdGF0ZUNoYW5nZShlcnIucmVxdWVzdCwgdGFzaywgdGFza0N0eCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZy5lcnJvcihcInRhc2sgZXhlY3V0aW9uIGVycm9yXCIsIGVycik7XG4gICAgICBpZiAodGFzay5hdG9taWNpdHkgPT09IFRhc2tUeXBlLkNPTVBPU0lURSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUmVzdWx0cyA9IHRoaXMubm9ybWFsaXplU3RlcFJlc3VsdHModGFzay5zdGVwUmVzdWx0cyk7XG4gICAgICAgIHRhc2suc3RlcFJlc3VsdHMgPSBub3JtYWxpemVkUmVzdWx0cztcbiAgICAgICAgaWYgKHRhc2suY3VycmVudFN0ZXAgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IGZhaWxlZElkeCA9IG5vcm1hbGl6ZWRSZXN1bHRzLmZpbmRJbmRleChcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gVGFza1N0YXR1cy5GQUlMRURcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmYWlsZWRJZHggPj0gMCkgdGFzay5jdXJyZW50U3RlcCA9IGZhaWxlZElkeDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgbmV4dEF0dGVtcHQgPSAodGFzay5hdHRlbXB0ID8/IDApICsgMTtcblxuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZUVycm9yKGVycik7XG5cbiAgICAgIGlmIChuZXh0QXR0ZW1wdCA8IHRhc2subWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgY29uc3QgZGVsYXkgPSBjb21wdXRlQmFja29mZk1zKFxuICAgICAgICAgIG5leHRBdHRlbXB0LFxuICAgICAgICAgIHRoaXMubm9ybWFsaXplQmFja29mZih0YXNrLmJhY2tvZmYpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5leHRSdW5BdCA9IG5ldyBEYXRlKERhdGUubm93KCkgKyBkZWxheSk7XG5cbiAgICAgICAgdGFzay5hdHRlbXB0ID0gbmV4dEF0dGVtcHQ7XG4gICAgICAgIHRhc2suc3RhdHVzID0gVGFza1N0YXR1cy5XQUlUSU5HX1JFVFJZO1xuICAgICAgICB0YXNrLm5leHRSdW5BdCA9IG5leHRSdW5BdDtcbiAgICAgICAgdGFzay5lcnJvciA9IHNlcmlhbGl6ZWQ7XG4gICAgICAgIHRhc2subGVhc2VPd25lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGFzay5sZWFzZUV4cGlyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGFzayA9IGF3YWl0IHRoaXMudGFza3MudXBkYXRlKHRhc2ssIHRhc2tDdHgpO1xuICAgICAgICBsb2cud2FybihcbiAgICAgICAgICBgdGFzayAke3Rhc2suaWR9IHdhaXRpbmcgcmV0cnkgc3RhdGUgJHt0YXNrLnN0YXR1c30gYXR0ZW1wdCAke3Rhc2suYXR0ZW1wdH1gXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRhc2tDdHgucGlwZShMb2dMZXZlbC53YXJuLCBgUmV0cnkgc2NoZWR1bGVkYCwge1xuICAgICAgICAgIG5leHRSdW5BdCxcbiAgICAgICAgICBkZWxheU1zOiBkZWxheSxcbiAgICAgICAgICBhdHRlbXB0OiBuZXh0QXR0ZW1wdCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFN0YXR1cyhcbiAgICAgICAgICB0YXNrQ3R4LFxuICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgVGFza1N0YXR1cy5XQUlUSU5HX1JFVFJZLFxuICAgICAgICAgIHNlcmlhbGl6ZWQsXG4gICAgICAgICAgZXJyXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXNrLmF0dGVtcHQgPSBuZXh0QXR0ZW1wdDtcbiAgICAgICAgdGFzay5zdGF0dXMgPSBUYXNrU3RhdHVzLkZBSUxFRDtcbiAgICAgICAgdGFzay5lcnJvciA9IHNlcmlhbGl6ZWQ7XG4gICAgICAgIHRhc2subGVhc2VPd25lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGFzay5sZWFzZUV4cGlyeSA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0YXNrID0gYXdhaXQgdGhpcy50YXNrcy51cGRhdGUodGFzaywgdGFza0N0eCk7XG4gICAgICAgIGxvZy5lcnJvcihcbiAgICAgICAgICBgdGFzayAke3Rhc2suaWR9IGZhaWxlZCBzdGF0ZSAke3Rhc2suc3RhdHVzfSBhdHRlbXB0ICR7dGFzay5hdHRlbXB0fWBcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgdGFza0N0eC5waXBlKFxuICAgICAgICAgIExvZ0xldmVsLmVycm9yLFxuICAgICAgICAgIGBUYXNrIGZhaWxlZCAobWF4IGF0dGVtcHRzIHJlYWNoZWQpYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXhBdHRlbXB0czogdGFzay5tYXhBdHRlbXB0cyxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFN0YXR1cyhcbiAgICAgICAgICB0YXNrQ3R4LFxuICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgVGFza1N0YXR1cy5GQUlMRUQsXG4gICAgICAgICAgc2VyaWFsaXplZCxcbiAgICAgICAgICBlcnJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -33,4 +33,4 @@ exports.DefaultWorkThreadEnvironment = {
33
33
  modules: defaultModules,
34
34
  };
35
35
  exports.WorkThreadEnvironment = logging_1.LoggedEnvironment.accumulate(exports.DefaultWorkThreadEnvironment);
36
- //# sourceMappingURL=WorkThreadEnvironment.js.map
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV29ya1RocmVhZEVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtlcnMvV29ya1RocmVhZEVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUFpRTtBQXVDakUsTUFBTSx1QkFBdUIsR0FBK0I7SUFDMUQsV0FBVyxFQUFFLENBQUM7SUFDZCxPQUFPLEVBQUUsTUFBTTtJQUNmLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFVBQVUsRUFBRSxHQUFHO0lBQ2YsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixnQkFBZ0IsRUFBRSxLQUFLO0lBQ3ZCLHVCQUF1QixFQUFFLENBQUM7SUFDMUIseUJBQXlCLEVBQUUsTUFBTTtJQUNqQyxZQUFZLEVBQUU7UUFDWixPQUFPLEVBQUUsS0FBSztRQUNkLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLGNBQWMsRUFBRSxNQUFNO0tBQ3ZCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUE0QjtJQUM5QyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQztDQUNqRCxDQUFDO0FBRVcsUUFBQSw0QkFBNEIsR0FBK0I7SUFDdEUsUUFBUSxFQUFFLFFBQVE7SUFDbEIsSUFBSSxFQUFFLElBQUEsbUJBQVMsR0FBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU07SUFDdEMsV0FBVyxFQUFFO1FBQ1gsYUFBYSxFQUFFLG1CQUFtQjtRQUNsQyxZQUFZLEVBQUUsV0FBVztRQUN6QixXQUFXLEVBQUUsRUFBRTtLQUNoQjtJQUNELFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsT0FBTyxFQUFFLGNBQWM7Q0FDeEIsQ0FBQztBQUVXLFFBQUEscUJBQXFCLEdBQUcsMkJBQWlCLENBQUMsVUFBVSxDQUMvRCxvQ0FBNEIsQ0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvZ2dlZEVudmlyb25tZW50LCBpc0Jyb3dzZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IFRhc2tFbmdpbmVBdXRvU2h1dGRvd25Db25maWcgfSBmcm9tIFwiLi4vdGFza3MvdHlwZXNcIjtcblxudHlwZSBXb3JrZXJNb2RlID0gXCJub2RlXCIgfCBcImJyb3dzZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXb3JrVGhyZWFkUGVyc2lzdGVuY2VDb25maWcge1xuICBhZGFwdGVyTW9kdWxlOiBzdHJpbmc7XG4gIGFkYXB0ZXJDbGFzcz86IHN0cmluZztcbiAgYWRhcHRlckFyZ3M/OiBhbnlbXTtcbiAgZmxhdm91cj86IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmc7XG4gIG1vZHVsZXM/OiBXb3JrVGhyZWFkTW9kdWxlc0NvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrVGhyZWFkVGFza0VuZ2luZUNvbmZpZyB7XG4gIGNvbmN1cnJlbmN5OiBudW1iZXI7XG4gIGxlYXNlTXM6IG51bWJlcjtcbiAgcG9sbE1zSWRsZTogbnVtYmVyO1xuICBwb2xsTXNCdXN5OiBudW1iZXI7XG4gIGxvZ1RhaWxNYXg6IG51bWJlcjtcbiAgc3RyZWFtQnVmZmVyU2l6ZTogbnVtYmVyO1xuICBtYXhMb2dnaW5nQnVmZmVyOiBudW1iZXI7XG4gIGxvZ2dpbmdCdWZmZXJUcnVuY2F0aW9uOiBudW1iZXI7XG4gIGdyYWNlZnVsU2h1dGRvd25Nc1RpbWVvdXQ6IG51bWJlcjtcbiAgYXV0b1NodXRkb3duPzogVGFza0VuZ2luZUF1dG9TaHV0ZG93bkNvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrVGhyZWFkTW9kdWxlc0NvbmZpZyB7XG4gIGltcG9ydHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtUaHJlYWRFbnZpcm9ubWVudFNoYXBlIHtcbiAgd29ya2VySWQ6IHN0cmluZztcbiAgbW9kZTogV29ya2VyTW9kZTtcbiAgcGVyc2lzdGVuY2U6IFdvcmtUaHJlYWRQZXJzaXN0ZW5jZUNvbmZpZztcbiAgdGFza0VuZ2luZTogV29ya1RocmVhZFRhc2tFbmdpbmVDb25maWc7XG4gIG1vZHVsZXM6IFdvcmtUaHJlYWRNb2R1bGVzQ29uZmlnO1xufVxuXG5jb25zdCBkZWZhdWx0VGFza0VuZ2luZUNvbmZpZzogV29ya1RocmVhZFRhc2tFbmdpbmVDb25maWcgPSB7XG4gIGNvbmN1cnJlbmN5OiAxLFxuICBsZWFzZU1zOiA2MF8wMDAsXG4gIHBvbGxNc0lkbGU6IDVfMDAwLFxuICBwb2xsTXNCdXN5OiAxXzAwMCxcbiAgbG9nVGFpbE1heDogMjU2LFxuICBzdHJlYW1CdWZmZXJTaXplOiA1MTIsXG4gIG1heExvZ2dpbmdCdWZmZXI6IDFfMDI0LFxuICBsb2dnaW5nQnVmZmVyVHJ1bmNhdGlvbjogOCxcbiAgZ3JhY2VmdWxTaHV0ZG93bk1zVGltZW91dDogMTBfMDAwLFxuICBhdXRvU2h1dGRvd246IHtcbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICBiYWNrb2ZmU3RlcE1zOiAxXzAwMCxcbiAgICBtYXhJZGxlRGVsYXlNczogNjBfMDAwLFxuICB9LFxufTtcblxuY29uc3QgZGVmYXVsdE1vZHVsZXM6IFdvcmtUaHJlYWRNb2R1bGVzQ29uZmlnID0ge1xuICBpbXBvcnRzOiBbXCJAZGVjYWYtdHMvY29yZVwiLCBcIkBkZWNhZi10cy9sb2dnaW5nXCJdLFxufTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRXb3JrVGhyZWFkRW52aXJvbm1lbnQ6IFdvcmtUaHJlYWRFbnZpcm9ubWVudFNoYXBlID0ge1xuICB3b3JrZXJJZDogXCJ3b3JrZXJcIixcbiAgbW9kZTogaXNCcm93c2VyKCkgPyBcImJyb3dzZXJcIiA6IFwibm9kZVwiLFxuICBwZXJzaXN0ZW5jZToge1xuICAgIGFkYXB0ZXJNb2R1bGU6IFwiQGRlY2FmLXRzL2NvcmUvZnNcIixcbiAgICBhZGFwdGVyQ2xhc3M6IFwiRnNBZGFwdGVyXCIsXG4gICAgYWRhcHRlckFyZ3M6IFtdLFxuICB9LFxuICB0YXNrRW5naW5lOiBkZWZhdWx0VGFza0VuZ2luZUNvbmZpZyxcbiAgbW9kdWxlczogZGVmYXVsdE1vZHVsZXMsXG59O1xuXG5leHBvcnQgY29uc3QgV29ya1RocmVhZEVudmlyb25tZW50ID0gTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZShcbiAgRGVmYXVsdFdvcmtUaHJlYWRFbnZpcm9ubWVudFxuKTtcbiJdfQ==
@@ -18,4 +18,4 @@ __exportStar(require("./messages.cjs"), exports);
18
18
  __exportStar(require("./TaskEngine.cjs"), exports);
19
19
  __exportStar(require("./types.cjs"), exports);
20
20
  __exportStar(require("./WorkThreadEnvironment.cjs"), exports);
21
- //# sourceMappingURL=index.js.map
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Vycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTJCO0FBQzNCLG1EQUE2QjtBQUM3Qiw4Q0FBd0I7QUFDeEIsOERBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWVzc2FnZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1Rhc2tFbmdpbmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Xb3JrVGhyZWFkRW52aXJvbm1lbnRcIjtcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=messages.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Vycy9tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nTGV2ZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IFRhc2tTdGF0ZUNoYW5nZVJlcXVlc3QgfSBmcm9tIFwiLi4vdGFza3MvVGFza1N0YXRlQ2hhbmdlRXJyb3JcIjtcblxuZXhwb3J0IHR5cGUgV29ya2VyTG9nRW50cnkgPSBbTG9nTGV2ZWwsIHN0cmluZ10gfCBbTG9nTGV2ZWwsIHN0cmluZywgYW55XTtcblxuZXhwb3J0IGludGVyZmFjZSBXb3JrZXJKb2JQYXlsb2FkIHtcbiAgam9iSWQ6IHN0cmluZztcbiAgdGFza0lkOiBzdHJpbmc7XG4gIGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG4gIGlucHV0OiBhbnk7XG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgcmVzdWx0Q2FjaGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzdHJlYW1CdWZmZXJTaXplOiBudW1iZXI7XG4gIG1heExvZ2dpbmdCdWZmZXI6IG51bWJlcjtcbiAgbG9nZ2luZ0J1ZmZlclRydW5jYXRpb246IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgV29ya2VyVG9NYWluTWVzc2FnZSA9XG4gIHwgeyB0eXBlOiBcInJlYWR5XCI7IHdvcmtlcklkOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJsb2dcIjsgd29ya2VySWQ6IHN0cmluZzsgam9iSWQ6IHN0cmluZzsgZW50cmllczogV29ya2VyTG9nRW50cnlbXSB9XG4gIHwgeyB0eXBlOiBcInByb2dyZXNzXCI7IHdvcmtlcklkOiBzdHJpbmc7IGpvYklkOiBzdHJpbmc7IHBheWxvYWQ6IGFueSB9XG4gIHwgeyB0eXBlOiBcImhlYXJ0YmVhdFwiOyB3b3JrZXJJZDogc3RyaW5nOyBqb2JJZDogc3RyaW5nIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInJlc3VsdFwiO1xuICAgICAgd29ya2VySWQ6IHN0cmluZztcbiAgICAgIGpvYklkOiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IFwic3VjY2Vzc1wiO1xuICAgICAgb3V0cHV0OiBhbnk7XG4gICAgICBjYWNoZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwicmVzdWx0XCI7XG4gICAgICB3b3JrZXJJZDogc3RyaW5nO1xuICAgICAgam9iSWQ6IHN0cmluZztcbiAgICAgIHN0YXR1czogXCJlcnJvclwiO1xuICAgICAgZXJyb3I6IHsgbmFtZT86IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZyB9O1xuICAgICAgY2FjaGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInJlc3VsdFwiO1xuICAgICAgd29ya2VySWQ6IHN0cmluZztcbiAgICAgIGpvYklkOiBzdHJpbmc7XG4gICAgICBzdGF0dXM6IFwic3RhdGUtY2hhbmdlXCI7XG4gICAgICByZXF1ZXN0OiBUYXNrU3RhdGVDaGFuZ2VSZXF1ZXN0O1xuICAgICAgY2FjaGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIH1cbiAgfCB7IHR5cGU6IFwiZXJyb3JcIjsgd29ya2VySWQ6IHN0cmluZzsgZXJyb3I6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmcgfTtcblxuZXhwb3J0IHR5cGUgTWFpblRvV29ya2VyTWVzc2FnZSA9XG4gIHwgeyB0eXBlOiBcImNvbnRyb2xcIjsgY29tbWFuZDogXCJzdG9wXCIgfCBcInNodXRkb3duXCIgfVxuICB8IHsgdHlwZTogXCJleGVjdXRlXCI7IGpvYjogV29ya2VySm9iUGF5bG9hZCB9O1xuIl19
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Vycy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV29ya2VyIH0gZnJvbSBcIndvcmtlcl90aHJlYWRzXCI7XG5pbXBvcnQge1xuICBUYXNrQ29udGV4dCxcbiAgVGFza01vZGVsLFxuICBUYXNrRW5naW5lQ29uZmlnIGFzIFRFQyxcbiAgVGFza1NlcnZpY2VDb25maWcgYXMgVFNDLFxufSBmcm9tIFwiLi4vdGFza3MvaW5kZXhcIjtcblxuZXhwb3J0IHR5cGUgVGFza1dvcmtlclRocmVhZCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgd29ya2VyOiBXb3JrZXI7XG4gIHJlYWR5OiBib29sZWFuO1xuICBhY3RpdmVKb2JzOiBudW1iZXI7XG4gIGNhcGFjaXR5OiBudW1iZXI7XG4gIHJlYWR5UHJvbWlzZT86IFByb21pc2U8dm9pZD47XG4gIHJlc29sdmVSZWFkeT86ICgpID0+IHZvaWQ7XG4gIHJlamVjdFJlYWR5PzogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdvcmtlckpvYlN0YXRlID0ge1xuICBpZDogc3RyaW5nO1xuICBjbGFzc2lmaWNhdGlvbjogc3RyaW5nO1xuICBpbnB1dDogYW55O1xuICB0YXNrOiBUYXNrTW9kZWw7XG4gIGN0eDogVGFza0NvbnRleHQ7XG4gIHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkO1xuICB3b3JrZXI/OiBUYXNrV29ya2VyVGhyZWFkO1xufTtcblxuaW1wb3J0IHtcbiAgV29ya1RocmVhZE1vZHVsZXNDb25maWcsXG4gIFdvcmtUaHJlYWRQZXJzaXN0ZW5jZUNvbmZpZyxcbn0gZnJvbSBcIi4vV29ya1RocmVhZEVudmlyb25tZW50XCI7XG5pbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4uL3BlcnNpc3RlbmNlL2luZGV4XCI7XG5cbmV4cG9ydCB0eXBlIFdvcmtlckFkYXB0ZXJEZXNjcmlwdG9yID0gV29ya1RocmVhZFBlcnNpc3RlbmNlQ29uZmlnO1xuXG5leHBvcnQgdHlwZSBXb3JrVGhyZWFkUG9vbENvbmZpZyA9IHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgbW9kZT86IFwibm9kZVwiIHwgXCJicm93c2VyXCI7XG4gIGVudHJ5OiBzdHJpbmc7XG4gIG1vZHVsZXM/OiBXb3JrVGhyZWFkTW9kdWxlc0NvbmZpZztcbn07XG5cbmV4cG9ydCB0eXBlIFRhc2tFbmdpbmVDb25maWc8QSBleHRlbmRzIEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55Pj4gPSBURUM8QT4gJiB7XG4gIHdvcmtlckFkYXB0ZXI/OiBXb3JrZXJBZGFwdGVyRGVzY3JpcHRvcjtcbiAgd29ya2VyUG9vbD86IFdvcmtUaHJlYWRQb29sQ29uZmlnO1xuICB3b3JrZXJDb25jdXJyZW5jeT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFRhc2tTZXJ2aWNlQ29uZmlnPEEgZXh0ZW5kcyBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+ID1cbiAgVFNDPEE+ICYge1xuICAgIHdvcmtlckFkYXB0ZXI/OiBXb3JrZXJBZGFwdGVyRGVzY3JpcHRvcjtcbiAgICB3b3JrZXJQb29sPzogV29ya1RocmVhZFBvb2xDb25maWc7XG4gICAgd29ya2VyQ29uY3VycmVuY3k/OiBudW1iZXI7XG4gIH07XG4iXX0=