@appconda/nextjs 1.0.115 → 1.0.117

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 (294) hide show
  1. package/dist/actions/actionClient.d.ts +10 -0
  2. package/dist/actions/actionClient.js +41 -0
  3. package/dist/actions/auth.d.ts +1 -0
  4. package/dist/actions/auth.js +7 -0
  5. package/dist/actions/authOptions.d.ts +5 -0
  6. package/dist/actions/authOptions.js +235 -0
  7. package/dist/actions/index.d.ts +3 -0
  8. package/dist/actions/index.js +4 -0
  9. package/dist/actions/nextAuthHandler.d.ts +1 -0
  10. package/dist/actions/nextAuthHandler.js +6 -0
  11. package/dist/client.d.ts +141 -0
  12. package/dist/client.js +335 -0
  13. package/dist/decorators/Cache.d.ts +1 -0
  14. package/dist/decorators/Cache.js +79 -0
  15. package/dist/decorators/CacheKey.d.ts +1 -0
  16. package/dist/decorators/CacheKey.js +9 -0
  17. package/dist/decorators/Invalidate.d.ts +1 -0
  18. package/dist/decorators/Invalidate.js +47 -0
  19. package/dist/enums/api-service.d.ts +13 -0
  20. package/dist/enums/api-service.js +15 -0
  21. package/dist/enums/api.d.ts +5 -0
  22. package/dist/enums/api.js +7 -0
  23. package/dist/enums/auth-method.d.ts +9 -0
  24. package/dist/enums/auth-method.js +11 -0
  25. package/dist/enums/browser.d.ts +16 -0
  26. package/dist/enums/browser.js +18 -0
  27. package/dist/enums/compression.d.ts +5 -0
  28. package/dist/enums/compression.js +7 -0
  29. package/dist/enums/credit-card.d.ts +18 -0
  30. package/dist/enums/credit-card.js +20 -0
  31. package/dist/enums/database-usage-range.d.ts +5 -0
  32. package/dist/enums/database-usage-range.js +7 -0
  33. package/dist/enums/email-template-locale.d.ts +133 -0
  34. package/dist/enums/email-template-locale.js +135 -0
  35. package/dist/enums/email-template-type.d.ts +9 -0
  36. package/dist/enums/email-template-type.js +11 -0
  37. package/dist/enums/entities/EntityLimitType.d.ts +4 -0
  38. package/dist/enums/entities/EntityLimitType.js +6 -0
  39. package/dist/enums/entities/PropertyAttributeName.d.ts +27 -0
  40. package/dist/enums/entities/PropertyAttributeName.js +29 -0
  41. package/dist/enums/entities/PropertyCondition.d.ts +7 -0
  42. package/dist/enums/entities/PropertyCondition.js +10 -0
  43. package/dist/enums/entities/PropertyType.d.ts +12 -0
  44. package/dist/enums/entities/PropertyType.js +18 -0
  45. package/dist/enums/entities/PropertyValueType.d.ts +6 -0
  46. package/dist/enums/entities/PropertyValueType.js +8 -0
  47. package/dist/enums/entities/RowAccess.d.ts +2 -0
  48. package/dist/enums/entities/RowAccess.js +2 -0
  49. package/dist/enums/entities/ViewFilterCondition.d.ts +12 -0
  50. package/dist/enums/entities/ViewFilterCondition.js +14 -0
  51. package/dist/enums/execution-method.d.ts +8 -0
  52. package/dist/enums/execution-method.js +10 -0
  53. package/dist/enums/flag.d.ts +197 -0
  54. package/dist/enums/flag.js +199 -0
  55. package/dist/enums/function-usage-range.d.ts +5 -0
  56. package/dist/enums/function-usage-range.js +7 -0
  57. package/dist/enums/image-format.d.ts +7 -0
  58. package/dist/enums/image-format.js +9 -0
  59. package/dist/enums/image-gravity.d.ts +11 -0
  60. package/dist/enums/image-gravity.js +13 -0
  61. package/dist/enums/index-type.d.ts +5 -0
  62. package/dist/enums/index-type.js +7 -0
  63. package/dist/enums/messaging-provider-type.d.ts +5 -0
  64. package/dist/enums/messaging-provider-type.js +7 -0
  65. package/dist/enums/name.d.ts +14 -0
  66. package/dist/enums/name.js +16 -0
  67. package/dist/enums/o-auth-provider copy.d.ts +41 -0
  68. package/dist/enums/o-auth-provider copy.js +43 -0
  69. package/dist/enums/password-hash.d.ts +13 -0
  70. package/dist/enums/password-hash.js +15 -0
  71. package/dist/enums/platform-type.d.ts +17 -0
  72. package/dist/enums/platform-type.js +19 -0
  73. package/dist/enums/project-usage-range.d.ts +4 -0
  74. package/dist/enums/project-usage-range.js +6 -0
  75. package/dist/enums/region.d.ts +4 -0
  76. package/dist/enums/region.js +6 -0
  77. package/dist/enums/relation-mutate.d.ts +5 -0
  78. package/dist/enums/relation-mutate.js +7 -0
  79. package/dist/enums/relationship-type.d.ts +6 -0
  80. package/dist/enums/relationship-type.js +8 -0
  81. package/dist/enums/resource-type.d.ts +4 -0
  82. package/dist/enums/resource-type.js +6 -0
  83. package/dist/enums/runtime.d.ts +48 -0
  84. package/dist/enums/runtime.js +50 -0
  85. package/dist/enums/s-m-t-p-secure.d.ts +3 -0
  86. package/dist/enums/s-m-t-p-secure.js +5 -0
  87. package/dist/enums/shared/ApplicationLayout.d.ts +4 -0
  88. package/dist/enums/shared/ApplicationLayout.js +6 -0
  89. package/dist/enums/shared/Colors.d.ts +24 -0
  90. package/dist/enums/shared/Colors.js +26 -0
  91. package/dist/enums/shared/InputType.d.ts +6 -0
  92. package/dist/enums/shared/InputType.js +8 -0
  93. package/dist/enums/shared/Periodicity.d.ts +7 -0
  94. package/dist/enums/shared/Periodicity.js +9 -0
  95. package/dist/enums/shared/SvgIcon.d.ts +37 -0
  96. package/dist/enums/shared/SvgIcon.js +39 -0
  97. package/dist/enums/shared/Theme.d.ts +4 -0
  98. package/dist/enums/shared/Theme.js +6 -0
  99. package/dist/enums/sms-template-locale.d.ts +133 -0
  100. package/dist/enums/sms-template-locale.js +135 -0
  101. package/dist/enums/sms-template-type.d.ts +6 -0
  102. package/dist/enums/sms-template-type.js +8 -0
  103. package/dist/enums/smtp-encryption.d.ts +5 -0
  104. package/dist/enums/smtp-encryption.js +7 -0
  105. package/dist/enums/storage-usage-range.d.ts +5 -0
  106. package/dist/enums/storage-usage-range.js +7 -0
  107. package/dist/enums/subscriptions/PricingModel.d.ts +11 -0
  108. package/dist/enums/subscriptions/PricingModel.js +12 -0
  109. package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +10 -0
  110. package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +11 -0
  111. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +10 -0
  112. package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +13 -0
  113. package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +7 -0
  114. package/dist/enums/subscriptions/SubscriptionPriceType.js +8 -0
  115. package/dist/enums/tenants/LinkedAccountStatus.d.ts +5 -0
  116. package/dist/enums/tenants/LinkedAccountStatus.js +7 -0
  117. package/dist/enums/tenants/TenantUserJoined.d.ts +6 -0
  118. package/dist/enums/tenants/TenantUserJoined.js +8 -0
  119. package/dist/enums/tenants/TenantUserStatus.d.ts +6 -0
  120. package/dist/enums/tenants/TenantUserStatus.js +8 -0
  121. package/dist/enums/tenants/TenantUserType.d.ts +5 -0
  122. package/dist/enums/tenants/TenantUserType.js +7 -0
  123. package/dist/enums/user-usage-range.d.ts +5 -0
  124. package/dist/enums/user-usage-range.js +7 -0
  125. package/dist/getAppcondaClient.d.ts +2 -0
  126. package/dist/getAppcondaClient.js +44 -0
  127. package/dist/getSDKForCurrentUser.d.ts +43 -0
  128. package/dist/getSDKForCurrentUser.js +76 -0
  129. package/dist/getSDKForService.d.ts +6 -0
  130. package/dist/getSDKForService.js +51 -0
  131. package/dist/getSDKForTenant.d.ts +20 -0
  132. package/dist/getSDKForTenant.js +44 -0
  133. package/dist/id.d.ts +20 -0
  134. package/dist/id.js +45 -0
  135. package/dist/index.d.ts +44 -0
  136. package/dist/index.js +42 -0
  137. package/dist/inputFile.d.ts +6 -0
  138. package/dist/inputFile.js +17 -0
  139. package/dist/lib/Cache/Adapter.d.ts +10 -0
  140. package/dist/lib/Cache/Adapter.js +2 -0
  141. package/dist/lib/Cache/Adapters/Filesystem.d.ts +16 -0
  142. package/dist/lib/Cache/Adapters/Filesystem.js +103 -0
  143. package/dist/lib/Cache/Adapters/Memory.d.ts +18 -0
  144. package/dist/lib/Cache/Adapters/Memory.js +47 -0
  145. package/dist/lib/Cache/Adapters/None.d.ts +12 -0
  146. package/dist/lib/Cache/Adapters/None.js +28 -0
  147. package/dist/lib/Cache/Adapters/Sharding.d.ts +17 -0
  148. package/dist/lib/Cache/Adapters/Sharding.js +73 -0
  149. package/dist/lib/Cache/Cache.d.ts +16 -0
  150. package/dist/lib/Cache/Cache.js +52 -0
  151. package/dist/lib/Cache/index.d.ts +4 -0
  152. package/dist/lib/Cache/index.js +5 -0
  153. package/dist/lib/Cache/test.d.ts +0 -0
  154. package/dist/lib/Cache/test.js +1 -0
  155. package/dist/lib/Registry/Registry.d.ts +38 -0
  156. package/dist/lib/Registry/Registry.js +56 -0
  157. package/dist/lib/Registry/index.d.ts +1 -0
  158. package/dist/lib/Registry/index.js +2 -0
  159. package/dist/lib/Services.d.ts +6 -0
  160. package/dist/lib/Services.js +14 -0
  161. package/dist/lib/crypto.d.ts +23 -0
  162. package/dist/lib/crypto.js +78 -0
  163. package/dist/lib/env.d.ts +1 -0
  164. package/dist/lib/env.js +137 -0
  165. package/dist/lib/errors.d.ts +70 -0
  166. package/dist/lib/errors.js +76 -0
  167. package/dist/lib/index.d.ts +2 -0
  168. package/dist/lib/index.js +3 -0
  169. package/dist/lib/jwt.d.ts +12 -0
  170. package/dist/lib/jwt.js +103 -0
  171. package/dist/models.d.ts +3272 -0
  172. package/dist/models.js +2 -0
  173. package/dist/modules/account/actions.d.ts +31 -0
  174. package/dist/modules/account/actions.js +18 -0
  175. package/dist/modules/account/enums/authentication-factor.d.ts +6 -0
  176. package/dist/modules/account/enums/authentication-factor.js +8 -0
  177. package/dist/modules/account/enums/authenticator-type.d.ts +3 -0
  178. package/dist/modules/account/enums/authenticator-type.js +5 -0
  179. package/dist/modules/account/enums/o-auth-provider.d.ts +41 -0
  180. package/dist/modules/account/enums/o-auth-provider.js +43 -0
  181. package/dist/modules/account/index.d.ts +3 -0
  182. package/dist/modules/account/index.js +4 -0
  183. package/dist/modules/account/schema.d.ts +17 -0
  184. package/dist/modules/account/schema.js +8 -0
  185. package/dist/modules/account/service.d.ts +530 -0
  186. package/dist/modules/account/service.js +1260 -0
  187. package/dist/modules/account/types.d.ts +411 -0
  188. package/dist/modules/account/types.js +2 -0
  189. package/dist/modules/acl/service.d.ts +26 -0
  190. package/dist/modules/acl/service.js +27 -0
  191. package/dist/modules/agent/action.d.ts +57 -0
  192. package/dist/modules/agent/action.js +64 -0
  193. package/dist/modules/agent/index.d.ts +4 -0
  194. package/dist/modules/agent/index.js +5 -0
  195. package/dist/modules/agent/schema.d.ts +48 -0
  196. package/dist/modules/agent/schema.js +21 -0
  197. package/dist/modules/agent/service.d.ts +12 -0
  198. package/dist/modules/agent/service.js +22 -0
  199. package/dist/modules/agent/types.d.ts +11 -0
  200. package/dist/modules/agent/types.js +2 -0
  201. package/dist/modules/ai/index.d.ts +1 -0
  202. package/dist/modules/ai/index.js +2 -0
  203. package/dist/modules/ai/node/actions.d.ts +4 -0
  204. package/dist/modules/ai/node/actions.js +16 -0
  205. package/dist/modules/ai/node/index.d.ts +2 -0
  206. package/dist/modules/ai/node/index.js +3 -0
  207. package/dist/modules/ai/node/service.d.ts +5 -0
  208. package/dist/modules/ai/node/service.js +12 -0
  209. package/dist/modules/index.d.ts +6 -0
  210. package/dist/modules/index.js +7 -0
  211. package/dist/modules/task/action.d.ts +201 -0
  212. package/dist/modules/task/action.js +147 -0
  213. package/dist/modules/task/index.d.ts +4 -0
  214. package/dist/modules/task/index.js +5 -0
  215. package/dist/modules/task/schema.d.ts +107 -0
  216. package/dist/modules/task/schema.js +44 -0
  217. package/dist/modules/task/service.d.ts +19 -0
  218. package/dist/modules/task/service.js +43 -0
  219. package/dist/modules/task/types.d.ts +84 -0
  220. package/dist/modules/task/types.js +2 -0
  221. package/dist/modules/tenant/actions.d.ts +49 -0
  222. package/dist/modules/tenant/actions.js +38 -0
  223. package/dist/modules/tenant/index.d.ts +3 -0
  224. package/dist/modules/tenant/index.js +4 -0
  225. package/dist/modules/tenant/tenant.d.ts +32 -0
  226. package/dist/modules/tenant/tenant.js +125 -0
  227. package/dist/modules/tenant/types.d.ts +11 -0
  228. package/dist/modules/tenant/types.js +2 -0
  229. package/dist/modules/waitlist/action.d.ts +71 -0
  230. package/dist/modules/waitlist/action.js +78 -0
  231. package/dist/modules/waitlist/index.d.ts +4 -0
  232. package/dist/modules/waitlist/index.js +5 -0
  233. package/dist/modules/waitlist/schema.d.ts +39 -0
  234. package/dist/modules/waitlist/schema.js +18 -0
  235. package/dist/modules/waitlist/service.d.ts +13 -0
  236. package/dist/modules/waitlist/service.js +28 -0
  237. package/dist/modules/waitlist/types.d.ts +14 -0
  238. package/dist/modules/waitlist/types.js +2 -0
  239. package/dist/permission.d.ts +43 -0
  240. package/dist/permission.js +54 -0
  241. package/dist/query.d.ts +194 -0
  242. package/dist/query.js +204 -0
  243. package/dist/role.d.ts +70 -0
  244. package/dist/role.js +94 -0
  245. package/dist/schemas/nodes.d.ts +0 -0
  246. package/dist/schemas/nodes.js +1 -0
  247. package/dist/service-client.d.ts +7 -0
  248. package/dist/service-client.js +14 -0
  249. package/dist/service.d.ts +11 -0
  250. package/dist/service.js +23 -0
  251. package/dist/services/applets.d.ts +9 -0
  252. package/dist/services/applets.js +40 -0
  253. package/dist/services/avatars.d.ts +115 -0
  254. package/dist/services/avatars.js +251 -0
  255. package/dist/services/chat-flow.d.ts +7 -0
  256. package/dist/services/chat-flow.js +26 -0
  257. package/dist/services/community.d.ts +19 -0
  258. package/dist/services/community.js +69 -0
  259. package/dist/services/configuration.d.ts +5 -0
  260. package/dist/services/configuration.js +11 -0
  261. package/dist/services/databases.d.ts +613 -0
  262. package/dist/services/databases.js +1736 -0
  263. package/dist/services/functions.d.ts +319 -0
  264. package/dist/services/functions.js +810 -0
  265. package/dist/services/graphql.d.ts +25 -0
  266. package/dist/services/graphql.js +57 -0
  267. package/dist/services/health.d.ts +231 -0
  268. package/dist/services/health.js +463 -0
  269. package/dist/services/locale.d.ts +80 -0
  270. package/dist/services/locale.js +144 -0
  271. package/dist/services/messaging.d.ts +685 -0
  272. package/dist/services/messaging.js +1920 -0
  273. package/dist/services/permissions.d.ts +20 -0
  274. package/dist/services/permissions.js +90 -0
  275. package/dist/services/pricing.d.ts +15 -0
  276. package/dist/services/pricing.js +21 -0
  277. package/dist/services/projects.d.ts +542 -0
  278. package/dist/services/projects.js +1526 -0
  279. package/dist/services/roles.d.ts +19 -0
  280. package/dist/services/roles.js +72 -0
  281. package/dist/services/schema.d.ts +17 -0
  282. package/dist/services/schema.js +48 -0
  283. package/dist/services/storage.d.ts +189 -0
  284. package/dist/services/storage.js +474 -0
  285. package/dist/services/subscription.d.ts +15 -0
  286. package/dist/services/subscription.js +30 -0
  287. package/dist/services/teams.d.ts +167 -0
  288. package/dist/services/teams.js +395 -0
  289. package/dist/services/tenant-subscription.d.ts +12 -0
  290. package/dist/services/tenant-subscription.js +52 -0
  291. package/dist/services/users.d.ts +499 -0
  292. package/dist/services/users.js +1283 -0
  293. package/package.json +3 -3
  294. package/src/modules/task/action.ts +2 -2
@@ -0,0 +1,73 @@
1
+ export class Sharding {
2
+ constructor(adapters) {
3
+ this.count = 0;
4
+ this.crc32Table = (() => {
5
+ let c;
6
+ const table = [];
7
+ for (let n = 0; n < 256; n++) {
8
+ c = n;
9
+ for (let k = 0; k < 8; k++) {
10
+ c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
11
+ }
12
+ table[n] = c;
13
+ }
14
+ return table;
15
+ })();
16
+ if (adapters.length === 0) {
17
+ throw new Error('No adapters provided');
18
+ }
19
+ this.count = adapters.length;
20
+ this.adapters = adapters;
21
+ }
22
+ async load(key, ttl, hash = '') {
23
+ const adapter = this.getAdapter(key);
24
+ return await adapter.load(key, ttl, hash);
25
+ }
26
+ async save(key, data, hash = '') {
27
+ return this.getAdapter(key).save(key, data, hash);
28
+ }
29
+ async list(key) {
30
+ return this.getAdapter(key).list(key);
31
+ }
32
+ async purge(key, hash = '') {
33
+ return this.getAdapter(key).purge(key, hash);
34
+ }
35
+ async flush() {
36
+ let result = true;
37
+ for (const adapter of this.adapters) {
38
+ result = await adapter.flush() ? result : false;
39
+ }
40
+ return result;
41
+ }
42
+ async ping() {
43
+ for (const adapter of this.adapters) {
44
+ if (!adapter.ping()) {
45
+ return false;
46
+ }
47
+ }
48
+ return true;
49
+ }
50
+ async getSize() {
51
+ let size = 0;
52
+ for (const adapter of this.adapters) {
53
+ size += await adapter.getSize();
54
+ }
55
+ return size;
56
+ }
57
+ getAdapter(key) {
58
+ const hash = this.crc32(key);
59
+ const index = hash % this.count;
60
+ return this.adapters[index];
61
+ }
62
+ crc32(str) {
63
+ let crc = 0 ^ (-1);
64
+ for (let i = 0; i < str.length; i++) {
65
+ crc = (crc >>> 8) ^ this.crc32Table[(crc ^ str.charCodeAt(i)) & 0xff];
66
+ }
67
+ return (crc ^ (-1)) >>> 0;
68
+ }
69
+ async delWithStart(pattern) {
70
+ return 0;
71
+ }
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcmRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL0NhY2hlL0FkYXB0ZXJzL1NoYXJkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJLE1BQU0sT0FBTyxRQUFRO0lBSWpCLFlBQVksUUFBbUI7UUFGckIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQXVFcEIsZUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBUyxDQUFDO1lBQ2QsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDTixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUEvRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFB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QUssQ0FBQyxZQUFZLENBQUMsT0FBZTtRQUM5QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FjSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vQWRhcHRlclwiO1xuXG4gICAgZXhwb3J0IGNsYXNzIFNoYXJkaW5nIGltcGxlbWVudHMgQWRhcHRlciB7XG4gICAgICAgIHByb3RlY3RlZCBhZGFwdGVyczogQWRhcHRlcltdO1xuICAgICAgICBwcm90ZWN0ZWQgY291bnQ6IG51bWJlciA9IDA7XG5cbiAgICAgICAgY29uc3RydWN0b3IoYWRhcHRlcnM6IEFkYXB0ZXJbXSkge1xuICAgICAgICAgICAgaWYgKGFkYXB0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYWRhcHRlcnMgcHJvdmlkZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudCA9IGFkYXB0ZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlcnMgPSBhZGFwdGVycztcbiAgICAgICAgfVxuXG4gICAgICBhc3luYyAgbG9hZChrZXk6IHN0cmluZywgdHRsOiBudW1iZXIsIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSAgdGhpcy5nZXRBZGFwdGVyKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgYWRhcHRlci5sb2FkKGtleSwgdHRsLCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIHNhdmUoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSwgaGFzaDogc3RyaW5nID0gJycpOiBQcm9taXNlPGJvb2xlYW4gfCBzdHJpbmcgfCBhbnlbXT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWRhcHRlcihrZXkpLnNhdmUoa2V5LCBkYXRhLCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGxpc3Qoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGFwdGVyKGtleSkubGlzdChrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgcHVyZ2Uoa2V5OiBzdHJpbmcsIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGFwdGVyKGtleSkucHVyZ2Uoa2V5LCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGFkYXB0ZXIuZmx1c2goKSA/IHJlc3VsdCA6IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycykge1xuICAgICAgICAgICAgICAgIGlmICghYWRhcHRlci5waW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZ2V0U2l6ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICAgICAgbGV0IHNpemUgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMpIHtcbiAgICAgICAgICAgICAgICBzaXplICs9IGF3YWl0IGFkYXB0ZXIuZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgIH1cblxuICAgICAgICBwcm90ZWN0ZWQgZ2V0QWRhcHRlcihrZXk6IHN0cmluZyk6IEFkYXB0ZXIge1xuICAgICAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuY3JjMzIoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gaGFzaCAlIHRoaXMuY291bnQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyc1tpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIGNyYzMyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgICAgIGxldCBjcmMgPSAwIF4gKC0xKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0aGlzLmNyYzMyVGFibGVbKGNyYyBeIHN0ci5jaGFyQ29kZUF0KGkpKSAmIDB4ZmZdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChjcmMgXiAoLTEpKSA+Pj4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGRlbFdpdGhTdGFydChwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHByaXZhdGUgY3JjMzJUYWJsZSA9ICgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgYzogbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgdGFibGU6IG51bWJlcltdID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IDI1NjsgbisrKSB7XG4gICAgICAgICAgICAgICAgYyA9IG47XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCA4OyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFibGVbbl0gPSBjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgICAgICB9KSgpO1xuICAgIH1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Adapter } from "./Adapter";
2
+ export declare class Cache {
3
+ private adapter;
4
+ static caseSensitive: boolean;
5
+ constructor(adapter: Adapter);
6
+ private constructKey;
7
+ static setCaseSensitivity(value: boolean): boolean;
8
+ load(key: string | string[], ttl?: number, hash?: string): Promise<any>;
9
+ save(key: string | string[], data: any, hash?: string): Promise<boolean | string | any[]>;
10
+ list(key: string | string[]): Promise<string[]>;
11
+ purge(key: string | string[], hash?: string): Promise<boolean>;
12
+ flush(): Promise<boolean>;
13
+ ping(): Promise<boolean>;
14
+ getSize(): Promise<number>;
15
+ delWithStart(keys: string | string[]): Promise<number>;
16
+ }
@@ -0,0 +1,52 @@
1
+ export class Cache {
2
+ constructor(adapter) {
3
+ this.adapter = adapter;
4
+ }
5
+ constructKey(key) {
6
+ if (Array.isArray(key)) {
7
+ key = key.join(':');
8
+ }
9
+ return key;
10
+ }
11
+ static setCaseSensitivity(value) {
12
+ return this.caseSensitive = value;
13
+ }
14
+ async load(key, ttl = 60 * 60 * 24, hash = '') {
15
+ key = this.constructKey(key);
16
+ key = Cache.caseSensitive ? key : key.toLowerCase();
17
+ hash = Cache.caseSensitive ? hash : hash.toLowerCase();
18
+ return await this.adapter.load(key, ttl, hash);
19
+ }
20
+ async save(key, data, hash = '') {
21
+ key = this.constructKey(key);
22
+ key = Cache.caseSensitive ? key : key.toLowerCase();
23
+ hash = Cache.caseSensitive ? hash : hash.toLowerCase();
24
+ return this.adapter.save(key, data, hash);
25
+ }
26
+ async list(key) {
27
+ key = this.constructKey(key);
28
+ key = Cache.caseSensitive ? key : key.toLowerCase();
29
+ return this.adapter.list(key);
30
+ }
31
+ async purge(key, hash = '') {
32
+ key = this.constructKey(key);
33
+ key = Cache.caseSensitive ? key : key.toLowerCase();
34
+ hash = Cache.caseSensitive ? hash : hash.toLowerCase();
35
+ return this.adapter.purge(key, hash);
36
+ }
37
+ async flush() {
38
+ return this.adapter.flush();
39
+ }
40
+ async ping() {
41
+ return this.adapter.ping();
42
+ }
43
+ async getSize() {
44
+ return this.adapter.getSize();
45
+ }
46
+ async delWithStart(keys) {
47
+ const pattern = this.constructKey(keys);
48
+ return this.adapter.delWithStart(pattern);
49
+ }
50
+ }
51
+ Cache.caseSensitive = false;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL0NhY2hlL0NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxLQUFLO0lBSWQsWUFBWSxPQUFnQjtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFjO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBc0IsRUFBRSxNQUFjLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQWUsRUFBRTtRQUNuRixHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQXNCLEVBQUUsSUFBUyxFQUFFLE9BQWUsRUFBRTtRQUVsRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFzQjtRQUNwQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFzQixFQUFFLE9BQWUsRUFBRTtRQUV4RCxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUF1QjtRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUFwRWEsbUJBQWEsR0FBWSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4vQWRhcHRlclwiO1xuXG5cbmV4cG9ydCBjbGFzcyBDYWNoZSB7XG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBBZGFwdGVyO1xuICAgIHB1YmxpYyBzdGF0aWMgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWRhcHRlcjogQWRhcHRlcikge1xuICAgICAgICB0aGlzLmFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uc3RydWN0S2V5KGtleTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAga2V5ID0ga2V5LmpvaW4oJzonKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRDYXNlU2Vuc2l0aXZpdHkodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FzZVNlbnNpdGl2ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkKGtleTogc3RyaW5nIHwgc3RyaW5nW10sIHR0bDogbnVtYmVyID0gNjAgKiA2MCAqIDI0LCBoYXNoOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGtleSA9IHRoaXMuY29uc3RydWN0S2V5KGtleSk7XG4gICAgICAgIGtleSA9IENhY2hlLmNhc2VTZW5zaXRpdmUgPyBrZXkgOiBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaGFzaCA9IENhY2hlLmNhc2VTZW5zaXRpdmUgPyBoYXNoIDogaGFzaC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFkYXB0ZXIubG9hZChrZXksIHR0bCwgaGFzaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNhdmUoa2V5OiBzdHJpbmcgfCBzdHJpbmdbXSwgZGF0YTogYW55LCBoYXNoOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8Ym9vbGVhbiB8IHN0cmluZyB8IGFueVtdPiB7XG5cbiAgICAgICAga2V5ID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5KTtcblxuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGhhc2ggPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8gaGFzaCA6IGhhc2gudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNhdmUoa2V5LCBkYXRhLCBoYXNoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbGlzdChrZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBrZXkgPSB0aGlzLmNvbnN0cnVjdEtleShrZXkpO1xuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5saXN0KGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHB1cmdlKGtleTogc3RyaW5nIHwgc3RyaW5nW10sIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICAgICAga2V5ID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5KTtcblxuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGhhc2ggPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8gaGFzaCA6IGhhc2gudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnB1cmdlKGtleSwgaGFzaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucGluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRTaXplKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0U2l6ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkZWxXaXRoU3RhcnQoa2V5czogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsV2l0aFN0YXJ0KHBhdHRlcm4pO1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './Cache';
2
+ export * from './Adapters/None';
3
+ export * from './Adapters/Sharding';
4
+ export * from './Adapters/Memory';
@@ -0,0 +1,5 @@
1
+ export * from './Cache';
2
+ export * from './Adapters/None';
3
+ export * from './Adapters/Sharding';
4
+ export * from './Adapters/Memory';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL0NhY2hlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9DYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL0FkYXB0ZXJzL05vbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9BZGFwdGVycy9TaGFyZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL0FkYXB0ZXJzL01lbW9yeSc7Il19
File without changes
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvQ2FjaGUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIl19
@@ -0,0 +1,38 @@
1
+ export declare class Registry {
2
+ /**
3
+ * List of all callbacks
4
+ */
5
+ protected callbacks: {
6
+ [key: string]: () => any;
7
+ };
8
+ /**
9
+ * List of all fresh resources
10
+ */
11
+ protected fresh: {
12
+ [key: string]: boolean;
13
+ };
14
+ /**
15
+ * List of all connections
16
+ */
17
+ protected registry: {
18
+ [key: string]: {
19
+ [key: string]: any;
20
+ };
21
+ };
22
+ /**
23
+ * Current context
24
+ */
25
+ protected _context: string;
26
+ /**
27
+ * Set a new connection callback
28
+ */
29
+ set(name: string, callback: () => any, fresh?: boolean): this;
30
+ /**
31
+ * If connection has been created returns it, otherwise create and then return it
32
+ */
33
+ get(name: string, fresh?: boolean): any;
34
+ /**
35
+ * Set the current context
36
+ */
37
+ context(name: string): this;
38
+ }
@@ -0,0 +1,56 @@
1
+ export class Registry {
2
+ constructor() {
3
+ /**
4
+ * List of all callbacks
5
+ */
6
+ this.callbacks = {};
7
+ /**
8
+ * List of all fresh resources
9
+ */
10
+ this.fresh = {};
11
+ /**
12
+ * List of all connections
13
+ */
14
+ this.registry = {
15
+ 'default': {},
16
+ };
17
+ /**
18
+ * Current context
19
+ */
20
+ this._context = 'default';
21
+ }
22
+ /**
23
+ * Set a new connection callback
24
+ */
25
+ set(name, callback, fresh = false) {
26
+ if (this.registry[this._context].hasOwnProperty(name)) {
27
+ delete this.registry[this._context][name];
28
+ }
29
+ this.fresh[name] = fresh;
30
+ this.callbacks[name] = callback;
31
+ return this;
32
+ }
33
+ /**
34
+ * If connection has been created returns it, otherwise create and then return it
35
+ */
36
+ get(name, fresh = false) {
37
+ if (!this.registry[this._context].hasOwnProperty(name) || fresh || this.fresh[name]) {
38
+ if (!this.callbacks.hasOwnProperty(name)) {
39
+ throw new Error(`No callback named "${name}" found when trying to create connection`);
40
+ }
41
+ this.registry[this._context][name] = this.callbacks[name]();
42
+ }
43
+ return this.registry[this._context][name];
44
+ }
45
+ /**
46
+ * Set the current context
47
+ */
48
+ context(name) {
49
+ if (!this.registry.hasOwnProperty(name)) {
50
+ this.registry[name] = {};
51
+ }
52
+ this._context = name;
53
+ return this;
54
+ }
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL1JlZ2lzdHJ5L1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0k7O1dBRUc7UUFDTyxjQUFTLEdBQWlDLEVBQUUsQ0FBQztRQUV2RDs7V0FFRztRQUNPLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRWpEOztXQUVHO1FBQ08sYUFBUSxHQUE4QztZQUM1RCxTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBRUY7O1dBRUc7UUFDTyxhQUFRLEdBQVcsU0FBUyxDQUFDO0lBMkMzQyxDQUFDO0lBekNHOztPQUVHO0lBQ0ksR0FBRyxDQUFDLElBQVksRUFBRSxRQUFtQixFQUFFLFFBQWlCLEtBQUs7UUFDaEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWlCLEtBQUs7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLDBDQUEwQyxDQUFDLENBQUM7WUFDMUYsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgZXhwb3J0IGNsYXNzIFJlZ2lzdHJ5IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgYWxsIGNhbGxiYWNrc1xuICAgICAgICAgKi9cbiAgICAgICAgcHJvdGVjdGVkIGNhbGxiYWNrczogeyBba2V5OiBzdHJpbmddOiAoKSA9PiBhbnkgfSA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGFsbCBmcmVzaCByZXNvdXJjZXNcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCBmcmVzaDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBhbGwgY29ubmVjdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCByZWdpc3RyeTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0gPSB7XG4gICAgICAgICAgICAnZGVmYXVsdCc6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCBfY29udGV4dDogc3RyaW5nID0gJ2RlZmF1bHQnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgYSBuZXcgY29ubmVjdGlvbiBjYWxsYmFja1xuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiBhbnksIGZyZXNoOiBib29sZWFuID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVnaXN0cnlbdGhpcy5fY29udGV4dF1bbmFtZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZnJlc2hbbmFtZV0gPSBmcmVzaDtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzW25hbWVdID0gY2FsbGJhY2s7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGNvbm5lY3Rpb24gaGFzIGJlZW4gY3JlYXRlZCByZXR1cm5zIGl0LCBvdGhlcndpc2UgY3JlYXRlIGFuZCB0aGVuIHJldHVybiBpdFxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIGdldChuYW1lOiBzdHJpbmcsIGZyZXNoOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdLmhhc093blByb3BlcnR5KG5hbWUpIHx8IGZyZXNoIHx8IHRoaXMuZnJlc2hbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGJhY2tzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2FsbGJhY2sgbmFtZWQgXCIke25hbWV9XCIgZm91bmQgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGNvbm5lY3Rpb25gKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdW25hbWVdID0gdGhpcy5jYWxsYmFja3NbbmFtZV0oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnlbdGhpcy5fY29udGV4dF1bbmFtZV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRoZSBjdXJyZW50IGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBjb250ZXh0KG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RyeVtuYW1lXSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gbmFtZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from './Registry';
@@ -0,0 +1,2 @@
1
+ export * from './Registry';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL1JlZ2lzdHJ5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9SZWdpc3RyeSc7Il19
@@ -0,0 +1,6 @@
1
+ import { Cache } from "./Cache";
2
+ import { Registry } from "./Registry";
3
+ export declare const registry: Registry;
4
+ export declare class Services {
5
+ static get Cache(): Cache;
6
+ }
@@ -0,0 +1,14 @@
1
+ import { Cache, Memory } from "./Cache";
2
+ import { Registry } from "./Registry";
3
+ export const registry = new Registry();
4
+ registry.set('cache', () => {
5
+ const memoryAdapter = new Memory();
6
+ const cacheProvider = new Cache(memoryAdapter);
7
+ return cacheProvider;
8
+ });
9
+ export class Services {
10
+ static get Cache() {
11
+ return registry.get('cache');
12
+ }
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7QUFFdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBR3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7SUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFL0MsT0FBTyxhQUFhLENBQUM7QUFFekIsQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLE9BQU8sUUFBUTtJQUNWLE1BQU0sS0FBSyxLQUFLO1FBQ25CLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZSwgTWVtb3J5IH0gZnJvbSBcIi4vQ2FjaGVcIjtcbmltcG9ydCB7IFJlZ2lzdHJ5IH0gZnJvbSBcIi4vUmVnaXN0cnlcIjtcblxuXG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7XG5cbnJlZ2lzdHJ5LnNldCgnY2FjaGUnLCAoKSA9PiB7XG4gIFxuXG4gICAgY29uc3QgbWVtb3J5QWRhcHRlciA9IG5ldyBNZW1vcnkoKTtcblxuICAgIGNvbnN0IGNhY2hlUHJvdmlkZXIgPSBuZXcgQ2FjaGUobWVtb3J5QWRhcHRlcik7XG5cbiAgICByZXR1cm4gY2FjaGVQcm92aWRlcjtcblxufSlcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VzIHtcbiAgICBwdWJsaWMgc3RhdGljIGdldCBDYWNoZSgpOiBDYWNoZSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeS5nZXQoJ2NhY2hlJyk7XG4gICAgfVxuICAgXG59Il19
@@ -0,0 +1,23 @@
1
+ /**
2
+ *
3
+ * @param text Value to be encrypted
4
+ * @param key Key used to encrypt value must be 32 bytes for AES256 encryption algorithm
5
+ *
6
+ * @returns Encrypted value using key
7
+ */
8
+ export declare const symmetricEncrypt: (text: string, key: string) => string;
9
+ /**
10
+ *
11
+ * @param text Value to decrypt
12
+ * @param key Key used to decrypt value must be 32 bytes for AES256 encryption algorithm
13
+ */
14
+ export declare const symmetricDecrypt: (text: string, key: string) => string;
15
+ export declare const getHash: (key: string) => string;
16
+ export declare const encryptAES128: (encryptionKey: string, data: string) => string;
17
+ export declare const decryptAES128: (encryptionKey: string, data: string) => string;
18
+ export declare const generateLocalSignedUrl: (fileName: string, environmentId: string, fileType: string) => {
19
+ signature: string;
20
+ uuid: string;
21
+ timestamp: number;
22
+ };
23
+ export declare const validateLocalSignedUrl: (uuid: string, fileName: string, environmentId: string, fileType: string, timestamp: number, signature: string, secret: string) => boolean;
@@ -0,0 +1,78 @@
1
+ import crypto from "crypto";
2
+ import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from "crypto";
3
+ import { getEnv } from "./env";
4
+ const ALGORITHM = "aes256";
5
+ const INPUT_ENCODING = "utf8";
6
+ const OUTPUT_ENCODING = "hex";
7
+ const IV_LENGTH = 16; // AES blocksize
8
+ /**
9
+ *
10
+ * @param text Value to be encrypted
11
+ * @param key Key used to encrypt value must be 32 bytes for AES256 encryption algorithm
12
+ *
13
+ * @returns Encrypted value using key
14
+ */
15
+ export const symmetricEncrypt = (text, key) => {
16
+ const BUFFER_ENCODING = getEnv().ENCRYPTION_KEY.length === 32 ? "latin1" : "hex";
17
+ const _key = Buffer.from(key, BUFFER_ENCODING);
18
+ const iv = crypto.randomBytes(IV_LENGTH);
19
+ // @ts-ignore -- the package needs to be built
20
+ const cipher = crypto.createCipheriv(ALGORITHM, _key, iv);
21
+ let ciphered = cipher.update(text, INPUT_ENCODING, OUTPUT_ENCODING);
22
+ ciphered += cipher.final(OUTPUT_ENCODING);
23
+ const ciphertext = iv.toString(OUTPUT_ENCODING) + ":" + ciphered;
24
+ return ciphertext;
25
+ };
26
+ /**
27
+ *
28
+ * @param text Value to decrypt
29
+ * @param key Key used to decrypt value must be 32 bytes for AES256 encryption algorithm
30
+ */
31
+ export const symmetricDecrypt = (text, key) => {
32
+ const BUFFER_ENCODING = getEnv().ENCRYPTION_KEY.length === 32 ? "latin1" : "hex";
33
+ const _key = Buffer.from(key, BUFFER_ENCODING);
34
+ const components = text.split(":");
35
+ const iv_from_ciphertext = Buffer.from(components.shift() || "", OUTPUT_ENCODING);
36
+ // @ts-ignore -- the package needs to be built
37
+ const decipher = crypto.createDecipheriv(ALGORITHM, _key, iv_from_ciphertext);
38
+ let deciphered = decipher.update(components.join(":"), OUTPUT_ENCODING, INPUT_ENCODING);
39
+ deciphered += decipher.final(INPUT_ENCODING);
40
+ return deciphered;
41
+ };
42
+ export const getHash = (key) => createHash("sha256").update(key).digest("hex");
43
+ // create an aes128 encryption function
44
+ export const encryptAES128 = (encryptionKey, data) => {
45
+ // @ts-ignore -- the package needs to be built
46
+ const cipher = createCipheriv("aes-128-ecb", Buffer.from(encryptionKey, "base64"), "");
47
+ let encrypted = cipher.update(data, "utf-8", "hex");
48
+ encrypted += cipher.final("hex");
49
+ return encrypted;
50
+ };
51
+ // create an aes128 decryption function
52
+ export const decryptAES128 = (encryptionKey, data) => {
53
+ // @ts-ignore -- the package needs to be built
54
+ const cipher = createDecipheriv("aes-128-ecb", Buffer.from(encryptionKey, "base64"), "");
55
+ let decrypted = cipher.update(data, "hex", "utf-8");
56
+ decrypted += cipher.final("utf-8");
57
+ return decrypted;
58
+ };
59
+ export const generateLocalSignedUrl = (fileName, environmentId, fileType) => {
60
+ const uuid = randomBytes(16).toString("hex");
61
+ const timestamp = Date.now();
62
+ const data = `${uuid}:${fileName}:${environmentId}:${fileType}:${timestamp}`;
63
+ const signature = createHmac("sha256", getEnv().ENCRYPTION_KEY).update(data).digest("hex");
64
+ return { signature, uuid, timestamp };
65
+ };
66
+ export const validateLocalSignedUrl = (uuid, fileName, environmentId, fileType, timestamp, signature, secret) => {
67
+ const data = `${uuid}:${fileName}:${environmentId}:${fileType}:${timestamp}`;
68
+ const expectedSignature = createHmac("sha256", secret).update(data).digest("hex");
69
+ if (expectedSignature !== signature) {
70
+ return false;
71
+ }
72
+ // valid for 5 minutes
73
+ if (Date.now() - timestamp > 1000 * 60 * 5) {
74
+ return false;
75
+ }
76
+ return true;
77
+ };
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUcvQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0FBQzlCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQztBQUU5QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7QUFFdEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLENBQUMsY0FBZSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFekMsOENBQThDO0lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFL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XCI7XG5pbXBvcnQgeyBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgY3JlYXRlSGFzaCwgY3JlYXRlSG1hYywgcmFuZG9tQnl0ZXMgfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyBnZXRFbnYgfSBmcm9tIFwiLi9lbnZcIjtcblxuXG5jb25zdCBBTEdPUklUSE0gPSBcImFlczI1NlwiO1xuY29uc3QgSU5QVVRfRU5DT0RJTkcgPSBcInV0ZjhcIjtcbmNvbnN0IE9VVFBVVF9FTkNPRElORyA9IFwiaGV4XCI7XG5cbmNvbnN0IElWX0xFTkdUSCA9IDE2OyAvLyBBRVMgYmxvY2tzaXplXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IFZhbHVlIHRvIGJlIGVuY3J5cHRlZFxuICogQHBhcmFtIGtleSBLZXkgdXNlZCB0byBlbmNyeXB0IHZhbHVlIG11c3QgYmUgMzIgYnl0ZXMgZm9yIEFFUzI1NiBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICpcbiAqIEByZXR1cm5zIEVuY3J5cHRlZCB2YWx1ZSB1c2luZyBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IHN5bW1ldHJpY0VuY3J5cHQgPSAodGV4dDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBCVUZGRVJfRU5DT0RJTkcgPSBnZXRFbnYoKS5FTkNSWVBUSU9OX0tFWSEubGVuZ3RoID09PSAzMiA/IFwibGF0aW4xXCIgOiBcImhleFwiO1xuICBjb25zdCBfa2V5ID0gQnVmZmVyLmZyb20oa2V5LCBCVUZGRVJfRU5DT0RJTkcpO1xuICBjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcyhJVl9MRU5HVEgpO1xuXG4gIC8vIEB0cy1pZ25vcmUgLS0gdGhlIHBhY2thZ2UgbmVlZHMgdG8gYmUgYnVpbHRcbiAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KEFMR09SSVRITSwgX2tleSwgaXYpO1xuICBsZXQgY2lwaGVyZWQgPSBjaXBoZXIudXBkYXRlKHRleHQsIElOUFVUX0VOQ09ESU5HLCBPVVRQVVRfRU5DT0RJTkcpO1xuICBjaXBoZXJlZCArPSBjaXBoZXIuZmluYWwoT1VUUFVUX0VOQ09ESU5HKTtcbiAgY29uc3QgY2lwaGVydGV4dCA9IGl2LnRvU3RyaW5nKE9VVFBVVF9FTkNPRElORykgKyBcIjpcIiArIGNpcGhlcmVkO1xuXG4gIHJldHVybiBjaXBoZXJ0ZXh0O1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHRleHQgVmFsdWUgdG8gZGVjcnlwdFxuICogQHBhcmFtIGtleSBLZXkgdXNlZCB0byBkZWNyeXB0IHZhbHVlIG11c3QgYmUgMzIgYnl0ZXMgZm9yIEFFUzI1NiBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICovXG5leHBvcnQgY29uc3Qgc3ltbWV0cmljRGVjcnlwdCA9ICh0ZXh0OiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IEJVRkZFUl9FTkNPRElORyA9IGdldEVudigpLkVOQ1JZUFRJT05fS0VZIS5sZW5ndGggPT09IDMyID8gXCJsYXRpbjFcIiA6IFwiaGV4XCI7XG4gIGNvbnN0IF9rZXkgPSBCdWZmZXIuZnJvbShrZXksIEJVRkZFUl9FTkNPRElORyk7XG5cbiAgY29uc3QgY29tcG9uZW50cyA9IHRleHQuc3BsaXQoXCI6XCIpO1xuICBjb25zdCBpdl9mcm9tX2NpcGhlcnRleHQgPSBCdWZmZXIuZnJvbShjb21wb25lbnRzLnNoaWZ0KCkgfHwgXCJcIiwgT1VUUFVUX0VOQ09ESU5HKTtcbiAgLy8gQHRzLWlnbm9yZSAtLSB0aGUgcGFja2FnZSBuZWVkcyB0byBiZSBidWlsdFxuICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KEFMR09SSVRITSwgX2tleSwgaXZfZnJvbV9jaXBoZXJ0ZXh0KTtcbiAgbGV0IGRlY2lwaGVyZWQgPSBkZWNpcGhlci51cGRhdGUoY29tcG9uZW50cy5qb2luKFwiOlwiKSwgT1VUUFVUX0VOQ09ESU5HLCBJTlBVVF9FTkNPRElORyk7XG4gIGRlY2lwaGVyZWQgKz0gZGVjaXBoZXIuZmluYWwoSU5QVVRfRU5DT0RJTkcpO1xuXG4gIHJldHVybiBkZWNpcGhlcmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhhc2ggPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoa2V5KS5kaWdlc3QoXCJoZXhcIik7XG5cbi8vIGNyZWF0ZSBhbiBhZXMxMjggZW5jcnlwdGlvbiBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IGVuY3J5cHRBRVMxMjggPSAoZW5jcnlwdGlvbktleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBAdHMtaWdub3JlIC0tIHRoZSBwYWNrYWdlIG5lZWRzIHRvIGJlIGJ1aWx0XG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZUNpcGhlcml2KFwiYWVzLTEyOC1lY2JcIiwgQnVmZmVyLmZyb20oZW5jcnlwdGlvbktleSwgXCJiYXNlNjRcIiksIFwiXCIpO1xuICBsZXQgZW5jcnlwdGVkID0gY2lwaGVyLnVwZGF0ZShkYXRhLCBcInV0Zi04XCIsIFwiaGV4XCIpO1xuICBlbmNyeXB0ZWQgKz0gY2lwaGVyLmZpbmFsKFwiaGV4XCIpO1xuICByZXR1cm4gZW5jcnlwdGVkO1xufTtcbi8vIGNyZWF0ZSBhbiBhZXMxMjggZGVjcnlwdGlvbiBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRBRVMxMjggPSAoZW5jcnlwdGlvbktleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBAdHMtaWdub3JlIC0tIHRoZSBwYWNrYWdlIG5lZWRzIHRvIGJlIGJ1aWx0XG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoXCJhZXMtMTI4LWVjYlwiLCBCdWZmZXIuZnJvbShlbmNyeXB0aW9uS2V5LCBcImJhc2U2NFwiKSwgXCJcIik7XG4gIGxldCBkZWNyeXB0ZWQgPSBjaXBoZXIudXBkYXRlKGRhdGEsIFwiaGV4XCIsIFwidXRmLThcIik7XG4gIGRlY3J5cHRlZCArPSBjaXBoZXIuZmluYWwoXCJ1dGYtOFwiKTtcbiAgcmV0dXJuIGRlY3J5cHRlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUxvY2FsU2lnbmVkVXJsID0gKFxuICBmaWxlTmFtZTogc3RyaW5nLFxuICBlbnZpcm9ubWVudElkOiBzdHJpbmcsXG4gIGZpbGVUeXBlOiBzdHJpbmdcbik6IHsgc2lnbmF0dXJlOiBzdHJpbmc7IHV1aWQ6IHN0cmluZzsgdGltZXN0YW1wOiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IHV1aWQgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoXCJoZXhcIik7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gIGNvbnN0IGRhdGEgPSBgJHt1dWlkfToke2ZpbGVOYW1lfToke2Vudmlyb25tZW50SWR9OiR7ZmlsZVR5cGV9OiR7dGltZXN0YW1wfWA7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZUhtYWMoXCJzaGEyNTZcIiwgZ2V0RW52KCkuRU5DUllQVElPTl9LRVkhKS51cGRhdGUoZGF0YSkuZGlnZXN0KFwiaGV4XCIpO1xuICByZXR1cm4geyBzaWduYXR1cmUsIHV1aWQsIHRpbWVzdGFtcCB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTG9jYWxTaWduZWRVcmwgPSAoXG4gIHV1aWQ6IHN0cmluZyxcbiAgZmlsZU5hbWU6IHN0cmluZyxcbiAgZW52aXJvbm1lbnRJZDogc3RyaW5nLFxuICBmaWxlVHlwZTogc3RyaW5nLFxuICB0aW1lc3RhbXA6IG51bWJlcixcbiAgc2lnbmF0dXJlOiBzdHJpbmcsXG4gIHNlY3JldDogc3RyaW5nXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgZGF0YSA9IGAke3V1aWR9OiR7ZmlsZU5hbWV9OiR7ZW52aXJvbm1lbnRJZH06JHtmaWxlVHlwZX06JHt0aW1lc3RhbXB9YDtcbiAgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUgPSBjcmVhdGVIbWFjKFwic2hhMjU2XCIsIHNlY3JldCkudXBkYXRlKGRhdGEpLmRpZ2VzdChcImhleFwiKTtcblxuICBpZiAoZXhwZWN0ZWRTaWduYXR1cmUgIT09IHNpZ25hdHVyZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHZhbGlkIGZvciA1IG1pbnV0ZXNcbiAgaWYgKERhdGUubm93KCkgLSB0aW1lc3RhbXAgPiAxMDAwICogNjAgKiA1KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19
@@ -0,0 +1 @@
1
+ export declare const getEnv: () => any;
@@ -0,0 +1,137 @@
1
+ import { createEnv } from "@t3-oss/env-nextjs";
2
+ import { z } from "zod";
3
+ export const getEnv = (() => {
4
+ let env = {};
5
+ return () => {
6
+ if (env == null) {
7
+ env = createEnv({
8
+ /*
9
+ * Serverside Environment variables, not available on the client.
10
+ * Will throw if you access these variables on the client.
11
+ */
12
+ server: {
13
+ APPCONDA_ENDPOINT: z.string(),
14
+ APPCONDA_CLIENT_ENDPOINT: z.string(),
15
+ _SERVICE_TOKEN: z.string(),
16
+ ENTERPRISE_LICENSE_KEY: z.string(),
17
+ NEXTAUTH_SECRET: z.string().min(1),
18
+ ENCRYPTION_KEY: z.string().length(64).or(z.string().length(32)),
19
+ CRON_SECRET: z.string().min(10),
20
+ _ADMIN_DOMAIN: z.string().optional(),
21
+ /* AI_AZURE_LLM_API_KEY: z.string().optional(),
22
+ AI_AZURE_EMBEDDINGS_DEPLOYMENT_ID: z.string().optional(),
23
+ AI_AZURE_LLM_DEPLOYMENT_ID: z.string().optional(),
24
+ AI_AZURE_EMBEDDINGS_RESSOURCE_NAME: z.string().optional(),
25
+ AI_AZURE_LLM_RESSOURCE_NAME: z.string().optional(),
26
+ AIRTABLE_CLIENT_ID: z.string().optional(),
27
+ AZUREAD_CLIENT_ID: z.string().optional(),
28
+ AZUREAD_CLIENT_SECRET: z.string().optional(),
29
+ AZUREAD_TENANT_ID: z.string().optional(),
30
+ CRON_SECRET: z.string().min(10),
31
+ CUSTOMER_IO_API_KEY: z.string().optional(),
32
+ CUSTOMER_IO_SITE_ID: z.string().optional(),
33
+ DATABASE_URL: z.string().url(),
34
+ DEBUG: z.enum(["1", "0"]).optional(),
35
+ DEFAULT_ORGANIZATION_ID: z.string().optional(),
36
+ DEFAULT_ORGANIZATION_ROLE: z.enum(["owner", "manager", "member", "billing"]).optional(),
37
+ E2E_TESTING: z.enum(["1", "0"]).optional(),
38
+ EMAIL_AUTH_DISABLED: z.enum(["1", "0"]).optional(),
39
+ EMAIL_VERIFICATION_DISABLED: z.enum(["1", "0"]).optional(),
40
+
41
+ ENTERPRISE_LICENSE_KEY: z.string().optional(),
42
+ FORMBRICKS_ENCRYPTION_KEY: z.string().length(24).or(z.string().length(0)).optional(),
43
+ GITHUB_ID: z.string().optional(),
44
+ GITHUB_SECRET: z.string().optional(),
45
+ GOOGLE_CLIENT_ID: z.string().optional(),
46
+ GOOGLE_CLIENT_SECRET: z.string().optional(),
47
+ GOOGLE_SHEETS_CLIENT_ID: z.string().optional(),
48
+ GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(),
49
+ GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(),
50
+ HTTP_PROXY: z.string().url().optional(),
51
+ HTTPS_PROXY: z.string().url().optional(),
52
+ IMPRINT_URL: z
53
+ .string()
54
+ .url()
55
+ .optional()
56
+ .or(z.string().refine((str) => str === "")),
57
+ IMPRINT_ADDRESS: z.string().optional(),
58
+ INVITE_DISABLED: z.enum(["1", "0"]).optional(),
59
+ INTERCOM_SECRET_KEY: z.string().optional(),
60
+ IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(),
61
+ MAIL_FROM: z.string().email().optional(),
62
+
63
+ NOTION_OAUTH_CLIENT_ID: z.string().optional(),
64
+ NOTION_OAUTH_CLIENT_SECRET: z.string().optional(),
65
+ OIDC_CLIENT_ID: z.string().optional(),
66
+ OIDC_CLIENT_SECRET: z.string().optional(),
67
+ OIDC_DISPLAY_NAME: z.string().optional(),
68
+ OIDC_ISSUER: z.string().optional(),
69
+ OIDC_SIGNING_ALGORITHM: z.string().optional(),
70
+ OPENTELEMETRY_LISTENER_URL: z.string().optional(),
71
+ REDIS_URL: z.string().optional(),
72
+ REDIS_HTTP_URL: z.string().optional(),
73
+ PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(),
74
+ PRIVACY_URL: z
75
+ .string()
76
+ .url()
77
+ .optional()
78
+ .or(z.string().refine((str) => str === "")),
79
+ RATE_LIMITING_DISABLED: z.enum(["1", "0"]).optional(),
80
+ S3_ACCESS_KEY: z.string().optional(),
81
+ S3_BUCKET_NAME: z.string().optional(),
82
+ S3_REGION: z.string().optional(),
83
+ S3_SECRET_KEY: z.string().optional(),
84
+ S3_ENDPOINT_URL: z.string().optional(),
85
+ S3_FORCE_PATH_STYLE: z.enum(["1", "0"]).optional(),
86
+ SHORT_URL_BASE: z.string().url().optional().or(z.string().length(0)),
87
+ SIGNUP_DISABLED: z.enum(["1", "0"]).optional(),
88
+ SLACK_CLIENT_ID: z.string().optional(),
89
+ SLACK_CLIENT_SECRET: z.string().optional(),
90
+ SMTP_HOST: z.string().min(1).optional(),
91
+ SMTP_PORT: z.string().min(1).optional(),
92
+ SMTP_SECURE_ENABLED: z.enum(["1", "0"]).optional(),
93
+ SMTP_USER: z.string().min(1).optional(),
94
+ SMTP_PASSWORD: z.string().min(1).optional(),
95
+ SMTP_AUTHENTICATED: z.enum(["1", "0"]).optional(),
96
+ SMTP_REJECT_UNAUTHORIZED_TLS: z.enum(["1", "0"]).optional(),
97
+ STRIPE_SECRET_KEY: z.string().optional(),
98
+ STRIPE_WEBHOOK_SECRET: z.string().optional(),
99
+ TELEMETRY_DISABLED: z.enum(["1", "0"]).optional(),
100
+ TERMS_URL: z
101
+ .string()
102
+ .url()
103
+ .optional()
104
+ .or(z.string().refine((str) => str === "")),
105
+ TURNSTILE_SECRET_KEY: z.string().optional(),
106
+ UPLOADS_DIR: z.string().min(1).optional(),
107
+ VERCEL_URL: z.string().optional(),
108
+
109
+ ADMIN_URL: z.string().url().optional(),
110
+ UNSPLASH_ACCESS_KEY: z.string().optional(),
111
+ LANGFUSE_SECRET_KEY: z.string().optional(),
112
+ LANGFUSE_PUBLIC_KEY: z.string().optional(),
113
+ LANGFUSE_BASEURL: z.string().optional(), */
114
+ },
115
+ /*
116
+ * Due to how Next.js bundles environment variables on Edge and Client,
117
+ * we need to manually destructure them to make sure all are included in bundle.
118
+ *
119
+ * 💡 You'll get type errors if not all variables from `server` & `client` are included here.
120
+ */
121
+ runtimeEnv: {
122
+ APPCONDA_ENDPOINT: process.env.APPCONDA_ENDPOINT,
123
+ APPCONDA_CLIENT_ENDPOINT: process.env.APPCONDA_CLIENT_ENDPOINT,
124
+ _SERVICE_TOKEN: process.env._SERVICE_TOKEN,
125
+ ENTERPRISE_LICENSE_KEY: process.env.ENTERPRISE_LICENSE_KEY,
126
+ NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
127
+ ENCRYPTION_KEY: process.env.ENCRYPTION_KEY,
128
+ CRON_SECRET: process.env.CRON_SECRET,
129
+ _ADMIN_DOMAIN: process.env._ADMIN_DOMAIN,
130
+ },
131
+ });
132
+ console.log(env);
133
+ }
134
+ return env;
135
+ };
136
+ })();
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHeEIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFO0lBQ3hCLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNsQixPQUFPLEdBQUcsRUFBRTtRQUNSLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2QsR0FBRyxHQUFHLFNBQVMsQ0FBQztnQkFDWjs7O21CQUdHO2dCQUNILE1BQU0sRUFBRTtvQkFDSixpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUM3Qix3QkFBd0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNwQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDMUIsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDbEMsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytEQTRGMkM7aUJBQzlDO2dCQUVEOzs7OzttQkFLRztnQkFDSCxVQUFVLEVBQUU7b0JBQ1IsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7b0JBQ2hELHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCO29CQUM5RCxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO29CQUMxQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtvQkFDMUQsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZTtvQkFDNUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztvQkFDMUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztvQkFDcEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYTtpQkFDM0M7YUFDSixDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUVmLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbnYgfSBmcm9tIFwiQHQzLW9zcy9lbnYtbmV4dGpzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5cbmV4cG9ydCBjb25zdCBnZXRFbnYgPSAoKCkgPT4ge1xuICAgIGxldCBlbnY6IGFueSA9IHt9O1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChlbnYgPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52ID0gY3JlYXRlRW52KHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAqIFNlcnZlcnNpZGUgRW52aXJvbm1lbnQgdmFyaWFibGVzLCBub3QgYXZhaWxhYmxlIG9uIHRoZSBjbGllbnQuXG4gICAgICAgICAgICAgICAgICogV2lsbCB0aHJvdyBpZiB5b3UgYWNjZXNzIHRoZXNlIHZhcmlhYmxlcyBvbiB0aGUgY2xpZW50LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgICAgICAgICAgICBBUFBDT05EQV9FTkRQT0lOVDogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQVBQQ09OREFfQ0xJRU5UX0VORFBPSU5UOiB6LnN0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBfU0VSVklDRV9UT0tFTjogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgRU5URVJQUklTRV9MSUNFTlNFX0tFWTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgTkVYVEFVVEhfU0VDUkVUOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgICAgICAgICAgICAgICAgRU5DUllQVElPTl9LRVk6IHouc3RyaW5nKCkubGVuZ3RoKDY0KS5vcih6LnN0cmluZygpLmxlbmd0aCgzMikpLFxuICAgICAgICAgICAgICAgICAgICBDUk9OX1NFQ1JFVDogei5zdHJpbmcoKS5taW4oMTApLFxuICAgICAgICAgICAgICAgICAgICBfQURNSU5fRE9NQUlOOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIC8qIEFJX0FaVVJFX0xMTV9BUElfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFJX0FaVVJFX0VNQkVERElOR1NfREVQTE9ZTUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSV9BWlVSRV9MTE1fREVQTE9ZTUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSV9BWlVSRV9FTUJFRERJTkdTX1JFU1NPVVJDRV9OQU1FOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFJX0FaVVJFX0xMTV9SRVNTT1VSQ0VfTkFNRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSVJUQUJMRV9DTElFTlRfSUQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQVpVUkVBRF9DTElFTlRfSUQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQVpVUkVBRF9DTElFTlRfU0VDUkVUOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFaVVJFQURfVEVOQU5UX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIENST05fU0VDUkVUOiB6LnN0cmluZygpLm1pbigxMCksXG4gICAgICAgICAgICAgICAgICAgIENVU1RPTUVSX0lPX0FQSV9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQ1VTVE9NRVJfSU9fU0lURV9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBEQVRBQkFTRV9VUkw6IHouc3RyaW5nKCkudXJsKCksXG4gICAgICAgICAgICAgICAgICAgIERFQlVHOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIERFRkFVTFRfT1JHQU5JWkFUSU9OX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIERFRkFVTFRfT1JHQU5JWkFUSU9OX1JPTEU6IHouZW51bShbXCJvd25lclwiLCBcIm1hbmFnZXJcIiwgXCJtZW1iZXJcIiwgXCJiaWxsaW5nXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBFMkVfVEVTVElORzogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBFTUFJTF9BVVRIX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEVNQUlMX1ZFUklGSUNBVElPTl9ESVNBQkxFRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBFTlRFUlBSSVNFX0xJQ0VOU0VfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEZPUk1CUklDS1NfRU5DUllQVElPTl9LRVk6IHouc3RyaW5nKCkubGVuZ3RoKDI0KS5vcih6LnN0cmluZygpLmxlbmd0aCgwKSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR0lUSFVCX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEdJVEhVQl9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR09PR0xFX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfQ0xJRU5UX1NFQ1JFVDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfU0hFRVRTX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfU0hFRVRTX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR09PR0xFX1NIRUVUU19SRURJUkVDVF9VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSFRUUF9QUk9YWTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBIVFRQU19QUk9YWTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBJTVBSSU5UX1VSTDogelxuICAgICAgICAgICAgICAgICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIC51cmwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yKHouc3RyaW5nKCkucmVmaW5lKChzdHIpID0+IHN0ciA9PT0gXCJcIikpLFxuICAgICAgICAgICAgICAgICAgICBJTVBSSU5UX0FERFJFU1M6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSU5WSVRFX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIElOVEVSQ09NX1NFQ1JFVF9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSVNfRk9STUJSSUNLU19DTE9VRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBNQUlMX0ZST006IHouc3RyaW5nKCkuZW1haWwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgTk9USU9OX09BVVRIX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBOT1RJT05fT0FVVEhfQ0xJRU5UX1NFQ1JFVDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPSURDX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPSURDX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19ESVNQTEFZX05BTUU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19JU1NVRVI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19TSUdOSU5HX0FMR09SSVRITTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPUEVOVEVMRU1FVFJZX0xJU1RFTkVSX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBSRURJU19VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUkVESVNfSFRUUF9VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRfUkVTRVRfRElTQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUFJJVkFDWV9VUkw6IHpcbiAgICAgICAgICAgICAgICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAudXJsKClcbiAgICAgICAgICAgICAgICAgICAgICAub3B0aW9uYWwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcih6LnN0cmluZygpLnJlZmluZSgoc3RyKSA9PiBzdHIgPT09IFwiXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgUkFURV9MSU1JVElOR19ESVNBQkxFRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19BQ0NFU1NfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX0JVQ0tFVF9OQU1FOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX1JFR0lPTjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19TRUNSRVRfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX0VORFBPSU5UX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19GT1JDRV9QQVRIX1NUWUxFOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNIT1JUX1VSTF9CQVNFOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCkub3Ioei5zdHJpbmcoKS5sZW5ndGgoMCkpLFxuICAgICAgICAgICAgICAgICAgICBTSUdOVVBfRElTQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU0xBQ0tfQ0xJRU5UX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNMQUNLX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9IT1NUOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX1BPUlQ6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNNVFBfU0VDVVJFX0VOQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9VU0VSOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX1BBU1NXT1JEOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX0FVVEhFTlRJQ0FURUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9SRUpFQ1RfVU5BVVRIT1JJWkVEX1RMUzogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTVFJJUEVfU0VDUkVUX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTVFJJUEVfV0VCSE9PS19TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgVEVMRU1FVFJZX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFRFUk1TX1VSTDogelxuICAgICAgICAgICAgICAgICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIC51cmwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yKHouc3RyaW5nKCkucmVmaW5lKChzdHIpID0+IHN0ciA9PT0gXCJcIikpLFxuICAgICAgICAgICAgICAgICAgICBUVVJOU1RJTEVfU0VDUkVUX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBVUExPQURTX0RJUjogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgVkVSQ0VMX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIEFETUlOX1VSTDogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBVTlNQTEFTSF9BQ0NFU1NfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIExBTkdGVVNFX1NFQ1JFVF9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgTEFOR0ZVU0VfUFVCTElDX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBMQU5HRlVTRV9CQVNFVVJMOiB6LnN0cmluZygpLm9wdGlvbmFsKCksICovXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICogRHVlIHRvIGhvdyBOZXh0LmpzIGJ1bmRsZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIEVkZ2UgYW5kIENsaWVudCxcbiAgICAgICAgICAgICAgICAgKiB3ZSBuZWVkIHRvIG1hbnVhbGx5IGRlc3RydWN0dXJlIHRoZW0gdG8gbWFrZSBzdXJlIGFsbCBhcmUgaW5jbHVkZWQgaW4gYnVuZGxlLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICog8J+SoSBZb3UnbGwgZ2V0IHR5cGUgZXJyb3JzIGlmIG5vdCBhbGwgdmFyaWFibGVzIGZyb20gYHNlcnZlcmAgJiBgY2xpZW50YCBhcmUgaW5jbHVkZWQgaGVyZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBydW50aW1lRW52OiB7XG4gICAgICAgICAgICAgICAgICAgIEFQUENPTkRBX0VORFBPSU5UOiBwcm9jZXNzLmVudi5BUFBDT05EQV9FTkRQT0lOVCxcbiAgICAgICAgICAgICAgICAgICAgQVBQQ09OREFfQ0xJRU5UX0VORFBPSU5UOiBwcm9jZXNzLmVudi5BUFBDT05EQV9DTElFTlRfRU5EUE9JTlQsXG4gICAgICAgICAgICAgICAgICAgIF9TRVJWSUNFX1RPS0VOOiBwcm9jZXNzLmVudi5fU0VSVklDRV9UT0tFTixcbiAgICAgICAgICAgICAgICAgICAgRU5URVJQUklTRV9MSUNFTlNFX0tFWTogcHJvY2Vzcy5lbnYuRU5URVJQUklTRV9MSUNFTlNFX0tFWSxcbiAgICAgICAgICAgICAgICAgICAgTkVYVEFVVEhfU0VDUkVUOiBwcm9jZXNzLmVudi5ORVhUQVVUSF9TRUNSRVQsXG4gICAgICAgICAgICAgICAgICAgIEVOQ1JZUFRJT05fS0VZOiBwcm9jZXNzLmVudi5FTkNSWVBUSU9OX0tFWSxcbiAgICAgICAgICAgICAgICAgICAgQ1JPTl9TRUNSRVQ6IHByb2Nlc3MuZW52LkNST05fU0VDUkVULFxuICAgICAgICAgICAgICAgICAgICBfQURNSU5fRE9NQUlOOiBwcm9jZXNzLmVudi5fQURNSU5fRE9NQUlOLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVudik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW52O1xuXG4gICAgfTtcbn0pKCk7XG5cblxuXG5cbiJdfQ==