payload 3.0.0-alpha.21 → 3.0.0-alpha.23

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 (706) hide show
  1. package/auth.d.ts +5 -5
  2. package/auth.js +5 -5
  3. package/config.d.ts +10 -10
  4. package/config.js +10 -10
  5. package/database.d.ts +22 -22
  6. package/database.js +21 -21
  7. package/dist/admin/RichText.d.ts +4 -4
  8. package/dist/admin/RichText.d.ts.map +1 -1
  9. package/dist/admin/RichText.js +1 -1
  10. package/dist/admin/elements/Cell.d.ts +2 -2
  11. package/dist/admin/elements/Cell.d.ts.map +1 -1
  12. package/dist/admin/elements/Cell.js +1 -1
  13. package/dist/admin/elements/Tab.d.ts +3 -3
  14. package/dist/admin/elements/Tab.d.ts.map +1 -1
  15. package/dist/admin/elements/Tab.js +1 -1
  16. package/dist/admin/forms/Form.d.ts +1 -1
  17. package/dist/admin/forms/Form.d.ts.map +1 -1
  18. package/dist/admin/forms/Form.js +1 -1
  19. package/dist/admin/forms/RowLabel.d.ts +1 -1
  20. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  21. package/dist/admin/forms/RowLabel.js +1 -1
  22. package/dist/admin/types.d.ts +19 -19
  23. package/dist/admin/types.d.ts.map +1 -1
  24. package/dist/admin/types.js +1 -1
  25. package/dist/admin/views/types.d.ts +4 -4
  26. package/dist/admin/views/types.d.ts.map +1 -1
  27. package/dist/admin/views/types.js +1 -1
  28. package/dist/auth/baseFields/accountLock.d.ts +1 -1
  29. package/dist/auth/baseFields/accountLock.d.ts.map +1 -1
  30. package/dist/auth/baseFields/accountLock.js +5 -5
  31. package/dist/auth/baseFields/apiKey.d.ts +1 -1
  32. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  33. package/dist/auth/baseFields/apiKey.js +2 -2
  34. package/dist/auth/baseFields/auth.d.ts +1 -1
  35. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  36. package/dist/auth/baseFields/auth.js +3 -3
  37. package/dist/auth/baseFields/verification.d.ts +1 -1
  38. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  39. package/dist/auth/baseFields/verification.js +6 -6
  40. package/dist/auth/cookies.d.ts +2 -2
  41. package/dist/auth/cookies.d.ts.map +1 -1
  42. package/dist/auth/cookies.js +1 -1
  43. package/dist/auth/defaultAccess.d.ts +1 -1
  44. package/dist/auth/defaultAccess.d.ts.map +1 -1
  45. package/dist/auth/defaultAccess.js +1 -1
  46. package/dist/auth/defaultUser.d.ts +1 -1
  47. package/dist/auth/defaultUser.d.ts.map +1 -1
  48. package/dist/auth/defaultUser.js +4 -4
  49. package/dist/auth/executeAccess.d.ts +2 -2
  50. package/dist/auth/executeAccess.d.ts.map +1 -1
  51. package/dist/auth/executeAccess.js +2 -2
  52. package/dist/auth/extractJWT.d.ts +1 -1
  53. package/dist/auth/extractJWT.d.ts.map +1 -1
  54. package/dist/auth/extractJWT.js +2 -2
  55. package/dist/auth/getAccessResults.d.ts +2 -2
  56. package/dist/auth/getAccessResults.d.ts.map +1 -1
  57. package/dist/auth/getAccessResults.js +6 -6
  58. package/dist/auth/getAuthenticatedUser.d.ts +1 -1
  59. package/dist/auth/getAuthenticatedUser.d.ts.map +1 -1
  60. package/dist/auth/getAuthenticatedUser.js +1 -1
  61. package/dist/auth/getFieldsToSign.d.ts +2 -2
  62. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  63. package/dist/auth/getFieldsToSign.js +2 -2
  64. package/dist/auth/index.d.ts +3 -3
  65. package/dist/auth/index.d.ts.map +1 -1
  66. package/dist/auth/index.js +4 -4
  67. package/dist/auth/operations/access.d.ts +2 -2
  68. package/dist/auth/operations/access.d.ts.map +1 -1
  69. package/dist/auth/operations/access.js +6 -6
  70. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  71. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  72. package/dist/auth/operations/forgotPassword.js +6 -6
  73. package/dist/auth/operations/init.d.ts +1 -1
  74. package/dist/auth/operations/init.d.ts.map +1 -1
  75. package/dist/auth/operations/init.js +1 -1
  76. package/dist/auth/operations/local/forgotPassword.d.ts +3 -3
  77. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  78. package/dist/auth/operations/local/forgotPassword.js +4 -4
  79. package/dist/auth/operations/local/index.d.ts +5 -5
  80. package/dist/auth/operations/local/index.d.ts.map +1 -1
  81. package/dist/auth/operations/local/index.js +6 -6
  82. package/dist/auth/operations/local/login.d.ts +4 -4
  83. package/dist/auth/operations/local/login.d.ts.map +1 -1
  84. package/dist/auth/operations/local/login.js +4 -4
  85. package/dist/auth/operations/local/resetPassword.d.ts +4 -4
  86. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  87. package/dist/auth/operations/local/resetPassword.js +4 -4
  88. package/dist/auth/operations/local/unlock.d.ts +3 -3
  89. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  90. package/dist/auth/operations/local/unlock.js +4 -4
  91. package/dist/auth/operations/local/verifyEmail.d.ts +3 -3
  92. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  93. package/dist/auth/operations/local/verifyEmail.js +4 -4
  94. package/dist/auth/operations/login.d.ts +7 -7
  95. package/dist/auth/operations/login.d.ts.map +1 -1
  96. package/dist/auth/operations/login.js +13 -13
  97. package/dist/auth/operations/logout.d.ts +2 -2
  98. package/dist/auth/operations/logout.d.ts.map +1 -1
  99. package/dist/auth/operations/logout.js +2 -2
  100. package/dist/auth/operations/me.d.ts +3 -3
  101. package/dist/auth/operations/me.d.ts.map +1 -1
  102. package/dist/auth/operations/me.js +1 -1
  103. package/dist/auth/operations/refresh.d.ts +3 -3
  104. package/dist/auth/operations/refresh.d.ts.map +1 -1
  105. package/dist/auth/operations/refresh.js +7 -7
  106. package/dist/auth/operations/registerFirstUser.d.ts +9 -9
  107. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  108. package/dist/auth/operations/registerFirstUser.js +6 -6
  109. package/dist/auth/operations/resetPassword.d.ts +2 -2
  110. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  111. package/dist/auth/operations/resetPassword.js +8 -8
  112. package/dist/auth/operations/unlock.d.ts +2 -2
  113. package/dist/auth/operations/unlock.d.ts.map +1 -1
  114. package/dist/auth/operations/unlock.js +7 -7
  115. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  116. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  117. package/dist/auth/operations/verifyEmail.js +5 -5
  118. package/dist/auth/sendVerificationEmail.d.ts +5 -5
  119. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  120. package/dist/auth/sendVerificationEmail.js +1 -1
  121. package/dist/auth/strategies/apiKey.d.ts +2 -2
  122. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  123. package/dist/auth/strategies/apiKey.js +1 -1
  124. package/dist/auth/strategies/jwt.d.ts +1 -1
  125. package/dist/auth/strategies/jwt.d.ts.map +1 -1
  126. package/dist/auth/strategies/jwt.js +2 -2
  127. package/dist/auth/strategies/local/authenticate.d.ts +1 -1
  128. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  129. package/dist/auth/strategies/local/authenticate.js +1 -1
  130. package/dist/auth/strategies/local/generatePasswordSaltHash.js +2 -2
  131. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +3 -3
  132. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  133. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  134. package/dist/auth/strategies/local/register.d.ts +3 -3
  135. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  136. package/dist/auth/strategies/local/register.js +3 -3
  137. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +3 -3
  138. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  139. package/dist/auth/strategies/local/resetLoginAttempts.js +1 -1
  140. package/dist/auth/types.d.ts +2 -2
  141. package/dist/auth/types.d.ts.map +1 -1
  142. package/dist/auth/types.js +1 -1
  143. package/dist/bin/generateTypes.d.ts +1 -1
  144. package/dist/bin/generateTypes.d.ts.map +1 -1
  145. package/dist/bin/generateTypes.js +4 -4
  146. package/dist/bin/index.js +5 -5
  147. package/dist/bin/migrate.js +4 -4
  148. package/dist/collections/config/build.d.ts +1 -1
  149. package/dist/collections/config/build.d.ts.map +1 -1
  150. package/dist/collections/config/build.js +1 -1
  151. package/dist/collections/config/defaults.d.ts +5 -5
  152. package/dist/collections/config/defaults.js +2 -2
  153. package/dist/collections/config/sanitize.d.ts +2 -2
  154. package/dist/collections/config/sanitize.d.ts.map +1 -1
  155. package/dist/collections/config/sanitize.js +14 -14
  156. package/dist/collections/config/schema.js +3 -3
  157. package/dist/collections/config/types.d.ts +9 -9
  158. package/dist/collections/config/types.d.ts.map +1 -1
  159. package/dist/collections/config/types.js +1 -1
  160. package/dist/collections/dataloader.d.ts +2 -2
  161. package/dist/collections/dataloader.d.ts.map +1 -1
  162. package/dist/collections/dataloader.js +4 -4
  163. package/dist/collections/operations/create.d.ts +9 -9
  164. package/dist/collections/operations/create.d.ts.map +1 -1
  165. package/dist/collections/operations/create.js +18 -18
  166. package/dist/collections/operations/delete.d.ts +9 -10
  167. package/dist/collections/operations/delete.d.ts.map +1 -1
  168. package/dist/collections/operations/delete.js +13 -13
  169. package/dist/collections/operations/deleteByID.d.ts +2 -3
  170. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  171. package/dist/collections/operations/deleteByID.js +13 -13
  172. package/dist/collections/operations/docAccess.d.ts +3 -3
  173. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  174. package/dist/collections/operations/docAccess.js +7 -7
  175. package/dist/collections/operations/find.d.ts +3 -4
  176. package/dist/collections/operations/find.d.ts.map +1 -1
  177. package/dist/collections/operations/find.js +12 -12
  178. package/dist/collections/operations/findByID.d.ts +2 -2
  179. package/dist/collections/operations/findByID.d.ts.map +1 -1
  180. package/dist/collections/operations/findByID.js +10 -10
  181. package/dist/collections/operations/findVersionByID.d.ts +3 -3
  182. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  183. package/dist/collections/operations/findVersionByID.js +8 -8
  184. package/dist/collections/operations/findVersions.d.ts +4 -5
  185. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  186. package/dist/collections/operations/findVersions.js +10 -10
  187. package/dist/collections/operations/local/create.d.ts +4 -5
  188. package/dist/collections/operations/local/create.d.ts.map +1 -1
  189. package/dist/collections/operations/local/create.js +5 -5
  190. package/dist/collections/operations/local/delete.d.ts +5 -5
  191. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  192. package/dist/collections/operations/local/delete.js +5 -5
  193. package/dist/collections/operations/local/find.d.ts +3 -4
  194. package/dist/collections/operations/local/find.d.ts.map +1 -1
  195. package/dist/collections/operations/local/find.js +4 -4
  196. package/dist/collections/operations/local/findByID.d.ts +2 -4
  197. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  198. package/dist/collections/operations/local/findByID.js +4 -4
  199. package/dist/collections/operations/local/findVersionByID.d.ts +3 -4
  200. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  201. package/dist/collections/operations/local/findVersionByID.js +4 -4
  202. package/dist/collections/operations/local/findVersions.d.ts +4 -5
  203. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  204. package/dist/collections/operations/local/findVersions.js +4 -4
  205. package/dist/collections/operations/local/index.d.ts +13 -13
  206. package/dist/collections/operations/local/index.d.ts.map +1 -1
  207. package/dist/collections/operations/local/index.js +10 -10
  208. package/dist/collections/operations/local/restoreVersion.d.ts +2 -3
  209. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  210. package/dist/collections/operations/local/restoreVersion.js +4 -4
  211. package/dist/collections/operations/local/update.d.ts +4 -5
  212. package/dist/collections/operations/local/update.d.ts.map +1 -1
  213. package/dist/collections/operations/local/update.js +6 -6
  214. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  215. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  216. package/dist/collections/operations/restoreVersion.js +11 -11
  217. package/dist/collections/operations/update.d.ts +7 -8
  218. package/dist/collections/operations/update.d.ts.map +1 -1
  219. package/dist/collections/operations/update.js +20 -20
  220. package/dist/collections/operations/updateByID.d.ts +9 -9
  221. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  222. package/dist/collections/operations/updateByID.js +20 -20
  223. package/dist/collections/operations/utils.d.ts +12 -12
  224. package/dist/collections/operations/utils.d.ts.map +1 -1
  225. package/dist/collections/operations/utils.js +1 -1
  226. package/dist/config/build.d.ts +1 -1
  227. package/dist/config/build.d.ts.map +1 -1
  228. package/dist/config/build.js +2 -2
  229. package/dist/config/createClientConfig.d.ts +2 -2
  230. package/dist/config/createClientConfig.d.ts.map +1 -1
  231. package/dist/config/createClientConfig.js +1 -1
  232. package/dist/config/defaults.d.ts +1 -1
  233. package/dist/config/defaults.d.ts.map +1 -1
  234. package/dist/config/defaults.js +1 -1
  235. package/dist/config/load.d.ts +1 -1
  236. package/dist/config/load.d.ts.map +1 -1
  237. package/dist/config/load.js +3 -3
  238. package/dist/config/sanitize.d.ts +1 -1
  239. package/dist/config/sanitize.d.ts.map +1 -1
  240. package/dist/config/sanitize.js +9 -9
  241. package/dist/config/schema.js +3 -3
  242. package/dist/config/shared/adminViewSchema.js +2 -2
  243. package/dist/config/types.d.ts +11 -11
  244. package/dist/config/types.d.ts.map +1 -1
  245. package/dist/config/types.js +1 -1
  246. package/dist/config/validate.d.ts +1 -1
  247. package/dist/config/validate.d.ts.map +1 -1
  248. package/dist/config/validate.js +6 -6
  249. package/dist/database/combineQueries.d.ts +1 -1
  250. package/dist/database/combineQueries.d.ts.map +1 -1
  251. package/dist/database/combineQueries.js +2 -2
  252. package/dist/database/createDatabaseAdapter.d.ts +1 -1
  253. package/dist/database/createDatabaseAdapter.d.ts.map +1 -1
  254. package/dist/database/createDatabaseAdapter.js +7 -7
  255. package/dist/database/flattenWhereToOperators.d.ts +1 -1
  256. package/dist/database/flattenWhereToOperators.d.ts.map +1 -1
  257. package/dist/database/flattenWhereToOperators.js +1 -1
  258. package/dist/database/getLocalizedPaths.d.ts +3 -3
  259. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  260. package/dist/database/getLocalizedPaths.js +3 -3
  261. package/dist/database/migrations/createMigration.d.ts +1 -1
  262. package/dist/database/migrations/createMigration.d.ts.map +1 -1
  263. package/dist/database/migrations/createMigration.js +2 -2
  264. package/dist/database/migrations/getMigrations.d.ts +2 -2
  265. package/dist/database/migrations/getMigrations.d.ts.map +1 -1
  266. package/dist/database/migrations/getMigrations.js +1 -1
  267. package/dist/database/migrations/migrate.d.ts +1 -1
  268. package/dist/database/migrations/migrate.d.ts.map +1 -1
  269. package/dist/database/migrations/migrate.js +6 -6
  270. package/dist/database/migrations/migrateDown.d.ts +1 -1
  271. package/dist/database/migrations/migrateDown.d.ts.map +1 -1
  272. package/dist/database/migrations/migrateDown.js +6 -6
  273. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  274. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  275. package/dist/database/migrations/migrateRefresh.js +6 -6
  276. package/dist/database/migrations/migrateReset.d.ts +1 -1
  277. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  278. package/dist/database/migrations/migrateReset.js +6 -6
  279. package/dist/database/migrations/migrateStatus.d.ts +1 -1
  280. package/dist/database/migrations/migrateStatus.d.ts.map +1 -1
  281. package/dist/database/migrations/migrateStatus.js +3 -3
  282. package/dist/database/migrations/migrationsCollection.d.ts +1 -1
  283. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  284. package/dist/database/migrations/migrationsCollection.js +1 -1
  285. package/dist/database/migrations/readMigrationFiles.d.ts +2 -2
  286. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  287. package/dist/database/migrations/readMigrationFiles.js +1 -1
  288. package/dist/database/queryValidation/types.d.ts +2 -2
  289. package/dist/database/queryValidation/types.d.ts.map +1 -1
  290. package/dist/database/queryValidation/types.js +1 -1
  291. package/dist/database/queryValidation/validateQueryPaths.d.ts +5 -5
  292. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  293. package/dist/database/queryValidation/validateQueryPaths.js +6 -6
  294. package/dist/database/queryValidation/validateSearchParams.d.ts +5 -5
  295. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  296. package/dist/database/queryValidation/validateSearchParams.js +9 -9
  297. package/dist/database/types.d.ts +4 -5
  298. package/dist/database/types.d.ts.map +1 -1
  299. package/dist/database/types.js +1 -1
  300. package/dist/email/build.d.ts +2 -2
  301. package/dist/email/build.d.ts.map +1 -1
  302. package/dist/email/build.js +4 -4
  303. package/dist/email/defaults.d.ts +1 -1
  304. package/dist/email/defaults.d.ts.map +1 -1
  305. package/dist/email/defaults.js +1 -1
  306. package/dist/email/mockHandler.d.ts +2 -2
  307. package/dist/email/mockHandler.d.ts.map +1 -1
  308. package/dist/email/mockHandler.js +2 -2
  309. package/dist/errors/AuthenticationError.d.ts +1 -1
  310. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  311. package/dist/errors/AuthenticationError.js +2 -2
  312. package/dist/errors/DuplicateCollection.d.ts +1 -1
  313. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  314. package/dist/errors/DuplicateCollection.js +2 -2
  315. package/dist/errors/DuplicateFieldName.d.ts +1 -1
  316. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  317. package/dist/errors/DuplicateFieldName.js +2 -2
  318. package/dist/errors/DuplicateGlobal.d.ts +2 -2
  319. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  320. package/dist/errors/DuplicateGlobal.js +2 -2
  321. package/dist/errors/ErrorDeletingFile.d.ts +1 -1
  322. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  323. package/dist/errors/ErrorDeletingFile.js +2 -2
  324. package/dist/errors/FileUploadError.d.ts +1 -1
  325. package/dist/errors/FileUploadError.d.ts.map +1 -1
  326. package/dist/errors/FileUploadError.js +2 -2
  327. package/dist/errors/Forbidden.d.ts +1 -1
  328. package/dist/errors/Forbidden.d.ts.map +1 -1
  329. package/dist/errors/Forbidden.js +2 -2
  330. package/dist/errors/InvalidConfiguration.d.ts +1 -1
  331. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  332. package/dist/errors/InvalidConfiguration.js +2 -2
  333. package/dist/errors/InvalidFieldName.d.ts +2 -2
  334. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  335. package/dist/errors/InvalidFieldName.js +2 -2
  336. package/dist/errors/InvalidFieldRelationship.d.ts +2 -2
  337. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  338. package/dist/errors/InvalidFieldRelationship.js +2 -2
  339. package/dist/errors/InvalidSchema.d.ts +1 -1
  340. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  341. package/dist/errors/InvalidSchema.js +2 -2
  342. package/dist/errors/LockedAuth.d.ts +1 -1
  343. package/dist/errors/LockedAuth.d.ts.map +1 -1
  344. package/dist/errors/LockedAuth.js +2 -2
  345. package/dist/errors/MissingCollectionLabel.d.ts +1 -1
  346. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  347. package/dist/errors/MissingCollectionLabel.js +2 -2
  348. package/dist/errors/MissingFieldInputOptions.d.ts +2 -2
  349. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  350. package/dist/errors/MissingFieldInputOptions.js +2 -2
  351. package/dist/errors/MissingFieldType.d.ts +2 -2
  352. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  353. package/dist/errors/MissingFieldType.js +3 -3
  354. package/dist/errors/MissingFile.d.ts +1 -1
  355. package/dist/errors/MissingFile.d.ts.map +1 -1
  356. package/dist/errors/MissingFile.js +2 -2
  357. package/dist/errors/NotFound.d.ts +1 -1
  358. package/dist/errors/NotFound.d.ts.map +1 -1
  359. package/dist/errors/NotFound.js +2 -2
  360. package/dist/errors/QueryError.d.ts +1 -1
  361. package/dist/errors/QueryError.d.ts.map +1 -1
  362. package/dist/errors/QueryError.js +2 -2
  363. package/dist/errors/TimestampsRequired.d.ts +2 -2
  364. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  365. package/dist/errors/TimestampsRequired.js +2 -2
  366. package/dist/errors/UnathorizedError.d.ts +1 -1
  367. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  368. package/dist/errors/UnathorizedError.js +2 -2
  369. package/dist/errors/ValidationError.d.ts +1 -1
  370. package/dist/errors/ValidationError.d.ts.map +1 -1
  371. package/dist/errors/ValidationError.js +2 -2
  372. package/dist/errors/index.d.ts +19 -19
  373. package/dist/errors/index.d.ts.map +1 -1
  374. package/dist/errors/index.js +20 -20
  375. package/dist/errors/types.d.ts +1 -1
  376. package/dist/errors/types.d.ts.map +1 -1
  377. package/dist/errors/types.js +2 -2
  378. package/dist/exports/auth.d.ts +5 -5
  379. package/dist/exports/auth.d.ts.map +1 -1
  380. package/dist/exports/auth.js +5 -5
  381. package/dist/exports/components/utilities.d.ts +1 -0
  382. package/dist/exports/config.d.ts +10 -10
  383. package/dist/exports/config.d.ts.map +1 -1
  384. package/dist/exports/config.js +10 -10
  385. package/dist/exports/database.d.ts +22 -22
  386. package/dist/exports/database.d.ts.map +1 -1
  387. package/dist/exports/database.js +21 -21
  388. package/dist/exports/errors.d.ts +1 -1
  389. package/dist/exports/errors.d.ts.map +1 -1
  390. package/dist/exports/errors.js +2 -2
  391. package/dist/exports/fields/index.d.ts +2 -2
  392. package/dist/exports/fields/index.d.ts.map +1 -1
  393. package/dist/exports/fields/index.js +3 -3
  394. package/dist/exports/fields/validations.d.ts +1 -1
  395. package/dist/exports/fields/validations.d.ts.map +1 -1
  396. package/dist/exports/fields/validations.js +2 -2
  397. package/dist/exports/operations.d.ts +28 -28
  398. package/dist/exports/operations.d.ts.map +1 -1
  399. package/dist/exports/operations.js +29 -29
  400. package/dist/exports/types.d.ts +11 -11
  401. package/dist/exports/types.d.ts.map +1 -1
  402. package/dist/exports/types.js +4 -4
  403. package/dist/exports/utilities.d.ts +27 -27
  404. package/dist/exports/utilities.d.ts.map +1 -1
  405. package/dist/exports/utilities.js +28 -28
  406. package/dist/exports/versions.d.ts +9 -9
  407. package/dist/exports/versions.d.ts.map +1 -1
  408. package/dist/exports/versions.js +9 -9
  409. package/dist/fields/baseFields/baseBlockFields.d.ts +1 -1
  410. package/dist/fields/baseFields/baseBlockFields.d.ts.map +1 -1
  411. package/dist/fields/baseFields/baseBlockFields.js +4 -4
  412. package/dist/fields/baseFields/baseIDField.d.ts +1 -1
  413. package/dist/fields/baseFields/baseIDField.d.ts.map +1 -1
  414. package/dist/fields/baseFields/baseIDField.js +4 -4
  415. package/dist/fields/config/sanitize.d.ts +2 -2
  416. package/dist/fields/config/sanitize.d.ts.map +1 -1
  417. package/dist/fields/config/sanitize.js +11 -11
  418. package/dist/fields/config/sanitize.spec.js +1 -1
  419. package/dist/fields/config/schema.js +49 -49
  420. package/dist/fields/config/types.d.ts +5 -6
  421. package/dist/fields/config/types.d.ts.map +1 -1
  422. package/dist/fields/config/types.js +1 -1
  423. package/dist/fields/getDefaultValue.d.ts +1 -1
  424. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  425. package/dist/fields/getDefaultValue.js +1 -1
  426. package/dist/fields/hooks/afterChange/index.d.ts +3 -3
  427. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  428. package/dist/fields/hooks/afterChange/index.js +3 -3
  429. package/dist/fields/hooks/afterChange/promise.d.ts +4 -4
  430. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  431. package/dist/fields/hooks/afterChange/promise.js +3 -3
  432. package/dist/fields/hooks/afterChange/traverseFields.d.ts +4 -4
  433. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  434. package/dist/fields/hooks/afterChange/traverseFields.js +2 -2
  435. package/dist/fields/hooks/afterRead/index.d.ts +3 -3
  436. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  437. package/dist/fields/hooks/afterRead/index.js +3 -3
  438. package/dist/fields/hooks/afterRead/promise.d.ts +4 -4
  439. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  440. package/dist/fields/hooks/afterRead/promise.js +5 -7
  441. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
  442. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  443. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +2 -2
  444. package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -4
  445. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  446. package/dist/fields/hooks/afterRead/traverseFields.js +2 -2
  447. package/dist/fields/hooks/beforeChange/index.d.ts +3 -4
  448. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  449. package/dist/fields/hooks/beforeChange/index.js +4 -4
  450. package/dist/fields/hooks/beforeChange/promise.d.ts +4 -5
  451. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  452. package/dist/fields/hooks/beforeChange/promise.js +4 -4
  453. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +4 -5
  454. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  455. package/dist/fields/hooks/beforeChange/traverseFields.js +2 -2
  456. package/dist/fields/hooks/beforeValidate/index.d.ts +3 -3
  457. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  458. package/dist/fields/hooks/beforeValidate/index.js +3 -3
  459. package/dist/fields/hooks/beforeValidate/promise.d.ts +4 -4
  460. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  461. package/dist/fields/hooks/beforeValidate/promise.js +6 -6
  462. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +4 -4
  463. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  464. package/dist/fields/hooks/beforeValidate/traverseFields.js +2 -2
  465. package/dist/fields/mergeBaseFields.d.ts +1 -1
  466. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  467. package/dist/fields/mergeBaseFields.js +2 -2
  468. package/dist/fields/validations.d.ts +6 -6
  469. package/dist/fields/validations.d.ts.map +1 -1
  470. package/dist/fields/validations.js +5 -5
  471. package/dist/fields/validations.spec.js +2 -2
  472. package/dist/globals/config/sanitize.d.ts +2 -2
  473. package/dist/globals/config/sanitize.d.ts.map +1 -1
  474. package/dist/globals/config/sanitize.js +11 -11
  475. package/dist/globals/config/schema.js +4 -4
  476. package/dist/globals/config/types.d.ts +7 -7
  477. package/dist/globals/config/types.d.ts.map +1 -1
  478. package/dist/globals/config/types.js +1 -1
  479. package/dist/globals/operations/docAccess.d.ts +3 -3
  480. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  481. package/dist/globals/operations/docAccess.js +7 -7
  482. package/dist/globals/operations/findOne.d.ts +2 -2
  483. package/dist/globals/operations/findOne.d.ts.map +1 -1
  484. package/dist/globals/operations/findOne.js +7 -7
  485. package/dist/globals/operations/findVersionByID.d.ts +3 -3
  486. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  487. package/dist/globals/operations/findVersionByID.js +8 -8
  488. package/dist/globals/operations/findVersions.d.ts +4 -5
  489. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  490. package/dist/globals/operations/findVersions.js +10 -10
  491. package/dist/globals/operations/local/findOne.d.ts +2 -4
  492. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  493. package/dist/globals/operations/local/findOne.js +7 -7
  494. package/dist/globals/operations/local/findVersionByID.d.ts +3 -5
  495. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  496. package/dist/globals/operations/local/findVersionByID.js +5 -5
  497. package/dist/globals/operations/local/findVersions.d.ts +4 -6
  498. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  499. package/dist/globals/operations/local/findVersions.js +5 -5
  500. package/dist/globals/operations/local/index.d.ts +5 -5
  501. package/dist/globals/operations/local/index.d.ts.map +1 -1
  502. package/dist/globals/operations/local/index.js +6 -6
  503. package/dist/globals/operations/local/restoreVersion.d.ts +2 -4
  504. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  505. package/dist/globals/operations/local/restoreVersion.js +5 -5
  506. package/dist/globals/operations/local/update.d.ts +2 -4
  507. package/dist/globals/operations/local/update.d.ts.map +1 -1
  508. package/dist/globals/operations/local/update.js +5 -5
  509. package/dist/globals/operations/restoreVersion.d.ts +3 -3
  510. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  511. package/dist/globals/operations/restoreVersion.js +8 -8
  512. package/dist/globals/operations/update.d.ts +9 -9
  513. package/dist/globals/operations/update.d.ts.map +1 -1
  514. package/dist/globals/operations/update.js +11 -11
  515. package/dist/index.d.ts +29 -29
  516. package/dist/index.d.ts.map +1 -1
  517. package/dist/index.js +12 -12
  518. package/dist/preferences/deleteUserPreferences.d.ts +3 -3
  519. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  520. package/dist/preferences/deleteUserPreferences.js +1 -1
  521. package/dist/preferences/operations/delete.d.ts +2 -2
  522. package/dist/preferences/operations/delete.d.ts.map +1 -1
  523. package/dist/preferences/operations/delete.js +5 -5
  524. package/dist/preferences/operations/findOne.d.ts +2 -2
  525. package/dist/preferences/operations/findOne.d.ts.map +1 -1
  526. package/dist/preferences/operations/findOne.js +1 -1
  527. package/dist/preferences/operations/update.d.ts +1 -1
  528. package/dist/preferences/operations/update.d.ts.map +1 -1
  529. package/dist/preferences/operations/update.js +4 -4
  530. package/dist/preferences/preferencesCollection.d.ts +2 -2
  531. package/dist/preferences/preferencesCollection.d.ts.map +1 -1
  532. package/dist/preferences/preferencesCollection.js +4 -4
  533. package/dist/preferences/requestHandlers/delete.d.ts +1 -1
  534. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  535. package/dist/preferences/requestHandlers/delete.js +2 -2
  536. package/dist/preferences/requestHandlers/findOne.d.ts +1 -1
  537. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  538. package/dist/preferences/requestHandlers/findOne.js +2 -2
  539. package/dist/preferences/requestHandlers/update.d.ts +1 -1
  540. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  541. package/dist/preferences/requestHandlers/update.js +2 -2
  542. package/dist/preferences/types.d.ts +2 -2
  543. package/dist/preferences/types.d.ts.map +1 -1
  544. package/dist/preferences/types.js +1 -1
  545. package/dist/translations/getLocalI18n.d.ts +1 -1
  546. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  547. package/dist/translations/getLocalI18n.js +1 -1
  548. package/dist/types/index.d.ts +6 -6
  549. package/dist/types/index.d.ts.map +1 -1
  550. package/dist/types/index.js +1 -1
  551. package/dist/uploads/deleteAssociatedFiles.d.ts +4 -4
  552. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  553. package/dist/uploads/deleteAssociatedFiles.js +3 -3
  554. package/dist/uploads/docWithFilenameExists.d.ts +1 -1
  555. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  556. package/dist/uploads/docWithFilenameExists.js +1 -1
  557. package/dist/uploads/generateFileData.d.ts +4 -4
  558. package/dist/uploads/generateFileData.d.ts.map +1 -1
  559. package/dist/uploads/generateFileData.js +10 -10
  560. package/dist/uploads/getBaseFields.d.ts +3 -3
  561. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  562. package/dist/uploads/getBaseFields.js +3 -3
  563. package/dist/uploads/getExternalFile.d.ts +2 -2
  564. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  565. package/dist/uploads/getExternalFile.js +2 -2
  566. package/dist/uploads/getFileByPath.d.ts +1 -1
  567. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  568. package/dist/uploads/getFileByPath.js +1 -1
  569. package/dist/uploads/getImageSize.d.ts +2 -2
  570. package/dist/uploads/getImageSize.d.ts.map +1 -1
  571. package/dist/uploads/getImageSize.js +1 -1
  572. package/dist/uploads/getSafeFilename.d.ts +1 -1
  573. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  574. package/dist/uploads/getSafeFilename.js +3 -3
  575. package/dist/uploads/imageResizer.d.ts +4 -5
  576. package/dist/uploads/imageResizer.d.ts.map +1 -1
  577. package/dist/uploads/imageResizer.js +3 -3
  578. package/dist/uploads/mimeTypeValidator.d.ts +1 -1
  579. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  580. package/dist/uploads/mimeTypeValidator.js +1 -1
  581. package/dist/uploads/saveBufferToFile.d.ts +1 -1
  582. package/dist/uploads/types.d.ts +2 -2
  583. package/dist/uploads/types.d.ts.map +1 -1
  584. package/dist/uploads/types.js +1 -1
  585. package/dist/uploads/unlinkTempFiles.d.ts +3 -3
  586. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  587. package/dist/uploads/unlinkTempFiles.js +2 -2
  588. package/dist/uploads/uploadFiles.d.ts +3 -3
  589. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  590. package/dist/uploads/uploadFiles.js +3 -3
  591. package/dist/utilities/checkDuplicateCollections.d.ts +1 -1
  592. package/dist/utilities/checkDuplicateCollections.d.ts.map +1 -1
  593. package/dist/utilities/checkDuplicateCollections.js +2 -2
  594. package/dist/utilities/commitTransaction.d.ts +1 -1
  595. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  596. package/dist/utilities/commitTransaction.js +1 -1
  597. package/dist/utilities/configToJSONSchema.d.ts +4 -4
  598. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  599. package/dist/utilities/configToJSONSchema.js +4 -4
  600. package/dist/utilities/configToJSONSchema.spec.js +3 -3
  601. package/dist/utilities/createLocalReq.d.ts +3 -3
  602. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  603. package/dist/utilities/createLocalReq.js +3 -3
  604. package/dist/utilities/fieldSchemaToJSON.d.ts +2 -2
  605. package/dist/utilities/fieldSchemaToJSON.d.ts.map +1 -1
  606. package/dist/utilities/fieldSchemaToJSON.js +1 -1
  607. package/dist/utilities/flattenTopLevelFields.d.ts +1 -1
  608. package/dist/utilities/flattenTopLevelFields.d.ts.map +1 -1
  609. package/dist/utilities/flattenTopLevelFields.js +2 -2
  610. package/dist/utilities/getEntityPolicies.d.ts +4 -4
  611. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  612. package/dist/utilities/getEntityPolicies.js +2 -2
  613. package/dist/utilities/getIDType.d.ts +2 -2
  614. package/dist/utilities/getIDType.d.ts.map +1 -1
  615. package/dist/utilities/getIDType.js +1 -1
  616. package/dist/utilities/initTransaction.d.ts +1 -1
  617. package/dist/utilities/initTransaction.d.ts.map +1 -1
  618. package/dist/utilities/initTransaction.js +1 -1
  619. package/dist/utilities/isEntityHidden.d.ts +2 -2
  620. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  621. package/dist/utilities/isEntityHidden.js +1 -1
  622. package/dist/utilities/isValidID.js +3 -3
  623. package/dist/utilities/killTransaction.d.ts +1 -1
  624. package/dist/utilities/killTransaction.d.ts.map +1 -1
  625. package/dist/utilities/killTransaction.js +1 -1
  626. package/dist/utilities/logger.d.ts +3 -3
  627. package/dist/utilities/logger.d.ts.map +1 -1
  628. package/dist/utilities/logger.js +4 -4
  629. package/dist/utilities/parseCookies.js +2 -2
  630. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  631. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  632. package/dist/utilities/telemetry/events/adminInit.js +3 -3
  633. package/dist/utilities/telemetry/events/serverInit.d.ts +1 -1
  634. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  635. package/dist/utilities/telemetry/events/serverInit.js +2 -2
  636. package/dist/utilities/telemetry/index.d.ts +3 -3
  637. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  638. package/dist/utilities/telemetry/index.js +3 -3
  639. package/dist/versions/baseFields.d.ts +1 -1
  640. package/dist/versions/baseFields.d.ts.map +1 -1
  641. package/dist/versions/baseFields.js +4 -4
  642. package/dist/versions/buildCollectionFields.d.ts +2 -2
  643. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  644. package/dist/versions/buildCollectionFields.js +1 -1
  645. package/dist/versions/buildGlobalFields.d.ts +2 -2
  646. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  647. package/dist/versions/buildGlobalFields.js +11 -11
  648. package/dist/versions/deleteCollectionVersions.d.ts +3 -3
  649. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  650. package/dist/versions/deleteCollectionVersions.js +2 -2
  651. package/dist/versions/drafts/appendVersionToQueryKey.d.ts +1 -1
  652. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  653. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -1
  654. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +4 -4
  655. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  656. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +6 -6
  657. package/dist/versions/enforceMaxVersions.d.ts +3 -3
  658. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  659. package/dist/versions/enforceMaxVersions.js +1 -1
  660. package/dist/versions/getLatestCollectionVersion.d.ts +3 -3
  661. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  662. package/dist/versions/getLatestCollectionVersion.js +2 -2
  663. package/dist/versions/getLatestGlobalVersion.d.ts +3 -3
  664. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  665. package/dist/versions/getLatestGlobalVersion.js +4 -4
  666. package/dist/versions/getVersionsModelName.d.ts +2 -2
  667. package/dist/versions/getVersionsModelName.d.ts.map +1 -1
  668. package/dist/versions/getVersionsModelName.js +1 -1
  669. package/dist/versions/saveVersion.d.ts +4 -4
  670. package/dist/versions/saveVersion.d.ts.map +1 -1
  671. package/dist/versions/saveVersion.js +4 -4
  672. package/errors.d.ts +1 -1
  673. package/errors.js +2 -2
  674. package/operations.d.ts +28 -28
  675. package/operations.js +29 -29
  676. package/package.json +2 -2
  677. package/types.d.ts +11 -11
  678. package/types.js +4 -4
  679. package/utilities.d.ts +27 -27
  680. package/utilities.js +28 -28
  681. package/versions.d.ts +9 -9
  682. package/versions.js +9 -9
  683. package/.eslintrc.js +0 -58
  684. package/dist/bundlers/mocks/db-mongodb.js +0 -2
  685. package/dist/bundlers/mocks/db-postgres.js +0 -3
  686. package/dist/bundlers/mocks/dotENV.js +0 -5
  687. package/dist/bundlers/mocks/emptyModule.js +0 -3
  688. package/dist/bundlers/mocks/fileMock.js +0 -3
  689. package/dist/bundlers/types.d.ts +0 -8
  690. package/dist/bundlers/types.d.ts.map +0 -1
  691. package/dist/bundlers/types.js +0 -3
  692. package/dist/express/middleware/errorHandler.d.ts +0 -1
  693. package/dist/express/middleware/errorHandler.d.ts.map +0 -1
  694. package/dist/express/middleware/errorHandler.js +0 -2
  695. package/dist/express/middleware/index.d.ts +0 -1
  696. package/dist/express/middleware/index.d.ts.map +0 -1
  697. package/dist/express/middleware/index.js +0 -2
  698. package/dist/globals/config/build.d.ts +0 -1
  699. package/dist/globals/config/build.d.ts.map +0 -1
  700. package/dist/globals/config/build.js +0 -2
  701. package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -1
  702. package/dist/globals/graphql/resolvers/docAccess.d.ts.map +0 -1
  703. package/dist/globals/graphql/resolvers/docAccess.js +0 -2
  704. package/dist/utilities/pinoPretty.d.ts +0 -1
  705. package/dist/utilities/pinoPretty.d.ts.map +0 -1
  706. package/dist/utilities/pinoPretty.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAKpE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,cAAc,2JA6B1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK/E,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,cAAc,2JA6B1B,CAAA"}
@@ -1,5 +1,5 @@
1
- import { deepCopyObject } from '../../../utilities/deepCopyObject';
2
- import { traverseFields } from './traverseFields';
1
+ import { deepCopyObject } from '../../../utilities/deepCopyObject.js';
2
+ import { traverseFields } from './traverseFields.js';
3
3
  export const beforeValidate = async ({ id, collection, context, data: incomingData, doc, global, operation, overrideAccess, req })=>{
4
4
  const data = deepCopyObject(incomingData);
5
5
  await traverseFields({
@@ -19,4 +19,4 @@ export const beforeValidate = async ({ id, collection, context, data: incomingDa
19
19
  return data;
20
20
  };
21
21
 
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2RlZXBDb3B5T2JqZWN0J1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgVFxuICBkb2M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFRcbiAgZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfCBudWxsXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJ1xuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59XG5cbmV4cG9ydCBjb25zdCBiZWZvcmVWYWxpZGF0ZSA9IGFzeW5jIDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGE6IGluY29taW5nRGF0YSxcbiAgZG9jLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbn06IEFyZ3M8VD4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgZGF0YSA9IGRlZXBDb3B5T2JqZWN0KGluY29taW5nRGF0YSlcblxuICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgaWQsXG4gICAgY29sbGVjdGlvbixcbiAgICBjb250ZXh0LFxuICAgIGRhdGEsXG4gICAgZG9jLFxuICAgIGZpZWxkczogY29sbGVjdGlvbj8uZmllbGRzIHx8IGdsb2JhbD8uZmllbGRzLFxuICAgIGdsb2JhbCxcbiAgICBvcGVyYXRpb24sXG4gICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgcmVxLFxuICAgIHNpYmxpbmdEYXRhOiBkYXRhLFxuICAgIHNpYmxpbmdEb2M6IGRvYyxcbiAgfSlcblxuICByZXR1cm4gZGF0YVxufVxuIl0sIm5hbWVzIjpbImRlZXBDb3B5T2JqZWN0IiwidHJhdmVyc2VGaWVsZHMiLCJiZWZvcmVWYWxpZGF0ZSIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiaW5jb21pbmdEYXRhIiwiZG9jIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJmaWVsZHMiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiXSwibWFwcGluZ3MiOiJBQUlBLFNBQVNBLGNBQWMsUUFBUSxvQ0FBbUM7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLG1CQUFrQjtBQWNqRCxPQUFPLE1BQU1DLGlCQUFpQixPQUEwQyxFQUN0RUMsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsTUFBTUMsWUFBWSxFQUNsQkMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsY0FBYyxFQUNkQyxHQUFHLEVBQ0s7SUFDUixNQUFNTixPQUFPTixlQUFlTztJQUU1QixNQUFNTixlQUFlO1FBQ25CRTtRQUNBQztRQUNBQztRQUNBQztRQUNBRTtRQUNBSyxRQUFRVCxZQUFZUyxVQUFVSixRQUFRSTtRQUN0Q0o7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUUsYUFBYVI7UUFDYlMsWUFBWVA7SUFDZDtJQUVBLE9BQU9GO0FBQ1QsRUFBQyJ9
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2luZGV4LmQudHMnXG5cbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2RlZXBDb3B5T2JqZWN0LmpzJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzLmpzJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgVFxuICBkb2M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IFRcbiAgZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfCBudWxsXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScgfCAndXBkYXRlJ1xuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59XG5cbmV4cG9ydCBjb25zdCBiZWZvcmVWYWxpZGF0ZSA9IGFzeW5jIDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGE6IGluY29taW5nRGF0YSxcbiAgZG9jLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbn06IEFyZ3M8VD4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgZGF0YSA9IGRlZXBDb3B5T2JqZWN0KGluY29taW5nRGF0YSlcblxuICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgaWQsXG4gICAgY29sbGVjdGlvbixcbiAgICBjb250ZXh0LFxuICAgIGRhdGEsXG4gICAgZG9jLFxuICAgIGZpZWxkczogY29sbGVjdGlvbj8uZmllbGRzIHx8IGdsb2JhbD8uZmllbGRzLFxuICAgIGdsb2JhbCxcbiAgICBvcGVyYXRpb24sXG4gICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgcmVxLFxuICAgIHNpYmxpbmdEYXRhOiBkYXRhLFxuICAgIHNpYmxpbmdEb2M6IGRvYyxcbiAgfSlcblxuICByZXR1cm4gZGF0YVxufVxuIl0sIm5hbWVzIjpbImRlZXBDb3B5T2JqZWN0IiwidHJhdmVyc2VGaWVsZHMiLCJiZWZvcmVWYWxpZGF0ZSIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiaW5jb21pbmdEYXRhIiwiZG9jIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJmaWVsZHMiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiXSwibWFwcGluZ3MiOiJBQUlBLFNBQVNBLGNBQWMsUUFBUSx1Q0FBc0M7QUFDckUsU0FBU0MsY0FBYyxRQUFRLHNCQUFxQjtBQWNwRCxPQUFPLE1BQU1DLGlCQUFpQixPQUEwQyxFQUN0RUMsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsTUFBTUMsWUFBWSxFQUNsQkMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsY0FBYyxFQUNkQyxHQUFHLEVBQ0s7SUFDUixNQUFNTixPQUFPTixlQUFlTztJQUU1QixNQUFNTixlQUFlO1FBQ25CRTtRQUNBQztRQUNBQztRQUNBQztRQUNBRTtRQUNBSyxRQUFRVCxZQUFZUyxVQUFVSixRQUFRSTtRQUN0Q0o7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUUsYUFBYVI7UUFDYlMsWUFBWVA7SUFDZDtJQUVBLE9BQU9GO0FBQ1QsRUFBQyJ9
@@ -1,7 +1,7 @@
1
- import type { SanitizedCollectionConfig } from '../../../collections/config/types';
2
- import type { SanitizedGlobalConfig } from '../../../globals/config/types';
3
- import type { PayloadRequest, RequestContext } from '../../../types';
4
- import type { Field, TabAsField } from '../../config/types';
1
+ import type { SanitizedCollectionConfig } from '../../../collections/config/types.d.ts';
2
+ import type { SanitizedGlobalConfig } from '../../../globals/config/types.d.ts';
3
+ import type { PayloadRequest, RequestContext } from '../../../types/index.d.ts';
4
+ import type { Field, TabAsField } from '../../config/types.d.ts';
5
5
  type Args<T> = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAQ3D,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AASD,eAAO,MAAM,OAAO,mIAaP,QAAQ,IAAI,CA+XxB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAQhE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AASD,eAAO,MAAM,OAAO,mIAaP,QAAQ,IAAI,CA+XxB,CAAA"}
@@ -1,8 +1,8 @@
1
- /* eslint-disable no-param-reassign */ import { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types';
2
- import getValueWithDefault from '../../getDefaultValue';
3
- import { cloneDataFromOriginalDoc } from '../beforeChange/cloneDataFromOriginalDoc';
4
- import { getExistingRowDoc } from '../beforeChange/getExistingRowDoc';
5
- import { traverseFields } from './traverseFields';
1
+ /* eslint-disable no-param-reassign */ import { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types.js';
2
+ import getValueWithDefault from '../../getDefaultValue.js';
3
+ import { cloneDataFromOriginalDoc } from '../beforeChange/cloneDataFromOriginalDoc.js';
4
+ import { getExistingRowDoc } from '../beforeChange/getExistingRowDoc.js';
5
+ import { traverseFields } from './traverseFields.js';
6
6
  // This function is responsible for the following actions, in order:
7
7
  // - Sanitize incoming data
8
8
  // - Execute field hooks
@@ -338,4 +338,4 @@ export const promise = async ({ id, collection, context, data, doc, field, globa
338
338
  }
339
339
  };
340
340
 
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lLCB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgZ2V0VmFsdWVXaXRoRGVmYXVsdCBmcm9tICcuLi8uLi9nZXREZWZhdWx0VmFsdWUnXG5pbXBvcnQgeyBjbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuLi9iZWZvcmVDaGFuZ2UvZ2V0RXhpc3RpbmdSb3dEb2MnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGQ6IEZpZWxkIHwgVGFiQXNGaWVsZFxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHRoZSBmb2xsb3dpbmcgYWN0aW9ucywgaW4gb3JkZXI6XG4vLyAtIFNhbml0aXplIGluY29taW5nIGRhdGFcbi8vIC0gRXhlY3V0ZSBmaWVsZCBob29rc1xuLy8gLSBFeGVjdXRlIGZpZWxkIGFjY2VzcyBjb250cm9sXG4vLyAtIE1lcmdlIG9yaWdpbmFsIGRvY3VtZW50IGRhdGEgaW50byBpbmNvbWluZyBkYXRhXG4vLyAtIENvbXB1dGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuZGVmaW5lZCBmaWVsZHNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyA8VD4oe1xuICBpZCxcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICBpZiAoZmllbGQubmFtZSA9PT0gJ2lkJykge1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdcblxuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHBhcnNlRmxvYXQodmFsdWUpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZmllbGQudHlwZSA9PT0gJ3RleHQnICYmXG4gICAgICAgIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXT8udG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnc3RyaW5nJ1xuICAgICAgKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0udG9TdHJpbmcoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNhbml0aXplIGluY29taW5nIGRhdGFcbiAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmdbXSkubWFwKChjb29yZGluYXRlLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvb3JkaW5hdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gYXMgc3RyaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHRyaW1tZWQgPSB2YWx1ZS50cmltKClcbiAgICAgICAgICAgICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID09PSAwID8gbnVsbCA6IHBhcnNlRmxvYXQodHJpbW1lZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb29yZGluYXRlXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2NoZWNrYm94Jzoge1xuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICd0cnVlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB0cnVlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ2ZhbHNlJykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBmYWxzZVxuICAgICAgICBpZiAoc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmljaFRleHQnOiB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJpY2hUZXh0SlNPTiA9IEpTT04ucGFyc2Uoc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSByaWNoVGV4dEpTT05cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIC8vIERpc3JlZ2FyZCB0aGlzIGRhdGEgYXMgaXQgaXMgbm90IHZhbGlkLlxuICAgICAgICAgICAgLy8gV2lsbCBiZSByZXBvcnRlZCB0byB1c2VyIGJ5IGZpZWxkIHZhbGlkYXRpb25cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICcnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdub25lJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnbnVsbCcgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gbnVsbFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHsgcmVsYXRpb25Ubzogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gcmVsYXRlZERvYy5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0ge1xuICAgICAgICAgICAgICAgICAgLi4ucmVsYXRlZERvYyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJzZUZsb2F0KHJlbGF0ZWREb2MudmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmXG4gICAgICAgICAgICBmaWVsZC5oYXNNYW55ICE9PSB0cnVlICYmXG4gICAgICAgICAgICB2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24odmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSB2YWx1ZS5yZWxhdGlvblRvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgIGZpZWxkQWZmZWN0c0RhdGEoY29sbGVjdGlvbkZpZWxkKSAmJiBjb2xsZWN0aW9uRmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHsgLi4udmFsdWUsIHZhbHVlOiBwYXJzZUZsb2F0KHZhbHVlLnZhbHVlIGFzIHN0cmluZykgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHJlbGF0ZWREb2M6IHVua25vd24sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkZpZWxkKSA9PlxuICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBJREZpZWxkPy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdW2ldID0gcGFyc2VGbG9hdChyZWxhdGVkRG9jIGFzIHN0cmluZylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnICYmIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgICAgLy8gSGFuZGxlIGNhc2VzIG9mIGFycmF5cyBiZWluZyBpbnRlbnRpb25hbGx5IHNldCB0byAwXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJzAnIHx8IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAwKSB7XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgaG9va3NcbiAgICBpZiAoZmllbGQuaG9va3M/LmJlZm9yZVZhbGlkYXRlKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIEV4ZWN1dGUgYWNjZXNzIGNvbnRyb2xcbiAgICBpZiAoZmllbGQuYWNjZXNzICYmIGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBvdmVycmlkZUFjY2Vzc1xuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBhd2FpdCBmaWVsZC5hY2Nlc3Nbb3BlcmF0aW9uXSh7IGlkLCBkYXRhLCBkb2MsIHJlcSwgc2libGluZ0RhdGEgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgZGVsZXRlIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIG5vIGluY29taW5nIGRhdGEsIGJ1dCBleGlzdGluZyBkb2N1bWVudCBkYXRhIGlzIGZvdW5kLCBtZXJnZSBpdCBpblxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSBjb21wdXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBhd2FpdCBnZXRWYWx1ZVdpdGhEZWZhdWx0KHtcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICAgICAgdmFsdWU6IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyYXZlcnNlIHN1YmZpZWxkc1xuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgY29uc3QgZ3JvdXBEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGNvbnN0IGdyb3VwRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IGdyb3VwRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICByb3cuYmxvY2tUeXBlID0gYmxvY2tUeXBlVG9NYXRjaFxuXG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiU2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgICB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGE6IHRhYlNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJTaWJsaW5nRG9jLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiZmllbGRBZmZlY3RzRGF0YSIsInRhYkhhc05hbWUiLCJ2YWx1ZUlzVmFsdWVXaXRoUmVsYXRpb24iLCJnZXRWYWx1ZVdpdGhEZWZhdWx0IiwiY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jIiwiZ2V0RXhpc3RpbmdSb3dEb2MiLCJ0cmF2ZXJzZUZpZWxkcyIsInByb21pc2UiLCJpZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImZpZWxkIiwiZ2xvYmFsIiwib3BlcmF0aW9uIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJzaWJsaW5nRGF0YSIsInNpYmxpbmdEb2MiLCJuYW1lIiwidHlwZSIsInZhbHVlIiwicGFyc2VGbG9hdCIsInRvU3RyaW5nIiwidHJpbW1lZCIsInRyaW0iLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJjb29yZGluYXRlIiwiaSIsInJpY2hUZXh0SlNPTiIsIkpTT04iLCJwYXJzZSIsImhhc01hbnkiLCJyZWxhdGlvblRvIiwiZm9yRWFjaCIsInJlbGF0ZWREb2MiLCJyZWxhdGVkQ29sbGVjdGlvbiIsInBheWxvYWQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImZpbmQiLCJzbHVnIiwicmVsYXRpb25zaGlwSURGaWVsZCIsImZpZWxkcyIsImNvbGxlY3Rpb25GaWVsZCIsImhvb2tzIiwiYmVmb3JlVmFsaWRhdGUiLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJjdXJyZW50SG9vayIsImhvb2tlZFZhbHVlIiwib3JpZ2luYWxEb2MiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFjY2VzcyIsInJlc3VsdCIsImRlZmF1bHRWYWx1ZSIsImxvY2FsZSIsInVzZXIiLCJncm91cERhdGEiLCJncm91cERvYyIsInJvd3MiLCJwcm9taXNlcyIsInJvdyIsInB1c2giLCJhbGwiLCJyb3dTaWJsaW5nRG9jIiwiYmxvY2tUeXBlVG9NYXRjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFicyIsInRhYiJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DLEdBTXBDLFNBQVNBLGdCQUFnQixFQUFFQyxVQUFVLEVBQUVDLHdCQUF3QixRQUFRLHFCQUFvQjtBQUMzRixPQUFPQyx5QkFBeUIsd0JBQXVCO0FBQ3ZELFNBQVNDLHdCQUF3QixRQUFRLDJDQUEwQztBQUNuRixTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBbUM7QUFDckUsU0FBU0MsY0FBYyxRQUFRLG1CQUFrQjtBQWlCakQsb0VBQW9FO0FBQ3BFLDJCQUEyQjtBQUMzQix3QkFBd0I7QUFDeEIsaUNBQWlDO0FBQ2pDLG9EQUFvRDtBQUNwRCxnREFBZ0Q7QUFFaEQsT0FBTyxNQUFNQyxVQUFVLE9BQVUsRUFDL0JDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLEdBQUcsRUFDSEMsV0FB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
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvcHJvbWlzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2luZGV4LmQudHMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmQudHMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIHRhYkhhc05hbWUsIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcy5qcydcbmltcG9ydCBnZXRWYWx1ZVdpdGhEZWZhdWx0IGZyb20gJy4uLy4uL2dldERlZmF1bHRWYWx1ZS5qcydcbmltcG9ydCB7IGNsb25lRGF0YUZyb21PcmlnaW5hbERvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9jbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MuanMnXG5pbXBvcnQgeyBnZXRFeGlzdGluZ1Jvd0RvYyB9IGZyb20gJy4uL2JlZm9yZUNoYW5nZS9nZXRFeGlzdGluZ1Jvd0RvYy5qcydcbmltcG9ydCB7IHRyYXZlcnNlRmllbGRzIH0gZnJvbSAnLi90cmF2ZXJzZUZpZWxkcy5qcydcblxudHlwZSBBcmdzPFQ+ID0ge1xuICBjb2xsZWN0aW9uOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgbnVsbFxuICBjb250ZXh0OiBSZXF1ZXN0Q29udGV4dFxuICBkYXRhOiBUXG4gIGRvYzogVFxuICBmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgZmllbGQgYWNjZXNzIGNvbnRyb2xcbi8vIC0gTWVyZ2Ugb3JpZ2luYWwgZG9jdW1lbnQgZGF0YSBpbnRvIGluY29taW5nIGRhdGFcbi8vIC0gQ29tcHV0ZSBkZWZhdWx0IHZhbHVlcyBmb3IgdW5kZWZpbmVkIGZpZWxkc1xuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgIGlmIChmaWVsZC5uYW1lID09PSAnaWQnKSB7XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1xuXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gcGFyc2VGbG9hdCh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBmaWVsZC50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgdHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdPy50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXS50b1N0cmluZygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2FuaXRpemUgaW5jb21pbmcgZGF0YVxuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nXG4gICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncG9pbnQnOiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZ1tdKS5tYXAoKGNvb3JkaW5hdGUsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29vcmRpbmF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVtpXSBhcyBzdHJpbmdcbiAgICAgICAgICAgICAgY29uc3QgdHJpbW1lZCA9IHZhbHVlLnRyaW0oKVxuICAgICAgICAgICAgICByZXR1cm4gdHJpbW1lZC5sZW5ndGggPT09IDAgPyBudWxsIDogcGFyc2VGbG9hdCh0cmltbWVkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2hlY2tib3gnOiB7XG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3RydWUnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHRydWVcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnZmFsc2UnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGZhbHNlXG4gICAgICAgIGlmIChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gZmFsc2VcblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmljaFRleHRKU09OID0gSlNPTi5wYXJzZShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpXG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHJpY2hUZXh0SlNPTlxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gRGlzcmVnYXJkIHRoaXMgZGF0YSBhcyBpdCBpcyBub3QgdmFsaWQuXG4gICAgICAgICAgICAvLyBXaWxsIGJlIHJlcG9ydGVkIHRvIHVzZXIgYnkgZmllbGQgdmFsaWRhdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJycgfHxcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ25vbmUnIHx8XG4gICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdudWxsJyB8fFxuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSBudWxsXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyAmJiBmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogeyByZWxhdGlvblRvOiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0sIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgICAoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSByZWxhdGVkRG9jLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSB7XG4gICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcnNlRmxvYXQocmVsYXRlZERvYy52YWx1ZSBhcyBzdHJpbmcpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiZcbiAgICAgICAgICAgIGZpZWxkLmhhc01hbnkgIT09IHRydWUgJiZcbiAgICAgICAgICAgIHZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbih2YWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRDb2xsZWN0aW9uID0gcmVxLnBheWxvYWQuY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IHZhbHVlLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBJREZpZWxkID0gcmVsYXRlZENvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShjb2xsZWN0aW9uRmllbGQpICYmIGNvbGxlY3Rpb25GaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0geyAuLi52YWx1ZSwgdmFsdWU6IHBhcnNlRmxvYXQodmFsdWUudmFsdWUgYXMgc3RyaW5nKSB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYzogdW5rbm93biwgaSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbiA9IHJlcS5wYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwSURGaWVsZCA9IHJlbGF0ZWRDb2xsZWN0aW9uLmZpZWxkcy5maW5kKFxuICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uRmllbGQpID0+XG4gICAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcElERmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1baV0gPSBwYXJzZUZsb2F0KHJlbGF0ZWREb2MgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgJiYgZmllbGQuaGFzTWFueSAhPT0gdHJ1ZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb24gPSByZXEucGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gZmllbGQucmVsYXRpb25UbyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcElERmllbGQgPSByZWxhdGVkQ29sbGVjdGlvbi5maWVsZHMuZmluZChcbiAgICAgICAgICAgICAgKGNvbGxlY3Rpb25GaWVsZCkgPT5cbiAgICAgICAgICAgICAgICBmaWVsZEFmZmVjdHNEYXRhKGNvbGxlY3Rpb25GaWVsZCkgJiYgY29sbGVjdGlvbkZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwSURGaWVsZD8udHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBwYXJzZUZsb2F0KHZhbHVlIGFzIHN0cmluZylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICAvLyBIYW5kbGUgY2FzZXMgb2YgYXJyYXlzIGJlaW5nIGludGVudGlvbmFsbHkgc2V0IHRvIDBcbiAgICAgICAgaWYgKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAnMCcgfHwgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IDApIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBob29rc1xuICAgIGlmIChmaWVsZC5ob29rcz8uYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZVZhbGlkYXRlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBjdXJyZW50SG9vaykgPT4ge1xuICAgICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgICBjb25zdCBob29rZWRWYWx1ZSA9IGF3YWl0IGN1cnJlbnRIb29rKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgfVxuICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG4gICAgfVxuXG4gICAgLy8gRXhlY3V0ZSBhY2Nlc3MgY29udHJvbFxuICAgIGlmIChmaWVsZC5hY2Nlc3MgJiYgZmllbGQuYWNjZXNzW29wZXJhdGlvbl0pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlQWNjZXNzXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGF3YWl0IGZpZWxkLmFjY2Vzc1tvcGVyYXRpb25dKHsgaWQsIGRhdGEsIGRvYywgcmVxLCBzaWJsaW5nRGF0YSB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RhdGFbZmllbGQubmFtZV1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gSWYgbm8gaW5jb21pbmcgZGF0YSwgYnV0IGV4aXN0aW5nIGRvY3VtZW50IGRhdGEgaXMgZm91bmQsIG1lcmdlIGl0IGluXG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gY2xvbmVEYXRhRnJvbU9yaWdpbmFsRG9jKHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGNvbXB1dGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmllbGQuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGF3YWl0IGdldFZhbHVlV2l0aERlZmF1bHQoe1xuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgIGxvY2FsZTogcmVxLmxvY2FsZSxcbiAgICAgICAgICB1c2VyOiByZXEudXNlcixcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVHJhdmVyc2Ugc3ViZmllbGRzXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuXG4gICAgICBjb25zdCBncm91cERhdGEgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgY29uc3QgZ3JvdXBEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogZ3JvdXBEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvYyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVUb01hdGNoID0gcm93LmJsb2NrVHlwZSB8fCByb3dTaWJsaW5nRG9jLmJsb2NrVHlwZVxuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IGJsb2NrVHlwZVRvTWF0Y2gpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHJvdy5ibG9ja1R5cGUgPSBibG9ja1R5cGVUb01hdGNoXG5cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3dTaWJsaW5nRG9jLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJTaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NcbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhXG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogdGFiU2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYlNpYmxpbmdEb2MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmaWVsZEFmZmVjdHNEYXRhIiwidGFiSGFzTmFtZSIsInZhbHVlSXNWYWx1ZVdpdGhSZWxhdGlvbiIsImdldFZhbHVlV2l0aERlZmF1bHQiLCJjbG9uZURhdGFGcm9tT3JpZ2luYWxEb2MiLCJnZXRFeGlzdGluZ1Jvd0RvYyIsInRyYXZlcnNlRmllbGRzIiwicHJvbWlzZSIsImlkIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJkYXRhIiwiZG9jIiwiZmllbGQiLCJnbG9iYWwiLCJvcGVyYXRpb24iLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsIm5hbWUiLCJ0eXBlIiwidmFsdWUiLCJwYXJzZUZsb2F0IiwidG9TdHJpbmciLCJ0cmltbWVkIiwidHJpbSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImNvb3JkaW5hdGUiLCJpIiwicmljaFRleHRKU09OIiwiSlNPTiIsInBhcnNlIiwiaGFzTWFueSIsInJlbGF0aW9uVG8iLCJmb3JFYWNoIiwicmVsYXRlZERvYyIsInJlbGF0ZWRDb2xsZWN0aW9uIiwicGF5bG9hZCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwiZmluZCIsInNsdWciLCJyZWxhdGlvbnNoaXBJREZpZWxkIiwiZmllbGRzIiwiY29sbGVjdGlvbkZpZWxkIiwiaG9va3MiLCJiZWZvcmVWYWxpZGF0ZSIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwiaG9va2VkVmFsdWUiLCJvcmlnaW5hbERvYyIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWNjZXNzIiwicmVzdWx0IiwiZGVmYXVsdFZhbHVlIiwibG9jYWxlIiwidXNlciIsImdyb3VwRGF0YSIsImdyb3VwRG9jIiwicm93cyIsInByb21pc2VzIiwicm93IiwicHVzaCIsImFsbCIsInJvd1NpYmxpbmdEb2MiLCJibG9ja1R5cGVUb01hdGNoIiwiYmxvY2tUeXBlIiwiYmxvY2siLCJibG9ja3MiLCJ0YWJTaWJsaW5nRGF0YSIsInRhYlNpYmxpbmdEb2MiLCJ0YWJzIiwidGFiIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0MsR0FNcEMsU0FBU0EsZ0JBQWdCLEVBQUVDLFVBQVUsRUFBRUMsd0JBQXdCLFFBQVEsd0JBQXVCO0FBQzlGLE9BQU9DLHlCQUF5QiwyQkFBMEI7QUFDMUQsU0FBU0Msd0JBQXdCLFFBQVEsOENBQTZDO0FBQ3RGLFNBQVNDLGlCQUFpQixRQUFRLHVDQUFzQztBQUN4RSxTQUFTQyxjQUFjLFFBQVEsc0JBQXFCO0FBaUJwRCxvRUFBb0U7QUFDcEUsMkJBQTJCO0FBQzNCLHdCQUF3QjtBQUN4QixpQ0FBaUM7QUFDakMsb0RBQW9EO0FBQ3BELGdEQUFnRDtBQUVoRCxPQUFPLE1BQU1DLFVBQVUsT0FBVSxFQUMvQkMsRUFBRSxFQUNGQyxVQUFVLEVBQ1ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLEtBQUssRUFDTEMsTUFBTSxF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
@@ -1,7 +1,7 @@
1
- import type { SanitizedCollectionConfig } from '../../../collections/config/types';
2
- import type { SanitizedGlobalConfig } from '../../../globals/config/types';
3
- import type { PayloadRequest, RequestContext } from '../../../types';
4
- import type { Field, TabAsField } from '../../config/types';
1
+ import type { SanitizedCollectionConfig } from '../../../collections/config/types.d.ts';
2
+ import type { SanitizedGlobalConfig } from '../../../globals/config/types.d.ts';
3
+ import type { PayloadRequest, RequestContext } from '../../../types/index.d.ts';
4
+ import type { Field, TabAsField } from '../../config/types.d.ts';
5
5
  type Args<T> = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI3D,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,CAAC,CAAA;IACN,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,oIAad,QAAQ,IAAI,CAqBxB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeValidate/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAIhE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,CAAC,CAAA;IACN,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,oIAad,QAAQ,IAAI,CAqBxB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { promise } from './promise';
1
+ import { promise } from './promise.js';
2
2
  export const traverseFields = async ({ id, collection, context, data, doc, fields, global, operation, overrideAccess, req, siblingData, siblingDoc })=>{
3
3
  const promises = [];
4
4
  fields.forEach((field)=>{
@@ -20,4 +20,4 @@ export const traverseFields = async ({ id, collection, context, data, doc, field
20
20
  await Promise.all(promises);
21
21
  };
22
22
 
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi8uLi8uLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBwcm9taXNlIH0gZnJvbSAnLi9wcm9taXNlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBudWxsXG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFRcbiAgZG9jOiBUXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBnbG9iYWw6IFNhbml0aXplZEdsb2JhbENvbmZpZyB8IG51bGxcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgb3BlcmF0aW9uOiAnY3JlYXRlJyB8ICd1cGRhdGUnXG4gIG92ZXJyaWRlQWNjZXNzOiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgc2libGluZ0RhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIHNpYmxpbmdEb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9IGFzeW5jIDxUPih7XG4gIGlkLFxuICBjb2xsZWN0aW9uLFxuICBjb250ZXh0LFxuICBkYXRhLFxuICBkb2MsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsLFxuICBvcGVyYXRpb24sXG4gIG92ZXJyaWRlQWNjZXNzLFxuICByZXEsXG4gIHNpYmxpbmdEYXRhLFxuICBzaWJsaW5nRG9jLFxufTogQXJnczxUPik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBwcm9taXNlcyA9IFtdXG4gIGZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIHByb21pc2VzLnB1c2goXG4gICAgICBwcm9taXNlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGQsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgIH0pLFxuICAgIClcbiAgfSlcbiAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsInRyYXZlcnNlRmllbGRzIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJmaWVsZHMiLCJnbG9iYWwiLCJvcGVyYXRpb24iLCJvdmVycmlkZUFjY2VzcyIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsInByb21pc2VzIiwiZm9yRWFjaCIsImZpZWxkIiwicHVzaCIsIlByb21pc2UiLCJhbGwiXSwibWFwcGluZ3MiOiJBQUtBLFNBQVNBLE9BQU8sUUFBUSxZQUFXO0FBaUJuQyxPQUFPLE1BQU1DLGlCQUFpQixPQUFVLEVBQ3RDQyxFQUFFLEVBQ0ZDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLFNBQVMsRUFDVEMsY0FBYyxFQUNkQyxHQUFHLEVBQ0hDLFdBQVcsRUFDWEMsVUFBVSxFQUNGO0lBQ1IsTUFBTUMsV0FBVyxFQUFFO0lBQ25CUCxPQUFPUSxPQUFPLENBQUMsQ0FBQ0M7UUFDZEYsU0FBU0csSUFBSSxDQUNYakIsUUFBUTtZQUNORTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBVTtZQUNBUjtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztRQUNGO0lBRUo7SUFDQSxNQUFNSyxRQUFRQyxHQUFHLENBQUNMO0FBQ3BCLEVBQUMifQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUvdHJhdmVyc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzLmQudHMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0LCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2luZGV4LmQudHMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzLmQudHMnXG5cbmltcG9ydCB7IHByb21pc2UgfSBmcm9tICcuL3Byb21pc2UuanMnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgZGF0YTogVFxuICBkb2M6IFRcbiAgZmllbGRzOiAoRmllbGQgfCBUYWJBc0ZpZWxkKVtdXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBpZD86IG51bWJlciB8IHN0cmluZ1xuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3ZlcnJpZGVBY2Nlc3M6IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gYXN5bmMgPFQ+KHtcbiAgaWQsXG4gIGNvbGxlY3Rpb24sXG4gIGNvbnRleHQsXG4gIGRhdGEsXG4gIGRvYyxcbiAgZmllbGRzLFxuICBnbG9iYWwsXG4gIG9wZXJhdGlvbixcbiAgb3ZlcnJpZGVBY2Nlc3MsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG59OiBBcmdzPFQ+KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHByb21pc2VzID0gW11cbiAgZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgcHJvbWlzZXMucHVzaChcbiAgICAgIHByb21pc2Uoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgfSksXG4gICAgKVxuICB9KVxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwidHJhdmVyc2VGaWVsZHMiLCJpZCIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImZpZWxkcyIsImdsb2JhbCIsIm9wZXJhdGlvbiIsIm92ZXJyaWRlQWNjZXNzIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwiZmllbGQiLCJwdXNoIiwiUHJvbWlzZSIsImFsbCJdLCJtYXBwaW5ncyI6IkFBS0EsU0FBU0EsT0FBTyxRQUFRLGVBQWM7QUFpQnRDLE9BQU8sTUFBTUMsaUJBQWlCLE9BQVUsRUFDdENDLEVBQUUsRUFDRkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsR0FBRyxFQUNIQyxNQUFNLEVBQ05DLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxjQUFjLEVBQ2RDLEdBQUcsRUFDSEMsV0FBVyxFQUNYQyxVQUFVLEVBQ0Y7SUFDUixNQUFNQyxXQUFXLEVBQUU7SUFDbkJQLE9BQU9RLE9BQU8sQ0FBQyxDQUFDQztRQUNkRixTQUFTRyxJQUFJLENBQ1hqQixRQUFRO1lBQ05FO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FVO1lBQ0FSO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1FBQ0Y7SUFFSjtJQUNBLE1BQU1LLFFBQVFDLEdBQUcsQ0FBQ0w7QUFDcEIsRUFBQyJ9
@@ -1,4 +1,4 @@
1
- import type { Field } from './config/types';
1
+ import type { Field } from './config/types.d.ts';
2
2
  declare const mergeBaseFields: (fields: Field[], baseFields: Field[]) => Field[];
3
3
  export default mergeBaseFields;
4
4
  //# sourceMappingURL=mergeBaseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeBaseFields.d.ts","sourceRoot":"","sources":["../../src/fields/mergeBaseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAsB,MAAM,gBAAgB,CAAA;AAI/D,QAAA,MAAM,eAAe,WAAY,KAAK,EAAE,cAAc,KAAK,EAAE,KAAG,KAAK,EAqCpE,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"mergeBaseFields.d.ts","sourceRoot":"","sources":["../../src/fields/mergeBaseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAsB,MAAM,qBAAqB,CAAA;AAIpE,QAAA,MAAM,eAAe,WAAY,KAAK,EAAE,cAAc,KAAK,EAAE,KAAG,KAAK,EAqCpE,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import merge from 'deepmerge';
2
- import { fieldAffectsData, fieldHasSubFields } from './config/types';
2
+ import { fieldAffectsData, fieldHasSubFields } from './config/types.js';
3
3
  const mergeBaseFields = (fields, baseFields)=>{
4
4
  const mergedFields = [
5
5
  ...fields || []
@@ -33,4 +33,4 @@ const mergeBaseFields = (fields, baseFields)=>{
33
33
  };
34
34
  export default mergeBaseFields;
35
35
 
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCBmaWVsZEhhc1N1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5jb25zdCBtZXJnZUJhc2VGaWVsZHMgPSAoZmllbGRzOiBGaWVsZFtdLCBiYXNlRmllbGRzOiBGaWVsZFtdKTogRmllbGRbXSA9PiB7XG4gIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi4oZmllbGRzIHx8IFtdKV1cblxuICBiYXNlRmllbGRzLmZvckVhY2goKGJhc2VGaWVsZCkgPT4ge1xuICAgIGxldCBtYXRjaGVkSW5kZXggPSBudWxsXG5cbiAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShiYXNlRmllbGQpKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1lcmdlZEZpZWxkcy5maW5kKChmaWVsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gYmFzZUZpZWxkLm5hbWUpIHtcbiAgICAgICAgICBtYXRjaGVkSW5kZXggPSBpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfSlcblxuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoQ29weTogRmllbGQgPSB7IC4uLm1hdGNoIH1cbiAgICAgICAgbWVyZ2VkRmllbGRzLnNwbGljZShtYXRjaGVkSW5kZXgsIDEpXG5cbiAgICAgICAgY29uc3QgbWVyZ2VkRmllbGQgPSBtZXJnZTxGaWVsZD4oYmFzZUZpZWxkLCBtYXRjaENvcHkpXG5cbiAgICAgICAgaWYgKGZpZWxkSGFzU3ViRmllbGRzKGJhc2VGaWVsZCkgJiYgZmllbGRIYXNTdWJGaWVsZHMobWF0Y2hDb3B5KSkge1xuICAgICAgICAgIDsobWVyZ2VkRmllbGQgYXMgRmllbGRXaXRoU3ViRmllbGRzKS5maWVsZHMgPSBtZXJnZUJhc2VGaWVsZHMoXG4gICAgICAgICAgICBtYXRjaENvcHkuZmllbGRzLFxuICAgICAgICAgICAgYmFzZUZpZWxkLmZpZWxkcyxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRGaWVsZHMucHVzaChtZXJnZWRGaWVsZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKGJhc2VGaWVsZClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG1lcmdlZEZpZWxkc1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXJnZUJhc2VGaWVsZHNcbiJdLCJuYW1lcyI6WyJtZXJnZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJmaWVsZEhhc1N1YkZpZWxkcyIsIm1lcmdlQmFzZUZpZWxkcyIsImZpZWxkcyIsImJhc2VGaWVsZHMiLCJtZXJnZWRGaWVsZHMiLCJmb3JFYWNoIiwiYmFzZUZpZWxkIiwibWF0Y2hlZEluZGV4IiwibWF0Y2giLCJmaW5kIiwiZmllbGQiLCJpIiwibmFtZSIsIm1hdGNoQ29weSIsInNwbGljZSIsIm1lcmdlZEZpZWxkIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxZQUFXO0FBSTdCLFNBQVNDLGdCQUFnQixFQUFFQyxpQkFBaUIsUUFBUSxpQkFBZ0I7QUFFcEUsTUFBTUMsa0JBQWtCLENBQUNDLFFBQWlCQztJQUN4QyxNQUFNQyxlQUFlO1dBQUtGLFVBQVUsRUFBRTtLQUFFO0lBRXhDQyxXQUFXRSxPQUFPLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSUMsZUFBZTtRQUVuQixJQUFJUixpQkFBaUJPLFlBQVk7WUFDL0IsTUFBTUUsUUFBUUosYUFBYUssSUFBSSxDQUFDLENBQUNDLE9BQU9DO2dCQUN0QyxJQUFJWixpQkFBaUJXLFVBQVVBLE1BQU1FLElBQUksS0FBS04sVUFBVU0sSUFBSSxFQUFFO29CQUM1REwsZUFBZUk7b0JBQ2YsT0FBTztnQkFDVDtnQkFFQSxPQUFPO1lBQ1Q7WUFFQSxJQUFJSCxPQUFPO2dCQUNULE1BQU1LLFlBQW1CO29CQUFFLEdBQUdMLEtBQUs7Z0JBQUM7Z0JBQ3BDSixhQUFhVSxNQUFNLENBQUNQLGNBQWM7Z0JBRWxDLE1BQU1RLGNBQWNqQixNQUFhUSxXQUFXTztnQkFFNUMsSUFBSWIsa0JBQWtCTSxjQUFjTixrQkFBa0JhLFlBQVk7b0JBQzlERSxZQUFtQ2IsTUFBTSxHQUFHRCxnQkFDNUNZLFVBQVVYLE1BQU0sRUFDaEJJLFVBQVVKLE1BQU07Z0JBRXBCO2dCQUVBRSxhQUFhWSxJQUFJLENBQUNEO1lBQ3BCLE9BQU87Z0JBQ0xYLGFBQWFZLElBQUksQ0FBQ1Y7WUFDcEI7UUFDRjtJQUNGO0lBRUEsT0FBT0Y7QUFDVDtBQUVBLGVBQWVILGdCQUFlIn0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvbWVyZ2VCYXNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgRmllbGQsIEZpZWxkV2l0aFN1YkZpZWxkcyB9IGZyb20gJy4vY29uZmlnL3R5cGVzLmQudHMnXG5cbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEsIGZpZWxkSGFzU3ViRmllbGRzIH0gZnJvbSAnLi9jb25maWcvdHlwZXMuanMnXG5cbmNvbnN0IG1lcmdlQmFzZUZpZWxkcyA9IChmaWVsZHM6IEZpZWxkW10sIGJhc2VGaWVsZHM6IEZpZWxkW10pOiBGaWVsZFtdID0+IHtcbiAgY29uc3QgbWVyZ2VkRmllbGRzID0gWy4uLihmaWVsZHMgfHwgW10pXVxuXG4gIGJhc2VGaWVsZHMuZm9yRWFjaCgoYmFzZUZpZWxkKSA9PiB7XG4gICAgbGV0IG1hdGNoZWRJbmRleCA9IG51bGxcblxuICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGJhc2VGaWVsZCkpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gbWVyZ2VkRmllbGRzLmZpbmQoKGZpZWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSBiYXNlRmllbGQubmFtZSkge1xuICAgICAgICAgIG1hdGNoZWRJbmRleCA9IGlcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9KVxuXG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hDb3B5OiBGaWVsZCA9IHsgLi4ubWF0Y2ggfVxuICAgICAgICBtZXJnZWRGaWVsZHMuc3BsaWNlKG1hdGNoZWRJbmRleCwgMSlcblxuICAgICAgICBjb25zdCBtZXJnZWRGaWVsZCA9IG1lcmdlPEZpZWxkPihiYXNlRmllbGQsIG1hdGNoQ29weSlcblxuICAgICAgICBpZiAoZmllbGRIYXNTdWJGaWVsZHMoYmFzZUZpZWxkKSAmJiBmaWVsZEhhc1N1YkZpZWxkcyhtYXRjaENvcHkpKSB7XG4gICAgICAgICAgOyhtZXJnZWRGaWVsZCBhcyBGaWVsZFdpdGhTdWJGaWVsZHMpLmZpZWxkcyA9IG1lcmdlQmFzZUZpZWxkcyhcbiAgICAgICAgICAgIG1hdGNoQ29weS5maWVsZHMsXG4gICAgICAgICAgICBiYXNlRmllbGQuZmllbGRzLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKG1lcmdlZEZpZWxkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkRmllbGRzLnB1c2goYmFzZUZpZWxkKVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gbWVyZ2VkRmllbGRzXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lcmdlQmFzZUZpZWxkc1xuIl0sIm5hbWVzIjpbIm1lcmdlIiwiZmllbGRBZmZlY3RzRGF0YSIsImZpZWxkSGFzU3ViRmllbGRzIiwibWVyZ2VCYXNlRmllbGRzIiwiZmllbGRzIiwiYmFzZUZpZWxkcyIsIm1lcmdlZEZpZWxkcyIsImZvckVhY2giLCJiYXNlRmllbGQiLCJtYXRjaGVkSW5kZXgiLCJtYXRjaCIsImZpbmQiLCJmaWVsZCIsImkiLCJuYW1lIiwibWF0Y2hDb3B5Iiwic3BsaWNlIiwibWVyZ2VkRmllbGQiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxXQUFXLFlBQVc7QUFJN0IsU0FBU0MsZ0JBQWdCLEVBQUVDLGlCQUFpQixRQUFRLG9CQUFtQjtBQUV2RSxNQUFNQyxrQkFBa0IsQ0FBQ0MsUUFBaUJDO0lBQ3hDLE1BQU1DLGVBQWU7V0FBS0YsVUFBVSxFQUFFO0tBQUU7SUFFeENDLFdBQVdFLE9BQU8sQ0FBQyxDQUFDQztRQUNsQixJQUFJQyxlQUFlO1FBRW5CLElBQUlSLGlCQUFpQk8sWUFBWTtZQUMvQixNQUFNRSxRQUFRSixhQUFhSyxJQUFJLENBQUMsQ0FBQ0MsT0FBT0M7Z0JBQ3RDLElBQUlaLGlCQUFpQlcsVUFBVUEsTUFBTUUsSUFBSSxLQUFLTixVQUFVTSxJQUFJLEVBQUU7b0JBQzVETCxlQUFlSTtvQkFDZixPQUFPO2dCQUNUO2dCQUVBLE9BQU87WUFDVDtZQUVBLElBQUlILE9BQU87Z0JBQ1QsTUFBTUssWUFBbUI7b0JBQUUsR0FBR0wsS0FBSztnQkFBQztnQkFDcENKLGFBQWFVLE1BQU0sQ0FBQ1AsY0FBYztnQkFFbEMsTUFBTVEsY0FBY2pCLE1BQWFRLFdBQVdPO2dCQUU1QyxJQUFJYixrQkFBa0JNLGNBQWNOLGtCQUFrQmEsWUFBWTtvQkFDOURFLFlBQW1DYixNQUFNLEdBQUdELGdCQUM1Q1ksVUFBVVgsTUFBTSxFQUNoQkksVUFBVUosTUFBTTtnQkFFcEI7Z0JBRUFFLGFBQWFZLElBQUksQ0FBQ0Q7WUFDcEIsT0FBTztnQkFDTFgsYUFBYVksSUFBSSxDQUFDVjtZQUNwQjtRQUNGO0lBQ0Y7SUFFQSxPQUFPRjtBQUNUO0FBRUEsZUFBZUgsZ0JBQWUifQ==
@@ -1,4 +1,4 @@
1
- import type { ArrayField, BlockField, CheckboxField, CodeField, DateField, EmailField, JSONField, NumberField, PointField, RadioField, RelationshipField, RelationshipValue, RichTextField, SelectField, TextField, TextareaField, UploadField, Validate } from './config/types';
1
+ import type { ArrayField, BlockField, CheckboxField, CodeField, DateField, EmailField, JSONField, NumberField, PointField, RadioField, RelationshipField, RelationshipValue, RichTextField, SelectField, TextField, TextareaField, UploadField, Validate } from './config/types.d.ts';
2
2
  export declare const text: Validate<string | string[], unknown, unknown, TextField>;
3
3
  export declare const password: Validate<string, unknown, unknown, TextField>;
4
4
  export declare const email: Validate<string, unknown, unknown, EmailField>;
@@ -25,7 +25,7 @@ declare const _default: {
25
25
  code: Validate<string, unknown, unknown, CodeField>;
26
26
  date: Validate<Date, unknown, unknown, DateField>;
27
27
  email: Validate<string, unknown, unknown, EmailField>;
28
- json: Validate<string, unknown, unknown, Omit<import("./config/types").FieldBase, "admin"> & {
28
+ json: Validate<string, unknown, unknown, Omit<import("./config/types.d.ts").FieldBase, "admin"> & {
29
29
  admin?: {
30
30
  className?: string;
31
31
  components?: {
@@ -33,8 +33,8 @@ declare const _default: {
33
33
  Field?: import("react").ComponentType<any>;
34
34
  Filter?: import("react").ComponentType<any>;
35
35
  };
36
- condition?: import("./config/types").Condition<any, any>;
37
- description?: import("../exports/types").Description;
36
+ condition?: import("./config/types.d.ts").Condition<any, any>;
37
+ description?: import("../exports/types.d.ts").Description;
38
38
  disableBulkEdit?: boolean;
39
39
  disabled?: boolean;
40
40
  hidden?: boolean;
@@ -44,8 +44,8 @@ declare const _default: {
44
44
  width?: string;
45
45
  } & {
46
46
  components?: {
47
- Error?: import("react").ComponentType<import("../exports/types").ErrorProps>;
48
- Label?: import("react").ComponentType<import("../exports/types").LabelProps>;
47
+ Error?: import("react").ComponentType<import("../exports/types.d.ts").ErrorProps>;
48
+ Label?: import("react").ComponentType<import("../exports/types.d.ts").LabelProps>;
49
49
  };
50
50
  editorOptions?: import("monaco-editor").editor.IStandaloneEditorConstructionOptions;
51
51
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkDzE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CA8BlE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAShE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CA6BtE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAavF,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CASvE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkB5D,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAOtE,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC7E,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKnE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKlE,CAAA;AA0HD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAqBnE,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,iBAAiB,CA8ElB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAmCnE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAYjE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAqB5F,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,qBAAqB,CAAA;AAO5B,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkDzE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CA8BlE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAShE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CA6BtE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAavF,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CASvE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkB5D,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAOtE,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC7E,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKnE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKlE,CAAA;AA0HD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAqBnE,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,iBAAiB,CA8ElB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAmCnE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAYjE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAqB5F,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -1,7 +1,7 @@
1
- import { getIDType } from '../utilities/getIDType';
2
- import { isNumber } from '../utilities/isNumber';
3
- import { isValidID } from '../utilities/isValidID';
4
- import { fieldAffectsData } from './config/types';
1
+ import { getIDType } from '../utilities/getIDType.js';
2
+ import { isNumber } from '../utilities/isNumber.js';
3
+ import { isValidID } from '../utilities/isValidID.js';
4
+ import { fieldAffectsData } from './config/types.js';
5
5
  export const text = (value, { hasMany, maxLength: fieldMaxLength, maxRows, minLength, minRows, req: { payload: { config }, t }, required })=>{
6
6
  let maxLength;
7
7
  if (!required) {
@@ -416,4 +416,4 @@ export default {
416
416
  upload
417
417
  };
418
418
 
419
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIsIFdoZXJlIH0gZnJvbSAnLi4vZXhwb3J0cy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgQXJyYXlGaWVsZCxcbiAgQmxvY2tGaWVsZCxcbiAgQ2hlY2tib3hGaWVsZCxcbiAgQ29kZUZpZWxkLFxuICBEYXRlRmllbGQsXG4gIEVtYWlsRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgUmljaFRleHRGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRleHRGaWVsZCxcbiAgVGV4dGFyZWFGaWVsZCxcbiAgVXBsb2FkRmllbGQsXG4gIFZhbGlkYXRlLFxufSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IHsgZ2V0SURUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2dldElEVHlwZSdcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzTnVtYmVyJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHN0cmluZyB8IHN0cmluZ1tdLCB1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAge1xuICAgIGhhc01hbnksXG4gICAgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCxcbiAgICBtYXhSb3dzLFxuICAgIG1pbkxlbmd0aCxcbiAgICBtaW5Sb3dzLFxuICAgIHJlcToge1xuICAgICAgcGF5bG9hZDogeyBjb25maWcgfSxcbiAgICAgIHQsXG4gICAgfSxcbiAgICByZXF1aXJlZCxcbiAgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAoIXJlcXVpcmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGlmIChoYXNNYW55ID09PSB0cnVlKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbiAgICBpZiAodHlwZW9mIGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvblJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGNvbnN0IHN0cmluZ3NUb1ZhbGlkYXRlOiBzdHJpbmdbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBzdHJpbmdWYWx1ZSBvZiBzdHJpbmdzVG9WYWxpZGF0ZSkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHN0cmluZ1ZhbHVlPy5sZW5ndGggfHwgMFxuXG4gICAgaWYgKHR5cGVvZiBtYXhMZW5ndGggPT09ICdudW1iZXInICYmIGxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXhMZW5ndGgsIHN0cmluZ1ZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW5MZW5ndGggPT09ICdudW1iZXInICYmIGxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3ZhbHVlJyksIG1pbkxlbmd0aCwgc3RyaW5nVmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAoISh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7XG4gICAgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCxcbiAgICBtaW5MZW5ndGgsXG4gICAgcmVxOiB7XG4gICAgICBwYXlsb2FkOiB7IGNvbmZpZyB9LFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcXVpcmVkLFxuICB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgIS9cXFNbXlxcc0BdKkBcXFMrXFwuXFxTKy8udGVzdCh2YWx1ZSkpIHx8ICghdmFsdWUgJiYgcmVxdWlyZWQpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW1haWxBZGRyZXNzJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB0ZXh0YXJlYTogVmFsaWRhdGU8c3RyaW5nLCB1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHtcbiAgICBtYXhMZW5ndGg6IGZpZWxkTWF4TGVuZ3RoLFxuICAgIG1pbkxlbmd0aCxcbiAgICByZXE6IHtcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICB0LFxuICAgIH0sXG4gICAgcmVxdWlyZWQsXG4gIH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKHR5cGVvZiBjb25maWc/LmRlZmF1bHRNYXhUZXh0TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHN0cmluZywgdW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBqc29uOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZSxcbiAgeyBqc29uRXJyb3IsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChqc29uRXJyb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY2hlY2tib3g6IFZhbGlkYXRlPGJvb2xlYW4sIHVua25vd24sIHVua25vd24sIENoZWNrYm94RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmICgodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpIHx8IChyZXF1aXJlZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjp0cnVlT3JGYWxzZScpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZGF0ZTogVmFsaWRhdGU8RGF0ZSwgdW5rbm93biwgdW5rbm93biwgRGF0ZUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgdW5rbm93biwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aCA9IChcbiAgdmFsdWUsXG4gIG9wdGlvbnM6IHtcbiAgICBtYXhSb3dzPzogbnVtYmVyXG4gICAgbWluUm93cz86IG51bWJlclxuICAgIHJlcXVpcmVkPzogYm9vbGVhblxuICAgIHQ6IChrZXk6IHN0cmluZywgb3B0aW9ucz86IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIH0pID0+IHN0cmluZ1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBjb25zdCBhcnJheUxlbmd0aCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogMFxuXG4gIGlmICghcmVxdWlyZWQgJiYgYXJyYXlMZW5ndGggPT09IDApIHJldHVybiB0cnVlXG5cbiAgaWYgKG1pblJvd3MgJiYgYXJyYXlMZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogbWluUm93cywgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgnZ2VuZXJhbDpyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhYXJyYXlMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgnZ2VuZXJhbDpyb3cnKSB9KVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8bnVtYmVyIHwgbnVtYmVyW10sIHVua25vd24sIHVua25vd24sIE51bWJlckZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKGhhc01hbnkgPT09IHRydWUpIHtcbiAgICBjb25zdCBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxuICAgIGlmICh0eXBlb2YgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9PT0gJ3N0cmluZycpIHJldHVybiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0XG4gIH1cblxuICBpZiAoIXZhbHVlICYmICFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAvLyBpZiBubyB2YWx1ZSBpcyBwcmVzZW50LCB2YWxpZGF0ZSBiYXNlZCBvbiByZXF1aXJlZFxuICAgIGlmIChyZXF1aXJlZCkgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIGlmICghcmVxdWlyZWQpIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBudW1iZXJzVG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIGZvciAoY29uc3QgbnVtYmVyIG9mIG51bWJlcnNUb1ZhbGlkYXRlKSB7XG4gICAgaWYgKCFpc051bWJlcihudW1iZXIpKSByZXR1cm4gdCgndmFsaWRhdGlvbjplbnRlck51bWJlcicpXG5cbiAgICBjb25zdCBudW1iZXJWYWx1ZSA9IHBhcnNlRmxvYXQobnVtYmVyIGFzIHVua25vd24gYXMgc3RyaW5nKVxuXG4gICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInICYmIG51bWJlclZhbHVlID4gbWF4KSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ2dlbmVyYWw6dmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdnZW5lcmFsOnZhbHVlJyksIG1pbiwgdmFsdWUgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYXJyYXk6IFZhbGlkYXRlPHVua25vd25bXSwgdW5rbm93biwgdW5rbm93biwgQXJyYXlGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgcmV0dXJuIHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbn1cblxuZXhwb3J0IGNvbnN0IGJsb2NrczogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgQmxvY2tGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgcmV0dXJuIHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZTxcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHJlbGF0aW9uVG8sIHJlcSwgcmVxOiB7IHBheWxvYWQsIHQsIHVzZXIgfSwgc2libGluZ0RhdGEgfSxcbikgPT4ge1xuICBpZiAodHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGZhbHNlQ29sbGVjdGlvbnM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgb3B0aW9uRmlsdGVyID0gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5kV2hlcmU6IFdoZXJlID0ge1xuICAgICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH1dLFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyICYmIG9wdGlvbkZpbHRlciAhPT0gdHJ1ZSkgZmluZFdoZXJlLmFuZC5wdXNoKG9wdGlvbkZpbHRlcilcblxuICAgICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgZmFsc2VDb2xsZWN0aW9ucy5wdXNoKGNvbGxlY3Rpb24pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGByZXFgIG9taXR0ZWQgdG8gcHJldmVudCB0cmFuc2FjdGlvbiBlcnJvcnMgZnJvbSBhYm9ydGluZyB0aGUgZW50aXJlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgICAgbGltaXQ6IDAsXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgb3B0aW9uc1tjb2xsZWN0aW9uXSA9IHJlc3VsdC5kb2NzLm1hcCgoZG9jKSA9PiBkb2MuaWQpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgcmVxLnBheWxvYWQubG9nZ2VyLmVycm9yKHtcbiAgICAgICAgICAgIGVycixcbiAgICAgICAgICAgIG1zZzogYEVycm9yIHZhbGlkYXRpbmcgZmlsdGVyIG9wdGlvbnMgZm9yIGNvbGxlY3Rpb24gJHtjb2xsZWN0aW9ufWAsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKGZhbHNlQ29sbGVjdGlvbnMuZmluZCgoc2x1ZykgPT4gcmVsYXRpb25UbyA9PT0gc2x1ZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucz8ucmVxPy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgaWRGaWVsZCA9IG9wdGlvbnM/LnJlcT8ucGF5bG9hZD8uY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IG9wdGlvbnMucmVsYXRpb25UbylcbiAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgb3B0aW9ucz8ucmVxPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMucmVxPy50KCd2YWxpZGF0aW9uOnZhbGlkVXBsb2FkSUQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCByZWxhdGlvbnNoaXA6IFZhbGlkYXRlPFxuICBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgdW5rbm93bixcbiAgdW5rbm93bixcbiAgUmVsYXRpb25zaGlwRmllbGRcbj4gPSBhc3luYyAodmFsdWUsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qge1xuICAgIG1heFJvd3MsXG4gICAgbWluUm93cyxcbiAgICByZWxhdGlvblRvLFxuICAgIHJlcToge1xuICAgICAgcGF5bG9hZCxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICB0LFxuICAgIH0sXG4gICAgcmVxdWlyZWQsXG4gIH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHtcbiAgICAgICAgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpLFxuICAgICAgICBtaW46IG1pblJvd3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZS5sZW5ndGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgnZ2VuZXJhbDpyb3dzJyksXG4gICAgICAgIG1heDogbWF4Um93cyxcbiAgICAgICAgdmFsdWU6IHZhbHVlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uU2x1Zzogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZyA9IHJlbGF0aW9uVG9cblxuICAgICAgICAvLyBjdXN0b20gaWRcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHJlcXVlc3RlZElEID0gdmFsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy5yZWxhdGlvblRvKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IGNvbmZpZz8uY29sbGVjdGlvbnNcbiAgICAgICAgPy5maW5kKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLnNsdWcgPT09IGNvbGxlY3Rpb25TbHVnKVxuICAgICAgICA/LmZpZWxkcz8uZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgcGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICAgIHJldHVybiAhaXNWYWxpZElEKHJlcXVlc3RlZElELCB0eXBlKVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBUaGlzIHJlbGF0aW9uc2hpcCBmaWVsZCBoYXMgdGhlIGZvbGxvd2luZyBpbnZhbGlkIHJlbGF0aW9uc2hpcHM6ICR7aW52YWxpZFJlbGF0aW9uc2hpcHNcbiAgICAgICAgLm1hcCgoZXJyLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX1gXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpfWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG9wdGlvbnMsIHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVNYXRjaGVzT3B0aW9uID0gb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICAgIHJldHVybiB2YWx1ZU1hdGNoZXNPcHRpb24gfHwgdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIHJldHVybiByZXF1aXJlZCA/IHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKSA6IHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50OiBWYWxpZGF0ZTxbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddLCB1bmtub3duLCB1bmtub3duLCBQb2ludEZpZWxkPiA9IChcbiAgdmFsdWUgPSBbJycsICcnXSxcbiAgeyByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGNvbnN0IGxuZyA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzBdKSlcbiAgY29uc3QgbGF0ID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMV0pKVxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAoKHZhbHVlWzBdICYmIHZhbHVlWzFdICYmIHR5cGVvZiBsbmcgIT09ICdudW1iZXInICYmIHR5cGVvZiBsYXQgIT09ICdudW1iZXInKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxuZykgfHxcbiAgICAgIE51bWJlci5pc05hTihsYXQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoICE9PSAyKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNUd29OdW1iZXJzJylcbiAgfVxuXG4gIGlmICgodmFsdWVbMV0gJiYgTnVtYmVyLmlzTmFOKGxuZykpIHx8ICh2YWx1ZVswXSAmJiBOdW1iZXIuaXNOYU4obGF0KSkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcnJheSxcbiAgYmxvY2tzLFxuICBjaGVja2JveCxcbiAgY29kZSxcbiAgZGF0ZSxcbiAgZW1haWwsXG4gIGpzb24sXG4gIG51bWJlcixcbiAgcGFzc3dvcmQsXG4gIHBvaW50LFxuICByYWRpbyxcbiAgcmVsYXRpb25zaGlwLFxuICByaWNoVGV4dCxcbiAgc2VsZWN0LFxuICB0ZXh0LFxuICB0ZXh0YXJlYSxcbiAgdXBsb2FkLFxufVxuIl0sIm5hbWVzIjpbImdldElEVHlwZSIsImlzTnVtYmVyIiwiaXNWYWxpZElEIiwiZmllbGRBZmZlY3RzRGF0YSIsInRleHQiLCJ2YWx1ZSIsImhhc01hbnkiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1heFJvd3MiLCJtaW5MZW5ndGgiLCJtaW5Sb3dzIiwicmVxIiwicGF5bG9hZCIsImNvbmZpZyIsInQiLCJyZXF1aXJlZCIsImxlbmd0aFZhbGlkYXRpb25SZXN1bHQiLCJ2YWxpZGF0ZUFycmF5TGVuZ3RoIiwiZGVmYXVsdE1heFRleHRMZW5ndGgiLCJzdHJpbmdzVG9WYWxpZGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsInN0cmluZ1ZhbHVlIiwibGVuZ3RoIiwibGFiZWwiLCJwYXNzd29yZCIsImVtYWlsIiwidGVzdCIsInRleHRhcmVhIiwiY29kZSIsInVuZGVmaW5lZCIsImpzb24iLCJqc29uRXJyb3IiLCJjaGVja2JveCIsImRhdGUiLCJpc05hTiIsIkRhdGUiLCJwYXJzZSIsInRvU3RyaW5nIiwicmljaFRleHQiLCJvcHRpb25zIiwiZWRpdG9yIiwidmFsaWRhdGUiLCJhcnJheUxlbmd0aCIsImNvdW50IiwibnVtYmVyIiwibWF4IiwibWluIiwibnVtYmVyc1RvVmFsaWRhdGUiLCJudW1iZXJWYWx1ZSIsInBhcnNlRmxvYXQiLCJhcnJheSIsImJsb2NrcyIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwidXNlciIsInNpYmxpbmdEYXRhIiwiZmFsc2VDb2xsZWN0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwiZmluZFdoZXJlIiwiYW5kIiwiaW4iLCJyZXN1bHQiLCJmaW5kIiwiZGVwdGgiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJ3aGVyZSIsImRvY3MiLCJkb2MiLCJlcnIiLCJsb2dnZXIiLCJlcnJvciIsIm1zZyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJzbHVnIiwiaW5kZXhPZiIsInJlZHVjZSIsImludmFsaWQiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsInVwbG9hZCIsImlkRmllbGQiLCJmaWVsZHMiLCJmaWVsZCIsIm5hbWUiLCJ0eXBlIiwiZGIiLCJkZWZhdWx0SURUeXBlIiwicmVsYXRpb25zaGlwIiwiY29sbGVjdGlvblNsdWciLCJqb2luIiwic2VsZWN0Iiwic29tZSIsImlucHV0Iiwib3B0aW9uIiwicmFkaW8iLCJ2YWx1ZU1hdGNoZXNPcHRpb24iLCJwb2ludCIsImxuZyIsIlN0cmluZyIsImxhdCIsIk51bWJlciJdLCJtYXBwaW5ncyI6IkFBc0JBLFNBQVNBLFNBQVMsUUFBUSx5QkFBd0I7QUFDbEQsU0FBU0MsUUFBUSxRQUFRLHdCQUF1QjtBQUNoRCxTQUFTQyxTQUFTLFFBQVEseUJBQXdCO0FBQ2xELFNBQVNDLGdCQUFnQixRQUFRLGlCQUFnQjtBQUVqRCxPQUFPLE1BQU1DLE9BQWlFLENBQzVFQyxPQUNBLEVBQ0VDLE9BQU8sRUFDUEMsV0FBV0MsY0FBYyxFQUN6QkMsT0FBTyxFQUNQQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsS0FBSyxFQUNIQyxTQUFTLEVBQUVDLE1BQU0sRUFBRSxFQUNuQkMsQ0FBQyxFQUNGLEVBQ0RDLFFBQVEsRUFDVDtJQUVELElBQUlUO0lBRUosSUFBSSxDQUFDUyxVQUFVO1FBQ2IsSUFBSSxDQUFDWCxPQUFPLE9BQU87SUFDckI7SUFFQSxJQUFJQyxZQUFZLE1BQU07UUFDcEIsTUFBTVcseUJBQXlCQyxvQkFBb0JiLE9BQU87WUFBRUk7WUFBU0U7WUFBU0s7WUFBVUQ7UUFBRTtRQUMxRixJQUFJLE9BQU9FLDJCQUEyQixVQUFVLE9BQU9BO0lBQ3pEO0lBRUEsSUFBSSxPQUFPSCxRQUFRSyx5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
419
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIsIFdoZXJlIH0gZnJvbSAnLi4vZXhwb3J0cy90eXBlcy5kLnRzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzLmQudHMnXG5cbmltcG9ydCB7IGdldElEVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9nZXRJRFR5cGUuanMnXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uL3V0aWxpdGllcy9pc051bWJlci5qcydcbmltcG9ydCB7IGlzVmFsaWRJRCB9IGZyb20gJy4uL3V0aWxpdGllcy9pc1ZhbGlkSUQuanMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAnLi9jb25maWcvdHlwZXMuanMnXG5cbmV4cG9ydCBjb25zdCB0ZXh0OiBWYWxpZGF0ZTxzdHJpbmcgfCBzdHJpbmdbXSwgdW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHtcbiAgICBoYXNNYW55LFxuICAgIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsXG4gICAgbWF4Um93cyxcbiAgICBtaW5MZW5ndGgsXG4gICAgbWluUm93cyxcbiAgICByZXE6IHtcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICB0LFxuICAgIH0sXG4gICAgcmVxdWlyZWQsXG4gIH0sXG4pID0+IHtcbiAgbGV0IG1heExlbmd0aDogbnVtYmVyXG5cbiAgaWYgKCFyZXF1aXJlZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBjb25zdCBzdHJpbmdzVG9WYWxpZGF0ZTogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIGZvciAoY29uc3Qgc3RyaW5nVmFsdWUgb2Ygc3RyaW5nc1RvVmFsaWRhdGUpIHtcbiAgICBjb25zdCBsZW5ndGggPSBzdHJpbmdWYWx1ZT8ubGVuZ3RoIHx8IDBcblxuICAgIGlmICh0eXBlb2YgbWF4TGVuZ3RoID09PSAnbnVtYmVyJyAmJiBsZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4TGVuZ3RoLCBzdHJpbmdWYWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluTGVuZ3RoID09PSAnbnVtYmVyJyAmJiBsZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW5MZW5ndGgsIHN0cmluZ1ZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgaWYgKCEodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkgfHwgdmFsdWU/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwYXNzd29yZDogVmFsaWRhdGU8c3RyaW5nLCB1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAge1xuICAgIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsXG4gICAgbWluTGVuZ3RoLFxuICAgIHJlcToge1xuICAgICAgcGF5bG9hZDogeyBjb25maWcgfSxcbiAgICAgIHQsXG4gICAgfSxcbiAgICByZXF1aXJlZCxcbiAgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG5cbiAgaWYgKHZhbHVlICYmIG1heExlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcsIHsgbWF4TGVuZ3RoIH0pXG4gIH1cblxuICBpZiAodmFsdWUgJiYgbWluTGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IG1pbkxlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBlbWFpbDogVmFsaWRhdGU8c3RyaW5nLCB1bmtub3duLCB1bmtub3duLCBFbWFpbEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHN0cmluZywgdW5rbm93biwgdW5rbm93biwgVGV4dGFyZWFGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7XG4gICAgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCxcbiAgICBtaW5MZW5ndGgsXG4gICAgcmVxOiB7XG4gICAgICBwYXlsb2FkOiB7IGNvbmZpZyB9LFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcXVpcmVkLFxuICB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcbiAgaWYgKHZhbHVlICYmIG1heExlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcsIHsgbWF4TGVuZ3RoIH0pXG4gIH1cblxuICBpZiAodmFsdWUgJiYgbWluTGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nLCB7IG1pbkxlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjb2RlOiBWYWxpZGF0ZTxzdHJpbmcsIHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QganNvbjogVmFsaWRhdGU8c3RyaW5nLCB1bmtub3duLCB1bmtub3duLCBKU09ORmllbGQgJiB7IGpzb25FcnJvcj86IHN0cmluZyB9PiA9IChcbiAgdmFsdWUsXG4gIHsganNvbkVycm9yLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoanNvbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNoZWNrYm94OiBWYWxpZGF0ZTxib29sZWFuLCB1bmtub3duLCB1bmtub3duLCBDaGVja2JveEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fCAocmVxdWlyZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246dHJ1ZU9yRmFsc2UnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGU6IFZhbGlkYXRlPERhdGUsIHVua25vd24sIHVua25vd24sIERhdGVGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IHJlcTogeyB0IH0sIHJlcXVpcmVkIH0sXG4pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0OiBWYWxpZGF0ZTxvYmplY3QsIHVua25vd24sIHVua25vd24sIFJpY2hUZXh0RmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCBlZGl0b3I6IFJpY2hUZXh0QWRhcHRlciA9IG9wdGlvbnM/LmVkaXRvclxuXG4gIHJldHVybiBlZGl0b3IudmFsaWRhdGUodmFsdWUsIG9wdGlvbnMpXG59XG5cbmNvbnN0IHZhbGlkYXRlQXJyYXlMZW5ndGggPSAoXG4gIHZhbHVlLFxuICBvcHRpb25zOiB7XG4gICAgbWF4Um93cz86IG51bWJlclxuICAgIG1pblJvd3M/OiBudW1iZXJcbiAgICByZXF1aXJlZD86IGJvb2xlYW5cbiAgICB0OiAoa2V5OiBzdHJpbmcsIG9wdGlvbnM/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZyB9KSA9PiBzdHJpbmdcbiAgfSxcbikgPT4ge1xuICBjb25zdCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgY29uc3QgYXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmxlbmd0aCA6IDBcblxuICBpZiAoIXJlcXVpcmVkICYmIGFycmF5TGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdnZW5lcmFsOnJvd3MnKSB9KVxuICB9XG5cbiAgaWYgKG1heFJvd3MgJiYgYXJyYXlMZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJywgeyBjb3VudDogbWF4Um93cywgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIWFycmF5TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ2dlbmVyYWw6cm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBudW1iZXI6IFZhbGlkYXRlPG51bWJlciB8IG51bWJlcltdLCB1bmtub3duLCB1bmtub3duLCBOdW1iZXJGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG1heCwgbWF4Um93cywgbWluLCBtaW5Sb3dzLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmIChoYXNNYW55ID09PSB0cnVlKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlQXJyYXlMZW5ndGgodmFsdWUsIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSlcbiAgICBpZiAodHlwZW9mIGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvblJlc3VsdFxuICB9XG5cbiAgaWYgKCF2YWx1ZSAmJiAhaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgLy8gaWYgbm8gdmFsdWUgaXMgcHJlc2VudCwgdmFsaWRhdGUgYmFzZWQgb24gcmVxdWlyZWRcbiAgICBpZiAocmVxdWlyZWQpIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICBpZiAoIXJlcXVpcmVkKSByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgY29uc3QgbnVtYmVyc1RvVmFsaWRhdGU6IG51bWJlcltdID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICBmb3IgKGNvbnN0IG51bWJlciBvZiBudW1iZXJzVG9WYWxpZGF0ZSkge1xuICAgIGlmICghaXNOdW1iZXIobnVtYmVyKSkgcmV0dXJuIHQoJ3ZhbGlkYXRpb246ZW50ZXJOdW1iZXInKVxuXG4gICAgY29uc3QgbnVtYmVyVmFsdWUgPSBwYXJzZUZsb2F0KG51bWJlciBhcyB1bmtub3duIGFzIHN0cmluZylcblxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCdnZW5lcmFsOnZhbHVlJyksIG1heCwgdmFsdWUgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgJiYgbnVtYmVyVmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgnZ2VuZXJhbDp2YWx1ZScpLCBtaW4sIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duW10sIHVua25vd24sIHVua25vd24sIEFycmF5RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmV4cG9ydCBjb25zdCBibG9ja3M6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIHVua25vd24sIEJsb2NrRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIHJldHVybiB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG59XG5cbmNvbnN0IHZhbGlkYXRlRmlsdGVyT3B0aW9uczogVmFsaWRhdGU8XG4gIHVua25vd24sXG4gIHVua25vd24sXG4gIHVua25vd24sXG4gIFJlbGF0aW9uc2hpcEZpZWxkIHwgVXBsb2FkRmllbGRcbj4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICB7IGlkLCBkYXRhLCBmaWx0ZXJPcHRpb25zLCByZWxhdGlvblRvLCByZXEsIHJlcTogeyBwYXlsb2FkLCB0LCB1c2VyIH0sIHNpYmxpbmdEYXRhIH0sXG4pID0+IHtcbiAgaWYgKHR5cGVvZiBmaWx0ZXJPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IHtcbiAgICAgIFtjb2xsZWN0aW9uOiBzdHJpbmddOiAobnVtYmVyIHwgc3RyaW5nKVtdXG4gICAgfSA9IHt9XG5cbiAgICBjb25zdCBmYWxzZUNvbGxlY3Rpb25zOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSB0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycgPyBbcmVsYXRpb25Ub10gOiByZWxhdGlvblRvXG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29sbGVjdGlvbnMubWFwKGFzeW5jIChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IG9wdGlvbkZpbHRlciA9XG4gICAgICAgICAgICB0eXBlb2YgZmlsdGVyT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IGZpbHRlck9wdGlvbnNcblxuICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIG9wdGlvbkZpbHRlciA9IG51bGxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2YWx1ZUlEczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdXG5cbiAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy52YWx1ZSkge1xuICAgICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbC52YWx1ZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAodmFsdWVJRHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZmluZFdoZXJlOiBXaGVyZSA9IHtcbiAgICAgICAgICAgICAgYW5kOiBbeyBpZDogeyBpbjogdmFsdWVJRHMgfSB9XSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciAmJiBvcHRpb25GaWx0ZXIgIT09IHRydWUpIGZpbmRXaGVyZS5hbmQucHVzaChvcHRpb25GaWx0ZXIpXG5cbiAgICAgICAgICAgIGlmIChvcHRpb25GaWx0ZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGZhbHNlQ29sbGVjdGlvbnMucHVzaChjb2xsZWN0aW9uKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBgcmVxYCBvbWl0dGVkIHRvIHByZXZlbnQgdHJhbnNhY3Rpb24gZXJyb3JzIGZyb20gYWJvcnRpbmcgdGhlIGVudGlyZSB0cmFuc2FjdGlvblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgd2hlcmU6IGZpbmRXaGVyZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmlkKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHJlcS5wYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICBtc2c6IGBFcnJvciB2YWxpZGF0aW5nIGZpbHRlciBvcHRpb25zIGZvciBjb2xsZWN0aW9uICR7Y29sbGVjdGlvbn1gLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgb3B0aW9uc1tjb2xsZWN0aW9uXSA9IFtdXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChmYWxzZUNvbGxlY3Rpb25zLmZpbmQoKHNsdWcpID0+IHJlbGF0aW9uVG8gPT09IHNsdWcpKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgaWYgKCF2YWx1ZSAmJiBvcHRpb25zLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LnJlcT8udCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5yZXE/LnBheWxvYWQ/LmNvbmZpZz8uY29sbGVjdGlvbnNcbiAgICAgID8uZmluZCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBvcHRpb25zLnJlbGF0aW9uVG8pXG4gICAgICA/LmZpZWxkcz8uZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG5cbiAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQsIG9wdGlvbnM/LnJlcT8ucGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnJlcT8udCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTxcbiAgUmVsYXRpb25zaGlwVmFsdWUsXG4gIHVua25vd24sXG4gIHVua25vd24sXG4gIFJlbGF0aW9uc2hpcEZpZWxkXG4+ID0gYXN5bmMgKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBtYXhSb3dzLFxuICAgIG1pblJvd3MsXG4gICAgcmVsYXRpb25UbyxcbiAgICByZXE6IHtcbiAgICAgIHBheWxvYWQsXG4gICAgICBwYXlsb2FkOiB7IGNvbmZpZyB9LFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcXVpcmVkLFxuICB9ID0gb3B0aW9uc1xuXG4gIGlmICgoIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgaWYgKG1pblJvd3MgJiYgdmFsdWUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdnZW5lcmFsOnJvd3MnKSxcbiAgICAgICAgbWluOiBtaW5Sb3dzLFxuICAgICAgICB2YWx1ZTogdmFsdWUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB2YWx1ZS5sZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHtcbiAgICAgICAgbGFiZWw6IHQoJ2dlbmVyYWw6cm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZS5sZW5ndGgsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvblNsdWc6IHN0cmluZ1xuICAgICAgbGV0IHJlcXVlc3RlZElEXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGlvblRvXG5cbiAgICAgICAgLy8gY3VzdG9tIGlkXG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZyA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0ZWRJRCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGlkRmllbGQgPSBjb25maWc/LmNvbGxlY3Rpb25zXG4gICAgICAgID8uZmluZCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5zbHVnID09PSBjb2xsZWN0aW9uU2x1ZylcbiAgICAgICAgPy5maWVsZHM/LmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuXG4gICAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQsIHBheWxvYWQ/LmRiPy5kZWZhdWx0SURUeXBlKVxuXG4gICAgICByZXR1cm4gIWlzVmFsaWRJRChyZXF1ZXN0ZWRJRCwgdHlwZSlcbiAgICB9KVxuXG4gICAgaWYgKGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBgVGhpcyByZWxhdGlvbnNoaXAgZmllbGQgaGFzIHRoZSBmb2xsb3dpbmcgaW52YWxpZCByZWxhdGlvbnNoaXBzOiAke2ludmFsaWRSZWxhdGlvbnNoaXBzXG4gICAgICAgIC5tYXAoKGVyciwgaW52YWxpZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9YFxuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKX1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHNlbGVjdDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgdW5rbm93biwgU2VsZWN0RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBoYXNNYW55LCBvcHRpb25zLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgIHZhbHVlLnNvbWUoXG4gICAgICAoaW5wdXQpID0+XG4gICAgICAgICFvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSBpbnB1dCB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uPy52YWx1ZSA9PT0gaW5wdXQpLFxuICAgICAgICApLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxuICAgICFvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAoaGFzTWFueSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAodmFsdWUgYXMgW10pPy5sZW5ndGggPT09IDApKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmFkaW86IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIHVua25vd24sIFJhZGlvRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBvcHRpb25zLCByZXE6IHsgdCB9LCByZXF1aXJlZCB9LFxuKSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8W251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSwgdW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlID0gWycnLCAnJ10sXG4gIHsgcmVxOiB7IHQgfSwgcmVxdWlyZWQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJnZXRJRFR5cGUiLCJpc051bWJlciIsImlzVmFsaWRJRCIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0ZXh0IiwidmFsdWUiLCJoYXNNYW55IiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtYXhSb3dzIiwibWluTGVuZ3RoIiwibWluUm93cyIsInJlcSIsInBheWxvYWQiLCJjb25maWciLCJ0IiwicmVxdWlyZWQiLCJsZW5ndGhWYWxpZGF0aW9uUmVzdWx0IiwidmFsaWRhdGVBcnJheUxlbmd0aCIsImRlZmF1bHRNYXhUZXh0TGVuZ3RoIiwic3RyaW5nc1RvVmFsaWRhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJzdHJpbmdWYWx1ZSIsImxlbmd0aCIsImxhYmVsIiwicGFzc3dvcmQiLCJlbWFpbCIsInRlc3QiLCJ0ZXh0YXJlYSIsImNvZGUiLCJ1bmRlZmluZWQiLCJqc29uIiwianNvbkVycm9yIiwiY2hlY2tib3giLCJkYXRlIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsInJpY2hUZXh0Iiwib3B0aW9ucyIsImVkaXRvciIsInZhbGlkYXRlIiwiYXJyYXlMZW5ndGgiLCJjb3VudCIsIm51bWJlciIsIm1heCIsIm1pbiIsIm51bWJlcnNUb1ZhbGlkYXRlIiwibnVtYmVyVmFsdWUiLCJwYXJzZUZsb2F0IiwiYXJyYXkiLCJibG9ja3MiLCJ2YWxpZGF0ZUZpbHRlck9wdGlvbnMiLCJpZCIsImRhdGEiLCJmaWx0ZXJPcHRpb25zIiwicmVsYXRpb25UbyIsInVzZXIiLCJzaWJsaW5nRGF0YSIsImZhbHNlQ29sbGVjdGlvbnMiLCJjb2xsZWN0aW9ucyIsInZhbHVlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJjb2xsZWN0aW9uIiwib3B0aW9uRmlsdGVyIiwidmFsdWVJRHMiLCJmb3JFYWNoIiwidmFsIiwicHVzaCIsImZpbmRXaGVyZSIsImFuZCIsImluIiwicmVzdWx0IiwiZmluZCIsImRlcHRoIiwibGltaXQiLCJwYWdpbmF0aW9uIiwid2hlcmUiLCJkb2NzIiwiZG9jIiwiZXJyIiwibG9nZ2VyIiwiZXJyb3IiLCJtc2ciLCJpbnZhbGlkUmVsYXRpb25zaGlwcyIsImZpbHRlciIsInJlcXVlc3RlZElEIiwic2x1ZyIsImluZGV4T2YiLCJyZWR1Y2UiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1cGxvYWQiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJuYW1lIiwidHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsInJlbGF0aW9uc2hpcCIsImNvbGxlY3Rpb25TbHVnIiwiam9pbiIsInNlbGVjdCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInJhZGlvIiwidmFsdWVNYXRjaGVzT3B0aW9uIiwicG9pbnQiLCJsbmciLCJTdHJpbmciLCJsYXQiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiJBQXNCQSxTQUFTQSxTQUFTLFFBQVEsNEJBQTJCO0FBQ3JELFNBQVNDLFFBQVEsUUFBUSwyQkFBMEI7QUFDbkQsU0FBU0MsU0FBUyxRQUFRLDRCQUEyQjtBQUNyRCxTQUFTQyxnQkFBZ0IsUUFBUSxvQkFBbUI7QUFFcEQsT0FBTyxNQUFNQyxPQUFpRSxDQUM1RUMsT0FDQSxFQUNFQyxPQUFPLEVBQ1BDLFdBQVdDLGNBQWMsRUFDekJDLE9BQU8sRUFDUEMsU0FBUyxFQUNUQyxPQUFPLEVBQ1BDLEtBQUssRUFDSEMsU0FBUyxFQUFFQyxNQUFNLEVBQUUsRUFDbkJDLENBQUMsRUFDRixFQUNEQyxRQUFRLEVBQ1Q7SUFFRCxJQUFJVDtJQUVKLElBQUksQ0FBQ1MsVUFBVTtRQUNiLElBQUksQ0FBQ1gsT0FBTyxPQUFPO0lBQ3JCO0lBRUEsSUFBSUMsWUFBWSxNQUFNO1FBQ3BCLE1BQU1XLHlCQUF5QkMsb0JBQW9CYixPQUFPO1lBQUVJO1lBQVNFO1lBQVNLO1lBQVVEO1FBQUU7UUFDMUYsSUFBSSxPQUFPRSwyQkFBMkIsVUFBVSxPQUFPQTtJQUN6RDtJ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