@nlabs/reaktor 1.9.0 → 1.10.0

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 (301) hide show
  1. package/README.md +59 -73
  2. package/docs/GENERATION.md +63 -0
  3. package/lib/actions/analytics.js +1 -1
  4. package/lib/actions/apps.d.ts +2 -2
  5. package/lib/actions/apps.js +1 -1
  6. package/lib/actions/connections.js +1 -1
  7. package/lib/actions/content.js +1 -1
  8. package/lib/actions/contentGeneration.d.ts +40 -0
  9. package/lib/actions/contentGeneration.js +206 -0
  10. package/lib/actions/conversations.js +1 -1
  11. package/lib/actions/crm.js +1 -1
  12. package/lib/actions/crud.d.ts +2 -2
  13. package/lib/actions/crud.js +1 -1
  14. package/lib/actions/dynamodb.js +1 -1
  15. package/lib/actions/email.js +1 -1
  16. package/lib/actions/files.d.ts +42 -4
  17. package/lib/actions/files.js +1 -1
  18. package/lib/actions/flags.js +1 -1
  19. package/lib/actions/geminiVideo.d.ts +19 -0
  20. package/lib/actions/geminiVideo.js +161 -0
  21. package/lib/actions/groups.js +1 -1
  22. package/lib/actions/higgsfield.d.ts +20 -0
  23. package/lib/actions/higgsfield.js +148 -0
  24. package/lib/actions/imageGeneration.d.ts +37 -0
  25. package/lib/actions/imageGeneration.js +121 -0
  26. package/lib/actions/images.js +1 -1
  27. package/lib/actions/index.d.ts +5 -0
  28. package/lib/actions/index.js +6 -1
  29. package/lib/actions/ios.js +1 -1
  30. package/lib/actions/locations.js +1 -1
  31. package/lib/actions/messages.js +1 -1
  32. package/lib/actions/notifications.js +1 -1
  33. package/lib/actions/payments.js +27 -26
  34. package/lib/actions/personas.d.ts +4 -4
  35. package/lib/actions/personas.js +1 -1
  36. package/lib/actions/posts.js +1 -1
  37. package/lib/actions/query.js +1 -1
  38. package/lib/actions/reactions.d.ts +6 -6
  39. package/lib/actions/reactions.js +1 -1
  40. package/lib/actions/rum.js +1 -1
  41. package/lib/actions/s3.d.ts +4 -4
  42. package/lib/actions/s3.js +22 -6
  43. package/lib/actions/search.js +1 -1
  44. package/lib/actions/sms.js +1 -1
  45. package/lib/actions/statistics.js +1 -1
  46. package/lib/actions/subscriptions.js +1 -1
  47. package/lib/actions/tags.d.ts +2 -2
  48. package/lib/actions/tags.js +1 -1
  49. package/lib/actions/users.d.ts +2 -2
  50. package/lib/actions/users.js +1 -1
  51. package/lib/actions/videoGeneration.d.ts +20 -0
  52. package/lib/actions/videoGeneration.js +32 -0
  53. package/lib/actions/videos.js +1 -1
  54. package/lib/adapters/arangoAdapter.js +1 -1
  55. package/lib/adapters/contentAdapter.js +1 -1
  56. package/lib/adapters/fileAdapter.js +1 -1
  57. package/lib/adapters/geminiGenerationAdapter.d.ts +34 -0
  58. package/lib/adapters/geminiGenerationAdapter.js +41 -0
  59. package/lib/adapters/higgsfieldAdapter.d.ts +120 -0
  60. package/lib/adapters/higgsfieldAdapter.js +131 -0
  61. package/lib/adapters/imageAdapter.js +1 -1
  62. package/lib/adapters/imageGenerationAdapter.d.ts +17 -0
  63. package/lib/adapters/imageGenerationAdapter.js +18 -0
  64. package/lib/adapters/index.d.ts +3 -0
  65. package/lib/adapters/index.js +4 -1
  66. package/lib/adapters/messageAdapter.js +1 -1
  67. package/lib/adapters/postAdapter.js +1 -1
  68. package/lib/adapters/reaktorAdapter.js +1 -1
  69. package/lib/adapters/tagAdapter.js +1 -1
  70. package/lib/adapters/userAdapter.d.ts +76 -1
  71. package/lib/adapters/userAdapter.js +1 -1
  72. package/lib/config.d.ts +19 -14
  73. package/lib/config.js +9 -1
  74. package/lib/constants/collections.js +1 -1
  75. package/lib/handlers/graphqlHandler.js +1 -1
  76. package/lib/index.d.ts +1 -1
  77. package/lib/index.js +2 -2
  78. package/lib/lambdas/actions/websockets.d.ts +5 -0
  79. package/lib/lambdas/actions/websockets.js +16 -1
  80. package/lib/lambdas/authorizer.js +1 -1
  81. package/lib/lambdas/connection.d.ts +2 -2
  82. package/lib/lambdas/connection.js +1 -1
  83. package/lib/lambdas/utils/message.js +1 -1
  84. package/lib/lambdas/utils/websocket.d.ts +4 -4
  85. package/lib/lambdas/utils/websocket.js +1 -1
  86. package/lib/mocks/conversation.js +1 -1
  87. package/lib/mocks/file.js +1 -1
  88. package/lib/mocks/group.js +1 -1
  89. package/lib/mocks/image.js +1 -1
  90. package/lib/mocks/post.js +1 -1
  91. package/lib/mocks/tag.js +1 -1
  92. package/lib/mocks/user.js +1 -1
  93. package/lib/mocks/video.js +1 -1
  94. package/lib/mutations/analytics/analytics.js +1 -1
  95. package/lib/mutations/content/content.js +15 -1
  96. package/lib/mutations/crm/crm.js +1 -1
  97. package/lib/mutations/events/events.js +1 -1
  98. package/lib/mutations/flags/flags.js +1 -1
  99. package/lib/mutations/groups/groups.js +1 -1
  100. package/lib/mutations/higgsfield/higgsfield.d.ts +1 -0
  101. package/lib/mutations/higgsfield/higgsfield.js +62 -0
  102. package/lib/mutations/images/images.js +10 -1
  103. package/lib/mutations/index.d.ts +2 -1
  104. package/lib/mutations/index.js +11 -2
  105. package/lib/mutations/locations/locations.js +1 -1
  106. package/lib/mutations/messages/messages.js +1 -1
  107. package/lib/mutations/personas/personas.js +1 -1
  108. package/lib/mutations/posts/posts.js +1 -1
  109. package/lib/mutations/reactions/reactions.js +1 -1
  110. package/lib/mutations/rum/rum.js +1 -1
  111. package/lib/mutations/statistics/statistics.js +1 -1
  112. package/lib/mutations/subscriptions/subscriptions.js +1 -1
  113. package/lib/mutations/tags/tags.js +1 -1
  114. package/lib/mutations/users/users.js +1 -1
  115. package/lib/mutations/videos/videos.js +24 -10
  116. package/lib/objectTypes/analytics.js +1 -1
  117. package/lib/objectTypes/app.js +1 -1
  118. package/lib/objectTypes/bankAccount.js +1 -1
  119. package/lib/objectTypes/connection.js +1 -1
  120. package/lib/objectTypes/content.js +1 -1
  121. package/lib/objectTypes/contentGeneration.d.ts +2 -0
  122. package/lib/objectTypes/contentGeneration.js +30 -0
  123. package/lib/objectTypes/conversation.js +1 -1
  124. package/lib/objectTypes/creditCard.js +1 -1
  125. package/lib/objectTypes/crm.js +1 -1
  126. package/lib/objectTypes/document.js +1 -1
  127. package/lib/objectTypes/error.js +1 -1
  128. package/lib/objectTypes/event.js +1 -1
  129. package/lib/objectTypes/external.js +1 -1
  130. package/lib/objectTypes/file.js +1 -1
  131. package/lib/objectTypes/filter.js +1 -1
  132. package/lib/objectTypes/flag.js +1 -1
  133. package/lib/objectTypes/group.js +1 -1
  134. package/lib/objectTypes/higgsfield.d.ts +5 -0
  135. package/lib/objectTypes/higgsfield.js +149 -0
  136. package/lib/objectTypes/iapSubscription.js +1 -1
  137. package/lib/objectTypes/image.js +1 -1
  138. package/lib/objectTypes/imageGeneration.d.ts +2 -0
  139. package/lib/objectTypes/imageGeneration.js +33 -0
  140. package/lib/objectTypes/index.d.ts +2 -0
  141. package/lib/objectTypes/index.js +3 -1
  142. package/lib/objectTypes/location.js +1 -1
  143. package/lib/objectTypes/message.js +1 -1
  144. package/lib/objectTypes/passcode.js +1 -1
  145. package/lib/objectTypes/persona.d.ts +37 -2
  146. package/lib/objectTypes/persona.js +1 -1
  147. package/lib/objectTypes/plan.js +1 -1
  148. package/lib/objectTypes/post.js +1 -1
  149. package/lib/objectTypes/query.js +1 -1
  150. package/lib/objectTypes/reaction.js +1 -1
  151. package/lib/objectTypes/relation.js +1 -1
  152. package/lib/objectTypes/rum.js +1 -1
  153. package/lib/objectTypes/search.js +1 -1
  154. package/lib/objectTypes/statistics.js +1 -1
  155. package/lib/objectTypes/subscription.js +1 -1
  156. package/lib/objectTypes/tag.js +1 -1
  157. package/lib/objectTypes/user.js +1 -1
  158. package/lib/objectTypes/video.js +1 -1
  159. package/lib/objectTypes/videoGeneration.d.ts +2 -0
  160. package/lib/objectTypes/videoGeneration.js +31 -0
  161. package/lib/queries/analytics/analytics.js +1 -1
  162. package/lib/queries/content/content.js +1 -1
  163. package/lib/queries/crm/crm.js +1 -1
  164. package/lib/queries/events/events.js +1 -1
  165. package/lib/queries/flags/flags.js +1 -1
  166. package/lib/queries/groups/groups.js +1 -1
  167. package/lib/queries/higgsfield/higgsfield.d.ts +1 -0
  168. package/lib/queries/higgsfield/higgsfield.js +22 -0
  169. package/lib/queries/images/images.js +1 -1
  170. package/lib/queries/index.d.ts +2 -1
  171. package/lib/queries/index.js +7 -2
  172. package/lib/queries/locations/locations.js +1 -1
  173. package/lib/queries/messages/messages.js +1 -1
  174. package/lib/queries/personas/personas.js +1 -1
  175. package/lib/queries/posts/posts.js +1 -1
  176. package/lib/queries/query/query.js +1 -1
  177. package/lib/queries/reactions/reactions.js +1 -1
  178. package/lib/queries/statistics/statistics.js +1 -1
  179. package/lib/queries/subscriptions/subscriptions.js +1 -1
  180. package/lib/queries/tags/tags.js +1 -1
  181. package/lib/queries/users/users.js +1 -1
  182. package/lib/queries/videos/videos.js +1 -1
  183. package/lib/templates/email/layout.js +1 -1
  184. package/lib/templates/email/passwordForgot.js +1 -1
  185. package/lib/templates/email/passwordRecovery.js +1 -1
  186. package/lib/templates/email/verifyEmail.js +1 -1
  187. package/lib/templates/email/welcome.js +1 -1
  188. package/lib/templates/sms/passwordForgot.js +1 -1
  189. package/lib/templates/sms/passwordRecovery.js +1 -1
  190. package/lib/templates/sms/verifyEmail.js +1 -1
  191. package/lib/templates/sms/verifyPhone.js +1 -1
  192. package/lib/templates/sms/welcome.js +1 -1
  193. package/lib/types/analytics.types.d.ts +16 -16
  194. package/lib/types/analytics.types.js +1 -1
  195. package/lib/types/apps.types.d.ts +4 -4
  196. package/lib/types/apps.types.js +1 -1
  197. package/lib/types/arangodb.types.d.ts +20 -20
  198. package/lib/types/arangodb.types.js +1 -1
  199. package/lib/types/auth.types.js +1 -1
  200. package/lib/types/connections.types.d.ts +2 -2
  201. package/lib/types/connections.types.js +1 -1
  202. package/lib/types/content.types.d.ts +6 -6
  203. package/lib/types/content.types.js +1 -1
  204. package/lib/types/conversations.types.d.ts +2 -2
  205. package/lib/types/conversations.types.js +1 -1
  206. package/lib/types/crm.types.d.ts +30 -30
  207. package/lib/types/crm.types.js +1 -1
  208. package/lib/types/email.types.d.ts +2 -2
  209. package/lib/types/email.types.js +1 -1
  210. package/lib/types/error.types.d.ts +1 -0
  211. package/lib/types/error.types.js +2 -1
  212. package/lib/types/files.types.d.ts +2 -2
  213. package/lib/types/files.types.js +1 -1
  214. package/lib/types/flags.types.d.ts +8 -8
  215. package/lib/types/flags.types.js +1 -1
  216. package/lib/types/google.types.js +1 -1
  217. package/lib/types/groups.types.d.ts +2 -2
  218. package/lib/types/groups.types.js +1 -1
  219. package/lib/types/images.types.d.ts +2 -2
  220. package/lib/types/images.types.js +1 -1
  221. package/lib/types/index.js +1 -1
  222. package/lib/types/locations.types.d.ts +2 -2
  223. package/lib/types/locations.types.js +1 -1
  224. package/lib/types/messages.types.d.ts +2 -2
  225. package/lib/types/messages.types.js +1 -1
  226. package/lib/types/notifications.types.js +1 -1
  227. package/lib/types/payments.types.d.ts +14 -14
  228. package/lib/types/payments.types.js +1 -1
  229. package/lib/types/personas.types.d.ts +2 -2
  230. package/lib/types/personas.types.js +1 -1
  231. package/lib/types/posts.types.d.ts +2 -2
  232. package/lib/types/posts.types.js +1 -1
  233. package/lib/types/rum.types.d.ts +6 -6
  234. package/lib/types/rum.types.js +1 -1
  235. package/lib/types/statistics.types.js +1 -1
  236. package/lib/types/tags.types.d.ts +4 -4
  237. package/lib/types/tags.types.js +1 -1
  238. package/lib/types/users.types.d.ts +2 -2
  239. package/lib/types/users.types.js +1 -1
  240. package/lib/types/videos.types.d.ts +2 -2
  241. package/lib/types/videos.types.js +1 -1
  242. package/lib/types/websockets.types.d.ts +4 -4
  243. package/lib/types/websockets.types.js +1 -1
  244. package/lib/upload.js +1 -1
  245. package/lib/utils/adapterUtils.js +1 -1
  246. package/lib/utils/analyticsUtils.js +1 -1
  247. package/lib/utils/appContext.js +1 -1
  248. package/lib/utils/aqlHelpers.js +1 -1
  249. package/lib/utils/arangodbUtils.js +1 -1
  250. package/lib/utils/authUtils.js +1 -1
  251. package/lib/utils/awsUtils.js +1 -1
  252. package/lib/utils/collectionRegistry.d.ts +2 -2
  253. package/lib/utils/collectionRegistry.js +1 -1
  254. package/lib/utils/contextUtils.js +1 -1
  255. package/lib/utils/dbI18n.example.js +1 -1
  256. package/lib/utils/dbI18n.js +1 -1
  257. package/lib/utils/googleTranslate.js +1 -1
  258. package/lib/utils/graphqlUtils.js +1 -1
  259. package/lib/utils/imageUtils.js +1 -1
  260. package/lib/utils/index.d.ts +3 -0
  261. package/lib/utils/index.js +4 -1
  262. package/lib/utils/languageDetection.js +1 -1
  263. package/lib/utils/localeUtils.example.js +1 -1
  264. package/lib/utils/localeUtils.js +1 -1
  265. package/lib/utils/mediaAccess.d.ts +5 -0
  266. package/lib/utils/mediaAccess.js +57 -0
  267. package/lib/utils/middlewareUtils.js +1 -1
  268. package/lib/utils/nodeRealtime.d.ts +14 -0
  269. package/lib/utils/nodeRealtime.js +84 -0
  270. package/lib/utils/opaqueToken.d.ts +4 -0
  271. package/lib/utils/opaqueToken.js +7 -0
  272. package/lib/utils/queryBuilder.js +1 -1
  273. package/lib/utils/schemaUtils.js +1 -1
  274. package/lib/utils/sessionUtils.js +1 -1
  275. package/lib/utils/stripeUtils.d.ts +1 -1
  276. package/lib/utils/stripeUtils.js +2 -3
  277. package/lib/utils/stripeUtils.ts.bak +12 -0
  278. package/lib/utils/templateUtils.js +1 -1
  279. package/lib/utils/testUtils.js +1 -1
  280. package/lib/utils/translationQueue.example.js +1 -1
  281. package/lib/utils/translationQueue.js +1 -1
  282. package/lib/videoProcessing.js +1 -1
  283. package/package.json +24 -23
  284. package/lib/durableChat/conversations.d.ts +0 -62
  285. package/lib/durableChat/conversations.js +0 -729
  286. package/lib/durableChat/errors.d.ts +0 -6
  287. package/lib/durableChat/errors.js +0 -11
  288. package/lib/durableChat/events.d.ts +0 -22
  289. package/lib/durableChat/events.js +0 -50
  290. package/lib/durableChat/index.d.ts +0 -8
  291. package/lib/durableChat/index.js +0 -10
  292. package/lib/durableChat/membership.d.ts +0 -24
  293. package/lib/durableChat/membership.js +0 -85
  294. package/lib/durableChat/messageTypes.d.ts +0 -76
  295. package/lib/durableChat/messageTypes.js +0 -3
  296. package/lib/durableChat/messages.d.ts +0 -16
  297. package/lib/durableChat/messages.js +0 -257
  298. package/lib/durableChat/transaction.d.ts +0 -10
  299. package/lib/durableChat/transaction.js +0 -53
  300. package/lib/durableChat/types.d.ts +0 -81
  301. package/lib/durableChat/types.js +0 -3
@@ -17,3 +17,6 @@ export * from './schemaUtils.js';
17
17
  export * from './sessionUtils.js';
18
18
  export * from './templateUtils.js';
19
19
  export * from './translationQueue.js';
20
+ export * from './mediaAccess.js';
21
+ export * from './nodeRealtime.js';
22
+ export * from './opaqueToken.js';
@@ -16,5 +16,8 @@ export * from './schemaUtils.js';
16
16
  export * from './sessionUtils.js';
17
17
  export * from './templateUtils.js';
18
18
  export * from './translationQueue.js';
19
+ export * from './mediaAccess.js';
20
+ export * from './nodeRealtime.js';
21
+ export * from './opaqueToken.js';
19
22
 
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5leHBvcnQgKiBmcm9tICcuL2FkYXB0ZXJVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FuYWx5dGljc1V0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXJhbmdvZGJVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2F1dGhVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHRVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2RiSTE4bi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dvb2dsZVRyYW5zbGF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2dyYXBocWxVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2xhbmd1YWdlRGV0ZWN0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9jYWxlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9taWRkbGV3YXJlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWFVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Nlc3Npb25VdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvblF1ZXVlLmpzJztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLHFCQUFxQjtBQUNuQyxjQUFjLGlCQUFpQjtBQUMvQixjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLGNBQWM7QUFDNUIsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyx5QkFBeUI7QUFDdkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyx3QkFBd0IifQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vYWRhcHRlclV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzVXRpbHMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hcmFuZ29kYlV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGV4dFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZGJJMThuLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZ29vZ2xlVHJhbnNsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JhcGhxbFV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2VEZXRlY3Rpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21pZGRsZXdhcmVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYVV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Vzc2lvblV0aWxzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGVVdGlscy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0aW9uUXVldWUuanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL21lZGlhQWNjZXNzLmpzJztcblxuZXhwb3J0ICogZnJvbSAnLi9ub2RlUmVhbHRpbWUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9vcGFxdWVUb2tlbi5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxzQkFBc0I7QUFDcEMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxvQkFBb0I7QUFDbEMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMseUJBQXlCO0FBQ3ZDLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsd0JBQXdCO0FBRXRDLGNBQWMsbUJBQW1CO0FBRWpDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsbUJBQW1CIn0=
@@ -117,4 +117,4 @@ const parseAcceptLanguage = (acceptLanguage)=>{
117
117
  return null;
118
118
  };
119
119
 
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL2xhbmd1YWdlRGV0ZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlRGV0ZWN0aW9uQ29udGV4dCB7XG4gIGFjY2VwdExhbmd1YWdlPzogc3RyaW5nO1xuICBpcENvdW50cnk/OiBzdHJpbmc7XG4gIHBob25lQ291bnRyeUNvZGU/OiBzdHJpbmc7XG4gIHVzZXJQcmVmZXJlbmNlPzogTG9jYWxlO1xufVxuXG5jb25zdCBjb3VudHJ5VG9Mb2NhbGVNYXA6IFJlY29yZDxzdHJpbmcsIExvY2FsZT4gPSB7XG4gIEFSOiAnZXMnLFxuICBBVTogJ2VuJyxcbiAgQkU6ICdmcicsXG4gIEJPOiAnZXMnLFxuICBCUjogJ3B0JyxcbiAgQ0E6ICdlbicsXG4gIENMOiAnZXMnLFxuICBDTzogJ2VzJyxcbiAgQ1I6ICdlcycsXG4gIENVOiAnZXMnLFxuICBDVjogJ3B0JyxcbiAgRE86ICdlcycsXG4gIEVDOiAnZXMnLFxuICBFUzogJ2VzJyxcbiAgRlI6ICdmcicsXG4gIEdCOiAnZW4nLFxuICBHUTogJ2VzJyxcbiAgR1Q6ICdlcycsXG4gIEdXOiAncHQnLFxuICBITjogJ2VzJyxcbiAgSVQ6ICdpdCcsXG4gIExJOiAnZGUnLFxuICBMVTogJ2ZyJyxcbiAgTUM6ICdmcicsXG4gIE1YOiAnZXMnLFxuICBNWjogJ3B0JyxcbiAgTkk6ICdlcycsXG4gIFBBOiAnZXMnLFxuICBQRTogJ2VzJyxcbiAgUFk6ICdlcycsXG4gIFNNOiAnaXQnLFxuICBTVjogJ2VzJyxcbiAgVEw6ICdwdCcsXG4gIFVTOiAnZW4nLFxuICBWQTogJ2l0JyxcbiAgVkU6ICdlcydcbn07XG5cbmNvbnN0IHBob25lQ29kZVRvTG9jYWxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBMb2NhbGU+ID0ge1xuICAxOiAnZW4nLFxuICAzMjogJ2ZyJyxcbiAgMzM6ICdmcicsXG4gIDM0OiAnZXMnLFxuICAzOTogJ2l0JyxcbiAgNDE6ICdmcicsXG4gIDQzOiAnZGUnLFxuICA0OTogJ2RlJyxcbiAgNTE6ICdlcycsXG4gIDUyOiAnZXMnLFxuICA1MzogJ2VzJyxcbiAgNTQ6ICdlcycsXG4gIDU1OiAncHQnLFxuICA1NjogJ2VzJyxcbiAgNTc6ICdlcycsXG4gIDU4OiAnZXMnLFxuICAyNDA6ICdlcycsXG4gIDI0NDogJ3B0JyxcbiAgMjQ1OiAncHQnLFxuICAyNTg6ICdwdCcsXG4gIDM1MTogJ3B0JyxcbiAgMzUyOiAnZnInLFxuICAzNzc6ICdmcicsXG4gIDM3ODogJ2l0JyxcbiAgMzc5OiAnaXQnLFxuICA0MjM6ICdkZScsXG4gIDUwMjogJ2VzJyxcbiAgNTAzOiAnZXMnLFxuICA1MDQ6ICdlcycsXG4gIDUwNTogJ2VzJyxcbiAgNTA2OiAnZXMnLFxuICA1MDc6ICdlcycsXG4gIDU5MTogJ2VzJyxcbiAgNTkzOiAnZXMnLFxuICA1OTU6ICdlcycsXG4gIDY3MDogJ3B0JyxcbiAgMTgwOTogJ2VzJ1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdExhbmd1YWdlID0gKGNvbnRleHQ6IExhbmd1YWdlRGV0ZWN0aW9uQ29udGV4dCk6IExvY2FsZSA9PiB7XG4gIGlmKGNvbnRleHQudXNlclByZWZlcmVuY2UpIHtcbiAgICByZXR1cm4gY29udGV4dC51c2VyUHJlZmVyZW5jZTtcbiAgfVxuXG4gIGlmKGNvbnRleHQucGhvbmVDb3VudHJ5Q29kZSkge1xuICAgIGNvbnN0IGxvY2FsZSA9IHBob25lQ29kZVRvTG9jYWxlTWFwW2NvbnRleHQucGhvbmVDb3VudHJ5Q29kZV07XG4gICAgaWYobG9jYWxlKSB7XG4gICAgICByZXR1cm4gbG9jYWxlO1xuICAgIH1cbiAgfVxuXG4gIGlmKGNvbnRleHQuYWNjZXB0TGFuZ3VhZ2UpIHtcbiAgICBjb25zdCBsb2NhbGUgPSBwYXJzZUFjY2VwdExhbmd1YWdlKGNvbnRleHQuYWNjZXB0TGFuZ3VhZ2UpO1xuICAgIGlmKGxvY2FsZSkge1xuICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICB9XG4gIH1cblxuICBpZihjb250ZXh0LmlwQ291bnRyeSkge1xuICAgIGNvbnN0IGxvY2FsZSA9IGNvdW50cnlUb0xvY2FsZU1hcFtjb250ZXh0LmlwQ291bnRyeV07XG4gICAgaWYobG9jYWxlKSB7XG4gICAgICByZXR1cm4gbG9jYWxlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnZW4nO1xufTtcblxuY29uc3QgcGFyc2VBY2NlcHRMYW5ndWFnZSA9IChhY2NlcHRMYW5ndWFnZTogc3RyaW5nKTogTG9jYWxlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGxhbmd1YWdlcyA9IGFjY2VwdExhbmd1YWdlXG4gICAgLnNwbGl0KCcsJylcbiAgICAubWFwKChsYW5nKSA9PiBsYW5nLnRyaW0oKS5zcGxpdCgnOycpWzBdKVxuICAgIC5maWx0ZXIoKGxhbmcpID0+IGxhbmcubGVuZ3RoID49IDIpO1xuXG4gIGZvcihjb25zdCBsYW5nIG9mIGxhbmd1YWdlcykge1xuICAgIGNvbnN0IGxvY2FsZSA9IGxhbmcuc3Vic3RyaW5nKDAsIDIpIGFzIExvY2FsZTtcbiAgICBpZihbJ2VuJywgJ2VzJywgJ2ZyJywgJ2RlJywgJ3B0JywgJ2l0J10uaW5jbHVkZXMobG9jYWxlKSkge1xuICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG4iXSwibmFtZXMiOlsiY291bnRyeVRvTG9jYWxlTWFwIiwiQVIiLCJBVSIsIkJFIiwiQk8iLCJCUiIsIkNBIiwiQ0wiLCJDTyIsIkNSIiwiQ1UiLCJDViIsIkRPIiwiRUMiLCJFUyIsIkZSIiwiR0IiLCJHUSIsIkdUIiwiR1ciLCJITiIsIklUIiwiTEkiLCJMVSIsIk1DIiwiTVgiLCJNWiIsIk5JIiwiUEEiLCJQRSIsIlBZIiwiU00iLCJTViIsIlRMIiwiVVMiLCJWQSIsIlZFIiwicGhvbmVDb2RlVG9Mb2NhbGVNYXAiLCJkZXRlY3RMYW5ndWFnZSIsImNvbnRleHQiLCJ1c2VyUHJlZmVyZW5jZSIsInBob25lQ291bnRyeUNvZGUiLCJsb2NhbGUiLCJhY2NlcHRMYW5ndWFnZSIsInBhcnNlQWNjZXB0TGFuZ3VhZ2UiLCJpcENvdW50cnkiLCJsYW5ndWFnZXMiLCJzcGxpdCIsIm1hcCIsImxhbmciLCJ0cmltIiwiZmlsdGVyIiwibGVuZ3RoIiwic3Vic3RyaW5nIiwiaW5jbHVkZXMiXSwibWFwcGluZ3MiOiJBQVNBLE1BQU1BLHFCQUE2QztJQUNqREMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7QUFDTjtBQUVBLE1BQU1DLHVCQUErQztJQUNuRCxHQUFHO0lBQ0gsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxNQUFNO0FBQ1I7QUFFQSxPQUFPLE1BQU1DLGlCQUFpQixDQUFDQztJQUM3QixJQUFHQSxRQUFRQyxjQUFjLEVBQUU7UUFDekIsT0FBT0QsUUFBUUMsY0FBYztJQUMvQjtJQUVBLElBQUdELFFBQVFFLGdCQUFnQixFQUFFO1FBQzNCLE1BQU1DLFNBQVNMLG9CQUFvQixDQUFDRSxRQUFRRSxnQkFBZ0IsQ0FBQztRQUM3RCxJQUFHQyxRQUFRO1lBQ1QsT0FBT0E7UUFDVDtJQUNGO0lBRUEsSUFBR0gsUUFBUUksY0FBYyxFQUFFO1FBQ3pCLE1BQU1ELFNBQVNFLG9CQUFvQkwsUUFBUUksY0FBYztRQUN6RCxJQUFHRCxRQUFRO1lBQ1QsT0FBT0E7UUFDVDtJQUNGO0lBRUEsSUFBR0gsUUFBUU0sU0FBUyxFQUFFO1FBQ3BCLE1BQU1ILFNBQVMxQyxrQkFBa0IsQ0FBQ3VDLFFBQVFNLFNBQVMsQ0FBQztRQUNwRCxJQUFHSCxRQUFRO1lBQ1QsT0FBT0E7UUFDVDtJQUNGO0lBRUEsT0FBTztBQUNULEVBQUU7QUFFRixNQUFNRSxzQkFBc0IsQ0FBQ0Q7SUFDM0IsTUFBTUcsWUFBWUgsZUFDZkksS0FBSyxDQUFDLEtBQ05DLEdBQUcsQ0FBQyxDQUFDQyxPQUFTQSxLQUFLQyxJQUFJLEdBQUdILEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUN2Q0ksTUFBTSxDQUFDLENBQUNGLE9BQVNBLEtBQUtHLE1BQU0sSUFBSTtJQUVuQyxLQUFJLE1BQU1ILFFBQVFILFVBQVc7UUFDM0IsTUFBTUosU0FBU08sS0FBS0ksU0FBUyxDQUFDLEdBQUc7UUFDakMsSUFBRztZQUFDO1lBQU07WUFBTTtZQUFNO1lBQU07WUFBTTtTQUFLLENBQUNDLFFBQVEsQ0FBQ1osU0FBUztZQUN4RCxPQUFPQTtRQUNUO0lBQ0Y7SUFFQSxPQUFPO0FBQ1QifQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbGFuZ3VhZ2VEZXRlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0xvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VEZXRlY3Rpb25Db250ZXh0IHtcbiAgYWNjZXB0TGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIGlwQ291bnRyeT86IHN0cmluZztcbiAgcGhvbmVDb3VudHJ5Q29kZT86IHN0cmluZztcbiAgdXNlclByZWZlcmVuY2U/OiBMb2NhbGU7XG59XG5cbmNvbnN0IGNvdW50cnlUb0xvY2FsZU1hcDogUmVjb3JkPHN0cmluZywgTG9jYWxlPiA9IHtcbiAgQVI6ICdlcycsXG4gIEFVOiAnZW4nLFxuICBCRTogJ2ZyJyxcbiAgQk86ICdlcycsXG4gIEJSOiAncHQnLFxuICBDQTogJ2VuJyxcbiAgQ0w6ICdlcycsXG4gIENPOiAnZXMnLFxuICBDUjogJ2VzJyxcbiAgQ1U6ICdlcycsXG4gIENWOiAncHQnLFxuICBETzogJ2VzJyxcbiAgRUM6ICdlcycsXG4gIEVTOiAnZXMnLFxuICBGUjogJ2ZyJyxcbiAgR0I6ICdlbicsXG4gIEdROiAnZXMnLFxuICBHVDogJ2VzJyxcbiAgR1c6ICdwdCcsXG4gIEhOOiAnZXMnLFxuICBJVDogJ2l0JyxcbiAgTEk6ICdkZScsXG4gIExVOiAnZnInLFxuICBNQzogJ2ZyJyxcbiAgTVg6ICdlcycsXG4gIE1aOiAncHQnLFxuICBOSTogJ2VzJyxcbiAgUEE6ICdlcycsXG4gIFBFOiAnZXMnLFxuICBQWTogJ2VzJyxcbiAgU006ICdpdCcsXG4gIFNWOiAnZXMnLFxuICBUTDogJ3B0JyxcbiAgVVM6ICdlbicsXG4gIFZBOiAnaXQnLFxuICBWRTogJ2VzJ1xufTtcblxuY29uc3QgcGhvbmVDb2RlVG9Mb2NhbGVNYXA6IFJlY29yZDxzdHJpbmcsIExvY2FsZT4gPSB7XG4gIDE6ICdlbicsXG4gIDMyOiAnZnInLFxuICAzMzogJ2ZyJyxcbiAgMzQ6ICdlcycsXG4gIDM5OiAnaXQnLFxuICA0MTogJ2ZyJyxcbiAgNDM6ICdkZScsXG4gIDQ5OiAnZGUnLFxuICA1MTogJ2VzJyxcbiAgNTI6ICdlcycsXG4gIDUzOiAnZXMnLFxuICA1NDogJ2VzJyxcbiAgNTU6ICdwdCcsXG4gIDU2OiAnZXMnLFxuICA1NzogJ2VzJyxcbiAgNTg6ICdlcycsXG4gIDI0MDogJ2VzJyxcbiAgMjQ0OiAncHQnLFxuICAyNDU6ICdwdCcsXG4gIDI1ODogJ3B0JyxcbiAgMzUxOiAncHQnLFxuICAzNTI6ICdmcicsXG4gIDM3NzogJ2ZyJyxcbiAgMzc4OiAnaXQnLFxuICAzNzk6ICdpdCcsXG4gIDQyMzogJ2RlJyxcbiAgNTAyOiAnZXMnLFxuICA1MDM6ICdlcycsXG4gIDUwNDogJ2VzJyxcbiAgNTA1OiAnZXMnLFxuICA1MDY6ICdlcycsXG4gIDUwNzogJ2VzJyxcbiAgNTkxOiAnZXMnLFxuICA1OTM6ICdlcycsXG4gIDU5NTogJ2VzJyxcbiAgNjcwOiAncHQnLFxuICAxODA5OiAnZXMnXG59O1xuXG5leHBvcnQgY29uc3QgZGV0ZWN0TGFuZ3VhZ2UgPSAoY29udGV4dDogTGFuZ3VhZ2VEZXRlY3Rpb25Db250ZXh0KTogTG9jYWxlID0+IHtcbiAgaWYoY29udGV4dC51c2VyUHJlZmVyZW5jZSkge1xuICAgIHJldHVybiBjb250ZXh0LnVzZXJQcmVmZXJlbmNlO1xuICB9XG5cbiAgaWYoY29udGV4dC5waG9uZUNvdW50cnlDb2RlKSB7XG4gICAgY29uc3QgbG9jYWxlID0gcGhvbmVDb2RlVG9Mb2NhbGVNYXBbY29udGV4dC5waG9uZUNvdW50cnlDb2RlXTtcbiAgICBpZihsb2NhbGUpIHtcbiAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgfVxuICB9XG5cbiAgaWYoY29udGV4dC5hY2NlcHRMYW5ndWFnZSkge1xuICAgIGNvbnN0IGxvY2FsZSA9IHBhcnNlQWNjZXB0TGFuZ3VhZ2UoY29udGV4dC5hY2NlcHRMYW5ndWFnZSk7XG4gICAgaWYobG9jYWxlKSB7XG4gICAgICByZXR1cm4gbG9jYWxlO1xuICAgIH1cbiAgfVxuXG4gIGlmKGNvbnRleHQuaXBDb3VudHJ5KSB7XG4gICAgY29uc3QgbG9jYWxlID0gY291bnRyeVRvTG9jYWxlTWFwW2NvbnRleHQuaXBDb3VudHJ5XTtcbiAgICBpZihsb2NhbGUpIHtcbiAgICAgIHJldHVybiBsb2NhbGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICdlbic7XG59O1xuXG5jb25zdCBwYXJzZUFjY2VwdExhbmd1YWdlID0gKGFjY2VwdExhbmd1YWdlOiBzdHJpbmcpOiBMb2NhbGUgfCBudWxsID0+IHtcbiAgY29uc3QgbGFuZ3VhZ2VzID0gYWNjZXB0TGFuZ3VhZ2VcbiAgICAuc3BsaXQoJywnKVxuICAgIC5tYXAoKGxhbmcpID0+IGxhbmcudHJpbSgpLnNwbGl0KCc7JylbMF0pXG4gICAgLmZpbHRlcigobGFuZykgPT4gbGFuZy5sZW5ndGggPj0gMik7XG5cbiAgZm9yKGNvbnN0IGxhbmcgb2YgbGFuZ3VhZ2VzKSB7XG4gICAgY29uc3QgbG9jYWxlID0gbGFuZy5zdWJzdHJpbmcoMCwgMikgYXMgTG9jYWxlO1xuICAgIGlmKFsnZW4nLCAnZXMnLCAnZnInLCAnZGUnLCAncHQnLCAnaXQnXS5pbmNsdWRlcyhsb2NhbGUpKSB7XG4gICAgICByZXR1cm4gbG9jYWxlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcbiJdLCJuYW1lcyI6WyJjb3VudHJ5VG9Mb2NhbGVNYXAiLCJBUiIsIkFVIiwiQkUiLCJCTyIsIkJSIiwiQ0EiLCJDTCIsIkNPIiwiQ1IiLCJDVSIsIkNWIiwiRE8iLCJFQyIsIkVTIiwiRlIiLCJHQiIsIkdRIiwiR1QiLCJHVyIsIkhOIiwiSVQiLCJMSSIsIkxVIiwiTUMiLCJNWCIsIk1aIiwiTkkiLCJQQSIsIlBFIiwiUFkiLCJTTSIsIlNWIiwiVEwiLCJVUyIsIlZBIiwiVkUiLCJwaG9uZUNvZGVUb0xvY2FsZU1hcCIsImRldGVjdExhbmd1YWdlIiwiY29udGV4dCIsInVzZXJQcmVmZXJlbmNlIiwicGhvbmVDb3VudHJ5Q29kZSIsImxvY2FsZSIsImFjY2VwdExhbmd1YWdlIiwicGFyc2VBY2NlcHRMYW5ndWFnZSIsImlwQ291bnRyeSIsImxhbmd1YWdlcyIsInNwbGl0IiwibWFwIiwibGFuZyIsInRyaW0iLCJmaWx0ZXIiLCJsZW5ndGgiLCJzdWJzdHJpbmciLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTUEscUJBQTZDO0lBQ2pEQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtJQUNKQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsSUFBSTtBQUNOO0FBRUEsTUFBTUMsdUJBQStDO0lBQ25ELEdBQUc7SUFDSCxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSixLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLE1BQU07QUFDUjtBQUVBLE9BQU8sTUFBTUMsaUJBQWlCLENBQUNDO0lBQzdCLElBQUdBLFFBQVFDLGNBQWMsRUFBRTtRQUN6QixPQUFPRCxRQUFRQyxjQUFjO0lBQy9CO0lBRUEsSUFBR0QsUUFBUUUsZ0JBQWdCLEVBQUU7UUFDM0IsTUFBTUMsU0FBU0wsb0JBQW9CLENBQUNFLFFBQVFFLGdCQUFnQixDQUFDO1FBQzdELElBQUdDLFFBQVE7WUFDVCxPQUFPQTtRQUNUO0lBQ0Y7SUFFQSxJQUFHSCxRQUFRSSxjQUFjLEVBQUU7UUFDekIsTUFBTUQsU0FBU0Usb0JBQW9CTCxRQUFRSSxjQUFjO1FBQ3pELElBQUdELFFBQVE7WUFDVCxPQUFPQTtRQUNUO0lBQ0Y7SUFFQSxJQUFHSCxRQUFRTSxTQUFTLEVBQUU7UUFDcEIsTUFBTUgsU0FBUzFDLGtCQUFrQixDQUFDdUMsUUFBUU0sU0FBUyxDQUFDO1FBQ3BELElBQUdILFFBQVE7WUFDVCxPQUFPQTtRQUNUO0lBQ0Y7SUFFQSxPQUFPO0FBQ1QsRUFBRTtBQUVGLE1BQU1FLHNCQUFzQixDQUFDRDtJQUMzQixNQUFNRyxZQUFZSCxlQUNmSSxLQUFLLENBQUMsS0FDTkMsR0FBRyxDQUFDLENBQUNDLE9BQVNBLEtBQUtDLElBQUksR0FBR0gsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQ3ZDSSxNQUFNLENBQUMsQ0FBQ0YsT0FBU0EsS0FBS0csTUFBTSxJQUFJO0lBRW5DLEtBQUksTUFBTUgsUUFBUUgsVUFBVztRQUMzQixNQUFNSixTQUFTTyxLQUFLSSxTQUFTLENBQUMsR0FBRztRQUNqQyxJQUFHO1lBQUM7WUFBTTtZQUFNO1lBQU07WUFBTTtZQUFNO1NBQUssQ0FBQ0MsUUFBUSxDQUFDWixTQUFTO1lBQ3hELE9BQU9BO1FBQ1Q7SUFDRjtJQUVBLE9BQU87QUFDVCJ9
@@ -120,4 +120,4 @@ export const runLocaleExamples = async ()=>{
120
120
  }; // Uncomment to run examples
121
121
  // runLocaleExamples();
122
122
 
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL2xvY2FsZVV0aWxzLmV4YW1wbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cblxuaW1wb3J0IHtcbiAgZXh0cmFjdExhbmd1YWdlLFxuICBnZXRGYWxsYmFja0NoYWluLFxuICBnZXRQcmltYXJ5TGFuZ3VhZ2VzLFxuICBnZXRTdXBwb3J0ZWRMb2NhbGVzLFxuICBpc1JlZ2lvbmFsTG9jYWxlLFxuICBpc1ZhbGlkTG9jYWxlXG59IGZyb20gJy4vbG9jYWxlVXRpbHMuanMnO1xuXG4vKipcbiAqIEV4YW1wbGU6IExvY2FsZSBVdGlsaXRpZXMgd2l0aCBSZWdpb25hbCBTdXBwb3J0XG4gKlxuICogVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZSBsb2NhbGUgdXRpbGl0aWVzIGZvciBoYW5kbGluZ1xuICogcmVnaW9uYWwgbG9jYWxlcyAoZS5nLiwgXCJlbi11c1wiLCBcImVzLW14XCIpIHdpdGggbGFuZ3VhZ2UgZXh0cmFjdGlvblxuICogZm9yIHRyYW5zbGF0aW9uIEFQSXMgd2hpbGUgbWFpbnRhaW5pbmcgZnVsbCBsb2NhbGUgc3VwcG9ydCBmb3JcbiAqIHRpbWUsIGN1cnJlbmN5LCBhbmQgb3RoZXIgcmVnaW9uYWwgZm9ybWF0dGluZy5cbiAqL1xuXG4vLyBFeGFtcGxlIDE6IExhbmd1YWdlIEV4dHJhY3Rpb24gZm9yIFRyYW5zbGF0aW9uIEFQSXNcbmNvbnNvbGUubG9nKCc9PT0gTGFuZ3VhZ2UgRXh0cmFjdGlvbiBFeGFtcGxlcyA9PT0nKTtcbmNvbnNvbGUubG9nKGV4dHJhY3RMYW5ndWFnZSgnZW4tdXMnKSk7IC8vICdlbidcbmNvbnNvbGUubG9nKGV4dHJhY3RMYW5ndWFnZSgnZXMtbXgnKSk7IC8vICdlcydcbmNvbnNvbGUubG9nKGV4dHJhY3RMYW5ndWFnZSgnZnItY2EnKSk7IC8vICdmcidcbmNvbnNvbGUubG9nKGV4dHJhY3RMYW5ndWFnZSgnZW4nKSk7IC8vICdlbidcblxuLy8gRXhhbXBsZSAyOiBSZWdpb25hbCBMb2NhbGUgRGV0ZWN0aW9uXG5jb25zb2xlLmxvZygnXFxuPT09IFJlZ2lvbmFsIExvY2FsZSBEZXRlY3Rpb24gPT09Jyk7XG5jb25zb2xlLmxvZyhpc1JlZ2lvbmFsTG9jYWxlKCdlbi11cycpKTsgLy8gdHJ1ZVxuY29uc29sZS5sb2coaXNSZWdpb25hbExvY2FsZSgnZXMtbXgnKSk7IC8vIHRydWVcbmNvbnNvbGUubG9nKGlzUmVnaW9uYWxMb2NhbGUoJ2VuJykpOyAvLyBmYWxzZVxuY29uc29sZS5sb2coaXNSZWdpb25hbExvY2FsZSgnZnInKSk7IC8vIGZhbHNlXG5cbi8vIEV4YW1wbGUgMzogRmFsbGJhY2sgQ2hhaW4gR2VuZXJhdGlvblxuY29uc29sZS5sb2coJ1xcbj09PSBGYWxsYmFjayBDaGFpbiBFeGFtcGxlcyA9PT0nKTtcbmNvbnNvbGUubG9nKGdldEZhbGxiYWNrQ2hhaW4oJ2VuLXVzJykpOyAvLyBbJ2VuLXVzJywgJ2VuJ11cbmNvbnNvbGUubG9nKGdldEZhbGxiYWNrQ2hhaW4oJ2VzLW14JykpOyAvLyBbJ2VzLW14JywgJ2VzJ11cbmNvbnNvbGUubG9nKGdldEZhbGxiYWNrQ2hhaW4oJ2ZyLWNhJykpOyAvLyBbJ2ZyLWNhJywgJ2ZyJ11cbmNvbnNvbGUubG9nKGdldEZhbGxiYWNrQ2hhaW4oJ2VuJykpOyAvLyBbJ2VuJ11cblxuLy8gRXhhbXBsZSA0OiBUcmFuc2xhdGlvbiBBUEkgSW50ZWdyYXRpb25cbmNvbnN0IHRyYW5zbGF0ZVRleHQgPSBhc3luYyAodGV4dDogc3RyaW5nLCB0YXJnZXRMb2NhbGU6IHN0cmluZywgc291cmNlTG9jYWxlOiBzdHJpbmcgPSAnZW4nKSA9PiB7XG4gIC8vIEV4dHJhY3QgbGFuZ3VhZ2UgY29kZXMgZm9yIHRyYW5zbGF0aW9uIEFQSVxuICBjb25zdCB0YXJnZXRMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZSh0YXJnZXRMb2NhbGUpO1xuICBjb25zdCBzb3VyY2VMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShzb3VyY2VMb2NhbGUpO1xuXG4gIGNvbnNvbGUubG9nKGBUcmFuc2xhdGluZyBmcm9tICR7c291cmNlTGFuZ3VhZ2V9IHRvICR7dGFyZ2V0TGFuZ3VhZ2V9YCk7XG4gIGNvbnNvbGUubG9nKGBGdWxsIGxvY2FsZXM6ICR7c291cmNlTG9jYWxlfSDihpIgJHt0YXJnZXRMb2NhbGV9YCk7XG5cbiAgLy8gQ2FsbCB0cmFuc2xhdGlvbiBBUEkgd2l0aCBsYW5ndWFnZSBjb2Rlc1xuICAvLyBjb25zdCByZXN1bHQgPSBhd2FpdCBnb29nbGVUcmFuc2xhdGVBUEkudHJhbnNsYXRlKHRleHQsIHRhcmdldExhbmd1YWdlLCBzb3VyY2VMYW5ndWFnZSk7XG5cbiAgcmV0dXJuIGBbVHJhbnNsYXRlZDogJHt0ZXh0fV1gO1xufTtcblxuLy8gRXhhbXBsZSA1OiBEYXRhYmFzZSBTdG9yYWdlIFN0cmF0ZWd5XG5jb25zdCBzdG9yZVRyYW5zbGF0aW9uID0gYXN5bmMgKGtleTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nKSA9PiB7XG4gIC8vIFN0b3JlIHdpdGggZnVsbCBsb2NhbGUgZm9yIHJlZ2lvbmFsIHN1cHBvcnRcbiAgY29uc29sZS5sb2coYFN0b3JpbmcgdHJhbnNsYXRpb24gZm9yIGtleSBcIiR7a2V5fVwiIHdpdGggbG9jYWxlIFwiJHtsb2NhbGV9XCJgKTtcblxuICAvLyBEYXRhYmFzZSByZWNvcmQgd291bGQgaW5jbHVkZTpcbiAgLy8gLSBrZXk6IFwid2VsY29tZV9tZXNzYWdlXCJcbiAgLy8gLSBsb2NhbGU6IFwiZW4tdXNcIiAoZnVsbCBsb2NhbGUgd2l0aCByZWdpb24pXG4gIC8vIC0gY29udGVudDogXCJXZWxjb21lIHRvIG91ciBVUyBzaXRlIVwiXG5cbiAgcmV0dXJuIHtrZXksIGxvY2FsZSwgY29udGVudH07XG59O1xuXG4vLyBFeGFtcGxlIDY6IENvbnRlbnQgUmV0cmlldmFsIHdpdGggRmFsbGJhY2tcbmNvbnN0IGdldENvbnRlbnRXaXRoRmFsbGJhY2sgPSBhc3luYyAoa2V5OiBzdHJpbmcsIHJlcXVlc3RlZExvY2FsZTogc3RyaW5nKSA9PiB7XG4gIGNvbnNvbGUubG9nKGBcXG49PT0gQ29udGVudCBSZXRyaWV2YWwgZm9yIFwiJHtrZXl9XCIgd2l0aCBsb2NhbGUgXCIke3JlcXVlc3RlZExvY2FsZX1cIiA9PT1gKTtcblxuICAvLyAxLiBUcnkgZXhhY3QgbG9jYWxlIG1hdGNoIGZpcnN0XG4gIGNvbnNvbGUubG9nKGAxLiBUcnlpbmcgZXhhY3QgbWF0Y2g6ICR7cmVxdWVzdGVkTG9jYWxlfWApO1xuXG4gIC8vIDIuIElmIHJlZ2lvbmFsIGxvY2FsZSBhbmQgbm8gZXhhY3QgbWF0Y2gsIHRyeSBsYW5ndWFnZSBmYWxsYmFja1xuICBpZihpc1JlZ2lvbmFsTG9jYWxlKHJlcXVlc3RlZExvY2FsZSkpIHtcbiAgICBjb25zdCBsYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShyZXF1ZXN0ZWRMb2NhbGUpO1xuICAgIGNvbnNvbGUubG9nKGAyLiBUcnlpbmcgbGFuZ3VhZ2UgZmFsbGJhY2s6ICR7bGFuZ3VhZ2V9YCk7XG5cbiAgICAvLyBJZiBmb3VuZCwgc3RvcmUgdGhlIHJlZ2lvbmFsIHZlcnNpb24gZm9yIGZ1dHVyZSB1c2VcbiAgICBjb25zb2xlLmxvZyhgMy4gU3RvcmluZyBleHRyYWN0ZWQgY29udGVudCBmb3IgJHtyZXF1ZXN0ZWRMb2NhbGV9YCk7XG4gIH1cblxuICAvLyAzLiBJZiBzdGlsbCBubyBtYXRjaCwgdXNlIGFwcCBkZWZhdWx0IGxvY2FsZVxuICBjb25zb2xlLmxvZygnNC4gRmFsbGluZyBiYWNrIHRvIGFwcCBkZWZhdWx0IGxvY2FsZScpO1xuXG4gIHJldHVybiBgW0NvbnRlbnQgZm9yICR7a2V5fSBpbiAke3JlcXVlc3RlZExvY2FsZX1dYDtcbn07XG5cbi8vIEV4YW1wbGUgNzogVmFsaWRhdGlvblxuY29uc29sZS5sb2coJ1xcbj09PSBMb2NhbGUgVmFsaWRhdGlvbiA9PT0nKTtcbmNvbnNvbGUubG9nKGlzVmFsaWRMb2NhbGUoJ2VuLXVzJykpOyAvLyB0cnVlXG5jb25zb2xlLmxvZyhpc1ZhbGlkTG9jYWxlKCdlcy1teCcpKTsgLy8gdHJ1ZVxuY29uc29sZS5sb2coaXNWYWxpZExvY2FsZSgnaW52YWxpZCcpKTsgLy8gZmFsc2VcbmNvbnNvbGUubG9nKGlzVmFsaWRMb2NhbGUoJ2VuLXh4JykpOyAvLyBmYWxzZVxuXG4vLyBFeGFtcGxlIDg6IFN1cHBvcnRlZCBMb2NhbGVzXG5jb25zb2xlLmxvZygnXFxuPT09IFN1cHBvcnRlZCBMb2NhbGVzID09PScpO1xuY29uc3Qgc3VwcG9ydGVkTG9jYWxlcyA9IGdldFN1cHBvcnRlZExvY2FsZXMoKTtcbmNvbnNvbGUubG9nKGBUb3RhbCBzdXBwb3J0ZWQgbG9jYWxlczogJHtzdXBwb3J0ZWRMb2NhbGVzLmxlbmd0aH1gKTtcbmNvbnNvbGUubG9nKCdFbmdsaXNoIHZhcmlhbnRzOicsIHN1cHBvcnRlZExvY2FsZXMuZmlsdGVyKChsKSA9PiBsLnN0YXJ0c1dpdGgoJ2VuJykpKTtcbmNvbnNvbGUubG9nKCdTcGFuaXNoIHZhcmlhbnRzOicsIHN1cHBvcnRlZExvY2FsZXMuZmlsdGVyKChsKSA9PiBsLnN0YXJ0c1dpdGgoJ2VzJykpKTtcblxuLy8gRXhhbXBsZSA5OiBQcmltYXJ5IExhbmd1YWdlc1xuY29uc29sZS5sb2coJ1xcbj09PSBQcmltYXJ5IExhbmd1YWdlcyA9PT0nKTtcbmNvbnN0IHByaW1hcnlMYW5ndWFnZXMgPSBnZXRQcmltYXJ5TGFuZ3VhZ2VzKCk7XG5jb25zb2xlLmxvZygnUHJpbWFyeSBsYW5ndWFnZXM6JywgcHJpbWFyeUxhbmd1YWdlcyk7XG5cbi8vIEV4YW1wbGUgMTA6IENvbXBsZXRlIFdvcmtmbG93XG5leHBvcnQgY29uc3QgY29tcGxldGVUcmFuc2xhdGlvbldvcmtmbG93ID0gYXN5bmMgKHVzZXJMb2NhbGUgPSAnZXMtbXgnLCBhcHBMb2NhbGUgPSAnZW4tdXMnKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdcXG49PT0gQ29tcGxldGUgVHJhbnNsYXRpb24gV29ya2Zsb3cgPT09Jyk7XG5cbiAgY29uc3Qga2V5ID0gJ3dlbGNvbWVfbWVzc2FnZSc7XG5cbiAgLy8gMS4gRXh0cmFjdCBsYW5ndWFnZSBmb3IgdHJhbnNsYXRpb24gQVBJXG4gIGNvbnN0IHVzZXJMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZSh1c2VyTG9jYWxlKTtcbiAgY29uc3QgYXBwTGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKTtcblxuICBjb25zb2xlLmxvZyhgVXNlciBsb2NhbGU6ICR7dXNlckxvY2FsZX0gKGxhbmd1YWdlOiAke3VzZXJMYW5ndWFnZX0pYCk7XG4gIGNvbnNvbGUubG9nKGBBcHAgbG9jYWxlOiAke2FwcExvY2FsZX0gKGxhbmd1YWdlOiAke2FwcExhbmd1YWdlfSlgKTtcblxuICAvLyAyLiBDaGVjayBpZiB3ZSBuZWVkIHRyYW5zbGF0aW9uXG4gIGlmKHVzZXJMYW5ndWFnZSAhPT0gYXBwTGFuZ3VhZ2UpIHtcbiAgICBjb25zb2xlLmxvZygnVHJhbnNsYXRpb24gbmVlZGVkIScpO1xuXG4gICAgLy8gMy4gR2V0IHNvdXJjZSBjb250ZW50IChmcm9tIGFwcCBsb2NhbGUpXG4gICAgY29uc3Qgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnRXaXRoRmFsbGJhY2soa2V5LCBhcHBMb2NhbGUpO1xuXG4gICAgLy8gNC4gVHJhbnNsYXRlIHVzaW5nIGxhbmd1YWdlIGNvZGVzXG4gICAgY29uc3QgdHJhbnNsYXRlZENvbnRlbnQgPSBhd2FpdCB0cmFuc2xhdGVUZXh0KHNvdXJjZUNvbnRlbnQsIHVzZXJMYW5ndWFnZSwgYXBwTGFuZ3VhZ2UpO1xuXG4gICAgLy8gNS4gU3RvcmUgd2l0aCBmdWxsIGxvY2FsZVxuICAgIGF3YWl0IHN0b3JlVHJhbnNsYXRpb24oa2V5LCB0cmFuc2xhdGVkQ29udGVudCwgdXNlckxvY2FsZSk7XG5cbiAgICBjb25zb2xlLmxvZyhgVHJhbnNsYXRpb24gY29tcGxldGU6ICR7dHJhbnNsYXRlZENvbnRlbnR9YCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coJ05vIHRyYW5zbGF0aW9uIG5lZWRlZCAtIHNhbWUgbGFuZ3VhZ2UnKTtcbiAgfVxufTtcblxuLy8gUnVuIGV4YW1wbGVzXG5leHBvcnQgY29uc3QgcnVuTG9jYWxlRXhhbXBsZXMgPSBhc3luYyAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKCdMb2NhbGUgVXRpbGl0aWVzIEV4YW1wbGVzXFxuJyk7XG5cbiAgLy8gUnVuIHN5bmNocm9ub3VzIGV4YW1wbGVzXG4gIGNvbnNvbGUubG9nKCdTeW5jaHJvbm91cyBleGFtcGxlcyBjb21wbGV0ZWQgYWJvdmUnKTtcblxuICAvLyBSdW4gYXN5bmMgZXhhbXBsZXNcbiAgYXdhaXQgZ2V0Q29udGVudFdpdGhGYWxsYmFjaygnd2VsY29tZV9tZXNzYWdlJywgJ2VzLW14Jyk7XG4gIGF3YWl0IGdldENvbnRlbnRXaXRoRmFsbGJhY2soJ3dlbGNvbWVfbWVzc2FnZScsICdlbicpO1xuICBhd2FpdCBjb21wbGV0ZVRyYW5zbGF0aW9uV29ya2Zsb3coKTtcblxuICBjb25zb2xlLmxvZygnXFxuPT09IEV4YW1wbGUgQ29tcGxldGUgPT09Jyk7XG59O1xuXG4vLyBVbmNvbW1lbnQgdG8gcnVuIGV4YW1wbGVzXG4vLyBydW5Mb2NhbGVFeGFtcGxlcygpO1xuIl0sIm5hbWVzIjpbImV4dHJhY3RMYW5ndWFnZSIsImdldEZhbGxiYWNrQ2hhaW4iLCJnZXRQcmltYXJ5TGFuZ3VhZ2VzIiwiZ2V0U3VwcG9ydGVkTG9jYWxlcyIsImlzUmVnaW9uYWxMb2NhbGUiLCJpc1ZhbGlkTG9jYWxlIiwiY29uc29sZSIsImxvZyIsInRyYW5zbGF0ZVRleHQiLCJ0ZXh0IiwidGFyZ2V0TG9jYWxlIiwic291cmNlTG9jYWxlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJzb3VyY2VMYW5ndWFnZSIsInN0b3JlVHJhbnNsYXRpb24iLCJrZXkiLCJjb250ZW50IiwibG9jYWxlIiwiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsInJlcXVlc3RlZExvY2FsZSIsImxhbmd1YWdlIiwic3VwcG9ydGVkTG9jYWxlcyIsImxlbmd0aCIsImZpbHRlciIsImwiLCJzdGFydHNXaXRoIiwicHJpbWFyeUxhbmd1YWdlcyIsImNvbXBsZXRlVHJhbnNsYXRpb25Xb3JrZmxvdyIsInVzZXJMb2NhbGUiLCJhcHBMb2NhbGUiLCJ1c2VyTGFuZ3VhZ2UiLCJhcHBMYW5ndWFnZSIsInNvdXJjZUNvbnRlbnQiLCJ0cmFuc2xhdGVkQ29udGVudCIsInJ1bkxvY2FsZUV4YW1wbGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxTQUNFQSxlQUFlLEVBQ2ZDLGdCQUFnQixFQUNoQkMsbUJBQW1CLEVBQ25CQyxtQkFBbUIsRUFDbkJDLGdCQUFnQixFQUNoQkMsYUFBYSxRQUNSLG1CQUFtQjtBQUUxQjs7Ozs7OztDQU9DLEdBRUQsc0RBQXNEO0FBQ3REQyxRQUFRQyxHQUFHLENBQUM7QUFDWkQsUUFBUUMsR0FBRyxDQUFDUCxnQkFBZ0IsV0FBVyxPQUFPO0FBQzlDTSxRQUFRQyxHQUFHLENBQUNQLGdCQUFnQixXQUFXLE9BQU87QUFDOUNNLFFBQVFDLEdBQUcsQ0FBQ1AsZ0JBQWdCLFdBQVcsT0FBTztBQUM5Q00sUUFBUUMsR0FBRyxDQUFDUCxnQkFBZ0IsUUFBUSxPQUFPO0FBRTNDLHVDQUF1QztBQUN2Q00sUUFBUUMsR0FBRyxDQUFDO0FBQ1pELFFBQVFDLEdBQUcsQ0FBQ0gsaUJBQWlCLFdBQVcsT0FBTztBQUMvQ0UsUUFBUUMsR0FBRyxDQUFDSCxpQkFBaUIsV0FBVyxPQUFPO0FBQy9DRSxRQUFRQyxHQUFHLENBQUNILGlC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
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbG9jYWxlVXRpbHMuZXhhbXBsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuXG5pbXBvcnQge1xuICBleHRyYWN0TGFuZ3VhZ2UsXG4gIGdldEZhbGxiYWNrQ2hhaW4sXG4gIGdldFByaW1hcnlMYW5ndWFnZXMsXG4gIGdldFN1cHBvcnRlZExvY2FsZXMsXG4gIGlzUmVnaW9uYWxMb2NhbGUsXG4gIGlzVmFsaWRMb2NhbGVcbn0gZnJvbSAnLi9sb2NhbGVVdGlscy5qcyc7XG5cbi8qKlxuICogRXhhbXBsZTogTG9jYWxlIFV0aWxpdGllcyB3aXRoIFJlZ2lvbmFsIFN1cHBvcnRcbiAqXG4gKiBUaGlzIGV4YW1wbGUgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIGxvY2FsZSB1dGlsaXRpZXMgZm9yIGhhbmRsaW5nXG4gKiByZWdpb25hbCBsb2NhbGVzIChlLmcuLCBcImVuLXVzXCIsIFwiZXMtbXhcIikgd2l0aCBsYW5ndWFnZSBleHRyYWN0aW9uXG4gKiBmb3IgdHJhbnNsYXRpb24gQVBJcyB3aGlsZSBtYWludGFpbmluZyBmdWxsIGxvY2FsZSBzdXBwb3J0IGZvclxuICogdGltZSwgY3VycmVuY3ksIGFuZCBvdGhlciByZWdpb25hbCBmb3JtYXR0aW5nLlxuICovXG5cbi8vIEV4YW1wbGUgMTogTGFuZ3VhZ2UgRXh0cmFjdGlvbiBmb3IgVHJhbnNsYXRpb24gQVBJc1xuY29uc29sZS5sb2coJz09PSBMYW5ndWFnZSBFeHRyYWN0aW9uIEV4YW1wbGVzID09PScpO1xuY29uc29sZS5sb2coZXh0cmFjdExhbmd1YWdlKCdlbi11cycpKTsgLy8gJ2VuJ1xuY29uc29sZS5sb2coZXh0cmFjdExhbmd1YWdlKCdlcy1teCcpKTsgLy8gJ2VzJ1xuY29uc29sZS5sb2coZXh0cmFjdExhbmd1YWdlKCdmci1jYScpKTsgLy8gJ2ZyJ1xuY29uc29sZS5sb2coZXh0cmFjdExhbmd1YWdlKCdlbicpKTsgLy8gJ2VuJ1xuXG4vLyBFeGFtcGxlIDI6IFJlZ2lvbmFsIExvY2FsZSBEZXRlY3Rpb25cbmNvbnNvbGUubG9nKCdcXG49PT0gUmVnaW9uYWwgTG9jYWxlIERldGVjdGlvbiA9PT0nKTtcbmNvbnNvbGUubG9nKGlzUmVnaW9uYWxMb2NhbGUoJ2VuLXVzJykpOyAvLyB0cnVlXG5jb25zb2xlLmxvZyhpc1JlZ2lvbmFsTG9jYWxlKCdlcy1teCcpKTsgLy8gdHJ1ZVxuY29uc29sZS5sb2coaXNSZWdpb25hbExvY2FsZSgnZW4nKSk7IC8vIGZhbHNlXG5jb25zb2xlLmxvZyhpc1JlZ2lvbmFsTG9jYWxlKCdmcicpKTsgLy8gZmFsc2VcblxuLy8gRXhhbXBsZSAzOiBGYWxsYmFjayBDaGFpbiBHZW5lcmF0aW9uXG5jb25zb2xlLmxvZygnXFxuPT09IEZhbGxiYWNrIENoYWluIEV4YW1wbGVzID09PScpO1xuY29uc29sZS5sb2coZ2V0RmFsbGJhY2tDaGFpbignZW4tdXMnKSk7IC8vIFsnZW4tdXMnLCAnZW4nXVxuY29uc29sZS5sb2coZ2V0RmFsbGJhY2tDaGFpbignZXMtbXgnKSk7IC8vIFsnZXMtbXgnLCAnZXMnXVxuY29uc29sZS5sb2coZ2V0RmFsbGJhY2tDaGFpbignZnItY2EnKSk7IC8vIFsnZnItY2EnLCAnZnInXVxuY29uc29sZS5sb2coZ2V0RmFsbGJhY2tDaGFpbignZW4nKSk7IC8vIFsnZW4nXVxuXG4vLyBFeGFtcGxlIDQ6IFRyYW5zbGF0aW9uIEFQSSBJbnRlZ3JhdGlvblxuY29uc3QgdHJhbnNsYXRlVGV4dCA9IGFzeW5jICh0ZXh0OiBzdHJpbmcsIHRhcmdldExvY2FsZTogc3RyaW5nLCBzb3VyY2VMb2NhbGU6IHN0cmluZyA9ICdlbicpID0+IHtcbiAgLy8gRXh0cmFjdCBsYW5ndWFnZSBjb2RlcyBmb3IgdHJhbnNsYXRpb24gQVBJXG4gIGNvbnN0IHRhcmdldExhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKHRhcmdldExvY2FsZSk7XG4gIGNvbnN0IHNvdXJjZUxhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKHNvdXJjZUxvY2FsZSk7XG5cbiAgY29uc29sZS5sb2coYFRyYW5zbGF0aW5nIGZyb20gJHtzb3VyY2VMYW5ndWFnZX0gdG8gJHt0YXJnZXRMYW5ndWFnZX1gKTtcbiAgY29uc29sZS5sb2coYEZ1bGwgbG9jYWxlczogJHtzb3VyY2VMb2NhbGV9IOKGkiAke3RhcmdldExvY2FsZX1gKTtcblxuICAvLyBDYWxsIHRyYW5zbGF0aW9uIEFQSSB3aXRoIGxhbmd1YWdlIGNvZGVzXG4gIC8vIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdvb2dsZVRyYW5zbGF0ZUFQSS50cmFuc2xhdGUodGV4dCwgdGFyZ2V0TGFuZ3VhZ2UsIHNvdXJjZUxhbmd1YWdlKTtcblxuICByZXR1cm4gYFtUcmFuc2xhdGVkOiAke3RleHR9XWA7XG59O1xuXG4vLyBFeGFtcGxlIDU6IERhdGFiYXNlIFN0b3JhZ2UgU3RyYXRlZ3lcbmNvbnN0IHN0b3JlVHJhbnNsYXRpb24gPSBhc3luYyAoa2V5OiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgLy8gU3RvcmUgd2l0aCBmdWxsIGxvY2FsZSBmb3IgcmVnaW9uYWwgc3VwcG9ydFxuICBjb25zb2xlLmxvZyhgU3RvcmluZyB0cmFuc2xhdGlvbiBmb3Iga2V5IFwiJHtrZXl9XCIgd2l0aCBsb2NhbGUgXCIke2xvY2FsZX1cImApO1xuXG4gIC8vIERhdGFiYXNlIHJlY29yZCB3b3VsZCBpbmNsdWRlOlxuICAvLyAtIGtleTogXCJ3ZWxjb21lX21lc3NhZ2VcIlxuICAvLyAtIGxvY2FsZTogXCJlbi11c1wiIChmdWxsIGxvY2FsZSB3aXRoIHJlZ2lvbilcbiAgLy8gLSBjb250ZW50OiBcIldlbGNvbWUgdG8gb3VyIFVTIHNpdGUhXCJcblxuICByZXR1cm4ge2tleSwgbG9jYWxlLCBjb250ZW50fTtcbn07XG5cbi8vIEV4YW1wbGUgNjogQ29udGVudCBSZXRyaWV2YWwgd2l0aCBGYWxsYmFja1xuY29uc3QgZ2V0Q29udGVudFdpdGhGYWxsYmFjayA9IGFzeW5jIChrZXk6IHN0cmluZywgcmVxdWVzdGVkTG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc29sZS5sb2coYFxcbj09PSBDb250ZW50IFJldHJpZXZhbCBmb3IgXCIke2tleX1cIiB3aXRoIGxvY2FsZSBcIiR7cmVxdWVzdGVkTG9jYWxlfVwiID09PWApO1xuXG4gIC8vIDEuIFRyeSBleGFjdCBsb2NhbGUgbWF0Y2ggZmlyc3RcbiAgY29uc29sZS5sb2coYDEuIFRyeWluZyBleGFjdCBtYXRjaDogJHtyZXF1ZXN0ZWRMb2NhbGV9YCk7XG5cbiAgLy8gMi4gSWYgcmVnaW9uYWwgbG9jYWxlIGFuZCBubyBleGFjdCBtYXRjaCwgdHJ5IGxhbmd1YWdlIGZhbGxiYWNrXG4gIGlmKGlzUmVnaW9uYWxMb2NhbGUocmVxdWVzdGVkTG9jYWxlKSkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKHJlcXVlc3RlZExvY2FsZSk7XG4gICAgY29uc29sZS5sb2coYDIuIFRyeWluZyBsYW5ndWFnZSBmYWxsYmFjazogJHtsYW5ndWFnZX1gKTtcblxuICAgIC8vIElmIGZvdW5kLCBzdG9yZSB0aGUgcmVnaW9uYWwgdmVyc2lvbiBmb3IgZnV0dXJlIHVzZVxuICAgIGNvbnNvbGUubG9nKGAzLiBTdG9yaW5nIGV4dHJhY3RlZCBjb250ZW50IGZvciAke3JlcXVlc3RlZExvY2FsZX1gKTtcbiAgfVxuXG4gIC8vIDMuIElmIHN0aWxsIG5vIG1hdGNoLCB1c2UgYXBwIGRlZmF1bHQgbG9jYWxlXG4gIGNvbnNvbGUubG9nKCc0LiBGYWxsaW5nIGJhY2sgdG8gYXBwIGRlZmF1bHQgbG9jYWxlJyk7XG5cbiAgcmV0dXJuIGBbQ29udGVudCBmb3IgJHtrZXl9IGluICR7cmVxdWVzdGVkTG9jYWxlfV1gO1xufTtcblxuLy8gRXhhbXBsZSA3OiBWYWxpZGF0aW9uXG5jb25zb2xlLmxvZygnXFxuPT09IExvY2FsZSBWYWxpZGF0aW9uID09PScpO1xuY29uc29sZS5sb2coaXNWYWxpZExvY2FsZSgnZW4tdXMnKSk7IC8vIHRydWVcbmNvbnNvbGUubG9nKGlzVmFsaWRMb2NhbGUoJ2VzLW14JykpOyAvLyB0cnVlXG5jb25zb2xlLmxvZyhpc1ZhbGlkTG9jYWxlKCdpbnZhbGlkJykpOyAvLyBmYWxzZVxuY29uc29sZS5sb2coaXNWYWxpZExvY2FsZSgnZW4teHgnKSk7IC8vIGZhbHNlXG5cbi8vIEV4YW1wbGUgODogU3VwcG9ydGVkIExvY2FsZXNcbmNvbnNvbGUubG9nKCdcXG49PT0gU3VwcG9ydGVkIExvY2FsZXMgPT09Jyk7XG5jb25zdCBzdXBwb3J0ZWRMb2NhbGVzID0gZ2V0U3VwcG9ydGVkTG9jYWxlcygpO1xuY29uc29sZS5sb2coYFRvdGFsIHN1cHBvcnRlZCBsb2NhbGVzOiAke3N1cHBvcnRlZExvY2FsZXMubGVuZ3RofWApO1xuY29uc29sZS5sb2coJ0VuZ2xpc2ggdmFyaWFudHM6Jywgc3VwcG9ydGVkTG9jYWxlcy5maWx0ZXIoKGwpID0+IGwuc3RhcnRzV2l0aCgnZW4nKSkpO1xuY29uc29sZS5sb2coJ1NwYW5pc2ggdmFyaWFudHM6Jywgc3VwcG9ydGVkTG9jYWxlcy5maWx0ZXIoKGwpID0+IGwuc3RhcnRzV2l0aCgnZXMnKSkpO1xuXG4vLyBFeGFtcGxlIDk6IFByaW1hcnkgTGFuZ3VhZ2VzXG5jb25zb2xlLmxvZygnXFxuPT09IFByaW1hcnkgTGFuZ3VhZ2VzID09PScpO1xuY29uc3QgcHJpbWFyeUxhbmd1YWdlcyA9IGdldFByaW1hcnlMYW5ndWFnZXMoKTtcbmNvbnNvbGUubG9nKCdQcmltYXJ5IGxhbmd1YWdlczonLCBwcmltYXJ5TGFuZ3VhZ2VzKTtcblxuLy8gRXhhbXBsZSAxMDogQ29tcGxldGUgV29ya2Zsb3dcbmV4cG9ydCBjb25zdCBjb21wbGV0ZVRyYW5zbGF0aW9uV29ya2Zsb3cgPSBhc3luYyAodXNlckxvY2FsZSA9ICdlcy1teCcsIGFwcExvY2FsZSA9ICdlbi11cycpID0+IHtcbiAgY29uc29sZS5sb2coJ1xcbj09PSBDb21wbGV0ZSBUcmFuc2xhdGlvbiBXb3JrZmxvdyA9PT0nKTtcblxuICBjb25zdCBrZXkgPSAnd2VsY29tZV9tZXNzYWdlJztcblxuICAvLyAxLiBFeHRyYWN0IGxhbmd1YWdlIGZvciB0cmFuc2xhdGlvbiBBUElcbiAgY29uc3QgdXNlckxhbmd1YWdlID0gZXh0cmFjdExhbmd1YWdlKHVzZXJMb2NhbGUpO1xuICBjb25zdCBhcHBMYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShhcHBMb2NhbGUpO1xuXG4gIGNvbnNvbGUubG9nKGBVc2VyIGxvY2FsZTogJHt1c2VyTG9jYWxlfSAobGFuZ3VhZ2U6ICR7dXNlckxhbmd1YWdlfSlgKTtcbiAgY29uc29sZS5sb2coYEFwcCBsb2NhbGU6ICR7YXBwTG9jYWxlfSAobGFuZ3VhZ2U6ICR7YXBwTGFuZ3VhZ2V9KWApO1xuXG4gIC8vIDIuIENoZWNrIGlmIHdlIG5lZWQgdHJhbnNsYXRpb25cbiAgaWYodXNlckxhbmd1YWdlICE9PSBhcHBMYW5ndWFnZSkge1xuICAgIGNvbnNvbGUubG9nKCdUcmFuc2xhdGlvbiBuZWVkZWQhJyk7XG5cbiAgICAvLyAzLiBHZXQgc291cmNlIGNvbnRlbnQgKGZyb20gYXBwIGxvY2FsZSlcbiAgICBjb25zdCBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudFdpdGhGYWxsYmFjayhrZXksIGFwcExvY2FsZSk7XG5cbiAgICAvLyA0LiBUcmFuc2xhdGUgdXNpbmcgbGFuZ3VhZ2UgY29kZXNcbiAgICBjb25zdCB0cmFuc2xhdGVkQ29udGVudCA9IGF3YWl0IHRyYW5zbGF0ZVRleHQoc291cmNlQ29udGVudCwgdXNlckxhbmd1YWdlLCBhcHBMYW5ndWFnZSk7XG5cbiAgICAvLyA1LiBTdG9yZSB3aXRoIGZ1bGwgbG9jYWxlXG4gICAgYXdhaXQgc3RvcmVUcmFuc2xhdGlvbihrZXksIHRyYW5zbGF0ZWRDb250ZW50LCB1c2VyTG9jYWxlKTtcblxuICAgIGNvbnNvbGUubG9nKGBUcmFuc2xhdGlvbiBjb21wbGV0ZTogJHt0cmFuc2xhdGVkQ29udGVudH1gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnTm8gdHJhbnNsYXRpb24gbmVlZGVkIC0gc2FtZSBsYW5ndWFnZScpO1xuICB9XG59O1xuXG4vLyBSdW4gZXhhbXBsZXNcbmV4cG9ydCBjb25zdCBydW5Mb2NhbGVFeGFtcGxlcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc29sZS5sb2coJ0xvY2FsZSBVdGlsaXRpZXMgRXhhbXBsZXNcXG4nKTtcblxuICAvLyBSdW4gc3luY2hyb25vdXMgZXhhbXBsZXNcbiAgY29uc29sZS5sb2coJ1N5bmNocm9ub3VzIGV4YW1wbGVzIGNvbXBsZXRlZCBhYm92ZScpO1xuXG4gIC8vIFJ1biBhc3luYyBleGFtcGxlc1xuICBhd2FpdCBnZXRDb250ZW50V2l0aEZhbGxiYWNrKCd3ZWxjb21lX21lc3NhZ2UnLCAnZXMtbXgnKTtcbiAgYXdhaXQgZ2V0Q29udGVudFdpdGhGYWxsYmFjaygnd2VsY29tZV9tZXNzYWdlJywgJ2VuJyk7XG4gIGF3YWl0IGNvbXBsZXRlVHJhbnNsYXRpb25Xb3JrZmxvdygpO1xuXG4gIGNvbnNvbGUubG9nKCdcXG49PT0gRXhhbXBsZSBDb21wbGV0ZSA9PT0nKTtcbn07XG5cbi8vIFVuY29tbWVudCB0byBydW4gZXhhbXBsZXNcbi8vIHJ1bkxvY2FsZUV4YW1wbGVzKCk7XG4iXSwibmFtZXMiOlsiZXh0cmFjdExhbmd1YWdlIiwiZ2V0RmFsbGJhY2tDaGFpbiIsImdldFByaW1hcnlMYW5ndWFnZXMiLCJnZXRTdXBwb3J0ZWRMb2NhbGVzIiwiaXNSZWdpb25hbExvY2FsZSIsImlzVmFsaWRMb2NhbGUiLCJjb25zb2xlIiwibG9nIiwidHJhbnNsYXRlVGV4dCIsInRleHQiLCJ0YXJnZXRMb2NhbGUiLCJzb3VyY2VMb2NhbGUiLCJ0YXJnZXRMYW5ndWFnZSIsInNvdXJjZUxhbmd1YWdlIiwic3RvcmVUcmFuc2xhdGlvbiIsImtleSIsImNvbnRlbnQiLCJsb2NhbGUiLCJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwicmVxdWVzdGVkTG9jYWxlIiwibGFuZ3VhZ2UiLCJzdXBwb3J0ZWRMb2NhbGVzIiwibGVuZ3RoIiwiZmlsdGVyIiwibCIsInN0YXJ0c1dpdGgiLCJwcmltYXJ5TGFuZ3VhZ2VzIiwiY29tcGxldGVUcmFuc2xhdGlvbldvcmtmbG93IiwidXNlckxvY2FsZSIsImFwcExvY2FsZSIsInVzZXJMYW5ndWFnZSIsImFwcExhbmd1YWdlIiwic291cmNlQ29udGVudCIsInRyYW5zbGF0ZWRDb250ZW50IiwicnVuTG9jYWxlRXhhbXBsZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELFNBQ0VBLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxtQkFBbUIsRUFDbkJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyxhQUFhLFFBQ1IsbUJBQW1CO0FBRTFCOzs7Ozs7O0NBT0MsR0FFRCxzREFBc0Q7QUFDdERDLFFBQVFDLEdBQUcsQ0FBQztBQUNaRCxRQUFRQyxHQUFHLENBQUNQLGdCQUFnQixXQUFXLE9BQU87QUFDOUNNLFFBQVFDLEdBQUcsQ0FBQ1AsZ0JBQWdCLFdBQVcsT0FBTztBQUM5Q00sUUFBUUMsR0FBRyxDQUFDUCxnQkFBZ0IsV0FBVyxPQUFPO0FBQzlDTSxRQUFRQyxHQUFHLENBQUNQLGdCQUFnQixRQUFRLE9BQU87QUFFM0MsdUNBQXVDO0FBQ3ZDTSxRQUFRQyxHQUFHLENBQUM7QUFDWkQsUUFBUUMsR0FBRyxDQUFDSCxpQkFBaUIsV0FBVyxPQUFPO0FBQy9DRSxRQUFRQyxHQUFHLENBQUNILGlCQUFpQixXQUFXLE9BQU87QUFDL0NFLFFBQVFDLEdBQUcsQ0FBQ0gsaUJBQWlCLFFBQVEsUUFBUTtBQUM3Q0UsUUFBUUMsR0FBRyxDQUFDSCxpQkFBaUIsUUFBUSxRQUFRO0FBRTdDLHVDQUF1QztBQUN2Q0UsUUFBUUMsR0FBRyxDQUFDO0FBQ1pELFFBQVFDLEdBQUcsQ0FBQ04saUJBQWlCLFdBQVcsa0JBQWtCO0FBQzFESyxRQUFRQyxHQUFHLENBQUNOLGlCQUFpQixXQUFXLGtCQUFrQjtBQUMxREssUUFBUUMsR0FBRyxDQUFDTixpQkFBaUIsV0FBVyxrQkFBa0I7QUFDMURLLFFBQVFDLEdBQUcsQ0FBQ04saUJBQWlCLFFBQVEsU0FBUztBQUU5Qyx5Q0FBeUM7QUFDekMsTUFBTU8sZ0JBQWdCLE9BQU9DLE1BQWNDLGNBQXNCQyxlQUF1QixJQUFJO0lBQzFGLDZDQUE2QztJQUM3QyxNQUFNQyxpQkFBaUJaLGdCQUFnQlU7SUFDdkMsTUFBTUcsaUJBQWlCYixnQkFBZ0JXO0lBRXZDTCxRQUFRQyxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRU0sZUFBZSxJQUFJLEVBQUVELGdCQUFnQjtJQUNyRU4sUUFBUUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFSSxhQUFhLEdBQUcsRUFBRUQsY0FBYztJQUU3RCwyQ0FBMkM7SUFDM0MsMkZBQTJGO0lBRTNGLE9BQU8sQ0FBQyxhQUFhLEVBQUVELEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0FBRUEsdUNBQXVDO0FBQ3ZDLE1BQU1LLG1CQUFtQixPQUFPQyxLQUFhQyxTQUFpQkM7SUFDNUQsOENBQThDO0lBQzlDWCxRQUFRQyxHQUFHLENBQUMsQ0FBQyw2QkFBNkIsRUFBRVEsSUFBSSxlQUFlLEVBQUVFLE9BQU8sQ0FBQyxDQUFDO0lBRTFFLGlDQUFpQztJQUNqQywyQkFBMkI7SUFDM0IsOENBQThDO0lBQzlDLHVDQUF1QztJQUV2QyxPQUFPO1FBQUNGO1FBQUtFO1FBQVFEO0lBQU87QUFDOUI7QUFFQSw2Q0FBNkM7QUFDN0MsTUFBTUUseUJBQXlCLE9BQU9ILEtBQWFJO0lBQ2pEYixRQUFRQyxHQUFHLENBQUMsQ0FBQyw2QkFBNkIsRUFBRVEsSUFBSSxlQUFlLEVBQUVJLGdCQUFnQixLQUFLLENBQUM7SUFFdkYsa0NBQWtDO0lBQ2xDYixRQUFRQyxHQUFHLENBQUMsQ0FBQyx1QkFBdUIsRUFBRVksaUJBQWlCO0lBRXZELGtFQUFrRTtJQUNsRSxJQUFHZixpQkFBaUJlLGtCQUFrQjtRQUNwQyxNQUFNQyxXQUFXcEIsZ0JBQWdCbUI7UUFDakNiLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLDZCQUE2QixFQUFFYSxVQUFVO1FBRXRELHNEQUFzRDtRQUN0RGQsUUFBUUMsR0FBRyxDQUFDLENBQUMsaUNBQWlDLEVBQUVZLGlCQUFpQjtJQUNuRTtJQUVBLCtDQUErQztJQUMvQ2IsUUFBUUMsR0FBRyxDQUFDO0lBRVosT0FBTyxDQUFDLGFBQWEsRUFBRVEsSUFBSSxJQUFJLEVBQUVJLGdCQUFnQixDQUFDLENBQUM7QUFDckQ7QUFFQSx3QkFBd0I7QUFDeEJiLFFBQVFDLEdBQUcsQ0FBQztBQUNaRCxRQUFRQyxHQUFHLENBQUNGLGNBQWMsV0FBVyxPQUFPO0FBQzVDQyxRQUFRQyxHQUFHLENBQUNGLGNBQWMsV0FBVyxPQUFPO0FBQzVDQyxRQUFRQyxHQUFHLENBQUNGLGNBQWMsYUFBYSxRQUFRO0FBQy9DQyxRQUFRQyxHQUFHLENBQUNGLGNBQWMsV0FBVyxRQUFRO0FBRTdDLCtCQUErQjtBQUMvQkMsUUFBUUMsR0FBRyxDQUFDO0FBQ1osTUFBTWMsbUJBQW1CbEI7QUFDekJHLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixFQUFFYyxpQkFBaUJDLE1BQU0sRUFBRTtBQUNqRWhCLFFBQVFDLEdBQUcsQ0FBQyxxQkFBcUJjLGlCQUFpQkUsTUFBTSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVUsQ0FBQztBQUM3RW5CLFFBQVFDLEdBQUcsQ0FBQyxxQkFBcUJjLGlCQUFpQkUsTUFBTSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVUsQ0FBQztBQUU3RSwrQkFBK0I7QUFDL0JuQixRQUFRQyxHQUFHLENBQUM7QUFDWixNQUFNbUIsbUJBQW1CeEI7QUFDekJJLFFBQVFDLEdBQUcsQ0FBQyxzQkFBc0JtQjtBQUVsQyxnQ0FBZ0M7QUFDaEMsT0FBTyxNQUFNQyw4QkFBOEIsT0FBT0MsYUFBYSxPQUFPLEVBQUVDLFlBQVksT0FBTztJQUN6RnZCLFFBQVFDLEdBQUcsQ0FBQztJQUVaLE1BQU1RLE1BQU07SUFFWiwwQ0FBMEM7SUFDMUMsTUFBTWUsZUFBZTlCLGdCQUFnQjRCO0lBQ3JDLE1BQU1HLGNBQWMvQixnQkFBZ0I2QjtJQUVwQ3ZCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRXFCLFdBQVcsWUFBWSxFQUFFRSxhQUFhLENBQUMsQ0FBQztJQUNwRXhCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRXNCLFVBQVUsWUFBWSxFQUFFRSxZQUFZLENBQUMsQ0FBQztJQUVqRSxrQ0FBa0M7SUFDbEMsSUFBR0QsaUJBQWlCQyxhQUFhO1FBQy9CekIsUUFBUUMsR0FBRyxDQUFDO1FBRVosMENBQTBDO1FBQzFDLE1BQU15QixnQkFBZ0IsTUFBTWQsdUJBQXVCSCxLQUFLYztRQUV4RCxvQ0FBb0M7UUFDcEMsTUFBTUksb0JBQW9CLE1BQU16QixjQUFjd0IsZUFBZUYsY0FBY0M7UUFFM0UsNEJBQTRCO1FBQzVCLE1BQU1qQixpQkFBaUJDLEtBQUtrQixtQkFBbUJMO1FBRS9DdEIsUUFBUUMsR0FBRyxDQUFDLENBQUMsc0JBQXNCLEVBQUUwQixtQkFBbUI7SUFDMUQsT0FBTztRQUNMM0IsUUFBUUMsR0FBRyxDQUFDO0lBQ2Q7QUFDRixFQUFFO0FBRUYsZUFBZTtBQUNmLE9BQU8sTUFBTTJCLG9CQUFvQjtJQUMvQjVCLFFBQVFDLEdBQUcsQ0FBQztJQUVaLDJCQUEyQjtJQUMzQkQsUUFBUUMsR0FBRyxDQUFDO0lBRVoscUJBQXFCO0lBQ3JCLE1BQU1XLHVCQUF1QixtQkFBbUI7SUFDaEQsTUFBTUEsdUJBQXVCLG1CQUFtQjtJQUNoRCxNQUFNUztJQUVOckIsUUFBUUMsR0FBRyxDQUFDO0FBQ2QsRUFBRSxDQUVGLDRCQUE0QjtDQUM1Qix1QkFBdUIifQ==
@@ -68,4 +68,4 @@ export const getSupportedLocales = ()=>[
68
68
  'it-it'
69
69
  ];
70
70
 
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL2xvY2FsZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQgdHlwZSB7TG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzLmpzJztcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RMYW5ndWFnZSA9IChsb2NhbGU6IHN0cmluZyk6IHN0cmluZyA9PiBsb2NhbGUuc3BsaXQoJy0nKVswXTtcblxuZXhwb3J0IGNvbnN0IGlzUmVnaW9uYWxMb2NhbGUgPSAobG9jYWxlOiBzdHJpbmcpOiBib29sZWFuID0+IGxvY2FsZS5pbmNsdWRlcygnLScpO1xuXG5leHBvcnQgY29uc3QgZ2V0RmFsbGJhY2tDaGFpbiA9IChsb2NhbGU6IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgbGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKTtcbiAgcmV0dXJuIGlzUmVnaW9uYWxMb2NhbGUobG9jYWxlKSA/IFtsb2NhbGUsIGxhbmd1YWdlXSA6IFtsb2NhbGVdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFByaW1hcnlMYW5ndWFnZXMgPSAoKTogc3RyaW5nW10gPT4gWydlbicsICdlcycsICdmcicsICdkZScsICdwdCcsICdpdCddO1xuXG5leHBvcnQgY29uc3QgaXNWYWxpZExvY2FsZSA9IChsb2NhbGU6IHN0cmluZyk6IGxvY2FsZSBpcyBMb2NhbGUgPT4ge1xuICBjb25zdCB2YWxpZExvY2FsZXM6IExvY2FsZVtdID0gW1xuICAgICdlbicsICdlbi11cycsICdlbi1nYicsICdlbi1jYScsICdlbi1hdScsXG4gICAgJ2VzJywgJ2VzLW14JywgJ2VzLWVzJywgJ2VzLWFyJyxcbiAgICAnZnInLCAnZnItZnInLCAnZnItY2EnLFxuICAgICdkZScsICdkZS1kZScsICdkZS1hdCcsXG4gICAgJ3B0JywgJ3B0LWJyJywgJ3B0LXB0JyxcbiAgICAnaXQnLCAnaXQtaXQnXG4gIF07XG4gIHJldHVybiB2YWxpZExvY2FsZXMuaW5jbHVkZXMobG9jYWxlIGFzIExvY2FsZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VwcG9ydGVkTG9jYWxlcyA9ICgpOiBMb2NhbGVbXSA9PiBbXG4gICdlbicsICdlbi11cycsICdlbi1nYicsICdlbi1jYScsICdlbi1hdScsXG4gICdlcycsICdlcy1teCcsICdlcy1lcycsICdlcy1hcicsXG4gICdmcicsICdmci1mcicsICdmci1jYScsXG4gICdkZScsICdkZS1kZScsICdkZS1hdCcsXG4gICdwdCcsICdwdC1icicsICdwdC1wdCcsXG4gICdpdCcsICdpdC1pdCdcbl07XG4iXSwibmFtZXMiOlsiZXh0cmFjdExhbmd1YWdlIiwibG9jYWxlIiwic3BsaXQiLCJpc1JlZ2lvbmFsTG9jYWxlIiwiaW5jbHVkZXMiLCJnZXRGYWxsYmFja0NoYWluIiwibGFuZ3VhZ2UiLCJnZXRQcmltYXJ5TGFuZ3VhZ2VzIiwiaXNWYWxpZExvY2FsZSIsInZhbGlkTG9jYWxlcyIsImdldFN1cHBvcnRlZExvY2FsZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUdELE9BQU8sTUFBTUEsa0JBQWtCLENBQUNDLFNBQTJCQSxPQUFPQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUVoRixPQUFPLE1BQU1DLG1CQUFtQixDQUFDRixTQUE0QkEsT0FBT0csUUFBUSxDQUFDLEtBQUs7QUFFbEYsT0FBTyxNQUFNQyxtQkFBbUIsQ0FBQ0o7SUFDL0IsTUFBTUssV0FBV04sZ0JBQWdCQztJQUNqQyxPQUFPRSxpQkFBaUJGLFVBQVU7UUFBQ0E7UUFBUUs7S0FBUyxHQUFHO1FBQUNMO0tBQU87QUFDakUsRUFBRTtBQUVGLE9BQU8sTUFBTU0sc0JBQXNCLElBQWdCO1FBQUM7UUFBTTtRQUFNO1FBQU07UUFBTTtRQUFNO0tBQUssQ0FBQztBQUV4RixPQUFPLE1BQU1DLGdCQUFnQixDQUFDUDtJQUM1QixNQUFNUSxlQUF5QjtRQUM3QjtRQUFNO1FBQVM7UUFBUztRQUFTO1FBQ2pDO1FBQU07UUFBUztRQUFTO1FBQ3hCO1FBQU07UUFBUztRQUNmO1FBQU07UUFBUztRQUNmO1FBQU07UUFBUztRQUNmO1FBQU07S0FDUDtJQUNELE9BQU9BLGFBQWFMLFFBQVEsQ0FBQ0g7QUFDL0IsRUFBRTtBQUVGLE9BQU8sTUFBTVMsc0JBQXNCLElBQWdCO1FBQ2pEO1FBQU07UUFBUztRQUFTO1FBQVM7UUFDakM7UUFBTTtRQUFTO1FBQVM7UUFDeEI7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtLQUNQLENBQUMifQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbG9jYWxlVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCB0eXBlIHtMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdExhbmd1YWdlID0gKGxvY2FsZTogc3RyaW5nKTogc3RyaW5nID0+IGxvY2FsZS5zcGxpdCgnLScpWzBdO1xuXG5leHBvcnQgY29uc3QgaXNSZWdpb25hbExvY2FsZSA9IChsb2NhbGU6IHN0cmluZyk6IGJvb2xlYW4gPT4gbG9jYWxlLmluY2x1ZGVzKCctJyk7XG5cbmV4cG9ydCBjb25zdCBnZXRGYWxsYmFja0NoYWluID0gKGxvY2FsZTogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBsYW5ndWFnZSA9IGV4dHJhY3RMYW5ndWFnZShsb2NhbGUpO1xuICByZXR1cm4gaXNSZWdpb25hbExvY2FsZShsb2NhbGUpID8gW2xvY2FsZSwgbGFuZ3VhZ2VdIDogW2xvY2FsZV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UHJpbWFyeUxhbmd1YWdlcyA9ICgpOiBzdHJpbmdbXSA9PiBbJ2VuJywgJ2VzJywgJ2ZyJywgJ2RlJywgJ3B0JywgJ2l0J107XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkTG9jYWxlID0gKGxvY2FsZTogc3RyaW5nKTogbG9jYWxlIGlzIExvY2FsZSA9PiB7XG4gIGNvbnN0IHZhbGlkTG9jYWxlczogTG9jYWxlW10gPSBbXG4gICAgJ2VuJywgJ2VuLXVzJywgJ2VuLWdiJywgJ2VuLWNhJywgJ2VuLWF1JyxcbiAgICAnZXMnLCAnZXMtbXgnLCAnZXMtZXMnLCAnZXMtYXInLFxuICAgICdmcicsICdmci1mcicsICdmci1jYScsXG4gICAgJ2RlJywgJ2RlLWRlJywgJ2RlLWF0JyxcbiAgICAncHQnLCAncHQtYnInLCAncHQtcHQnLFxuICAgICdpdCcsICdpdC1pdCdcbiAgXTtcbiAgcmV0dXJuIHZhbGlkTG9jYWxlcy5pbmNsdWRlcyhsb2NhbGUgYXMgTG9jYWxlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdXBwb3J0ZWRMb2NhbGVzID0gKCk6IExvY2FsZVtdID0+IFtcbiAgJ2VuJywgJ2VuLXVzJywgJ2VuLWdiJywgJ2VuLWNhJywgJ2VuLWF1JyxcbiAgJ2VzJywgJ2VzLW14JywgJ2VzLWVzJywgJ2VzLWFyJyxcbiAgJ2ZyJywgJ2ZyLWZyJywgJ2ZyLWNhJyxcbiAgJ2RlJywgJ2RlLWRlJywgJ2RlLWF0JyxcbiAgJ3B0JywgJ3B0LWJyJywgJ3B0LXB0JyxcbiAgJ2l0JywgJ2l0LWl0J1xuXTtcbiJdLCJuYW1lcyI6WyJleHRyYWN0TGFuZ3VhZ2UiLCJsb2NhbGUiLCJzcGxpdCIsImlzUmVnaW9uYWxMb2NhbGUiLCJpbmNsdWRlcyIsImdldEZhbGxiYWNrQ2hhaW4iLCJsYW5ndWFnZSIsImdldFByaW1hcnlMYW5ndWFnZXMiLCJpc1ZhbGlkTG9jYWxlIiwidmFsaWRMb2NhbGVzIiwiZ2V0U3VwcG9ydGVkTG9jYWxlcyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBR0QsT0FBTyxNQUFNQSxrQkFBa0IsQ0FBQ0MsU0FBMkJBLE9BQU9DLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBRWhGLE9BQU8sTUFBTUMsbUJBQW1CLENBQUNGLFNBQTRCQSxPQUFPRyxRQUFRLENBQUMsS0FBSztBQUVsRixPQUFPLE1BQU1DLG1CQUFtQixDQUFDSjtJQUMvQixNQUFNSyxXQUFXTixnQkFBZ0JDO0lBQ2pDLE9BQU9FLGlCQUFpQkYsVUFBVTtRQUFDQTtRQUFRSztLQUFTLEdBQUc7UUFBQ0w7S0FBTztBQUNqRSxFQUFFO0FBRUYsT0FBTyxNQUFNTSxzQkFBc0IsSUFBZ0I7UUFBQztRQUFNO1FBQU07UUFBTTtRQUFNO1FBQU07S0FBSyxDQUFDO0FBRXhGLE9BQU8sTUFBTUMsZ0JBQWdCLENBQUNQO0lBQzVCLE1BQU1RLGVBQXlCO1FBQzdCO1FBQU07UUFBUztRQUFTO1FBQVM7UUFDakM7UUFBTTtRQUFTO1FBQVM7UUFDeEI7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtRQUFTO1FBQ2Y7UUFBTTtLQUNQO0lBQ0QsT0FBT0EsYUFBYUwsUUFBUSxDQUFDSDtBQUMvQixFQUFFO0FBRUYsT0FBTyxNQUFNUyxzQkFBc0IsSUFBZ0I7UUFDakQ7UUFBTTtRQUFTO1FBQVM7UUFBUztRQUNqQztRQUFNO1FBQVM7UUFBUztRQUN4QjtRQUFNO1FBQVM7UUFDZjtRQUFNO1FBQVM7UUFDZjtRQUFNO1FBQVM7UUFDZjtRQUFNO0tBQ1AsQ0FBQyJ9
@@ -0,0 +1,5 @@
1
+ /** Short-lived, path-bound media grants; the underlying session is still verified on every read. */
2
+ export declare const createMediaAccess: () => {
3
+ issue: (path: string, authorization: string) => string;
4
+ read: (path: string, ticket: string) => string | undefined;
5
+ };
@@ -0,0 +1,57 @@
1
+ import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
2
+ /** Short-lived, path-bound media grants; the underlying session is still verified on every read. */ export const createMediaAccess = ()=>{
3
+ const key = randomBytes(32);
4
+ const cache = new Map();
5
+ return {
6
+ issue: (path, authorization)=>{
7
+ const cacheKey = `${authorization}:${path}`;
8
+ const previous = cache.get(cacheKey);
9
+ if (previous && previous.expires > Date.now() + 60_000) {
10
+ return previous.url;
11
+ }
12
+ const expires = Date.now() + 15 * 60_000;
13
+ const iv = randomBytes(12);
14
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
15
+ const bytes = Buffer.concat([
16
+ cipher.update(JSON.stringify({
17
+ authorization,
18
+ expires,
19
+ path
20
+ })),
21
+ cipher.final()
22
+ ]);
23
+ const url = `${path}?access=${Buffer.concat([
24
+ iv,
25
+ cipher.getAuthTag(),
26
+ bytes
27
+ ]).toString('base64url')}`;
28
+ if (cache.size >= 2000) {
29
+ cache.delete(cache.keys().next().value);
30
+ }
31
+ cache.set(cacheKey, {
32
+ expires,
33
+ url
34
+ });
35
+ return url;
36
+ },
37
+ read: (path, ticket)=>{
38
+ try {
39
+ if (ticket.length > 2048) {
40
+ return undefined;
41
+ }
42
+ const bytes = Buffer.from(ticket, 'base64url');
43
+ const decipher = createDecipheriv('aes-256-gcm', key, bytes.subarray(0, 12));
44
+ decipher.setAuthTag(bytes.subarray(12, 28));
45
+ const data = JSON.parse(Buffer.concat([
46
+ decipher.update(bytes.subarray(28)),
47
+ decipher.final()
48
+ ]).toString());
49
+ return data.path === path && data.expires > Date.now() ? data.authorization : undefined;
50
+ } catch {
51
+ return undefined;
52
+ }
53
+ }
54
+ };
55
+ };
56
+
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbWVkaWFBY2Nlc3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgcmFuZG9tQnl0ZXN9IGZyb20gJ25vZGU6Y3J5cHRvJztcblxuLyoqIFNob3J0LWxpdmVkLCBwYXRoLWJvdW5kIG1lZGlhIGdyYW50czsgdGhlIHVuZGVybHlpbmcgc2Vzc2lvbiBpcyBzdGlsbCB2ZXJpZmllZCBvbiBldmVyeSByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lZGlhQWNjZXNzID0gKCkgPT4ge1xuICBjb25zdCBrZXkgPSByYW5kb21CeXRlcygzMik7XG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHtleHBpcmVzOiBudW1iZXI7IHVybDogc3RyaW5nfT4oKTtcbiAgcmV0dXJuIHtcbiAgICBpc3N1ZTogKHBhdGg6IHN0cmluZywgYXV0aG9yaXphdGlvbjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gYCR7YXV0aG9yaXphdGlvbn06JHtwYXRofWA7XG4gICAgICBjb25zdCBwcmV2aW91cyA9IGNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICBpZihwcmV2aW91cyAmJiBwcmV2aW91cy5leHBpcmVzID4gRGF0ZS5ub3coKSArIDYwXzAwMCkge1xuICAgICAgICByZXR1cm4gcHJldmlvdXMudXJsO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwaXJlcyA9IERhdGUubm93KCkgKyAoMTUgKiA2MF8wMDApO1xuICAgICAgY29uc3QgaXYgPSByYW5kb21CeXRlcygxMik7XG4gICAgICBjb25zdCBjaXBoZXIgPSBjcmVhdGVDaXBoZXJpdignYWVzLTI1Ni1nY20nLCBrZXksIGl2KTtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmNvbmNhdChbY2lwaGVyLnVwZGF0ZShKU09OLnN0cmluZ2lmeSh7YXV0aG9yaXphdGlvbiwgZXhwaXJlcywgcGF0aH0pKSwgY2lwaGVyLmZpbmFsKCldKTtcbiAgICAgIGNvbnN0IHVybCA9IGAke3BhdGh9P2FjY2Vzcz0ke0J1ZmZlci5jb25jYXQoW2l2LCBjaXBoZXIuZ2V0QXV0aFRhZygpLCBieXRlc10pLnRvU3RyaW5nKCdiYXNlNjR1cmwnKX1gO1xuICAgICAgaWYoY2FjaGUuc2l6ZSA+PSAyMDAwKSB7XG4gICAgICAgIGNhY2hlLmRlbGV0ZShjYWNoZS5rZXlzKCkubmV4dCgpLnZhbHVlISk7XG4gICAgICB9XG4gICAgICBjYWNoZS5zZXQoY2FjaGVLZXksIHtleHBpcmVzLCB1cmx9KTtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfSxcbiAgICByZWFkOiAocGF0aDogc3RyaW5nLCB0aWNrZXQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZih0aWNrZXQubGVuZ3RoID4gMjA0OCkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBCdWZmZXIuZnJvbSh0aWNrZXQsICdiYXNlNjR1cmwnKTtcbiAgICAgICAgY29uc3QgZGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgYnl0ZXMuc3ViYXJyYXkoMCwgMTIpKTtcbiAgICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhieXRlcy5zdWJhcnJheSgxMiwgMjgpKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoQnVmZmVyLmNvbmNhdChbZGVjaXBoZXIudXBkYXRlKGJ5dGVzLnN1YmFycmF5KDI4KSksIGRlY2lwaGVyLmZpbmFsKCldKS50b1N0cmluZygpKSBhcyB7XG4gICAgICAgICAgYXV0aG9yaXphdGlvbjogc3RyaW5nOyBleHBpcmVzOiBudW1iZXI7IHBhdGg6IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGRhdGEucGF0aCA9PT0gcGF0aCAmJiBkYXRhLmV4cGlyZXMgPiBEYXRlLm5vdygpID8gZGF0YS5hdXRob3JpemF0aW9uIDogdW5kZWZpbmVkO1xuICAgICAgfSBjYXRjaHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbImNyZWF0ZUNpcGhlcml2IiwiY3JlYXRlRGVjaXBoZXJpdiIsInJhbmRvbUJ5dGVzIiwiY3JlYXRlTWVkaWFBY2Nlc3MiLCJrZXkiLCJjYWNoZSIsIk1hcCIsImlzc3VlIiwicGF0aCIsImF1dGhvcml6YXRpb24iLCJjYWNoZUtleSIsInByZXZpb3VzIiwiZ2V0IiwiZXhwaXJlcyIsIkRhdGUiLCJub3ciLCJ1cmwiLCJpdiIsImNpcGhlciIsImJ5dGVzIiwiQnVmZmVyIiwiY29uY2F0IiwidXBkYXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbmFsIiwiZ2V0QXV0aFRhZyIsInRvU3RyaW5nIiwic2l6ZSIsImRlbGV0ZSIsImtleXMiLCJuZXh0IiwidmFsdWUiLCJzZXQiLCJyZWFkIiwidGlja2V0IiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZnJvbSIsImRlY2lwaGVyIiwic3ViYXJyYXkiLCJzZXRBdXRoVGFnIiwiZGF0YSIsInBhcnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxjQUFjLEVBQUVDLGdCQUFnQixFQUFFQyxXQUFXLFFBQU8sY0FBYztBQUUxRSxrR0FBa0csR0FDbEcsT0FBTyxNQUFNQyxvQkFBb0I7SUFDL0IsTUFBTUMsTUFBTUYsWUFBWTtJQUN4QixNQUFNRyxRQUFRLElBQUlDO0lBQ2xCLE9BQU87UUFDTEMsT0FBTyxDQUFDQyxNQUFjQztZQUNwQixNQUFNQyxXQUFXLEdBQUdELGNBQWMsQ0FBQyxFQUFFRCxNQUFNO1lBQzNDLE1BQU1HLFdBQVdOLE1BQU1PLEdBQUcsQ0FBQ0Y7WUFDM0IsSUFBR0MsWUFBWUEsU0FBU0UsT0FBTyxHQUFHQyxLQUFLQyxHQUFHLEtBQUssUUFBUTtnQkFDckQsT0FBT0osU0FBU0ssR0FBRztZQUNyQjtZQUNBLE1BQU1ILFVBQVVDLEtBQUtDLEdBQUcsS0FBTSxLQUFLO1lBQ25DLE1BQU1FLEtBQUtmLFlBQVk7WUFDdkIsTUFBTWdCLFNBQVNsQixlQUFlLGVBQWVJLEtBQUthO1lBQ2xELE1BQU1FLFFBQVFDLE9BQU9DLE1BQU0sQ0FBQztnQkFBQ0gsT0FBT0ksTUFBTSxDQUFDQyxLQUFLQyxTQUFTLENBQUM7b0JBQUNmO29CQUFlSTtvQkFBU0w7Z0JBQUk7Z0JBQUtVLE9BQU9PLEtBQUs7YUFBRztZQUMzRyxNQUFNVCxNQUFNLEdBQUdSLEtBQUssUUFBUSxFQUFFWSxPQUFPQyxNQUFNLENBQUM7Z0JBQUNKO2dCQUFJQyxPQUFPUSxVQUFVO2dCQUFJUDthQUFNLEVBQUVRLFFBQVEsQ0FBQyxjQUFjO1lBQ3JHLElBQUd0QixNQUFNdUIsSUFBSSxJQUFJLE1BQU07Z0JBQ3JCdkIsTUFBTXdCLE1BQU0sQ0FBQ3hCLE1BQU15QixJQUFJLEdBQUdDLElBQUksR0FBR0MsS0FBSztZQUN4QztZQUNBM0IsTUFBTTRCLEdBQUcsQ0FBQ3ZCLFVBQVU7Z0JBQUNHO2dCQUFTRztZQUFHO1lBQ2pDLE9BQU9BO1FBQ1Q7UUFDQWtCLE1BQU0sQ0FBQzFCLE1BQWMyQjtZQUNuQixJQUFJO2dCQUNGLElBQUdBLE9BQU9DLE1BQU0sR0FBRyxNQUFNO29CQUN2QixPQUFPQztnQkFDVDtnQkFDQSxNQUFNbEIsUUFBUUMsT0FBT2tCLElBQUksQ0FBQ0gsUUFBUTtnQkFDbEMsTUFBTUksV0FBV3RDLGlCQUFpQixlQUFlRyxLQUFLZSxNQUFNcUIsUUFBUSxDQUFDLEdBQUc7Z0JBQ3hFRCxTQUFTRSxVQUFVLENBQUN0QixNQUFNcUIsUUFBUSxDQUFDLElBQUk7Z0JBQ3ZDLE1BQU1FLE9BQU9uQixLQUFLb0IsS0FBSyxDQUFDdkIsT0FBT0MsTUFBTSxDQUFDO29CQUFDa0IsU0FBU2pCLE1BQU0sQ0FBQ0gsTUFBTXFCLFFBQVEsQ0FBQztvQkFBTUQsU0FBU2QsS0FBSztpQkFBRyxFQUFFRSxRQUFRO2dCQUd2RyxPQUFPZSxLQUFLbEMsSUFBSSxLQUFLQSxRQUFRa0MsS0FBSzdCLE9BQU8sR0FBR0MsS0FBS0MsR0FBRyxLQUFLMkIsS0FBS2pDLGFBQWEsR0FBRzRCO1lBQ2hGLEVBQUUsT0FBSztnQkFDTCxPQUFPQTtZQUNUO1FBQ0Y7SUFDRjtBQUNGLEVBQUUifQ==
@@ -7,4 +7,4 @@ export const addFieldsToContext = (resolve, parent, args, context, info)=>{
7
7
  return resolve(parent, args, contextWithFields, info);
8
8
  };
9
9
 
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL21pZGRsZXdhcmVVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldEdxbEZpZWxkc30gZnJvbSAnLi9hcmFuZ29kYlV0aWxzLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuXG5leHBvcnQgY29uc3QgYWRkRmllbGRzVG9Db250ZXh0ID0gKFxuICByZXNvbHZlOiBGdW5jdGlvbixcbiAgcGFyZW50OiBhbnksXG4gIGFyZ3M6IGFueSxcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaW5mbzogYW55XG4pID0+IHtcbiAgY29uc3QgY29udGV4dFdpdGhGaWVsZHMgPSB7XG4gICAgLi4uY29udGV4dCxcbiAgICBmaWVsZHM6IGdldEdxbEZpZWxkcyhpbmZvKVxuICB9O1xuXG4gIHJldHVybiByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dFdpdGhGaWVsZHMsIGluZm8pO1xufTtcbiJdLCJuYW1lcyI6WyJnZXRHcWxGaWVsZHMiLCJhZGRGaWVsZHNUb0NvbnRleHQiLCJyZXNvbHZlIiwicGFyZW50IiwiYXJncyIsImNvbnRleHQiLCJpbmZvIiwiY29udGV4dFdpdGhGaWVsZHMiLCJmaWVsZHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFlBQVksUUFBTyxxQkFBcUI7QUFJaEQsT0FBTyxNQUFNQyxxQkFBcUIsQ0FDaENDLFNBQ0FDLFFBQ0FDLE1BQ0FDLFNBQ0FDO0lBRUEsTUFBTUMsb0JBQW9CO1FBQ3hCLEdBQUdGLE9BQU87UUFDVkcsUUFBUVIsYUFBYU07SUFDdkI7SUFFQSxPQUFPSixRQUFRQyxRQUFRQyxNQUFNRyxtQkFBbUJEO0FBQ2xELEVBQUUifQ==
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbWlkZGxld2FyZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Z2V0R3FsRmllbGRzfSBmcm9tICcuL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBhZGRGaWVsZHNUb0NvbnRleHQgPSAoXG4gIHJlc29sdmU6IEZ1bmN0aW9uLFxuICBwYXJlbnQ6IGFueSxcbiAgYXJnczogYW55LFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpbmZvOiBhbnlcbikgPT4ge1xuICBjb25zdCBjb250ZXh0V2l0aEZpZWxkcyA9IHtcbiAgICAuLi5jb250ZXh0LFxuICAgIGZpZWxkczogZ2V0R3FsRmllbGRzKGluZm8pXG4gIH07XG5cbiAgcmV0dXJuIHJlc29sdmUocGFyZW50LCBhcmdzLCBjb250ZXh0V2l0aEZpZWxkcywgaW5mbyk7XG59O1xuIl0sIm5hbWVzIjpbImdldEdxbEZpZWxkcyIsImFkZEZpZWxkc1RvQ29udGV4dCIsInJlc29sdmUiLCJwYXJlbnQiLCJhcmdzIiwiY29udGV4dCIsImluZm8iLCJjb250ZXh0V2l0aEZpZWxkcyIsImZpZWxkcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsWUFBWSxRQUFPLHFCQUFxQjtBQUloRCxPQUFPLE1BQU1DLHFCQUFxQixDQUNoQ0MsU0FDQUMsUUFDQUMsTUFDQUMsU0FDQUM7SUFFQSxNQUFNQyxvQkFBb0I7UUFDeEIsR0FBR0YsT0FBTztRQUNWRyxRQUFRUixhQUFhTTtJQUN2QjtJQUVBLE9BQU9KLFFBQVFDLFFBQVFDLE1BQU1HLG1CQUFtQkQ7QUFDbEQsRUFBRSJ9
@@ -0,0 +1,14 @@
1
+ import type { Server } from 'node:http';
2
+ /** Authenticate the first frame: bearer tokens never appear in URLs or socket logs. */
3
+ export declare const attachAuthenticatedRealtime: <TUser extends {
4
+ id: string;
5
+ }, TEvent>(server: Server, options: {
6
+ allowedOrigins: string[];
7
+ authenticationTimeoutMs?: number;
8
+ verificationIntervalMs?: number;
9
+ identify: (authorization?: string) => Promise<TUser | null>;
10
+ initialEvent: TEvent;
11
+ path: string;
12
+ subscribe: (user: TUser, notify: (event: TEvent) => void) => Promise<(() => void) | undefined>;
13
+ validateHost?: (host: string) => boolean;
14
+ }) => void;
@@ -0,0 +1,84 @@
1
+ import { WebSocketServer } from 'ws';
2
+ /** Authenticate the first frame: bearer tokens never appear in URLs or socket logs. */ export const attachAuthenticatedRealtime = (server, options)=>{
3
+ const sockets = new WebSocketServer({
4
+ maxPayload: 1024,
5
+ noServer: true
6
+ });
7
+ server.on('upgrade', (request, socket, head)=>{
8
+ const origins = options.allowedOrigins;
9
+ if (request.url !== options.path || !origins.includes(request.headers.origin || '') || options.validateHost && !options.validateHost(request.headers.host || '')) {
10
+ socket.destroy();
11
+ return;
12
+ }
13
+ sockets.handleUpgrade(request, socket, head, (client)=>{
14
+ let unsubscribe;
15
+ let authorization;
16
+ let userId;
17
+ let checking = false;
18
+ let closed = false;
19
+ const timeout = setTimeout(()=>client.close(1008, 'Authentication required'), options.authenticationTimeoutMs ?? 5000);
20
+ const verify = async ()=>Boolean(userId && (await options.identify?.(authorization))?.id === userId);
21
+ const expiry = setInterval(()=>{
22
+ if (checking || !userId) {
23
+ return;
24
+ }
25
+ checking = true;
26
+ void verify().then((valid)=>{
27
+ if (!valid) {
28
+ client.close(1008, 'Session expired');
29
+ }
30
+ }).catch(()=>client.close(1011, 'Session unavailable')).finally(()=>{
31
+ checking = false;
32
+ });
33
+ }, options.verificationIntervalMs ?? 30_000);
34
+ const notify = (event = options.initialEvent)=>{
35
+ if (!closed && client.readyState === 1 && client.bufferedAmount < 4096) {
36
+ // Invalidation only; actual data requires a fresh authenticated HTTP request.
37
+ void verify().then((valid)=>{
38
+ if (valid && !closed && client.readyState === 1) {
39
+ client.send(JSON.stringify(event));
40
+ } else {
41
+ client.close(1008, 'Session expired');
42
+ }
43
+ }).catch(()=>client.close(1011, 'Session unavailable'));
44
+ }
45
+ };
46
+ client.once('message', (raw)=>{
47
+ void (async ()=>{
48
+ const message = JSON.parse(raw.toString());
49
+ authorization = `Bearer ${message.token || ''}`;
50
+ const user = await options.identify?.(authorization);
51
+ if (!user || closed) {
52
+ client.close(1008, 'Invalid session');
53
+ return;
54
+ }
55
+ userId = user.id;
56
+ clearTimeout(timeout);
57
+ unsubscribe = await options.subscribe(user, notify);
58
+ if (closed) {
59
+ unsubscribe?.();
60
+ return;
61
+ }
62
+ notify();
63
+ })().catch(()=>client.close(1008, 'Invalid session'));
64
+ });
65
+ client.on('error', ()=>client.close());
66
+ client.once('close', ()=>{
67
+ closed = true;
68
+ clearInterval(expiry);
69
+ clearTimeout(timeout);
70
+ unsubscribe?.();
71
+ });
72
+ });
73
+ });
74
+ const close = server.close.bind(server);
75
+ server.close = (callback)=>{
76
+ for (const client of sockets.clients){
77
+ client.terminate();
78
+ }
79
+ sockets.close();
80
+ return close(callback);
81
+ };
82
+ };
83
+
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvbm9kZVJlYWx0aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7V2ViU29ja2V0U2VydmVyfSBmcm9tICd3cyc7XG5cbmltcG9ydCB0eXBlIHtTZXJ2ZXJ9IGZyb20gJ25vZGU6aHR0cCc7XG5cbi8qKiBBdXRoZW50aWNhdGUgdGhlIGZpcnN0IGZyYW1lOiBiZWFyZXIgdG9rZW5zIG5ldmVyIGFwcGVhciBpbiBVUkxzIG9yIHNvY2tldCBsb2dzLiAqL1xuZXhwb3J0IGNvbnN0IGF0dGFjaEF1dGhlbnRpY2F0ZWRSZWFsdGltZSA9IDxUVXNlciBleHRlbmRzIHtpZDogc3RyaW5nfSwgVEV2ZW50PihzZXJ2ZXI6IFNlcnZlciwgb3B0aW9uczoge1xuICBhbGxvd2VkT3JpZ2luczogc3RyaW5nW107XG4gIGF1dGhlbnRpY2F0aW9uVGltZW91dE1zPzogbnVtYmVyO1xuICB2ZXJpZmljYXRpb25JbnRlcnZhbE1zPzogbnVtYmVyO1xuICBpZGVudGlmeTogKGF1dGhvcml6YXRpb24/OiBzdHJpbmcpID0+IFByb21pc2U8VFVzZXIgfCBudWxsPjtcbiAgaW5pdGlhbEV2ZW50OiBURXZlbnQ7XG4gIHBhdGg6IHN0cmluZztcbiAgc3Vic2NyaWJlOiAodXNlcjogVFVzZXIsIG5vdGlmeTogKGV2ZW50OiBURXZlbnQpID0+IHZvaWQpID0+IFByb21pc2U8KCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkPjtcbiAgdmFsaWRhdGVIb3N0PzogKGhvc3Q6IHN0cmluZykgPT4gYm9vbGVhbjtcbn0pOiB2b2lkID0+IHtcbiAgY29uc3Qgc29ja2V0cyA9IG5ldyBXZWJTb2NrZXRTZXJ2ZXIoe21heFBheWxvYWQ6IDEwMjQsIG5vU2VydmVyOiB0cnVlfSk7XG4gIHNlcnZlci5vbigndXBncmFkZScsIChyZXF1ZXN0LCBzb2NrZXQsIGhlYWQpID0+IHtcbiAgICBjb25zdCBvcmlnaW5zID0gb3B0aW9ucy5hbGxvd2VkT3JpZ2lucztcbiAgICBpZihyZXF1ZXN0LnVybCAhPT0gb3B0aW9ucy5wYXRoIHx8ICFvcmlnaW5zLmluY2x1ZGVzKHJlcXVlc3QuaGVhZGVycy5vcmlnaW4gfHwgJycpIHx8XG4gICAgICAob3B0aW9ucy52YWxpZGF0ZUhvc3QgJiYgIW9wdGlvbnMudmFsaWRhdGVIb3N0KHJlcXVlc3QuaGVhZGVycy5ob3N0IHx8ICcnKSkpIHtcbiAgICAgIHNvY2tldC5kZXN0cm95KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNvY2tldHMuaGFuZGxlVXBncmFkZShyZXF1ZXN0LCBzb2NrZXQsIGhlYWQsIChjbGllbnQpID0+IHtcbiAgICAgIGxldCB1bnN1YnNjcmliZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGF1dGhvcml6YXRpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCB1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGxldCBjaGVja2luZyA9IGZhbHNlO1xuICAgICAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gY2xpZW50LmNsb3NlKDEwMDgsICdBdXRoZW50aWNhdGlvbiByZXF1aXJlZCcpLCBvcHRpb25zLmF1dGhlbnRpY2F0aW9uVGltZW91dE1zID8/IDUwMDApO1xuICAgICAgY29uc3QgdmVyaWZ5ID0gYXN5bmMgKCk6IFByb21pc2U8Ym9vbGVhbj4gPT5cbiAgICAgICAgQm9vbGVhbih1c2VySWQgJiYgKGF3YWl0IG9wdGlvbnMuaWRlbnRpZnk/LihhdXRob3JpemF0aW9uKSk/LmlkID09PSB1c2VySWQpO1xuICAgICAgY29uc3QgZXhwaXJ5ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZihjaGVja2luZyB8fCAhdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNoZWNraW5nID0gdHJ1ZTtcbiAgICAgICAgdm9pZCB2ZXJpZnkoKS50aGVuKCh2YWxpZCkgPT4ge1xuICAgICAgICAgIGlmKCF2YWxpZCkge1xuICAgICAgICAgICAgY2xpZW50LmNsb3NlKDEwMDgsICdTZXNzaW9uIGV4cGlyZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKCgpID0+IGNsaWVudC5jbG9zZSgxMDExLCAnU2Vzc2lvbiB1bmF2YWlsYWJsZScpKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIGNoZWNraW5nID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9LCBvcHRpb25zLnZlcmlmaWNhdGlvbkludGVydmFsTXMgPz8gMzBfMDAwKTtcbiAgICAgIGNvbnN0IG5vdGlmeSA9IChldmVudDogVEV2ZW50ID0gb3B0aW9ucy5pbml0aWFsRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYoIWNsb3NlZCAmJiBjbGllbnQucmVhZHlTdGF0ZSA9PT0gMSAmJiBjbGllbnQuYnVmZmVyZWRBbW91bnQgPCA0MDk2KSB7XG4gICAgICAgICAgLy8gSW52YWxpZGF0aW9uIG9ubHk7IGFjdHVhbCBkYXRhIHJlcXVpcmVzIGEgZnJlc2ggYXV0aGVudGljYXRlZCBIVFRQIHJlcXVlc3QuXG4gICAgICAgICAgdm9pZCB2ZXJpZnkoKS50aGVuKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgaWYodmFsaWQgJiYgIWNsb3NlZCAmJiBjbGllbnQucmVhZHlTdGF0ZSA9PT0gMSkge1xuICAgICAgICAgICAgICBjbGllbnQuc2VuZChKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY2xpZW50LmNsb3NlKDEwMDgsICdTZXNzaW9uIGV4cGlyZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KS5jYXRjaCgoKSA9PiBjbGllbnQuY2xvc2UoMTAxMSwgJ1Nlc3Npb24gdW5hdmFpbGFibGUnKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjbGllbnQub25jZSgnbWVzc2FnZScsIChyYXcpID0+IHtcbiAgICAgICAgdm9pZCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKHJhdy50b1N0cmluZygpKSBhcyB7dG9rZW4/OiBzdHJpbmd9O1xuICAgICAgICAgIGF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7bWVzc2FnZS50b2tlbiB8fCAnJ31gO1xuICAgICAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBvcHRpb25zLmlkZW50aWZ5Py4oYXV0aG9yaXphdGlvbik7XG4gICAgICAgICAgaWYoIXVzZXIgfHwgY2xvc2VkKSB7XG4gICAgICAgICAgICBjbGllbnQuY2xvc2UoMTAwOCwgJ0ludmFsaWQgc2Vzc2lvbicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB1c2VySWQgPSB1c2VyLmlkO1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB1bnN1YnNjcmliZSA9IGF3YWl0IG9wdGlvbnMuc3Vic2NyaWJlKHVzZXIsIG5vdGlmeSk7XG4gICAgICAgICAgaWYoY2xvc2VkKSB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZT8uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vdGlmeSgpO1xuICAgICAgICB9KSgpLmNhdGNoKCgpID0+IGNsaWVudC5jbG9zZSgxMDA4LCAnSW52YWxpZCBzZXNzaW9uJykpO1xuICAgICAgfSk7XG4gICAgICBjbGllbnQub24oJ2Vycm9yJywgKCkgPT4gY2xpZW50LmNsb3NlKCkpO1xuICAgICAgY2xpZW50Lm9uY2UoJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgICBjbG9zZWQgPSB0cnVlO1xuICAgICAgICBjbGVhckludGVydmFsKGV4cGlyeSk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgdW5zdWJzY3JpYmU/LigpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBjbG9zZSA9IHNlcnZlci5jbG9zZS5iaW5kKHNlcnZlcik7XG4gIHNlcnZlci5jbG9zZSA9IChjYWxsYmFjaykgPT4ge1xuICAgIGZvcihjb25zdCBjbGllbnQgb2Ygc29ja2V0cy5jbGllbnRzKSB7XG4gICAgICBjbGllbnQudGVybWluYXRlKCk7XG4gICAgfVxuICAgIHNvY2tldHMuY2xvc2UoKTtcbiAgICByZXR1cm4gY2xvc2UoY2FsbGJhY2spO1xuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJXZWJTb2NrZXRTZXJ2ZXIiLCJhdHRhY2hBdXRoZW50aWNhdGVkUmVhbHRpbWUiLCJzZXJ2ZXIiLCJvcHRpb25zIiwic29ja2V0cyIsIm1heFBheWxvYWQiLCJub1NlcnZlciIsIm9uIiwicmVxdWVzdCIsInNvY2tldCIsImhlYWQiLCJvcmlnaW5zIiwiYWxsb3dlZE9yaWdpbnMiLCJ1cmwiLCJwYXRoIiwiaW5jbHVkZXMiLCJoZWFkZXJzIiwib3JpZ2luIiwidmFsaWRhdGVIb3N0IiwiaG9zdCIsImRlc3Ryb3kiLCJoYW5kbGVVcGdyYWRlIiwiY2xpZW50IiwidW5zdWJzY3JpYmUiLCJhdXRob3JpemF0aW9uIiwidXNlcklkIiwiY2hlY2tpbmciLCJjbG9zZWQiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImNsb3NlIiwiYXV0aGVudGljYXRpb25UaW1lb3V0TXMiLCJ2ZXJpZnkiLCJCb29sZWFuIiwiaWRlbnRpZnkiLCJpZCIsImV4cGlyeSIsInNldEludGVydmFsIiwidGhlbiIsInZhbGlkIiwiY2F0Y2giLCJmaW5hbGx5IiwidmVyaWZpY2F0aW9uSW50ZXJ2YWxNcyIsIm5vdGlmeSIsImV2ZW50IiwiaW5pdGlhbEV2ZW50IiwicmVhZHlTdGF0ZSIsImJ1ZmZlcmVkQW1vdW50Iiwic2VuZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJvbmNlIiwicmF3IiwibWVzc2FnZSIsInBhcnNlIiwidG9TdHJpbmciLCJ0b2tlbiIsInVzZXIiLCJjbGVhclRpbWVvdXQiLCJzdWJzY3JpYmUiLCJjbGVhckludGVydmFsIiwiYmluZCIsImNhbGxiYWNrIiwiY2xpZW50cyIsInRlcm1pbmF0ZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsZUFBZSxRQUFPLEtBQUs7QUFJbkMscUZBQXFGLEdBQ3JGLE9BQU8sTUFBTUMsOEJBQThCLENBQXFDQyxRQUFnQkM7SUFVOUYsTUFBTUMsVUFBVSxJQUFJSixnQkFBZ0I7UUFBQ0ssWUFBWTtRQUFNQyxVQUFVO0lBQUk7SUFDckVKLE9BQU9LLEVBQUUsQ0FBQyxXQUFXLENBQUNDLFNBQVNDLFFBQVFDO1FBQ3JDLE1BQU1DLFVBQVVSLFFBQVFTLGNBQWM7UUFDdEMsSUFBR0osUUFBUUssR0FBRyxLQUFLVixRQUFRVyxJQUFJLElBQUksQ0FBQ0gsUUFBUUksUUFBUSxDQUFDUCxRQUFRUSxPQUFPLENBQUNDLE1BQU0sSUFBSSxPQUM1RWQsUUFBUWUsWUFBWSxJQUFJLENBQUNmLFFBQVFlLFlBQVksQ0FBQ1YsUUFBUVEsT0FBTyxDQUFDRyxJQUFJLElBQUksS0FBTTtZQUM3RVYsT0FBT1csT0FBTztZQUNkO1FBQ0Y7UUFDQWhCLFFBQVFpQixhQUFhLENBQUNiLFNBQVNDLFFBQVFDLE1BQU0sQ0FBQ1k7WUFDNUMsSUFBSUM7WUFDSixJQUFJQztZQUNKLElBQUlDO1lBQ0osSUFBSUMsV0FBVztZQUNmLElBQUlDLFNBQVM7WUFDYixNQUFNQyxVQUFVQyxXQUFXLElBQU1QLE9BQU9RLEtBQUssQ0FBQyxNQUFNLDRCQUE0QjNCLFFBQVE0Qix1QkFBdUIsSUFBSTtZQUNuSCxNQUFNQyxTQUFTLFVBQ2JDLFFBQVFSLFVBQVUsQUFBQyxDQUFBLE1BQU10QixRQUFRK0IsUUFBUSxHQUFHVixjQUFhLEdBQUlXLE9BQU9WO1lBQ3RFLE1BQU1XLFNBQVNDLFlBQVk7Z0JBQ3pCLElBQUdYLFlBQVksQ0FBQ0QsUUFBUTtvQkFDdEI7Z0JBQ0Y7Z0JBQ0FDLFdBQVc7Z0JBQ1gsS0FBS00sU0FBU00sSUFBSSxDQUFDLENBQUNDO29CQUNsQixJQUFHLENBQUNBLE9BQU87d0JBQ1RqQixPQUFPUSxLQUFLLENBQUMsTUFBTTtvQkFDckI7Z0JBQ0YsR0FDR1UsS0FBSyxDQUFDLElBQU1sQixPQUFPUSxLQUFLLENBQUMsTUFBTSx3QkFBd0JXLE9BQU8sQ0FBQztvQkFDOURmLFdBQVc7Z0JBQ2I7WUFDSixHQUFHdkIsUUFBUXVDLHNCQUFzQixJQUFJO1lBQ3JDLE1BQU1DLFNBQVMsQ0FBQ0MsUUFBZ0J6QyxRQUFRMEMsWUFBWTtnQkFDbEQsSUFBRyxDQUFDbEIsVUFBVUwsT0FBT3dCLFVBQVUsS0FBSyxLQUFLeEIsT0FBT3lCLGNBQWMsR0FBRyxNQUFNO29CQUNyRSw4RUFBOEU7b0JBQzlFLEtBQUtmLFNBQVNNLElBQUksQ0FBQyxDQUFDQzt3QkFDbEIsSUFBR0EsU0FBUyxDQUFDWixVQUFVTCxPQUFPd0IsVUFBVSxLQUFLLEdBQUc7NEJBQzlDeEIsT0FBTzBCLElBQUksQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDTjt3QkFDN0IsT0FBTzs0QkFDTHRCLE9BQU9RLEtBQUssQ0FBQyxNQUFNO3dCQUNyQjtvQkFDRixHQUFHVSxLQUFLLENBQUMsSUFBTWxCLE9BQU9RLEtBQUssQ0FBQyxNQUFNO2dCQUNwQztZQUNGO1lBQ0FSLE9BQU82QixJQUFJLENBQUMsV0FBVyxDQUFDQztnQkFDdEIsS0FBSyxBQUFDLENBQUE7b0JBQ0osTUFBTUMsVUFBVUosS0FBS0ssS0FBSyxDQUFDRixJQUFJRyxRQUFRO29CQUN2Qy9CLGdCQUFnQixDQUFDLE9BQU8sRUFBRTZCLFFBQVFHLEtBQUssSUFBSSxJQUFJO29CQUMvQyxNQUFNQyxPQUFPLE1BQU10RCxRQUFRK0IsUUFBUSxHQUFHVjtvQkFDdEMsSUFBRyxDQUFDaUMsUUFBUTlCLFFBQVE7d0JBQ2xCTCxPQUFPUSxLQUFLLENBQUMsTUFBTTt3QkFDbkI7b0JBQ0Y7b0JBQ0FMLFNBQVNnQyxLQUFLdEIsRUFBRTtvQkFDaEJ1QixhQUFhOUI7b0JBQ2JMLGNBQWMsTUFBTXBCLFFBQVF3RCxTQUFTLENBQUNGLE1BQU1kO29CQUM1QyxJQUFHaEIsUUFBUTt3QkFDVEo7d0JBQ0E7b0JBQ0Y7b0JBQ0FvQjtnQkFDRixDQUFBLElBQUtILEtBQUssQ0FBQyxJQUFNbEIsT0FBT1EsS0FBSyxDQUFDLE1BQU07WUFDdEM7WUFDQVIsT0FBT2YsRUFBRSxDQUFDLFNBQVMsSUFBTWUsT0FBT1EsS0FBSztZQUNyQ1IsT0FBTzZCLElBQUksQ0FBQyxTQUFTO2dCQUNuQnhCLFNBQVM7Z0JBQ1RpQyxjQUFjeEI7Z0JBQ2RzQixhQUFhOUI7Z0JBQ2JMO1lBQ0Y7UUFDRjtJQUNGO0lBQ0EsTUFBTU8sUUFBUTVCLE9BQU80QixLQUFLLENBQUMrQixJQUFJLENBQUMzRDtJQUNoQ0EsT0FBTzRCLEtBQUssR0FBRyxDQUFDZ0M7UUFDZCxLQUFJLE1BQU14QyxVQUFVbEIsUUFBUTJELE9BQU8sQ0FBRTtZQUNuQ3pDLE9BQU8wQyxTQUFTO1FBQ2xCO1FBQ0E1RCxRQUFRMEIsS0FBSztRQUNiLE9BQU9BLE1BQU1nQztJQUNmO0FBQ0YsRUFBRSJ9
@@ -0,0 +1,4 @@
1
+ export declare const createOpaqueToken: () => string;
2
+ export declare const hashOpaqueToken: (token: string) => string;
3
+ export declare const isOpaqueToken: (token: unknown) => token is string;
4
+ export declare const readOpaqueBearerToken: (authorization?: string) => string | undefined;
@@ -0,0 +1,7 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ export const createOpaqueToken = ()=>randomBytes(32).toString('base64url');
3
+ export const hashOpaqueToken = (token)=>createHash('sha256').update(token).digest('hex');
4
+ export const isOpaqueToken = (token)=>typeof token === 'string' && /^[A-Za-z0-9_-]{43}$/.test(token);
5
+ export const readOpaqueBearerToken = (authorization = '')=>/^Bearer ([A-Za-z0-9_-]{43})$/i.exec(authorization)?.[1];
6
+
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvb3BhcXVlVG9rZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVIYXNoLCByYW5kb21CeXRlc30gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlT3BhcXVlVG9rZW4gPSAoKTogc3RyaW5nID0+IHJhbmRvbUJ5dGVzKDMyKS50b1N0cmluZygnYmFzZTY0dXJsJyk7XG5leHBvcnQgY29uc3QgaGFzaE9wYXF1ZVRva2VuID0gKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHRva2VuKS5kaWdlc3QoJ2hleCcpO1xuZXhwb3J0IGNvbnN0IGlzT3BhcXVlVG9rZW4gPSAodG9rZW46IHVua25vd24pOiB0b2tlbiBpcyBzdHJpbmcgPT4gdHlwZW9mIHRva2VuID09PSAnc3RyaW5nJyAmJiAvXltBLVphLXowLTlfLV17NDN9JC8udGVzdCh0b2tlbik7XG5leHBvcnQgY29uc3QgcmVhZE9wYXF1ZUJlYXJlclRva2VuID0gKGF1dGhvcml6YXRpb24gPSAnJyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiAvXkJlYXJlciAoW0EtWmEtejAtOV8tXXs0M30pJC9pLmV4ZWMoYXV0aG9yaXphdGlvbik/LlsxXTtcbiJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicmFuZG9tQnl0ZXMiLCJjcmVhdGVPcGFxdWVUb2tlbiIsInRvU3RyaW5nIiwiaGFzaE9wYXF1ZVRva2VuIiwidG9rZW4iLCJ1cGRhdGUiLCJkaWdlc3QiLCJpc09wYXF1ZVRva2VuIiwidGVzdCIsInJlYWRPcGFxdWVCZWFyZXJUb2tlbiIsImF1dGhvcml6YXRpb24iLCJleGVjIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxVQUFVLEVBQUVDLFdBQVcsUUFBTyxjQUFjO0FBRXBELE9BQU8sTUFBTUMsb0JBQW9CLElBQWNELFlBQVksSUFBSUUsUUFBUSxDQUFDLGFBQWE7QUFDckYsT0FBTyxNQUFNQyxrQkFBa0IsQ0FBQ0MsUUFBMEJMLFdBQVcsVUFBVU0sTUFBTSxDQUFDRCxPQUFPRSxNQUFNLENBQUMsT0FBTztBQUMzRyxPQUFPLE1BQU1DLGdCQUFnQixDQUFDSCxRQUFvQyxPQUFPQSxVQUFVLFlBQVksc0JBQXNCSSxJQUFJLENBQUNKLE9BQU87QUFDakksT0FBTyxNQUFNSyx3QkFBd0IsQ0FBQ0MsZ0JBQWdCLEVBQUUsR0FBeUIsZ0NBQWdDQyxJQUFJLENBQUNELGdCQUFnQixDQUFDLEVBQUUsQ0FBQyJ9
@@ -242,4 +242,4 @@ RETURN doc`;
242
242
  }
243
243
  };
244
244
 
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL3F1ZXJ5QnVpbGRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0aW9uT3B0aW9ucyxcbiAgQWdncmVnYXRpb25UeXBlLFxuICBRdWVyeU9wdGlvbnMsXG4gIFNlYXJjaE9wdGlvbnNcbn0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgYnVpbGRGaWVsZFNlbGVjdGlvbixcbiAgYnVpbGRGaWx0ZXJDbGF1c2UsXG4gIGJ1aWxkTGltaXRDbGF1c2UsXG4gIGJ1aWxkU29ydENsYXVzZSxcbiAgc2FuaXRpemVDb2xsZWN0aW9uTmFtZSxcbiAgc2FuaXRpemVGaWVsZE5hbWVcbn0gZnJvbSAnLi9hcWxIZWxwZXJzLmpzJztcblxuLyoqXG4gKiBCdWlsZCBhIHF1ZXJ5IGZyb20gUXVlcnlPcHRpb25zXG4gKiBSZXR1cm5zIGEgcXVlcnkgc3RyaW5nIHRoYXQgY2FuIGJlIGV4ZWN1dGVkXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5ID0gKG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xsZWN0aW9uLFxuICAgIGZpbHRlcnMsXG4gICAgc29ydCxcbiAgICBsaW1pdCxcbiAgICBmaWVsZHMsXG4gICAgaW5jbHVkZUN1c3RvbUZpZWxkcyA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFNhbml0aXplIGNvbGxlY3Rpb24gbmFtZVxuICBjb25zdCBzYW5pdGl6ZWRDb2xsZWN0aW9uID0gc2FuaXRpemVDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uKTtcblxuICAvLyBCdWlsZCBxdWVyeSBwYXJ0c1xuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBmaWx0ZXJzID8gYnVpbGRGaWx0ZXJDbGF1c2UoZmlsdGVycywgJ2RvYycpIDogJyc7XG4gIGNvbnN0IHNvcnRDbGF1c2UgPSBzb3J0ICYmIHNvcnQubGVuZ3RoID4gMCA/IGJ1aWxkU29ydENsYXVzZShbLi4uc29ydF0sICdkb2MnKSA6ICcnO1xuICBjb25zdCBsaW1pdENsYXVzZSA9IGJ1aWxkTGltaXRDbGF1c2UobGltaXQpO1xuICBjb25zdCBmaWVsZFNlbGVjdGlvbiA9IGJ1aWxkRmllbGRTZWxlY3Rpb24oZmllbGRzID8gQXJyYXkuZnJvbShmaWVsZHMpIDogW10sIGluY2x1ZGVDdXN0b21GaWVsZHMsICdkb2MnKTtcblxuICAvLyBCdWlsZCB0aGUgZnVsbCBxdWVyeSBzdHJpbmdcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gYEZPUiBkb2MgSU4gJHtzYW5pdGl6ZWRDb2xsZWN0aW9ufWA7XG5cbiAgaWYoZmlsdGVyQ2xhdXNlKSB7XG4gICAgcXVlcnlTdHJpbmcgKz0gYFxcbkZJTFRFUiAke2ZpbHRlckNsYXVzZX1gO1xuICB9XG5cbiAgaWYoc29ydENsYXVzZSkge1xuICAgIHF1ZXJ5U3RyaW5nICs9IGBcXG4ke3NvcnRDbGF1c2V9YDtcbiAgfVxuXG4gIGlmKGxpbWl0Q2xhdXNlKSB7XG4gICAgcXVlcnlTdHJpbmcgKz0gYFxcbiR7bGltaXRDbGF1c2V9YDtcbiAgfVxuXG4gIHF1ZXJ5U3RyaW5nICs9IGBcXG5SRVRVUk4gJHtmaWVsZFNlbGVjdGlvbn1gO1xuXG4gIHJldHVybiBxdWVyeVN0cmluZztcbn07XG5cbi8qKlxuICogQnVpbGQgYW4gYWdncmVnYXRpb24gcXVlcnlcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdncmVnYXRpb25RdWVyeSA9IChvcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvbnMpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7Y29sbGVjdGlvbiwgdHlwZSwgZmllbGQsIGZpbHRlcnN9ID0gb3B0aW9ucztcblxuICBjb25zdCBzYW5pdGl6ZWRDb2xsZWN0aW9uID0gc2FuaXRpemVDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uKTtcbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gZmlsdGVycyA/IGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMsICdkb2MnKSA6ICcnO1xuXG4gIGxldCBhZ2dyZWdhdGlvbkV4cHJlc3Npb246IHN0cmluZztcblxuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgJ0NPVU5UJzpcbiAgICAgIGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiA9ICdMRU5HVEgoaXRlbXMpJztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnU1VNJzpcbiAgICAgIGlmKCFmaWVsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NVTSBhZ2dyZWdhdGlvbiByZXF1aXJlcyBhIGZpZWxkJyk7XG4gICAgICB9XG4gICAgICB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpO1xuICAgICAgICBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBgU1VNKGl0ZW1zWypdLiR7c2FuaXRpemVkRmllbGR9KWA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ0FWRyc6XG4gICAgICBpZighZmllbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBVkcgYWdncmVnYXRpb24gcmVxdWlyZXMgYSBmaWVsZCcpO1xuICAgICAgfVxuICAgICAge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGROYW1lKGZpZWxkKTtcbiAgICAgICAgYWdncmVnYXRpb25FeHByZXNzaW9uID0gYEFWRVJBR0UoaXRlbXNbKl0uJHtzYW5pdGl6ZWRGaWVsZH0pYDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnTUlOJzpcbiAgICAgIGlmKCFmaWVsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01JTiBhZ2dyZWdhdGlvbiByZXF1aXJlcyBhIGZpZWxkJyk7XG4gICAgICB9XG4gICAgICB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpO1xuICAgICAgICBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBgTUlOKGl0ZW1zWypdLiR7c2FuaXRpemVkRmllbGR9KWA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ01BWCc6XG4gICAgICBpZighZmllbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNQVggYWdncmVnYXRpb24gcmVxdWlyZXMgYSBmaWVsZCcpO1xuICAgICAgfVxuICAgICAge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRGaWVsZCA9IHNhbml0aXplRmllbGROYW1lKGZpZWxkKTtcbiAgICAgICAgYWdncmVnYXRpb25FeHByZXNzaW9uID0gYE1BWChpdGVtc1sqXS4ke3Nhbml0aXplZEZpZWxkfSlgO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBhZ2dyZWdhdGlvbiB0eXBlOiAke3R5cGV9YCk7XG4gIH1cblxuICBsZXQgcXVlcnlTdHJpbmcgPSBgTEVUIGl0ZW1zID0gKFxuICAgIEZPUiBkb2MgSU4gJHtzYW5pdGl6ZWRDb2xsZWN0aW9ufWA7XG5cbiAgaWYoZmlsdGVyQ2xhdXNlKSB7XG4gICAgcXVlcnlTdHJpbmcgKz0gYFxcbiAgICBGSUxURVIgJHtmaWx0ZXJDbGF1c2V9YDtcbiAgfVxuXG4gIHF1ZXJ5U3RyaW5nICs9IGBcXG4gICAgUkVUVVJOIGRvY1xuICApXG4gIFJFVFVSTiB7XG4gICAgdHlwZTogXCIke3R5cGV9XCIsXG4gICAgJHtmaWVsZCA/IGBmaWVsZDogXCIke2ZpZWxkfVwiLGAgOiAnJ31cbiAgICB2YWx1ZTogJHthZ2dyZWdhdGlvbkV4cHJlc3Npb259XG4gIH1gO1xuXG4gIHJldHVybiBxdWVyeVN0cmluZztcbn07XG5cbi8qKlxuICogQnVpbGQgYSBtdWx0aS1jb2xsZWN0aW9uIHNlYXJjaCBxdWVyeVxuICovXG5leHBvcnQgY29uc3QgYnVpbGRTZWFyY2hRdWVyeSA9IChvcHRpb25zOiBTZWFyY2hPcHRpb25zKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge2NvbGxlY3Rpb25zLCBxdWVyeSwgc2VhcmNoRmllbGRzID0gW10sIGZpbHRlcnMsIGxpbWl0fSA9IG9wdGlvbnM7XG5cbiAgaWYoY29sbGVjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBvbmUgY29sbGVjdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VhcmNoJyk7XG4gIH1cblxuICBpZighcXVlcnkgfHwgcXVlcnkudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VhcmNoIHF1ZXJ5IGNhbm5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgLy8gU2FuaXRpemUgY29sbGVjdGlvbiBuYW1lc1xuICBjb25zdCBzYW5pdGl6ZWRDb2xsZWN0aW9ucyA9IGNvbGxlY3Rpb25zLm1hcCgoYykgPT4gc2FuaXRpemVDb2xsZWN0aW9uTmFtZShjKSk7XG5cbiAgLy8gQnVpbGQgdW5pb24gb2Ygc2VhcmNoZXMgYWNyb3NzIGFsbCBjb2xsZWN0aW9uc1xuICBjb25zdCBzZWFyY2hRdWVyaWVzID0gc2FuaXRpemVkQ29sbGVjdGlvbnMubWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkZpZWxkcyA9IHNlYXJjaEZpZWxkcy5sZW5ndGggPiAwXG4gICAgICA/IHNlYXJjaEZpZWxkc1xuICAgICAgOiBbJ25hbWUnLCAnY29udGVudCcsICdkZXNjcmlwdGlvbicsICd0aXRsZSddO1xuXG4gICAgbGV0IHN1YlF1ZXJ5ID0gYChcbiAgICAgIEZPUiBkb2MgSU4gJHtjb2xsZWN0aW9ufWA7XG5cbiAgICAvLyBBZGQgZmlsdGVyIGZvciBzZWFyY2ggYWNyb3NzIG11bHRpcGxlIGZpZWxkcyB1c2luZyBPUlxuICAgIGNvbnN0IHNlYXJjaENvbmRpdGlvbnMgPSBjb2xsZWN0aW9uRmllbGRzXG4gICAgICAubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNhbml0aXplRmllbGROYW1lKGZpZWxkKTtcbiAgICAgICAgICByZXR1cm4gYENPTlRBSU5TKExPV0VSKGRvYy4ke2ZpZWxkfSksICR7SlNPTi5zdHJpbmdpZnkocXVlcnkudG9Mb3dlckNhc2UoKSl9KWA7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoYykgPT4gYyAhPT0gbnVsbCk7XG5cbiAgICBpZihzZWFyY2hDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHN1YlF1ZXJ5ICs9IGBcXG4gICAgICBGSUxURVIgJHtzZWFyY2hDb25kaXRpb25zLmpvaW4oJyBPUiAnKX1gO1xuICAgIH1cblxuICAgIC8vIEFkZCBhZGRpdGlvbmFsIGZpbHRlcnMgaWYgcHJvdmlkZWRcbiAgICBpZihmaWx0ZXJzKSB7XG4gICAgICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBidWlsZEZpbHRlckNsYXVzZShmaWx0ZXJzLCAnZG9jJyk7XG4gICAgICBpZihmaWx0ZXJDbGF1c2UpIHtcbiAgICAgICAgc3ViUXVlcnkgKz0gYFxcbiAgICAgIEZJTFRFUiAke2ZpbHRlckNsYXVzZX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN1YlF1ZXJ5ICs9IGBcXG4gICAgICBSRVRVUk4gTUVSR0UoZG9jLCB7X2NvbGxlY3Rpb246IFwiJHtjb2xsZWN0aW9ufVwifSlcbiAgICApYDtcblxuICAgIHJldHVybiBzdWJRdWVyeTtcbiAgfSk7XG5cbiAgLy8gQ29tYmluZSBhbGwgc2VhcmNoZXMgd2l0aCBVTklPTiBhbmQgYXBwbHkgbGltaXQgdG8gZmluYWwgcmVzdWx0c1xuICBjb25zdCBsaW1pdENsYXVzZSA9IGJ1aWxkTGltaXRDbGF1c2UobGltaXQpO1xuICBsZXQgcXVlcnlTdHJpbmcgPSBgRk9SIGRvYyBJTiBVTklPTihcXG4gICR7c2VhcmNoUXVlcmllcy5qb2luKCcsXFxuICAnKX1cXG4pXG4ke2xpbWl0Q2xhdXNlfVxuUkVUVVJOIGRvY2A7XG5cbiAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBxdWVyeSBvcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVF1ZXJ5T3B0aW9ucyA9IChvcHRpb25zOiBRdWVyeU9wdGlvbnMpOiB2b2lkID0+IHtcbiAgaWYoIW9wdGlvbnMuY29sbGVjdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29sbGVjdGlvbiBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgY29sbGVjdGlvbiBuYW1lXG4gIHNhbml0aXplQ29sbGVjdGlvbk5hbWUob3B0aW9ucy5jb2xsZWN0aW9uKTtcblxuICAvLyBWYWxpZGF0ZSBmaWVsZHMgaWYgcHJvdmlkZWRcbiAgaWYob3B0aW9ucy5maWVsZHMgJiYgb3B0aW9ucy5maWVsZHMubGVuZ3RoID4gMCkge1xuICAgIG9wdGlvbnMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiBzYW5pdGl6ZUZpZWxkTmFtZShmaWVsZCkpO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgc29ydCBmaWVsZHMgaWYgcHJvdmlkZWRcbiAgaWYob3B0aW9ucy5zb3J0ICYmIG9wdGlvbnMuc29ydC5sZW5ndGggPiAwKSB7XG4gICAgb3B0aW9ucy5zb3J0LmZvckVhY2goKHNvcnRPcHQpID0+IHtcbiAgICAgIHNhbml0aXplRmllbGROYW1lKHNvcnRPcHQuZmllbGQpO1xuICAgICAgaWYoIVsnQVNDJywgJ0RFU0MnXS5pbmNsdWRlcyhzb3J0T3B0LmRpcmVjdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNvcnQgZGlyZWN0aW9uOiAke3NvcnRPcHQuZGlyZWN0aW9ufWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgbGltaXRcbiAgaWYob3B0aW9ucy5saW1pdCkge1xuICAgIGNvbnN0IHtmcm9tLCB0b30gPSBvcHRpb25zLmxpbWl0O1xuICAgIGlmKGZyb20gPCAwIHx8IHRvIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMaW1pdCB2YWx1ZXMgbXVzdCBiZSBub24tbmVnYXRpdmUnKTtcbiAgICB9XG4gICAgaWYoZnJvbSA+PSB0bykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMaW1pdCBcImZyb21cIiBtdXN0IGJlIGxlc3MgdGhhbiBcInRvXCInKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogVmFsaWRhdGUgc2VhcmNoIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlU2VhcmNoT3B0aW9ucyA9IChvcHRpb25zOiBTZWFyY2hPcHRpb25zKTogdm9pZCA9PiB7XG4gIGlmKCFvcHRpb25zLmNvbGxlY3Rpb25zIHx8IG9wdGlvbnMuY29sbGVjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBvbmUgY29sbGVjdGlvbiBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgaWYoIW9wdGlvbnMucXVlcnkgfHwgb3B0aW9ucy5xdWVyeS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZWFyY2ggcXVlcnkgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBjb2xsZWN0aW9uIG5hbWVzXG4gIG9wdGlvbnMuY29sbGVjdGlvbnMuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4gc2FuaXRpemVDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uKSk7XG5cbiAgLy8gVmFsaWRhdGUgc2VhcmNoIGZpZWxkcyBpZiBwcm92aWRlZFxuICBpZihvcHRpb25zLnNlYXJjaEZpZWxkcyAmJiBvcHRpb25zLnNlYXJjaEZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgb3B0aW9ucy5zZWFyY2hGaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHNhbml0aXplRmllbGROYW1lKGZpZWxkKSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBsaW1pdFxuICBpZihvcHRpb25zLmxpbWl0KSB7XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IG9wdGlvbnMubGltaXQ7XG4gICAgaWYoZnJvbSA8IDAgfHwgdG8gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xpbWl0IHZhbHVlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICBpZihmcm9tID49IHRvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xpbWl0IFwiZnJvbVwiIG11c3QgYmUgbGVzcyB0aGFuIFwidG9cIicpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhZ2dyZWdhdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZUFnZ3JlZ2F0aW9uT3B0aW9ucyA9IChvcHRpb25zOiBBZ2dyZWdhdGlvbk9wdGlvbnMpOiB2b2lkID0+IHtcbiAgaWYoIW9wdGlvbnMuY29sbGVjdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29sbGVjdGlvbiBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgaWYoIW9wdGlvbnMudHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQWdncmVnYXRpb24gdHlwZSBpcyByZXF1aXJlZCcpO1xuICB9XG5cbiAgY29uc3QgdmFsaWRUeXBlczogUmVhZG9ubHlBcnJheTxBZ2dyZWdhdGlvblR5cGU+ID0gWydDT1VOVCcsICdTVU0nLCAnQVZHJywgJ01JTicsICdNQVgnXTtcbiAgaWYoIXZhbGlkVHlwZXMuaW5jbHVkZXMob3B0aW9ucy50eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhZ2dyZWdhdGlvbiB0eXBlOiAke29wdGlvbnMudHlwZX1gKTtcbiAgfVxuXG4gIGlmKFsnU1VNJywgJ0FWRycsICdNSU4nLCAnTUFYJ10uaW5jbHVkZXMob3B0aW9ucy50eXBlKSAmJiAhb3B0aW9ucy5maWVsZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtvcHRpb25zLnR5cGV9IGFnZ3JlZ2F0aW9uIHJlcXVpcmVzIGEgZmllbGRgKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGNvbGxlY3Rpb24gbmFtZVxuICBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lKG9wdGlvbnMuY29sbGVjdGlvbik7XG5cbiAgLy8gVmFsaWRhdGUgZmllbGQgaWYgcHJvdmlkZWRcbiAgaWYob3B0aW9ucy5maWVsZCkge1xuICAgIHNhbml0aXplRmllbGROYW1lKG9wdGlvbnMuZmllbGQpO1xuICB9XG59O1xuIl0sIm5hbWVzIjpbImJ1aWxkRmllbGRTZWxlY3Rpb24iLCJidWlsZEZpbHRlckNsYXVzZSIsImJ1aWxkTGltaXRDbGF1c2UiLCJidWlsZFNvcnRDbGF1c2UiLCJzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lIiwic2FuaXRpemVGaWVsZE5hbWUiLCJidWlsZFF1ZXJ5Iiwib3B0aW9ucyIsImNvbGxlY3Rpb24iLCJmaWx0ZXJzIiwic29ydCIsImxpbWl0IiwiZmllbGRzIiwiaW5jbHVkZUN1c3RvbUZpZWxkcyIsInNhbml0aXplZENvbGxlY3Rpb24iLCJmaWx0ZXJDbGF1c2UiLCJzb3J0Q2xhdXNlIiwibGVuZ3RoIiwibGltaXRDbGF1c2UiLCJmaWVsZFNlbGVjdGlvbiIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U3RyaW5nIiwiYnVpbGRBZ2dyZWdhdGlvblF1ZXJ5IiwidHlwZSIsImZpZWxkIiwiYWdncmVnYXRpb25FeHByZXNzaW9uIiwiRXJyb3IiLCJzYW5pdGl6ZWRGaWVsZCIsImJ1aWxkU2VhcmNoUXVlcnkiLCJjb2xsZWN0aW9ucyIsInF1ZXJ5Iiwic2VhcmNoRmllbGRzIiwidHJpbSIsInNhbml0aXplZENvbGxlY3Rpb25zIiwibWFwIiwiYyIsInNlYXJjaFF1ZXJpZXMiLCJjb2xsZWN0aW9uRmllbGRzIiwic3ViUXVlcnkiLCJzZWFyY2hDb25kaXRpb25zIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvTG93ZXJDYXNlIiwiZmlsdGVyIiwiam9pbiIsInZhbGlkYXRlUXVlcnlPcHRpb25zIiwiZm9yRWFjaCIsInNvcnRPcHQiLCJpbmNsdWRlcyIsImRpcmVjdGlvbiIsInRvIiwidmFsaWRhdGVTZWFyY2hPcHRpb25zIiwidmFsaWRhdGVBZ2dyZWdhdGlvbk9wdGlvbnMiLCJ2YWxpZFR5cGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FRRCxTQUNFQSxtQkFBbUIsRUFDbkJDLGlCQUFpQixFQUNqQkMsZ0JBQWdCLEVBQ2hCQyxlQUFlLEVBQ2ZDLHNCQUFzQixFQUN0QkMsaUJBQWlCLFFBQ1osa0JBQWtCO0FBRXpCOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUMsYUFBYSxDQUFDQztJQUN6QixNQUFNLEVBQ0pDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxJQUFJLEVBQ0pDLEtBQUssRUFDTEMsTUFBTSxFQUNOQyxzQkFBc0IsS0FBSyxFQUM1QixHQUFHTjtJQUVKLDJCQUEyQjtJQUMzQixNQUFNTyxzQkFBc0JWLHVCQUF1Qkk7SUFFbkQsb0JBQW9CO0lBQ3BCLE1BQU1PLGVBQWVOLFVBQVVSLGtCQUFrQlEsU0FBUyxTQUFTO0lBQ25FLE1BQU1PLGFBQWFOLFFBQVFBLEtBQUtPLE1BQU0sR0FBRyxJQUFJZCxnQkFBZ0I7V0FBSU87S0FBSyxFQUFFLFNBQVM7SUFDakYsTUFBTVEsY0FBY2hCLGlCQUFpQlM7SUFDckMsTUFBTVEsaUJBQWlCbkIsb0JBQW9CWSxTQUFTUSxNQUFNQyxJQUFJLENBQUNULFVBQVUsRUFBRSxFQUFFQyxxQkFBcUI7SUFFbEcsOEJBQThCO0lBQzlCLElBQUlTLGNBQWMsQ0FBQyxXQUFXLEVBQUVSLHFCQUFxQjtJQUVyRCxJQUFHQyxjQUFjO1FB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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvcXVlcnlCdWlsZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQWdncmVnYXRpb25PcHRpb25zLFxuICBBZ2dyZWdhdGlvblR5cGUsXG4gIFF1ZXJ5T3B0aW9ucyxcbiAgU2VhcmNoT3B0aW9uc1xufSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5pbXBvcnQge1xuICBidWlsZEZpZWxkU2VsZWN0aW9uLFxuICBidWlsZEZpbHRlckNsYXVzZSxcbiAgYnVpbGRMaW1pdENsYXVzZSxcbiAgYnVpbGRTb3J0Q2xhdXNlLFxuICBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lLFxuICBzYW5pdGl6ZUZpZWxkTmFtZVxufSBmcm9tICcuL2FxbEhlbHBlcnMuanMnO1xuXG4vKipcbiAqIEJ1aWxkIGEgcXVlcnkgZnJvbSBRdWVyeU9wdGlvbnNcbiAqIFJldHVybnMgYSBxdWVyeSBzdHJpbmcgdGhhdCBjYW4gYmUgZXhlY3V0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkUXVlcnkgPSAob3B0aW9uczogUXVlcnlPcHRpb25zKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbGxlY3Rpb24sXG4gICAgZmlsdGVycyxcbiAgICBzb3J0LFxuICAgIGxpbWl0LFxuICAgIGZpZWxkcyxcbiAgICBpbmNsdWRlQ3VzdG9tRmllbGRzID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gU2FuaXRpemUgY29sbGVjdGlvbiBuYW1lXG4gIGNvbnN0IHNhbml0aXplZENvbGxlY3Rpb24gPSBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lKGNvbGxlY3Rpb24pO1xuXG4gIC8vIEJ1aWxkIHF1ZXJ5IHBhcnRzXG4gIGNvbnN0IGZpbHRlckNsYXVzZSA9IGZpbHRlcnMgPyBidWlsZEZpbHRlckNsYXVzZShmaWx0ZXJzLCAnZG9jJykgOiAnJztcbiAgY29uc3Qgc29ydENsYXVzZSA9IHNvcnQgJiYgc29ydC5sZW5ndGggPiAwID8gYnVpbGRTb3J0Q2xhdXNlKFsuLi5zb3J0XSwgJ2RvYycpIDogJyc7XG4gIGNvbnN0IGxpbWl0Q2xhdXNlID0gYnVpbGRMaW1pdENsYXVzZShsaW1pdCk7XG4gIGNvbnN0IGZpZWxkU2VsZWN0aW9uID0gYnVpbGRGaWVsZFNlbGVjdGlvbihmaWVsZHMgPyBBcnJheS5mcm9tKGZpZWxkcykgOiBbXSwgaW5jbHVkZUN1c3RvbUZpZWxkcywgJ2RvYycpO1xuXG4gIC8vIEJ1aWxkIHRoZSBmdWxsIHF1ZXJ5IHN0cmluZ1xuICBsZXQgcXVlcnlTdHJpbmcgPSBgRk9SIGRvYyBJTiAke3Nhbml0aXplZENvbGxlY3Rpb259YDtcblxuICBpZihmaWx0ZXJDbGF1c2UpIHtcbiAgICBxdWVyeVN0cmluZyArPSBgXFxuRklMVEVSICR7ZmlsdGVyQ2xhdXNlfWA7XG4gIH1cblxuICBpZihzb3J0Q2xhdXNlKSB7XG4gICAgcXVlcnlTdHJpbmcgKz0gYFxcbiR7c29ydENsYXVzZX1gO1xuICB9XG5cbiAgaWYobGltaXRDbGF1c2UpIHtcbiAgICBxdWVyeVN0cmluZyArPSBgXFxuJHtsaW1pdENsYXVzZX1gO1xuICB9XG5cbiAgcXVlcnlTdHJpbmcgKz0gYFxcblJFVFVSTiAke2ZpZWxkU2VsZWN0aW9ufWA7XG5cbiAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xufTtcblxuLyoqXG4gKiBCdWlsZCBhbiBhZ2dyZWdhdGlvbiBxdWVyeVxuICovXG5leHBvcnQgY29uc3QgYnVpbGRBZ2dyZWdhdGlvblF1ZXJ5ID0gKG9wdGlvbnM6IEFnZ3JlZ2F0aW9uT3B0aW9ucyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHtjb2xsZWN0aW9uLCB0eXBlLCBmaWVsZCwgZmlsdGVyc30gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHNhbml0aXplZENvbGxlY3Rpb24gPSBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lKGNvbGxlY3Rpb24pO1xuICBjb25zdCBmaWx0ZXJDbGF1c2UgPSBmaWx0ZXJzID8gYnVpbGRGaWx0ZXJDbGF1c2UoZmlsdGVycywgJ2RvYycpIDogJyc7XG5cbiAgbGV0IGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnQ09VTlQnOlxuICAgICAgYWdncmVnYXRpb25FeHByZXNzaW9uID0gJ0xFTkdUSChpdGVtcyknO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdTVU0nOlxuICAgICAgaWYoIWZpZWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU1VNIGFnZ3JlZ2F0aW9uIHJlcXVpcmVzIGEgZmllbGQnKTtcbiAgICAgIH1cbiAgICAgIHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkTmFtZShmaWVsZCk7XG4gICAgICAgIGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiA9IGBTVU0oaXRlbXNbKl0uJHtzYW5pdGl6ZWRGaWVsZH0pYDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnQVZHJzpcbiAgICAgIGlmKCFmaWVsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FWRyBhZ2dyZWdhdGlvbiByZXF1aXJlcyBhIGZpZWxkJyk7XG4gICAgICB9XG4gICAgICB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpO1xuICAgICAgICBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBgQVZFUkFHRShpdGVtc1sqXS4ke3Nhbml0aXplZEZpZWxkfSlgO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdNSU4nOlxuICAgICAgaWYoIWZpZWxkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTUlOIGFnZ3JlZ2F0aW9uIHJlcXVpcmVzIGEgZmllbGQnKTtcbiAgICAgIH1cbiAgICAgIHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkRmllbGQgPSBzYW5pdGl6ZUZpZWxkTmFtZShmaWVsZCk7XG4gICAgICAgIGFnZ3JlZ2F0aW9uRXhwcmVzc2lvbiA9IGBNSU4oaXRlbXNbKl0uJHtzYW5pdGl6ZWRGaWVsZH0pYDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnTUFYJzpcbiAgICAgIGlmKCFmaWVsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01BWCBhZ2dyZWdhdGlvbiByZXF1aXJlcyBhIGZpZWxkJyk7XG4gICAgICB9XG4gICAgICB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZEZpZWxkID0gc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpO1xuICAgICAgICBhZ2dyZWdhdGlvbkV4cHJlc3Npb24gPSBgTUFYKGl0ZW1zWypdLiR7c2FuaXRpemVkRmllbGR9KWA7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFnZ3JlZ2F0aW9uIHR5cGU6ICR7dHlwZX1gKTtcbiAgfVxuXG4gIGxldCBxdWVyeVN0cmluZyA9IGBMRVQgaXRlbXMgPSAoXG4gICAgRk9SIGRvYyBJTiAke3Nhbml0aXplZENvbGxlY3Rpb259YDtcblxuICBpZihmaWx0ZXJDbGF1c2UpIHtcbiAgICBxdWVyeVN0cmluZyArPSBgXFxuICAgIEZJTFRFUiAke2ZpbHRlckNsYXVzZX1gO1xuICB9XG5cbiAgcXVlcnlTdHJpbmcgKz0gYFxcbiAgICBSRVRVUk4gZG9jXG4gIClcbiAgUkVUVVJOIHtcbiAgICB0eXBlOiBcIiR7dHlwZX1cIixcbiAgICAke2ZpZWxkID8gYGZpZWxkOiBcIiR7ZmllbGR9XCIsYCA6ICcnfVxuICAgIHZhbHVlOiAke2FnZ3JlZ2F0aW9uRXhwcmVzc2lvbn1cbiAgfWA7XG5cbiAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xufTtcblxuLyoqXG4gKiBCdWlsZCBhIG11bHRpLWNvbGxlY3Rpb24gc2VhcmNoIHF1ZXJ5XG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZFNlYXJjaFF1ZXJ5ID0gKG9wdGlvbnM6IFNlYXJjaE9wdGlvbnMpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7Y29sbGVjdGlvbnMsIHF1ZXJ5LCBzZWFyY2hGaWVsZHMgPSBbXSwgZmlsdGVycywgbGltaXR9ID0gb3B0aW9ucztcblxuICBpZihjb2xsZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBjb2xsZWN0aW9uIG11c3QgYmUgc3BlY2lmaWVkIGZvciBzZWFyY2gnKTtcbiAgfVxuXG4gIGlmKCFxdWVyeSB8fCBxdWVyeS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZWFyY2ggcXVlcnkgY2Fubm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICAvLyBTYW5pdGl6ZSBjb2xsZWN0aW9uIG5hbWVzXG4gIGNvbnN0IHNhbml0aXplZENvbGxlY3Rpb25zID0gY29sbGVjdGlvbnMubWFwKChjKSA9PiBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lKGMpKTtcblxuICAvLyBCdWlsZCB1bmlvbiBvZiBzZWFyY2hlcyBhY3Jvc3MgYWxsIGNvbGxlY3Rpb25zXG4gIGNvbnN0IHNlYXJjaFF1ZXJpZXMgPSBzYW5pdGl6ZWRDb2xsZWN0aW9ucy5tYXAoKGNvbGxlY3Rpb24pID0+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uRmllbGRzID0gc2VhcmNoRmllbGRzLmxlbmd0aCA+IDBcbiAgICAgID8gc2VhcmNoRmllbGRzXG4gICAgICA6IFsnbmFtZScsICdjb250ZW50JywgJ2Rlc2NyaXB0aW9uJywgJ3RpdGxlJ107XG5cbiAgICBsZXQgc3ViUXVlcnkgPSBgKFxuICAgICAgRk9SIGRvYyBJTiAke2NvbGxlY3Rpb259YDtcblxuICAgIC8vIEFkZCBmaWx0ZXIgZm9yIHNlYXJjaCBhY3Jvc3MgbXVsdGlwbGUgZmllbGRzIHVzaW5nIE9SXG4gICAgY29uc3Qgc2VhcmNoQ29uZGl0aW9ucyA9IGNvbGxlY3Rpb25GaWVsZHNcbiAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpO1xuICAgICAgICAgIHJldHVybiBgQ09OVEFJTlMoTE9XRVIoZG9jLiR7ZmllbGR9KSwgJHtKU09OLnN0cmluZ2lmeShxdWVyeS50b0xvd2VyQ2FzZSgpKX0pYDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChjKSA9PiBjICE9PSBudWxsKTtcblxuICAgIGlmKHNlYXJjaENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgc3ViUXVlcnkgKz0gYFxcbiAgICAgIEZJTFRFUiAke3NlYXJjaENvbmRpdGlvbnMuam9pbignIE9SICcpfWA7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgZmlsdGVycyBpZiBwcm92aWRlZFxuICAgIGlmKGZpbHRlcnMpIHtcbiAgICAgIGNvbnN0IGZpbHRlckNsYXVzZSA9IGJ1aWxkRmlsdGVyQ2xhdXNlKGZpbHRlcnMsICdkb2MnKTtcbiAgICAgIGlmKGZpbHRlckNsYXVzZSkge1xuICAgICAgICBzdWJRdWVyeSArPSBgXFxuICAgICAgRklMVEVSICR7ZmlsdGVyQ2xhdXNlfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3ViUXVlcnkgKz0gYFxcbiAgICAgIFJFVFVSTiBNRVJHRShkb2MsIHtfY29sbGVjdGlvbjogXCIke2NvbGxlY3Rpb259XCJ9KVxuICAgIClgO1xuXG4gICAgcmV0dXJuIHN1YlF1ZXJ5O1xuICB9KTtcblxuICAvLyBDb21iaW5lIGFsbCBzZWFyY2hlcyB3aXRoIFVOSU9OIGFuZCBhcHBseSBsaW1pdCB0byBmaW5hbCByZXN1bHRzXG4gIGNvbnN0IGxpbWl0Q2xhdXNlID0gYnVpbGRMaW1pdENsYXVzZShsaW1pdCk7XG4gIGxldCBxdWVyeVN0cmluZyA9IGBGT1IgZG9jIElOIFVOSU9OKFxcbiAgJHtzZWFyY2hRdWVyaWVzLmpvaW4oJyxcXG4gICcpfVxcbilcbiR7bGltaXRDbGF1c2V9XG5SRVRVUk4gZG9jYDtcblxuICByZXR1cm4gcXVlcnlTdHJpbmc7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIHF1ZXJ5IG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUXVlcnlPcHRpb25zID0gKG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IHZvaWQgPT4ge1xuICBpZighb3B0aW9ucy5jb2xsZWN0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb2xsZWN0aW9uIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBjb2xsZWN0aW9uIG5hbWVcbiAgc2FuaXRpemVDb2xsZWN0aW9uTmFtZShvcHRpb25zLmNvbGxlY3Rpb24pO1xuXG4gIC8vIFZhbGlkYXRlIGZpZWxkcyBpZiBwcm92aWRlZFxuICBpZihvcHRpb25zLmZpZWxkcyAmJiBvcHRpb25zLmZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgb3B0aW9ucy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHNhbml0aXplRmllbGROYW1lKGZpZWxkKSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzb3J0IGZpZWxkcyBpZiBwcm92aWRlZFxuICBpZihvcHRpb25zLnNvcnQgJiYgb3B0aW9ucy5zb3J0Lmxlbmd0aCA+IDApIHtcbiAgICBvcHRpb25zLnNvcnQuZm9yRWFjaCgoc29ydE9wdCkgPT4ge1xuICAgICAgc2FuaXRpemVGaWVsZE5hbWUoc29ydE9wdC5maWVsZCk7XG4gICAgICBpZighWydBU0MnLCAnREVTQyddLmluY2x1ZGVzKHNvcnRPcHQuZGlyZWN0aW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc29ydCBkaXJlY3Rpb246ICR7c29ydE9wdC5kaXJlY3Rpb259YCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBsaW1pdFxuICBpZihvcHRpb25zLmxpbWl0KSB7XG4gICAgY29uc3Qge2Zyb20sIHRvfSA9IG9wdGlvbnMubGltaXQ7XG4gICAgaWYoZnJvbSA8IDAgfHwgdG8gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xpbWl0IHZhbHVlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpO1xuICAgIH1cbiAgICBpZihmcm9tID49IHRvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xpbWl0IFwiZnJvbVwiIG11c3QgYmUgbGVzcyB0aGFuIFwidG9cIicpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBzZWFyY2ggb3B0aW9uc1xuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVTZWFyY2hPcHRpb25zID0gKG9wdGlvbnM6IFNlYXJjaE9wdGlvbnMpOiB2b2lkID0+IHtcbiAgaWYoIW9wdGlvbnMuY29sbGVjdGlvbnMgfHwgb3B0aW9ucy5jb2xsZWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBjb2xsZWN0aW9uIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBpZighb3B0aW9ucy5xdWVyeSB8fCBvcHRpb25zLnF1ZXJ5LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlYXJjaCBxdWVyeSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGNvbGxlY3Rpb24gbmFtZXNcbiAgb3B0aW9ucy5jb2xsZWN0aW9ucy5mb3JFYWNoKChjb2xsZWN0aW9uKSA9PiBzYW5pdGl6ZUNvbGxlY3Rpb25OYW1lKGNvbGxlY3Rpb24pKTtcblxuICAvLyBWYWxpZGF0ZSBzZWFyY2ggZmllbGRzIGlmIHByb3ZpZGVkXG4gIGlmKG9wdGlvbnMuc2VhcmNoRmllbGRzICYmIG9wdGlvbnMuc2VhcmNoRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICBvcHRpb25zLnNlYXJjaEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4gc2FuaXRpemVGaWVsZE5hbWUoZmllbGQpKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGxpbWl0XG4gIGlmKG9wdGlvbnMubGltaXQpIHtcbiAgICBjb25zdCB7ZnJvbSwgdG99ID0gb3B0aW9ucy5saW1pdDtcbiAgICBpZihmcm9tIDwgMCB8fCB0byA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGltaXQgdmFsdWVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIGlmKGZyb20gPj0gdG8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTGltaXQgXCJmcm9tXCIgbXVzdCBiZSBsZXNzIHRoYW4gXCJ0b1wiJyk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlIGFnZ3JlZ2F0aW9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQWdncmVnYXRpb25PcHRpb25zID0gKG9wdGlvbnM6IEFnZ3JlZ2F0aW9uT3B0aW9ucyk6IHZvaWQgPT4ge1xuICBpZighb3B0aW9ucy5jb2xsZWN0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb2xsZWN0aW9uIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBpZighb3B0aW9ucy50eXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBZ2dyZWdhdGlvbiB0eXBlIGlzIHJlcXVpcmVkJyk7XG4gIH1cblxuICBjb25zdCB2YWxpZFR5cGVzOiBSZWFkb25seUFycmF5PEFnZ3JlZ2F0aW9uVHlwZT4gPSBbJ0NPVU5UJywgJ1NVTScsICdBVkcnLCAnTUlOJywgJ01BWCddO1xuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyhvcHRpb25zLnR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFnZ3JlZ2F0aW9uIHR5cGU6ICR7b3B0aW9ucy50eXBlfWApO1xuICB9XG5cbiAgaWYoWydTVU0nLCAnQVZHJywgJ01JTicsICdNQVgnXS5pbmNsdWRlcyhvcHRpb25zLnR5cGUpICYmICFvcHRpb25zLmZpZWxkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke29wdGlvbnMudHlwZX0gYWdncmVnYXRpb24gcmVxdWlyZXMgYSBmaWVsZGApO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgY29sbGVjdGlvbiBuYW1lXG4gIHNhbml0aXplQ29sbGVjdGlvbk5hbWUob3B0aW9ucy5jb2xsZWN0aW9uKTtcblxuICAvLyBWYWxpZGF0ZSBmaWVsZCBpZiBwcm92aWRlZFxuICBpZihvcHRpb25zLmZpZWxkKSB7XG4gICAgc2FuaXRpemVGaWVsZE5hbWUob3B0aW9ucy5maWVsZCk7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiYnVpbGRGaWVsZFNlbGVjdGlvbiIsImJ1aWxkRmlsdGVyQ2xhdXNlIiwiYnVpbGRMaW1pdENsYXVzZSIsImJ1aWxkU29ydENsYXVzZSIsInNhbml0aXplQ29sbGVjdGlvbk5hbWUiLCJzYW5pdGl6ZUZpZWxkTmFtZSIsImJ1aWxkUXVlcnkiLCJvcHRpb25zIiwiY29sbGVjdGlvbiIsImZpbHRlcnMiLCJzb3J0IiwibGltaXQiLCJmaWVsZHMiLCJpbmNsdWRlQ3VzdG9tRmllbGRzIiwic2FuaXRpemVkQ29sbGVjdGlvbiIsImZpbHRlckNsYXVzZSIsInNvcnRDbGF1c2UiLCJsZW5ndGgiLCJsaW1pdENsYXVzZSIsImZpZWxkU2VsZWN0aW9uIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTdHJpbmciLCJidWlsZEFnZ3JlZ2F0aW9uUXVlcnkiLCJ0eXBlIiwiZmllbGQiLCJhZ2dyZWdhdGlvbkV4cHJlc3Npb24iLCJFcnJvciIsInNhbml0aXplZEZpZWxkIiwiYnVpbGRTZWFyY2hRdWVyeSIsImNvbGxlY3Rpb25zIiwicXVlcnkiLCJzZWFyY2hGaWVsZHMiLCJ0cmltIiwic2FuaXRpemVkQ29sbGVjdGlvbnMiLCJtYXAiLCJjIiwic2VhcmNoUXVlcmllcyIsImNvbGxlY3Rpb25GaWVsZHMiLCJzdWJRdWVyeSIsInNlYXJjaENvbmRpdGlvbnMiLCJKU09OIiwic3RyaW5naWZ5IiwidG9Mb3dlckNhc2UiLCJmaWx0ZXIiLCJqb2luIiwidmFsaWRhdGVRdWVyeU9wdGlvbnMiLCJmb3JFYWNoIiwic29ydE9wdCIsImluY2x1ZGVzIiwiZGlyZWN0aW9uIiwidG8iLCJ2YWxpZGF0ZVNlYXJjaE9wdGlvbnMiLCJ2YWxpZGF0ZUFnZ3JlZ2F0aW9uT3B0aW9ucyIsInZhbGlkVHlwZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQVFELFNBQ0VBLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLGVBQWUsRUFDZkMsc0JBQXNCLEVBQ3RCQyxpQkFBaUIsUUFDWixrQkFBa0I7QUFFekI7OztDQUdDLEdBQ0QsT0FBTyxNQUFNQyxhQUFhLENBQUNDO0lBQ3pCLE1BQU0sRUFDSkMsVUFBVSxFQUNWQyxPQUFPLEVBQ1BDLElBQUksRUFDSkMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLHNCQUFzQixLQUFLLEVBQzVCLEdBQUdOO0lBRUosMkJBQTJCO0lBQzNCLE1BQU1PLHNCQUFzQlYsdUJBQXVCSTtJQUVuRCxvQkFBb0I7SUFDcEIsTUFBTU8sZUFBZU4sVUFBVVIsa0JBQWtCUSxTQUFTLFNBQVM7SUFDbkUsTUFBTU8sYUFBYU4sUUFBUUEsS0FBS08sTUFBTSxHQUFHLElBQUlkLGdCQUFnQjtXQUFJTztLQUFLLEVBQUUsU0FBUztJQUNqRixNQUFNUSxjQUFjaEIsaUJBQWlCUztJQUNyQyxNQUFNUSxpQkFBaUJuQixvQkFBb0JZLFNBQVNRLE1BQU1DLElBQUksQ0FBQ1QsVUFBVSxFQUFFLEVBQUVDLHFCQUFxQjtJQUVsRyw4QkFBOEI7SUFDOUIsSUFBSVMsY0FBYyxDQUFDLFdBQVcsRUFBRVIscUJBQXFCO0lBRXJELElBQUdDLGNBQWM7UUFDZk8sZUFBZSxDQUFDLFNBQVMsRUFBRVAsY0FBYztJ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
@@ -93,4 +93,4 @@ ${fields}
93
93
  `;
94
94
  };
95
95
 
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL3NjaGVtYVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZXJNdXRhdGlvbnMgfSBmcm9tICcuLi9tdXRhdGlvbnMvaW5kZXguanMnO1xuaW1wb3J0IHsgdXNlclF1ZXJpZXMgfSBmcm9tICcuLi9xdWVyaWVzL2luZGV4LmpzJztcblxuZnVuY3Rpb24gZ2V0R3JhcGhRTFR5cGVTdHJpbmcodHlwZTogYW55KTogc3RyaW5nIHtcbiAgaWYgKCF0eXBlKSByZXR1cm4gJ1N0cmluZyc7XG5cbiAgLy8gSGFuZGxlIHN0cmluZyB0eXBlcyAobGlrZSAnU3RyaW5nIScsICdCb29sZWFuJywgZXRjLilcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykgcmV0dXJuIHR5cGU7XG5cbiAgLy8gSGFuZGxlIGdyYXBocWwtY29tcG9zZSB0eXBlcyAoSW5wdXRUeXBlQ29tcG9zZXIsIE9iamVjdFR5cGVDb21wb3NlcilcbiAgaWYgKHR5cGUuZ2V0VHlwZU5hbWUpIHtcbiAgICByZXR1cm4gdHlwZS5nZXRUeXBlTmFtZSgpO1xuICB9XG5cbiAgLy8gSGFuZGxlIEdyYXBoUUwgdHlwZSBvYmplY3RzXG4gIGlmICh0eXBlLm5hbWUpIHtcbiAgICByZXR1cm4gdHlwZS5uYW1lO1xuICB9XG5cbiAgLy8gSGFuZGxlIE5vbk51bGwgdHlwZVxuICBpZiAodHlwZS5vZlR5cGUpIHtcbiAgICBjb25zdCBiYXNlVHlwZSA9IGdldEdyYXBoUUxUeXBlU3RyaW5nKHR5cGUub2ZUeXBlKTtcbiAgICBpZiAodHlwZS5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0dyYXBoUUxOb25OdWxsJykge1xuICAgICAgcmV0dXJuIGAke2Jhc2VUeXBlfSFgO1xuICAgIH1cbiAgICBpZiAodHlwZS5jb25zdHJ1Y3Rvcj8ubmFtZSA9PT0gJ0dyYXBoUUxMaXN0Jykge1xuICAgICAgcmV0dXJuIGBbJHtiYXNlVHlwZX1dYDtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFja1xuICByZXR1cm4gJ1N0cmluZyc7XG59XG5cbmV4cG9ydCBjb25zdCBjb21wb3NlU2NoZW1hRnJvbVR5cGVzID0gKHR5cGVzOiBhbnlbXSk6IHN0cmluZyA9PiB7XG4gIHJldHVybiB0eXBlc1xuICAgIC5tYXAodHlwZSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdHlwZS50b1NETCA/IHR5cGUudG9TREwoKSA6ICcnO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignXFxuJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVha3Rvck11dGF0aW9uRmllbGRzID0gKGZpZWxkTmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWVsZHMgPSB1c2VyTXV0YXRpb25zLmdldEZpZWxkcygpO1xuICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gZmllbGROYW1lc1xuICAgICAgLm1hcChmaWVsZE5hbWUgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkc1tmaWVsZE5hbWVdO1xuICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSBnZXRHcmFwaFFMVHlwZVN0cmluZyhmaWVsZC50eXBlKTtcbiAgICAgICAgY29uc3QgYXJncyA9IGZpZWxkLmFyZ3NcbiAgICAgICAgICA/IE9iamVjdC5lbnRyaWVzKGZpZWxkLmFyZ3MpXG4gICAgICAgICAgICAgIC5tYXAoKFthcmdOYW1lLCBhcmdWYWx1ZV06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ1R5cGUgPSBnZXRHcmFwaFFMVHlwZVN0cmluZyhhcmdWYWx1ZS50eXBlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7YXJnTmFtZX06ICR7YXJnVHlwZX1gO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuam9pbignLCAnKVxuICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgY29uc3QgYXJnU3RyaW5nID0gYXJncyA/IGAoJHthcmdzfSlgIDogJyc7XG4gICAgICAgIHJldHVybiBgICAgICR7ZmllbGROYW1lfSR7YXJnU3RyaW5nfTogJHtmaWVsZFR5cGV9YDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRGaWVsZHM7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiAnJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWt0b3JRdWVyeUZpZWxkcyA9IChmaWVsZE5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZmllbGRzID0gdXNlclF1ZXJpZXMuZ2V0RmllbGRzKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBmaWVsZE5hbWVzXG4gICAgICAubWFwKGZpZWxkTmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGdldEdyYXBoUUxUeXBlU3RyaW5nKGZpZWxkLnR5cGUpO1xuICAgICAgICBjb25zdCBhcmdzID0gZmllbGQuYXJnc1xuICAgICAgICAgID8gT2JqZWN0LmVudHJpZXMoZmllbGQuYXJncylcbiAgICAgICAgICAgICAgLm1hcCgoW2FyZ05hbWUsIGFyZ1ZhbHVlXTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnVHlwZSA9IGdldEdyYXBoUUxUeXBlU3RyaW5nKGFyZ1ZhbHVlLnR5cGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHthcmdOYW1lfTogJHthcmdUeXBlfWA7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5qb2luKCcsICcpXG4gICAgICAgICAgOiAnJztcblxuICAgICAgICBjb25zdCBhcmdTdHJpbmcgPSBhcmdzID8gYCgke2FyZ3N9KWAgOiAnJztcbiAgICAgICAgcmV0dXJuIGAgICAgJHtmaWVsZE5hbWV9JHthcmdTdHJpbmd9OiAke2ZpZWxkVHlwZX1gO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIHJldHVybiBzZWxlY3RlZEZpZWxkcztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRDdXN0b21NdXRhdGlvbnMgPSAoZmllbGROYW1lczogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmaWVsZHMgPSBnZXRSZWFrdG9yTXV0YXRpb25GaWVsZHMoZmllbGROYW1lcyk7XG4gIHJldHVybiBgXG4gIHR5cGUgTXV0YXRpb24ge1xuJHtmaWVsZHN9XG4gIH1cbmA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRDdXN0b21RdWVyaWVzID0gKGZpZWxkTmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZmllbGRzID0gZ2V0UmVha3RvclF1ZXJ5RmllbGRzKGZpZWxkTmFtZXMpO1xuICByZXR1cm4gYFxuICB0eXBlIFF1ZXJ5IHtcbiR7ZmllbGRzfVxuICB9XG5gO1xufTtcbiJdLCJuYW1lcyI6WyJ1c2VyTXV0YXRpb25zIiwidXNlclF1ZXJpZXMiLCJnZXRHcmFwaFFMVHlwZVN0cmluZyIsInR5cGUiLCJnZXRUeXBlTmFtZSIsIm5hbWUiLCJvZlR5cGUiLCJiYXNlVHlwZSIsImNvbXBvc2VTY2hlbWFGcm9tVHlwZXMiLCJ0eXBlcyIsIm1hcCIsInRvU0RMIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJnZXRSZWFrdG9yTXV0YXRpb25GaWVsZHMiLCJmaWVsZE5hbWVzIiwiZmllbGRzIiwiZ2V0RmllbGRzIiwic2VsZWN0ZWRGaWVsZHMiLCJmaWVsZE5hbWUiLCJmaWVsZCIsImZpZWxkVHlwZSIsImFyZ3MiLCJPYmplY3QiLCJlbnRyaWVzIiwiYXJnTmFtZSIsImFyZ1ZhbHVlIiwiYXJnVHlwZSIsImFyZ1N0cmluZyIsImdldFJlYWt0b3JRdWVyeUZpZWxkcyIsImJ1aWxkQ3VzdG9tTXV0YXRpb25zIiwiYnVpbGRDdXN0b21RdWVyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLFFBQVEsd0JBQXdCO0FBQ3RELFNBQVNDLFdBQVcsUUFBUSxzQkFBc0I7QUFFbEQsU0FBU0MscUJBQXFCQyxJQUFTO0lBQ3JDLElBQUksQ0FBQ0EsTUFBTSxPQUFPO0lBRWxCLHdEQUF3RDtJQUN4RCxJQUFJLE9BQU9BLFNBQVMsVUFBVSxPQUFPQTtJQUVyQyx1RUFBdUU7SUFDdkUsSUFBSUEsS0FBS0MsV0FBVyxFQUFFO1FBQ3BCLE9BQU9ELEtBQUtDLFdBQVc7SUFDekI7SUFFQSw4QkFBOEI7SUFDOUIsSUFBSUQsS0FBS0UsSUFBSSxFQUFFO1FBQ2IsT0FBT0YsS0FBS0UsSUFBSTtJQUNsQjtJQUVBLHNCQUFzQjtJQUN0QixJQUFJRixLQUFLRyxNQUFNLEVBQUU7UUFDZixNQUFNQyxXQUFXTCxxQkFBcUJDLEtBQUtHLE1BQU07UUFDakQsSUFBSUgsS0FBSyxXQUFXLEVBQUVFLFNBQVMsa0JBQWtCO1lBQy9DLE9BQU8sR0FBR0UsU0FBUyxDQUFDLENBQUM7UUFDdkI7UUFDQSxJQUFJSixLQUFLLFdBQVcsRUFBRUUsU0FBUyxlQUFlO1lBQzVDLE9BQU8sQ0FBQyxDQUFDLEVBQUVFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hCO0lBQ0Y7SUFFQSxXQUFXO0lBQ1gsT0FBTztBQUNUO0FBRUEsT0FBTyxNQUFNQyx5QkFBeUIsQ0FBQ0M7SUFDckMsT0FBT0EsTUFDSkMsR0FBRyxDQUFDUCxDQUFBQTtRQUNILElBQUk7WUFDRixPQUFPQSxLQUFLUSxLQUFLLEdBQUdSLEtBQUtRLEtBQUssS0FBSztRQUNyQyxFQUFFLE9BQU07WUFDTixPQUFPO1FBQ1Q7SUFDRixHQUNDQyxNQUFNLENBQUNDLFNBQ1BDLElBQUksQ0FBQztBQUNWLEVBQUU7QUFFRixPQUFPLE1BQU1DLDJCQUEyQixDQUFDQztJQUN2QyxJQUFJO1FBQ0YsTUFBTUMsU0FBU2pCLGNBQWNrQixTQUFTO1FBQ3RDLE1BQU1DLGlCQUFpQkgsV0FDcEJOLEdBQUcsQ0FBQ1UsQ0FBQUE7WUFDSCxNQUFNQyxRQUFRSixNQUFNLENBQUNHLFVBQVU7WUFDL0IsSUFBSSxDQUFDQyxPQUFPO2dCQUNWLE9BQU87WUFDVDtZQUVBLE1BQU1DLFlBQVlwQixxQkFBcUJtQixNQUFNbEIsSUFBSTtZQUNqRCxNQUFNb0IsT0FBT0YsTUFBTUUsSUFBSSxHQUNuQkMsT0FBT0MsT0FBTyxDQUFDSixNQUFNRSxJQUFJLEVBQ3RCYixHQUFHLENBQUMsQ0FBQyxDQUFDZ0IsU0FBU0MsU0FBYztnQkFDNUIsTUFBTUMsVUFBVTFCLHFCQUFxQnlCLFNBQVN4QixJQUFJO2dCQUNsRCxPQUFPLEdBQUd1QixRQUFRLEVBQUUsRUFBRUUsU0FBUztZQUNqQyxHQUNDZCxJQUFJLENBQUMsUUFDUjtZQUVKLE1BQU1lLFlBQVlOLE9BQU8sQ0FBQyxDQUFDLEVBQUVBLEtBQUssQ0FBQyxDQUFDLEdBQUc7WUFDdkMsT0FBTyxDQUFDLElBQUksRUFBRUgsWUFBWVMsVUFBVSxFQUFFLEVBQUVQLFdBQVc7UUFDckQsR0FDQ1YsTUFBTSxDQUFDQyxTQUNQQyxJQUFJLENBQUM7UUFFUixPQUFPSztJQUNULEVBQUUsT0FBTTtRQUNOLE9BQU87SUFDVDtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1XLHdCQUF3QixDQUFDZDtJQUNwQyxJQUFJO1FBQ0YsTUFBTUMsU0FBU2hCLFlBQVlpQixTQUFTO1FBQ3BDLE1BQU1DLGlCQUFpQkgsV0FDcEJOLEdBQUcsQ0FBQ1UsQ0FBQUE7WUFDSCxNQUFNQyxRQUFRSixNQUFNLENBQUNHLFVBQVU7WUFDL0IsSUFBSSxDQUFDQyxPQUFPO2dCQUNWLE9BQU87WUFDVDtZQUVBLE1BQU1DLFlBQVlwQixxQkFBcUJtQixNQUFNbEIsSUFBSTtZQUNqRCxNQUFNb0IsT0FBT0YsTUFBTUUsSUFBSSxHQUNuQkMsT0FBT0MsT0FBTyxDQUFDSixNQUFNRSxJQUFJLEVBQ3RCYixHQUFHLENBQUMsQ0FBQyxDQUFDZ0IsU0FBU0MsU0FBYztnQkFDNUIsTUFBTUMsVUFBVTFCLHFCQUFxQnlCLFNBQVN4QixJQUFJO2dCQUNsRCxPQUFPLEdBQUd1QixRQUFRLEVBQUUsRUFBRUUsU0FBUztZQUNqQyxHQUNDZCxJQUFJLENBQUMsUUFDUjtZQUVKLE1BQU1lLFlBQVlOLE9BQU8sQ0FBQyxDQUFDLEVBQUVBLEtBQUssQ0FBQyxDQUFDLEdBQUc7WUFDdkMsT0FBTyxDQUFDLElBQUksRUFBRUgsWUFBWVMsVUFBVSxFQUFFLEVBQUVQLFdBQVc7UUFDckQsR0FDQ1YsTUFBTSxDQUFDQyxTQUNQQyxJQUFJLENBQUM7UUFFUixPQUFPSztJQUNULEVBQUUsT0FBTTtRQUNOLE9BQU87SUFDVDtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1ZLHVCQUF1QixDQUFDZjtJQUNuQyxNQUFNQyxTQUFTRix5QkFBeUJDO0lBQ3hDLE9BQU8sQ0FBQzs7QUFFVixFQUFFQyxPQUFPOztBQUVULENBQUM7QUFDRCxFQUFFO0FBRUYsT0FBTyxNQUFNZSxxQkFBcUIsQ0FBQ2hCO0lBQ2pDLE1BQU1DLFNBQVNhLHNCQUFzQmQ7SUFDckMsT0FBTyxDQUFDOztBQUVWLEVBQUVDLE9BQU87O0FBRVQsQ0FBQztBQUNELEVBQUUifQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvc2NoZW1hVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlck11dGF0aW9ucyB9IGZyb20gJy4uL211dGF0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgeyB1c2VyUXVlcmllcyB9IGZyb20gJy4uL3F1ZXJpZXMvaW5kZXguanMnO1xuXG5mdW5jdGlvbiBnZXRHcmFwaFFMVHlwZVN0cmluZyh0eXBlOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoIXR5cGUpIHJldHVybiAnU3RyaW5nJztcblxuICAvLyBIYW5kbGUgc3RyaW5nIHR5cGVzIChsaWtlICdTdHJpbmchJywgJ0Jvb2xlYW4nLCBldGMuKVxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSByZXR1cm4gdHlwZTtcblxuICAvLyBIYW5kbGUgZ3JhcGhxbC1jb21wb3NlIHR5cGVzIChJbnB1dFR5cGVDb21wb3NlciwgT2JqZWN0VHlwZUNvbXBvc2VyKVxuICBpZiAodHlwZS5nZXRUeXBlTmFtZSkge1xuICAgIHJldHVybiB0eXBlLmdldFR5cGVOYW1lKCk7XG4gIH1cblxuICAvLyBIYW5kbGUgR3JhcGhRTCB0eXBlIG9iamVjdHNcbiAgaWYgKHR5cGUubmFtZSkge1xuICAgIHJldHVybiB0eXBlLm5hbWU7XG4gIH1cblxuICAvLyBIYW5kbGUgTm9uTnVsbCB0eXBlXG4gIGlmICh0eXBlLm9mVHlwZSkge1xuICAgIGNvbnN0IGJhc2VUeXBlID0gZ2V0R3JhcGhRTFR5cGVTdHJpbmcodHlwZS5vZlR5cGUpO1xuICAgIGlmICh0eXBlLmNvbnN0cnVjdG9yPy5uYW1lID09PSAnR3JhcGhRTE5vbk51bGwnKSB7XG4gICAgICByZXR1cm4gYCR7YmFzZVR5cGV9IWA7XG4gICAgfVxuICAgIGlmICh0eXBlLmNvbnN0cnVjdG9yPy5uYW1lID09PSAnR3JhcGhRTExpc3QnKSB7XG4gICAgICByZXR1cm4gYFske2Jhc2VUeXBlfV1gO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrXG4gIHJldHVybiAnU3RyaW5nJztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXBvc2VTY2hlbWFGcm9tVHlwZXMgPSAodHlwZXM6IGFueVtdKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHR5cGVzXG4gICAgLm1hcCh0eXBlID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0eXBlLnRvU0RMID8gdHlwZS50b1NETCgpIDogJyc7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxuICAgIC5qb2luKCdcXG4nKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFrdG9yTXV0YXRpb25GaWVsZHMgPSAoZmllbGROYW1lczogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGZpZWxkcyA9IHVzZXJNdXRhdGlvbnMuZ2V0RmllbGRzKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBmaWVsZE5hbWVzXG4gICAgICAubWFwKGZpZWxkTmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGdldEdyYXBoUUxUeXBlU3RyaW5nKGZpZWxkLnR5cGUpO1xuICAgICAgICBjb25zdCBhcmdzID0gZmllbGQuYXJnc1xuICAgICAgICAgID8gT2JqZWN0LmVudHJpZXMoZmllbGQuYXJncylcbiAgICAgICAgICAgICAgLm1hcCgoW2FyZ05hbWUsIGFyZ1ZhbHVlXTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnVHlwZSA9IGdldEdyYXBoUUxUeXBlU3RyaW5nKGFyZ1ZhbHVlLnR5cGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHthcmdOYW1lfTogJHthcmdUeXBlfWA7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5qb2luKCcsICcpXG4gICAgICAgICAgOiAnJztcblxuICAgICAgICBjb25zdCBhcmdTdHJpbmcgPSBhcmdzID8gYCgke2FyZ3N9KWAgOiAnJztcbiAgICAgICAgcmV0dXJuIGAgICAgJHtmaWVsZE5hbWV9JHthcmdTdHJpbmd9OiAke2ZpZWxkVHlwZX1gO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIHJldHVybiBzZWxlY3RlZEZpZWxkcztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVha3RvclF1ZXJ5RmllbGRzID0gKGZpZWxkTmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmaWVsZHMgPSB1c2VyUXVlcmllcy5nZXRGaWVsZHMoKTtcbiAgICBjb25zdCBzZWxlY3RlZEZpZWxkcyA9IGZpZWxkTmFtZXNcbiAgICAgIC5tYXAoZmllbGROYW1lID0+IHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcbiAgICAgICAgaWYgKCFmaWVsZCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gZ2V0R3JhcGhRTFR5cGVTdHJpbmcoZmllbGQudHlwZSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBmaWVsZC5hcmdzXG4gICAgICAgICAgPyBPYmplY3QuZW50cmllcyhmaWVsZC5hcmdzKVxuICAgICAgICAgICAgICAubWFwKChbYXJnTmFtZSwgYXJnVmFsdWVdOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdUeXBlID0gZ2V0R3JhcGhRTFR5cGVTdHJpbmcoYXJnVmFsdWUudHlwZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2FyZ05hbWV9OiAke2FyZ1R5cGV9YDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmpvaW4oJywgJylcbiAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGNvbnN0IGFyZ1N0cmluZyA9IGFyZ3MgPyBgKCR7YXJnc30pYCA6ICcnO1xuICAgICAgICByZXR1cm4gYCAgICAke2ZpZWxkTmFtZX0ke2FyZ1N0cmluZ306ICR7ZmllbGRUeXBlfWA7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgcmV0dXJuIHNlbGVjdGVkRmllbGRzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEN1c3RvbU11dGF0aW9ucyA9IChmaWVsZE5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IGdldFJlYWt0b3JNdXRhdGlvbkZpZWxkcyhmaWVsZE5hbWVzKTtcbiAgcmV0dXJuIGBcbiAgdHlwZSBNdXRhdGlvbiB7XG4ke2ZpZWxkc31cbiAgfVxuYDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEN1c3RvbVF1ZXJpZXMgPSAoZmllbGROYW1lczogc3RyaW5nW10pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmaWVsZHMgPSBnZXRSZWFrdG9yUXVlcnlGaWVsZHMoZmllbGROYW1lcyk7XG4gIHJldHVybiBgXG4gIHR5cGUgUXVlcnkge1xuJHtmaWVsZHN9XG4gIH1cbmA7XG59O1xuIl0sIm5hbWVzIjpbInVzZXJNdXRhdGlvbnMiLCJ1c2VyUXVlcmllcyIsImdldEdyYXBoUUxUeXBlU3RyaW5nIiwidHlwZSIsImdldFR5cGVOYW1lIiwibmFtZSIsIm9mVHlwZSIsImJhc2VUeXBlIiwiY29tcG9zZVNjaGVtYUZyb21UeXBlcyIsInR5cGVzIiwibWFwIiwidG9TREwiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImdldFJlYWt0b3JNdXRhdGlvbkZpZWxkcyIsImZpZWxkTmFtZXMiLCJmaWVsZHMiLCJnZXRGaWVsZHMiLCJzZWxlY3RlZEZpZWxkcyIsImZpZWxkTmFtZSIsImZpZWxkIiwiZmllbGRUeXBlIiwiYXJncyIsIk9iamVjdCIsImVudHJpZXMiLCJhcmdOYW1lIiwiYXJnVmFsdWUiLCJhcmdUeXBlIiwiYXJnU3RyaW5nIiwiZ2V0UmVha3RvclF1ZXJ5RmllbGRzIiwiYnVpbGRDdXN0b21NdXRhdGlvbnMiLCJidWlsZEN1c3RvbVF1ZXJpZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBUSx3QkFBd0I7QUFDdEQsU0FBU0MsV0FBVyxRQUFRLHNCQUFzQjtBQUVsRCxTQUFTQyxxQkFBcUJDLElBQVM7SUFDckMsSUFBSSxDQUFDQSxNQUFNLE9BQU87SUFFbEIsd0RBQXdEO0lBQ3hELElBQUksT0FBT0EsU0FBUyxVQUFVLE9BQU9BO0lBRXJDLHVFQUF1RTtJQUN2RSxJQUFJQSxLQUFLQyxXQUFXLEVBQUU7UUFDcEIsT0FBT0QsS0FBS0MsV0FBVztJQUN6QjtJQUVBLDhCQUE4QjtJQUM5QixJQUFJRCxLQUFLRSxJQUFJLEVBQUU7UUFDYixPQUFPRixLQUFLRSxJQUFJO0lBQ2xCO0lBRUEsc0JBQXNCO0lBQ3RCLElBQUlGLEtBQUtHLE1BQU0sRUFBRTtRQUNmLE1BQU1DLFdBQVdMLHFCQUFxQkMsS0FBS0csTUFBTTtRQUNqRCxJQUFJSCxLQUFLLFdBQVcsRUFBRUUsU0FBUyxrQkFBa0I7WUFDL0MsT0FBTyxHQUFHRSxTQUFTLENBQUMsQ0FBQztRQUN2QjtRQUNBLElBQUlKLEtBQUssV0FBVyxFQUFFRSxTQUFTLGVBQWU7WUFDNUMsT0FBTyxDQUFDLENBQUMsRUFBRUUsU0FBUyxDQUFDLENBQUM7UUFDeEI7SUFDRjtJQUVBLFdBQVc7SUFDWCxPQUFPO0FBQ1Q7QUFFQSxPQUFPLE1BQU1DLHlCQUF5QixDQUFDQztJQUNyQyxPQUFPQSxNQUNKQyxHQUFHLENBQUNQLENBQUFB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
@@ -25,4 +25,4 @@ export const ADMIN_ACCESS_LEVEL = -1;
25
25
  export const isAdminUser = (subject)=>subject?.userAccess === ADMIN_ACCESS_LEVEL;
26
26
  export const hasAccessLevel = (subject, accessLevel)=>isAdminUser(subject) || Number(subject?.userAccess || 0) >= accessLevel;
27
27
 
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL3Nlc3Npb25VdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBVc2UgaXMgc3ViamVjdCB0byB0aGUgYWNjb21wYW55aW5nIGNvbW1lcmNpYWwgTElDRU5TRS5cbiAqL1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uID0ge1xuICByZWFkb25seSBlcnJvcnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZXhwPzogbnVtYmVyO1xuICByZWFkb25seSBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlhdD86IG51bWJlcjtcbiAgcmVhZG9ubHkgbGFzdE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBlcnNvbmFJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJBY2Nlc3M/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWNjZXNzU3ViamVjdCA9IHtcbiAgcmVhZG9ubHkgdXNlckFjY2Vzcz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFNlc3Npb25Ub2tlbiA9IHtcbiAgcmVhZG9ubHkgZXhwaXJlczogbnVtYmVyO1xuICByZWFkb25seSBmaXJzdE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzc3VlZDogbnVtYmVyO1xuICByZWFkb25seSBsYXN0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGVyc29uYUlkPzogc3RyaW5nO1xuICByZWFkb25seSB0b2tlbjogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcm5hbWU6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uID0gKHNlc3Npb246IFNlc3Npb24pOiBzdHJpbmcgPT4gand0LnNpZ24oc2Vzc2lvbiwgcHJvY2Vzcy5lbnYuU0VTU0lPTl9TRUNSRVQpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2Vzc2lvbiA9ICh0b2tlbjogc3RyaW5nKTogU2Vzc2lvbiA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LlNFU1NJT05fU0VDUkVUKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHN3aXRjaChlcnJvci5tZXNzYWdlKSB7XG4gICAgICBjYXNlICdqd3QgZXhwaXJlZCc6IHtcbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdleHBpcmVkX3Nlc3Npb24nKTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ2ludmFsaWRfc2Vzc2lvbicpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgQURNSU5fQUNDRVNTX0xFVkVMID0gLTE7XG5cbmV4cG9ydCBjb25zdCBpc0FkbWluVXNlciA9IChzdWJqZWN0PzogQWNjZXNzU3ViamVjdCk6IGJvb2xlYW4gPT4gc3ViamVjdD8udXNlckFjY2VzcyA9PT0gQURNSU5fQUNDRVNTX0xFVkVMO1xuZXhwb3J0IGNvbnN0IGhhc0FjY2Vzc0xldmVsID0gKHN1YmplY3Q6IEFjY2Vzc1N1YmplY3QgfCB1bmRlZmluZWQsIGFjY2Vzc0xldmVsOiBudW1iZXIpOiBib29sZWFuID0+IChcbiAgaXNBZG1pblVzZXIoc3ViamVjdCkgfHwgTnVtYmVyKHN1YmplY3Q/LnVzZXJBY2Nlc3MgfHwgMCkgPj0gYWNjZXNzTGV2ZWxcbik7XG4iXSwibmFtZXMiOlsiand0Iiwic2V0U2Vzc2lvbiIsInNlc3Npb24iLCJzaWduIiwicHJvY2VzcyIsImVudiIsIlNFU1NJT05fU0VDUkVUIiwiZ2V0U2Vzc2lvbiIsInRva2VuIiwidmVyaWZ5IiwiZXJyb3IiLCJtZXNzYWdlIiwiZXJyIiwiRXJyb3IiLCJBRE1JTl9BQ0NFU1NfTEVWRUwiLCJpc0FkbWluVXNlciIsInN1YmplY3QiLCJ1c2VyQWNjZXNzIiwiaGFzQWNjZXNzTGV2ZWwiLCJhY2Nlc3NMZXZlbCIsIk51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsU0FBUyxlQUFlO0FBNkIvQixPQUFPLE1BQU1DLGFBQWEsQ0FBQ0MsVUFBNkJGLElBQUlHLElBQUksQ0FBQ0QsU0FBU0UsUUFBUUMsR0FBRyxDQUFDQyxjQUFjLEVBQUU7QUFFdEcsT0FBTyxNQUFNQyxhQUFhLENBQUNDO0lBQ3pCLElBQUk7UUFDRixPQUFPUixJQUFJUyxNQUFNLENBQUNELE9BQU9KLFFBQVFDLEdBQUcsQ0FBQ0MsY0FBYztJQUNyRCxFQUFFLE9BQU1JLE9BQU87UUFDYixPQUFPQSxNQUFNQyxPQUFPO1lBQ2xCLEtBQUs7Z0JBQWU7b0JBQ2xCLE1BQU1DLE1BQU0sSUFBSUMsTUFBTTtvQkFDdEIsTUFBTUQ7Z0JBQ1I7WUFDQTtnQkFBUztvQkFDUCxNQUFNQSxNQUFNLElBQUlDLE1BQU07b0JBQ3RCLE1BQU1EO2dCQUNSO1FBQ0Y7SUFDRjtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1FLHFCQUFxQixDQUFDLEVBQUU7QUFFckMsT0FBTyxNQUFNQyxjQUFjLENBQUNDLFVBQXFDQSxTQUFTQyxlQUFlSCxtQkFBbUI7QUFDNUcsT0FBTyxNQUFNSSxpQkFBaUIsQ0FBQ0YsU0FBb0NHLGNBQ2pFSixZQUFZQyxZQUFZSSxPQUFPSixTQUFTQyxjQUFjLE1BQU1FLFlBQzVEIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvc2Vzc2lvblV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5cbmV4cG9ydCB0eXBlIFNlc3Npb24gPSB7XG4gIHJlYWRvbmx5IGVycm9ycz86IHN0cmluZ1tdO1xuICByZWFkb25seSBleHA/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGZpcnN0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaWF0PzogbnVtYmVyO1xuICByZWFkb25seSBsYXN0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGVyc29uYUlkPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VybmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlckFjY2Vzcz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBY2Nlc3NTdWJqZWN0ID0ge1xuICByZWFkb25seSB1c2VyQWNjZXNzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgU2Vzc2lvblRva2VuID0ge1xuICByZWFkb25seSBleHBpcmVzOiBudW1iZXI7XG4gIHJlYWRvbmx5IGZpcnN0TmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaXNzdWVkOiBudW1iZXI7XG4gIHJlYWRvbmx5IGxhc3ROYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwZXJzb25hSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRva2VuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICByZWFkb25seSB1c2VybmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFNlc3Npb24gPSAoc2Vzc2lvbjogU2Vzc2lvbik6IHN0cmluZyA9PiBqd3Quc2lnbihzZXNzaW9uLCBwcm9jZXNzLmVudi5TRVNTSU9OX1NFQ1JFVCk7XG5cbmV4cG9ydCBjb25zdCBnZXRTZXNzaW9uID0gKHRva2VuOiBzdHJpbmcpOiBTZXNzaW9uID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gand0LnZlcmlmeSh0b2tlbiwgcHJvY2Vzcy5lbnYuU0VTU0lPTl9TRUNSRVQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgc3dpdGNoKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIGNhc2UgJ2p3dCBleHBpcmVkJzoge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ2V4cGlyZWRfc2Vzc2lvbicpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcignaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBBRE1JTl9BQ0NFU1NfTEVWRUwgPSAtMTtcblxuZXhwb3J0IGNvbnN0IGlzQWRtaW5Vc2VyID0gKHN1YmplY3Q/OiBBY2Nlc3NTdWJqZWN0KTogYm9vbGVhbiA9PiBzdWJqZWN0Py51c2VyQWNjZXNzID09PSBBRE1JTl9BQ0NFU1NfTEVWRUw7XG5leHBvcnQgY29uc3QgaGFzQWNjZXNzTGV2ZWwgPSAoc3ViamVjdDogQWNjZXNzU3ViamVjdCB8IHVuZGVmaW5lZCwgYWNjZXNzTGV2ZWw6IG51bWJlcik6IGJvb2xlYW4gPT4gKFxuICBpc0FkbWluVXNlcihzdWJqZWN0KSB8fCBOdW1iZXIoc3ViamVjdD8udXNlckFjY2VzcyB8fCAwKSA+PSBhY2Nlc3NMZXZlbFxuKTtcbiJdLCJuYW1lcyI6WyJqd3QiLCJzZXRTZXNzaW9uIiwic2Vzc2lvbiIsInNpZ24iLCJwcm9jZXNzIiwiZW52IiwiU0VTU0lPTl9TRUNSRVQiLCJnZXRTZXNzaW9uIiwidG9rZW4iLCJ2ZXJpZnkiLCJlcnJvciIsIm1lc3NhZ2UiLCJlcnIiLCJFcnJvciIsIkFETUlOX0FDQ0VTU19MRVZFTCIsImlzQWRtaW5Vc2VyIiwic3ViamVjdCIsInVzZXJBY2Nlc3MiLCJoYXNBY2Nlc3NMZXZlbCIsImFjY2Vzc0xldmVsIiwiTnVtYmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxTQUFTLGVBQWU7QUE2Qi9CLE9BQU8sTUFBTUMsYUFBYSxDQUFDQyxVQUE2QkYsSUFBSUcsSUFBSSxDQUFDRCxTQUFTRSxRQUFRQyxHQUFHLENBQUNDLGNBQWMsRUFBRTtBQUV0RyxPQUFPLE1BQU1DLGFBQWEsQ0FBQ0M7SUFDekIsSUFBSTtRQUNGLE9BQU9SLElBQUlTLE1BQU0sQ0FBQ0QsT0FBT0osUUFBUUMsR0FBRyxDQUFDQyxjQUFjO0lBQ3JELEVBQUUsT0FBTUksT0FBTztRQUNiLE9BQU9BLE1BQU1DLE9BQU87WUFDbEIsS0FBSztnQkFBZTtvQkFDbEIsTUFBTUMsTUFBTSxJQUFJQyxNQUFNO29CQUN0QixNQUFNRDtnQkFDUjtZQUNBO2dCQUFTO29CQUNQLE1BQU1BLE1BQU0sSUFBSUMsTUFBTTtvQkFDdEIsTUFBTUQ7Z0JBQ1I7UUFDRjtJQUNGO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTUUscUJBQXFCLENBQUMsRUFBRTtBQUVyQyxPQUFPLE1BQU1DLGNBQWMsQ0FBQ0MsVUFBcUNBLFNBQVNDLGVBQWVILG1CQUFtQjtBQUM1RyxPQUFPLE1BQU1JLGlCQUFpQixDQUFDRixTQUFvQ0csY0FDakVKLFlBQVlDLFlBQVlJLE9BQU9KLFNBQVNDLGNBQWMsTUFBTUUsWUFDNUQifQ==
@@ -3,5 +3,5 @@
3
3
  * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */
5
5
  import stripe from 'stripe';
6
- export declare const stripeApiVersion = "2026-07-29.dahlia";
6
+ export declare const stripeApiVersion = "2026-08-26.dahlia";
7
7
  export declare const getStripeClient: () => stripe;
@@ -3,11 +3,10 @@
3
3
  * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
4
  */ import stripe from 'stripe';
5
5
  import { Config } from '../config.js';
6
- export const stripeApiVersion = '2026-07-29.dahlia';
7
- // Stripe types describe only the latest API; preserve the existing wire contract when rebuilding.
6
+ export const stripeApiVersion = '2026-08-26.dahlia';
8
7
  export const getStripeClient = ()=>new stripe(Config.get('stripe.token'), {
9
8
  apiVersion: stripeApiVersion,
10
9
  typescript: true
11
10
  });
12
11
 
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL3N0cmlwZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQgc3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuXG5leHBvcnQgY29uc3Qgc3RyaXBlQXBpVmVyc2lvbiA9ICcyMDI2LTA3LTI5LmRhaGxpYSc7XG5cbi8vIFN0cmlwZSB0eXBlcyBkZXNjcmliZSBvbmx5IHRoZSBsYXRlc3QgQVBJOyBwcmVzZXJ2ZSB0aGUgZXhpc3Rpbmcgd2lyZSBjb250cmFjdCB3aGVuIHJlYnVpbGRpbmcuXG5leHBvcnQgY29uc3QgZ2V0U3RyaXBlQ2xpZW50ID0gKCkgPT4gbmV3IHN0cmlwZShDb25maWcuZ2V0KCdzdHJpcGUudG9rZW4nKSwge1xuICBhcGlWZXJzaW9uOiBzdHJpcGVBcGlWZXJzaW9uIGFzIHN0cmlwZS5MYXRlc3RBcGlWZXJzaW9uLCB0eXBlc2NyaXB0OiB0cnVlXG59KTtcbiJdLCJuYW1lcyI6WyJzdHJpcGUiLCJDb25maWciLCJzdHJpcGVBcGlWZXJzaW9uIiwiZ2V0U3RyaXBlQ2xpZW50IiwiZ2V0IiwiYXBpVmVyc2lvbiIsInR5cGVzY3JpcHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELE9BQU9BLFlBQVksU0FBUztBQUU1QixTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQUVwQyxPQUFPLE1BQU1DLG1CQUFtQixvQkFBb0I7QUFFcEQsa0dBQWtHO0FBQ2xHLE9BQU8sTUFBTUMsa0JBQWtCLElBQU0sSUFBSUgsT0FBT0MsT0FBT0csR0FBRyxDQUFDLGlCQUFpQjtRQUMxRUMsWUFBWUg7UUFBNkNJLFlBQVk7SUFDdkUsR0FBRyJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvc3RyaXBlVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cbmltcG9ydCBzdHJpcGUgZnJvbSAnc3RyaXBlJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBzdHJpcGVBcGlWZXJzaW9uID0gJzIwMjYtMDgtMjYuZGFobGlhJztcblxuZXhwb3J0IGNvbnN0IGdldFN0cmlwZUNsaWVudCA9ICgpID0+IG5ldyBzdHJpcGUoQ29uZmlnLmdldCgnc3RyaXBlLnRva2VuJyksIHthcGlWZXJzaW9uOiBzdHJpcGVBcGlWZXJzaW9uLCB0eXBlc2NyaXB0OiB0cnVlfSk7XG4iXSwibmFtZXMiOlsic3RyaXBlIiwiQ29uZmlnIiwic3RyaXBlQXBpVmVyc2lvbiIsImdldFN0cmlwZUNsaWVudCIsImdldCIsImFwaVZlcnNpb24iLCJ0eXBlc2NyaXB0Il0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxPQUFPQSxZQUFZLFNBQVM7QUFFNUIsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFFcEMsT0FBTyxNQUFNQyxtQkFBbUIsb0JBQW9CO0FBRXBELE9BQU8sTUFBTUMsa0JBQWtCLElBQU0sSUFBSUgsT0FBT0MsT0FBT0csR0FBRyxDQUFDLGlCQUFpQjtRQUFDQyxZQUFZSDtRQUFrQkksWUFBWTtJQUFJLEdBQUcifQ==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * All rights reserved. Use is subject to the accompanying commercial LICENSE.
4
+ */ import stripe from 'stripe';
5
+ import { Config } from '../config.js';
6
+ export const stripeApiVersion = '2026-07-29.dahlia';
7
+ export const getStripeClient = ()=>new stripe(Config.get('stripe.token'), {
8
+ apiVersion: stripeApiVersion,
9
+ typescript: true
10
+ });
11
+
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvc3RyaXBlVXRpbHMudHMuYmFrIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVzZSBpcyBzdWJqZWN0IHRvIHRoZSBhY2NvbXBhbnlpbmcgY29tbWVyY2lhbCBMSUNFTlNFLlxuICovXG5pbXBvcnQgc3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcuanMnO1xuXG5leHBvcnQgY29uc3Qgc3RyaXBlQXBpVmVyc2lvbiA9ICcyMDI2LTA3LTI5LmRhaGxpYSc7XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJpcGVDbGllbnQgPSAoKSA9PiBuZXcgc3RyaXBlKENvbmZpZy5nZXQoJ3N0cmlwZS50b2tlbicpLCB7YXBpVmVyc2lvbjogc3RyaXBlQXBpVmVyc2lvbiwgdHlwZXNjcmlwdDogdHJ1ZX0pO1xuIl0sIm5hbWVzIjpbInN0cmlwZSIsIkNvbmZpZyIsInN0cmlwZUFwaVZlcnNpb24iLCJnZXRTdHJpcGVDbGllbnQiLCJnZXQiLCJhcGlWZXJzaW9uIiwidHlwZXNjcmlwdCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBT0EsWUFBWSxTQUFTO0FBRTVCLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBRXBDLE9BQU8sTUFBTUMsbUJBQW1CLG9CQUFvQjtBQUVwRCxPQUFPLE1BQU1DLGtCQUFrQixJQUFNLElBQUlILE9BQU9DLE9BQU9HLEdBQUcsQ0FBQyxpQkFBaUI7UUFBQ0MsWUFBWUg7UUFBa0JJLFlBQVk7SUFBSSxHQUFHIn0=
@@ -8,4 +8,4 @@ export const parseTemplate = (template, params)=>{
8
8
  };
9
9
  export const createTemplate = (templateString, params)=>parseTemplate(templateString, params);
10
10
 
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50Ly5jb2RleC13b3JrdHJlZXMvcmVha3Rvci1waGFudGF6ZS1jaGF0L3BhY2thZ2VzL3JlYWt0b3Ivc3JjL3V0aWxzL3RlbXBsYXRlVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVGVtcGxhdGVQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5leHBvcnQgY29uc3QgcGFyc2VUZW1wbGF0ZSA9ICh0ZW1wbGF0ZTogc3RyaW5nLCBwYXJhbXM6IFRlbXBsYXRlUGFyYW1zKTogc3RyaW5nID0+IHtcbiAgbGV0IHJlc3VsdCA9IHRlbXBsYXRlO1xuXG4gIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcWyR7a2V5fVxcXFxdYCwgJ2cnKTtcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShyZWdleCwgcGFyYW1zW2tleV0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRlbXBsYXRlID0gPFQgZXh0ZW5kcyBUZW1wbGF0ZVBhcmFtcz4odGVtcGxhdGVTdHJpbmc6IHN0cmluZywgcGFyYW1zOiBUKTogc3RyaW5nID0+XG4gIHBhcnNlVGVtcGxhdGUodGVtcGxhdGVTdHJpbmcsIHBhcmFtcyk7XG4iXSwibmFtZXMiOlsicGFyc2VUZW1wbGF0ZSIsInRlbXBsYXRlIiwicGFyYW1zIiwicmVzdWx0IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJyZWdleCIsIlJlZ0V4cCIsInJlcGxhY2UiLCJjcmVhdGVUZW1wbGF0ZSIsInRlbXBsYXRlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLE1BQU1BLGdCQUFnQixDQUFDQyxVQUFrQkM7SUFDOUMsSUFBSUMsU0FBU0Y7SUFFYkcsT0FBT0MsSUFBSSxDQUFDSCxRQUFRSSxPQUFPLENBQUMsQ0FBQ0M7UUFDM0IsTUFBTUMsUUFBUSxJQUFJQyxPQUFPLENBQUMsR0FBRyxFQUFFRixJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ3pDSixTQUFTQSxPQUFPTyxPQUFPLENBQUNGLE9BQU9OLE1BQU0sQ0FBQ0ssSUFBSTtJQUM1QztJQUVBLE9BQU9KO0FBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTVEsaUJBQWlCLENBQTJCQyxnQkFBd0JWLFNBQy9FRixjQUFjWSxnQkFBZ0JWLFFBQVEifQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvdXRpbHMvdGVtcGxhdGVVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBUZW1wbGF0ZVBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbmV4cG9ydCBjb25zdCBwYXJzZVRlbXBsYXRlID0gKHRlbXBsYXRlOiBzdHJpbmcsIHBhcmFtczogVGVtcGxhdGVQYXJhbXMpOiBzdHJpbmcgPT4ge1xuICBsZXQgcmVzdWx0ID0gdGVtcGxhdGU7XG5cbiAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYFxcXFxbJHtrZXl9XFxcXF1gLCAnZycpO1xuICAgIHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKHJlZ2V4LCBwYXJhbXNba2V5XSk7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVGVtcGxhdGUgPSA8VCBleHRlbmRzIFRlbXBsYXRlUGFyYW1zPih0ZW1wbGF0ZVN0cmluZzogc3RyaW5nLCBwYXJhbXM6IFQpOiBzdHJpbmcgPT5cbiAgcGFyc2VUZW1wbGF0ZSh0ZW1wbGF0ZVN0cmluZywgcGFyYW1zKTtcbiJdLCJuYW1lcyI6WyJwYXJzZVRlbXBsYXRlIiwidGVtcGxhdGUiLCJwYXJhbXMiLCJyZXN1bHQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInJlZ2V4IiwiUmVnRXhwIiwicmVwbGFjZSIsImNyZWF0ZVRlbXBsYXRlIiwidGVtcGxhdGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sTUFBTUEsZ0JBQWdCLENBQUNDLFVBQWtCQztJQUM5QyxJQUFJQyxTQUFTRjtJQUViRyxPQUFPQyxJQUFJLENBQUNILFFBQVFJLE9BQU8sQ0FBQyxDQUFDQztRQUMzQixNQUFNQyxRQUFRLElBQUlDLE9BQU8sQ0FBQyxHQUFHLEVBQUVGLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDekNKLFNBQVNBLE9BQU9PLE9BQU8sQ0FBQ0YsT0FBT04sTUFBTSxDQUFDSyxJQUFJO0lBQzVDO0lBRUEsT0FBT0o7QUFDVCxFQUFFO0FBRUYsT0FBTyxNQUFNUSxpQkFBaUIsQ0FBMkJDLGdCQUF3QlYsU0FDL0VGLGNBQWNZLGdCQUFnQlYsUUFBUSJ9