@ibgib/node-gib 0.0.14 → 0.0.17

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 (218) hide show
  1. package/data/identity_index/email/hashes/32/13/49/e64f32730f01a61ada211f29eaf0a210fc2386b668ad04d7e8a9b16766.json +4 -0
  2. package/dist/email/email-helpers.d.mts.map +1 -1
  3. package/dist/email/email-helpers.mjs.map +1 -1
  4. package/dist/email/index.d.mts +3 -0
  5. package/dist/email/index.d.mts.map +1 -1
  6. package/dist/email/index.mjs +3 -0
  7. package/dist/email/index.mjs.map +1 -1
  8. package/dist/email/verify/email-verify-constants.d.mts +3 -0
  9. package/dist/email/verify/email-verify-constants.d.mts.map +1 -0
  10. package/dist/email/verify/email-verify-constants.mjs +3 -0
  11. package/dist/email/verify/email-verify-constants.mjs.map +1 -0
  12. package/dist/email/verify/email-verify-helpers.d.mts +107 -0
  13. package/dist/email/verify/email-verify-helpers.d.mts.map +1 -0
  14. package/dist/email/verify/email-verify-helpers.mjs +357 -0
  15. package/dist/email/verify/email-verify-helpers.mjs.map +1 -0
  16. package/dist/email/verify/email-verify-types.d.mts +41 -0
  17. package/dist/email/verify/email-verify-types.d.mts.map +1 -0
  18. package/dist/email/verify/email-verify-types.mjs +2 -0
  19. package/dist/email/verify/email-verify-types.mjs.map +1 -0
  20. package/dist/identity/sso/custodian-auth-helpers.d.mts +45 -0
  21. package/dist/identity/sso/custodian-auth-helpers.d.mts.map +1 -0
  22. package/dist/identity/sso/custodian-auth-helpers.mjs +108 -0
  23. package/dist/identity/sso/custodian-auth-helpers.mjs.map +1 -0
  24. package/dist/identity/sso/sso-config-helper.d.mts +7 -0
  25. package/dist/identity/sso/sso-config-helper.d.mts.map +1 -0
  26. package/dist/identity/sso/sso-config-helper.mjs +42 -0
  27. package/dist/identity/sso/sso-config-helper.mjs.map +1 -0
  28. package/dist/identity/sso/sso-custodian-service.d.mts +139 -0
  29. package/dist/identity/sso/sso-custodian-service.d.mts.map +1 -0
  30. package/dist/identity/sso/sso-custodian-service.mjs +471 -0
  31. package/dist/identity/sso/sso-custodian-service.mjs.map +1 -0
  32. package/dist/identity/sso/sso-types.d.mts +71 -0
  33. package/dist/identity/sso/sso-types.d.mts.map +1 -0
  34. package/dist/identity/sso/sso-types.mjs +7 -0
  35. package/dist/identity/sso/sso-types.mjs.map +1 -0
  36. package/dist/index.d.mts +5 -1
  37. package/dist/index.d.mts.map +1 -1
  38. package/dist/index.mjs +5 -1
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -1
  41. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +9 -2
  42. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -1
  43. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts +29 -0
  44. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts.map +1 -0
  45. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs +149 -0
  46. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs.map +1 -0
  47. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts +24 -0
  48. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts.map +1 -0
  49. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs +212 -0
  50. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs.map +1 -0
  51. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts +37 -0
  52. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts.map +1 -0
  53. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs +192 -0
  54. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs.map +1 -0
  55. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts +33 -0
  56. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts.map +1 -0
  57. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs +173 -0
  58. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map +1 -0
  59. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -1
  60. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +2 -3
  61. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -1
  62. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -1
  63. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +38 -3
  64. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -1
  65. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -1
  66. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +54 -24
  67. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -1
  68. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -1
  69. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +13 -13
  70. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -1
  71. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +1 -1
  72. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -1
  73. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +3 -3
  74. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -1
  75. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -1
  76. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +28 -15
  77. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -1
  78. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +29 -15
  79. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -1
  80. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +105 -108
  81. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
  82. package/dist/serve-gib/identity-index/identity-index-constants.d.mts +3 -2
  83. package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -1
  84. package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -2
  85. package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -1
  86. package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -1
  87. package/dist/serve-gib/identity-index/identity-index-helpers.mjs +28 -11
  88. package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -1
  89. package/dist/serve-gib/identity-index/identity-index-service.d.mts +20 -3
  90. package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
  91. package/dist/serve-gib/identity-index/identity-index-service.mjs +134 -18
  92. package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
  93. package/dist/serve-gib/identity-index/identity-index-types.d.mts +4 -2
  94. package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -1
  95. package/dist/serve-gib/index.d.mts +4 -0
  96. package/dist/serve-gib/index.d.mts.map +1 -1
  97. package/dist/serve-gib/index.mjs +12 -0
  98. package/dist/serve-gib/index.mjs.map +1 -1
  99. package/dist/serve-gib/path-constants.d.mts +17 -0
  100. package/dist/serve-gib/path-constants.d.mts.map +1 -1
  101. package/dist/serve-gib/path-constants.mjs +17 -0
  102. package/dist/serve-gib/path-constants.mjs.map +1 -1
  103. package/e2e/identity-custodian-lifecycle.e2e.md +93 -0
  104. package/e2e/identity-sso-lifecycle.e2e.md +132 -0
  105. package/package.json +5 -5
  106. package/src/email/email-helpers.mts +0 -1
  107. package/src/email/index.mts +3 -0
  108. package/src/email/verify/email-verify-constants.mts +3 -0
  109. package/src/email/verify/email-verify-helpers.mts +466 -0
  110. package/src/email/verify/email-verify-types.mts +47 -0
  111. package/src/identity/sso/custodian-auth-helpers.mts +146 -0
  112. package/src/identity/sso/custodian-auth-helpers.respec.mts +97 -0
  113. package/src/identity/sso/sso-config-helper.mts +52 -0
  114. package/src/identity/sso/sso-custodian-service.mts +566 -0
  115. package/src/identity/sso/sso-custodian-service.respec.mts +297 -0
  116. package/src/identity/sso/sso-types.mts +80 -0
  117. package/src/index.mts +14 -0
  118. package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +8 -2
  119. package/src/serve-gib/handlers/api/email/email-verification-code.handler.mts +163 -0
  120. package/src/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mts +231 -0
  121. package/src/serve-gib/handlers/api/email/email-verify.respec.mts +183 -0
  122. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts +233 -0
  123. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.respec.mts +93 -0
  124. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts +210 -0
  125. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +112 -0
  126. package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +2 -4
  127. package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +42 -3
  128. package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +46 -23
  129. package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +11 -15
  130. package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +1 -1
  131. package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +3 -3
  132. package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +29 -17
  133. package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +132 -125
  134. package/src/serve-gib/identity-index/identity-index-constants.mts +5 -2
  135. package/src/serve-gib/identity-index/identity-index-helpers.mts +26 -12
  136. package/src/serve-gib/identity-index/identity-index-service.mts +133 -16
  137. package/src/serve-gib/identity-index/identity-index-service.respec.mts +1 -1
  138. package/src/serve-gib/identity-index/identity-index-types.mts +4 -2
  139. package/src/serve-gib/index.mts +12 -0
  140. package/src/serve-gib/path-constants.mts +20 -0
  141. package/tsconfig.json +2 -2
  142. package/tsconfig.test.json +1 -1
  143. package/dist/assumptions.respec.d.mts +0 -2
  144. package/dist/assumptions.respec.d.mts.map +0 -1
  145. package/dist/assumptions.respec.mjs +0 -41
  146. package/dist/assumptions.respec.mjs.map +0 -1
  147. package/dist/email/email-service.respec.d.mts +0 -2
  148. package/dist/email/email-service.respec.d.mts.map +0 -1
  149. package/dist/email/email-service.respec.mjs +0 -115
  150. package/dist/email/email-service.respec.mjs.map +0 -1
  151. package/dist/serve-gib/bootstrap-helper.respec.d.mts +0 -2
  152. package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +0 -1
  153. package/dist/serve-gib/bootstrap-helper.respec.mjs +0 -85
  154. package/dist/serve-gib/bootstrap-helper.respec.mjs.map +0 -1
  155. package/dist/serve-gib/handlers/api/health.respec.d.mts +0 -2
  156. package/dist/serve-gib/handlers/api/health.respec.d.mts.map +0 -1
  157. package/dist/serve-gib/handlers/api/health.respec.mjs +0 -47
  158. package/dist/serve-gib/handlers/api/health.respec.mjs.map +0 -1
  159. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +0 -2
  160. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +0 -1
  161. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +0 -98
  162. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +0 -1
  163. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +0 -2
  164. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +0 -1
  165. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +0 -131
  166. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +0 -1
  167. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +0 -2
  168. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +0 -1
  169. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +0 -109
  170. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +0 -1
  171. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +0 -2
  172. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +0 -1
  173. package/dist/serve-gib/keystone-schema-helpers.respec.mjs +0 -68
  174. package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +0 -1
  175. package/dist/serve-gib/path-helper.respec.d.mts +0 -2
  176. package/dist/serve-gib/path-helper.respec.d.mts.map +0 -1
  177. package/dist/serve-gib/path-helper.respec.mjs +0 -83
  178. package/dist/serve-gib/path-helper.respec.mjs.map +0 -1
  179. package/dist/serve-gib/serve-gib.respec.d.mts +0 -2
  180. package/dist/serve-gib/serve-gib.respec.d.mts.map +0 -1
  181. package/dist/serve-gib/serve-gib.respec.mjs +0 -85
  182. package/dist/serve-gib/serve-gib.respec.mjs.map +0 -1
  183. package/dist/spec-helper.node.respec.d.mts +0 -13
  184. package/dist/spec-helper.node.respec.d.mts.map +0 -1
  185. package/dist/spec-helper.node.respec.mjs +0 -50
  186. package/dist/spec-helper.node.respec.mjs.map +0 -1
  187. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  188. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  189. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs +0 -52
  190. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  191. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  192. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  193. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs +0 -53
  194. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  195. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  196. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  197. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs +0 -59
  198. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  199. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  200. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  201. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs +0 -55
  202. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  203. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +0 -2
  204. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +0 -1
  205. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +0 -67
  206. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +0 -1
  207. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +0 -2
  208. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +0 -1
  209. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +0 -67
  210. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +0 -1
  211. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +0 -2
  212. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +0 -1
  213. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +0 -68
  214. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +0 -1
  215. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +0 -2
  216. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +0 -1
  217. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +0 -69
  218. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { CustodianRequirements } from './sso-types.mjs';
2
+ /**
3
+ * Derives a deterministic single-turn authorization code using the server's private KDF secret
4
+ * and the JSON-stringified `custodianReqs` (excluding `authCode` itself) as salt.
5
+ *
6
+ * @param custodianReqsOmitAuthCode The custodian requirements object omitting the `authCode` property.
7
+ * @param serverSecret The server's private KDF secret (`SSO_SERVER_KDF_SECRET`).
8
+ */
9
+ export declare function deriveCustodianAuthCode({ custodianReqsOmitAuthCode, serverSecret, }: {
10
+ custodianReqsOmitAuthCode: Omit<CustodianRequirements, 'authCode'>;
11
+ serverSecret: string;
12
+ }): Promise<string>;
13
+ /**
14
+ * Generates a full `CustodianRequirements` object containing single-turn nonce,
15
+ * expiration timestamp, permitted verbs, and derived auth code.
16
+ *
17
+ * @param primaryTjpAddr Primary identity keystone TJP address (`ib^gib`).
18
+ * @param ttlMs Time-to-live duration in milliseconds. Defaults to 15 minutes.
19
+ * @param allowedVerbs Permitted keystone verbs. Defaults to `['sync', 'connect']`.
20
+ * @param serverSecret The server's private KDF secret (`SSO_SERVER_KDF_SECRET`).
21
+ */
22
+ export declare function generateCustodianRequirements({ primaryTjpAddr, ttlMs, allowedVerbs, serverSecret, }: {
23
+ primaryTjpAddr: string;
24
+ ttlMs?: number;
25
+ allowedVerbs?: string[];
26
+ serverSecret: string;
27
+ }): Promise<CustodianRequirements>;
28
+ /**
29
+ * Computes the deterministic index hash (`authCustodianIndex`) over the full `CustodianRequirements` object
30
+ * used for atomic file reservation tracking on the server filesystem.
31
+ */
32
+ export declare function getAuthCustodianIndex({ custodianReqs, }: {
33
+ custodianReqs: CustodianRequirements;
34
+ }): Promise<string>;
35
+ /**
36
+ * Cryptographically verifies a `CustodianRequirements` object against expiration and server KDF authCode match.
37
+ */
38
+ export declare function verifyCustodianRequirements({ custodianReqs, serverSecret, }: {
39
+ custodianReqs: CustodianRequirements;
40
+ serverSecret: string;
41
+ }): Promise<{
42
+ valid: boolean;
43
+ error?: string;
44
+ }>;
45
+ //# sourceMappingURL=custodian-auth-helpers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custodian-auth-helpers.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/custodian-auth-helpers.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,yBAAyB,EACzB,YAAY,GACf,EAAE;IACC,yBAAyB,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;IACnE,YAAY,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,EAChD,cAAc,EACd,KAAsB,EACtB,YAA0D,EAC1D,YAAY,GACf,EAAE;IACC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAiCjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,EACxC,aAAa,GAChB,EAAE;IACC,aAAa,EAAE,qBAAqB,CAAC;CACxC,GAAG,OAAO,CAAC,MAAM,CAAC,CAKlB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,EAC9C,aAAa,EACb,YAAY,GACf,EAAE;IACC,aAAa,EAAE,qBAAqB,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB9C"}
@@ -0,0 +1,108 @@
1
+ import { getUUID, hash, HashAlgorithm, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
2
+ import { kdf_recursiveSaltWrap } from '@ibgib/core-gib/dist/keystone/kdf/kdf-helpers.mjs';
3
+ import { KEYSTONE_VERB_SYNC, KEYSTONE_VERB_CONNECT } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
4
+ /**
5
+ * Derives a deterministic single-turn authorization code using the server's private KDF secret
6
+ * and the JSON-stringified `custodianReqs` (excluding `authCode` itself) as salt.
7
+ *
8
+ * @param custodianReqsOmitAuthCode The custodian requirements object omitting the `authCode` property.
9
+ * @param serverSecret The server's private KDF secret (`SSO_SERVER_KDF_SECRET`).
10
+ */
11
+ export async function deriveCustodianAuthCode({ custodianReqsOmitAuthCode, serverSecret, }) {
12
+ const lc = `[${deriveCustodianAuthCode.name}]`;
13
+ try {
14
+ if (!serverSecret) {
15
+ throw new Error('serverSecret required for custodian auth code derivation (E: a1b2c3d4e5f67890123456789abcdef0)');
16
+ }
17
+ const salt = await hash({
18
+ s: JSON.stringify(custodianReqsOmitAuthCode),
19
+ algorithm: HashAlgorithm.sha_512
20
+ });
21
+ return await kdf_recursiveSaltWrap({
22
+ masterSecret: serverSecret,
23
+ salt,
24
+ rounds: 1000,
25
+ algorithm: HashAlgorithm.sha_512
26
+ });
27
+ }
28
+ catch (error) {
29
+ console.error(`${lc} ${extractErrorMsg(error)}`);
30
+ throw error;
31
+ }
32
+ }
33
+ /**
34
+ * Generates a full `CustodianRequirements` object containing single-turn nonce,
35
+ * expiration timestamp, permitted verbs, and derived auth code.
36
+ *
37
+ * @param primaryTjpAddr Primary identity keystone TJP address (`ib^gib`).
38
+ * @param ttlMs Time-to-live duration in milliseconds. Defaults to 15 minutes.
39
+ * @param allowedVerbs Permitted keystone verbs. Defaults to `['sync', 'connect']`.
40
+ * @param serverSecret The server's private KDF secret (`SSO_SERVER_KDF_SECRET`).
41
+ */
42
+ export async function generateCustodianRequirements({ primaryTjpAddr, ttlMs = 15 * 60 * 1000, allowedVerbs = [KEYSTONE_VERB_SYNC, KEYSTONE_VERB_CONNECT], serverSecret, }) {
43
+ const lc = `[${generateCustodianRequirements.name}]`;
44
+ try {
45
+ if (!primaryTjpAddr) {
46
+ throw new Error('primaryTjpAddr is required to generate custodian requirements (E: b2c3d4e5f67890123456789abcdef01)');
47
+ }
48
+ if (!serverSecret) {
49
+ throw new Error('serverSecret is required to generate custodian requirements (E: c3d4e5f67890123456789abcdef012)');
50
+ }
51
+ const nonce = await getUUID();
52
+ const expiresAt = Date.now() + ttlMs;
53
+ const custodianReqsOmitAuthCode = {
54
+ primaryTjpAddr,
55
+ nonce,
56
+ expiresAt,
57
+ allowedVerbs,
58
+ };
59
+ const authCode = await deriveCustodianAuthCode({
60
+ custodianReqsOmitAuthCode,
61
+ serverSecret
62
+ });
63
+ return {
64
+ ...custodianReqsOmitAuthCode,
65
+ authCode
66
+ };
67
+ }
68
+ catch (error) {
69
+ console.error(`${lc} ${extractErrorMsg(error)}`);
70
+ throw error;
71
+ }
72
+ }
73
+ /**
74
+ * Computes the deterministic index hash (`authCustodianIndex`) over the full `CustodianRequirements` object
75
+ * used for atomic file reservation tracking on the server filesystem.
76
+ */
77
+ export async function getAuthCustodianIndex({ custodianReqs, }) {
78
+ return await hash({
79
+ s: JSON.stringify(custodianReqs),
80
+ algorithm: HashAlgorithm.sha_256
81
+ });
82
+ }
83
+ /**
84
+ * Cryptographically verifies a `CustodianRequirements` object against expiration and server KDF authCode match.
85
+ */
86
+ export async function verifyCustodianRequirements({ custodianReqs, serverSecret, }) {
87
+ try {
88
+ if (!custodianReqs || !custodianReqs.authCode || !custodianReqs.nonce || !custodianReqs.expiresAt || !custodianReqs.primaryTjpAddr) {
89
+ return { valid: false, error: 'Malformed custodian requirements structure. (E: d4e5f67890123456789abcdef0123)' };
90
+ }
91
+ if (Date.now() > custodianReqs.expiresAt) {
92
+ return { valid: false, error: 'Custodian requirements have expired. (E: e5f67890123456789abcdef01234)' };
93
+ }
94
+ const { authCode, ...custodianReqsOmitAuthCode } = custodianReqs;
95
+ const expectedAuthCode = await deriveCustodianAuthCode({
96
+ custodianReqsOmitAuthCode,
97
+ serverSecret
98
+ });
99
+ if (authCode !== expectedAuthCode) {
100
+ return { valid: false, error: 'Cryptographic authCode mismatch. Requirement payload tampered or invalid. (E: f67890123456789abcdef012345)' };
101
+ }
102
+ return { valid: true };
103
+ }
104
+ catch (error) {
105
+ return { valid: false, error: `Verification failed: ${extractErrorMsg(error)} (E: 7890123456789abcdef0123456)` };
106
+ }
107
+ }
108
+ //# sourceMappingURL=custodian-auth-helpers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custodian-auth-helpers.mjs","sourceRoot":"","sources":["../../../src/identity/sso/custodian-auth-helpers.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { SsoServerConfig } from './sso-types.mjs';
2
+ /**
3
+ * Loads the SSO configuration from environment variables.
4
+ * Parses active OAuth2 providers dynamically based on their environment keys.
5
+ */
6
+ export declare function loadSsoServerConfig(): SsoServerConfig;
7
+ //# sourceMappingURL=sso-config-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-config-helper.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/sso-config-helper.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0C,MAAM,iBAAiB,CAAC;AAE1F;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,CA6CrD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Loads the SSO configuration from environment variables.
3
+ * Parses active OAuth2 providers dynamically based on their environment keys.
4
+ */
5
+ export function loadSsoServerConfig() {
6
+ const ssoServerKdfSecret = process.env.SSO_SERVER_KDF_SECRET;
7
+ const sessionSecret = process.env.SESSION_SECRET;
8
+ if (!ssoServerKdfSecret) {
9
+ throw new Error(`SSO_SERVER_KDF_SECRET is missing from environment. (E: 840899ab4fdfd23e89cfae1889cfae12)`);
10
+ }
11
+ if (!sessionSecret) {
12
+ throw new Error(`SESSION_SECRET is missing from environment. (E: bfa899ab4fdfd23e89cfae23)`);
13
+ }
14
+ const providers = {};
15
+ // Load Google Provider if configured
16
+ if (process.env.GOOGLE_CLIENT_ID && process.env.GOOGLE_CLIENT_SECRET) {
17
+ providers.google = {
18
+ providerId: 'google',
19
+ clientId: process.env.GOOGLE_CLIENT_ID,
20
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET,
21
+ tokenUrl: 'https://oauth2.googleapis.com/token',
22
+ userInfoUrl: 'https://openidconnect.googleapis.com/v1/userinfo',
23
+ jwksUrl: 'https://www.googleapis.com/oauth2/v3/certs'
24
+ };
25
+ }
26
+ // Load GitHub Provider if configured
27
+ if (process.env.GITHUB_CLIENT_ID && process.env.GITHUB_CLIENT_SECRET) {
28
+ providers.github = {
29
+ providerId: 'github',
30
+ clientId: process.env.GITHUB_CLIENT_ID,
31
+ clientSecret: process.env.GITHUB_CLIENT_SECRET,
32
+ tokenUrl: 'https://github.com/login/oauth/access_token',
33
+ userInfoUrl: 'https://api.github.com/user'
34
+ };
35
+ }
36
+ return {
37
+ ssoServerKdfSecret,
38
+ sessionSecret,
39
+ providers
40
+ };
41
+ }
42
+ //# sourceMappingURL=sso-config-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-config-helper.mjs","sourceRoot":"","sources":["../../../src/identity/sso/sso-config-helper.mts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAEjD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACX,0FAA0F,CAC7F,CAAC;IACN,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACX,2EAA2E,CAC9E,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAA4D,EAAE,CAAC;IAE9E,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnE,SAAS,CAAC,MAAM,GAAG;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,QAAQ,EAAE,qCAAqC;YAC/C,WAAW,EAAE,kDAAkD;YAC/D,OAAO,EAAE,4CAA4C;SACxD,CAAC;IACN,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnE,SAAS,CAAC,MAAM,GAAG;YACf,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACtC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,QAAQ,EAAE,6CAA6C;YACvD,WAAW,EAAE,6BAA6B;SAC7C,CAAC;IACN,CAAC;IAED,OAAO;QACH,kBAAkB;QAClB,aAAa;QACb,SAAS;KACZ,CAAC;AACN,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
2
+ import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
3
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
4
+ import { SsoServerConfig, SsoProviderId, OAuthUserInfo, SsoProviderServerConfig, SsoProviderClientConfig } from './sso-types.mjs';
5
+ /**
6
+ * Server-side service for token exchange, JWT validation, and user profile normalization.
7
+ */
8
+ export declare class SsoCustodianService {
9
+ private config;
10
+ private lc;
11
+ private jwksCache;
12
+ private jwksTtlMs;
13
+ /**
14
+ * @param config The server's global SSO configuration.
15
+ * - Visibility: Private (Contains high-entropy secrets like `ssoServerKdfSecret` and `sessionSecret`).
16
+ * - Generator: Server (Bootstrapped from node environment variables on server initialization).
17
+ */
18
+ constructor(config: SsoServerConfig);
19
+ /**
20
+ * Exchanges an authorization code for an OAuth2 token and retrieves normalized user info.
21
+ *
22
+ * @param providerId The string identifier of the OAuth provider (e.g. 'google' or 'github').
23
+ * - Visibility: Public (Non-sensitive metadata string).
24
+ * - Generator: Client (Sent from browser UI selection).
25
+ *
26
+ * @param code The temporary authorization code returned by the OAuth provider.
27
+ * - Visibility: Private (Confidential short-lived bearer credential. Must be kept private).
28
+ * - Generator: Provider (Created by provider's OAuth page and sent to client redirect URI).
29
+ *
30
+ * @param redirectUri The redirect URI registered in the provider portal.
31
+ * - Visibility: Public (Configuration URL).
32
+ * - Generator: Client/Server (Derived from environmental configuration and sent by client).
33
+ */
34
+ getOAuthUserInfo(providerId: SsoProviderId, code: string, redirectUri: string): Promise<OAuthUserInfo>;
35
+ /**
36
+ * Directly validates a Google ID Token (JWT) locally and returns normalized user info.
37
+ * Useful for client-side authentication handshakes.
38
+ *
39
+ * @param idToken The raw base64-encoded signed JSON Web Token (JWT) ID token returned by Google.
40
+ * - Visibility: Private (Sensitive bearer credential containing signature and claims. Must be kept private).
41
+ * - Generator: Provider (Generated and signed cryptographically by Google authentication servers).
42
+ */
43
+ verifyAndNormalizeGoogleToken(idToken: string): Promise<OAuthUserInfo>;
44
+ /**
45
+ * Internal: Exchange authorization code for access token / ID token.
46
+ *
47
+ * @param providerConfig Server configuration settings for the specific provider.
48
+ * - Visibility: Private (Contains provider client secrets. Must stay server-side).
49
+ * - Generator: Server (Configured from node environment variables).
50
+ *
51
+ * @param code The temporary authorization code to exchange.
52
+ * - Visibility: Private (Short-lived credential. Must be kept private).
53
+ * - Generator: Provider (Via OAuth flow).
54
+ *
55
+ * @param redirectUri The redirect URI registered for the exchange.
56
+ * - Visibility: Public (Configuration URL).
57
+ * - Generator: Client/Server (From app configuration).
58
+ */
59
+ private exchangeCodeForTokens;
60
+ /**
61
+ * Internal: Fetch GitHub user profile and normalize.
62
+ *
63
+ * @param providerConfig Server configuration settings for GitHub.
64
+ * - Visibility: Private (Contains GitHub client secret).
65
+ * - Generator: Server (From environment config).
66
+ *
67
+ * @param accessToken The active OAuth2 access token to authorize the API call.
68
+ * - Visibility: Private (Bearer token. Must be kept private).
69
+ * - Generator: Provider (GitHub token endpoint).
70
+ */
71
+ private fetchAndNormalizeGithubUser;
72
+ /**
73
+ * Internal: Decodes and cryptographically verifies a JWT signature using JWKS public keys.
74
+ *
75
+ * @param token The raw base64-encoded JWT token to verify.
76
+ * - Visibility: Private (Sensitive token. Must be kept private).
77
+ * - Generator: Provider (Google / OIDC server).
78
+ *
79
+ * @param providerConfig The target provider server settings containing `jwksUrl`.
80
+ * - Visibility: Private (Contains secrets).
81
+ * - Generator: Server (From environment config).
82
+ */
83
+ verifyJwt(token: string, providerConfig: SsoProviderServerConfig): Promise<any>;
84
+ /**
85
+ * Internal: Retrieves JWKS keys from cache or fetches them from the provider's jwksUrl.
86
+ *
87
+ * @param providerConfig The provider config containing the target `jwksUrl`.
88
+ * - Visibility: Private (Contains client secrets).
89
+ * - Generator: Server (From environment config).
90
+ */
91
+ private getJwksKeys;
92
+ /**
93
+ * Derives a server-delegate master secret deterministically using the server's private KDF secret,
94
+ * the providerKey, and the user's public nonce.
95
+ *
96
+ * @param providerKey The unique key identifying the provider and user sub ID (e.g. `google:123...`).
97
+ * - Visibility: Public (Identifier saved on parent's delegate claim, safe for log/ledger storage).
98
+ * - Generator: Provider/Server (Derived by mapping provider user sub ID after authentication).
99
+ *
100
+ * @param userNonce The public, high-entropy nonce generated by the client to salt the KDF derivation.
101
+ * - Visibility: Public (Salt value stored on parent's delegate claim, safe for ledger storage).
102
+ * - Generator: Client (Generated offline on user's device).
103
+ */
104
+ deriveServerDelegateSecret(providerKey: string, userNonce: string): Promise<string>;
105
+ /**
106
+ * Creates a public custodian challenge pool (custodian-manage) derived deterministically
107
+ * from the server's private KDF secret, providerKey, and userNonce.
108
+ *
109
+ * @param providerKey The unique key identifying the provider and user sub ID (e.g. `google:123...`).
110
+ * - Visibility: Public (Mapped identifier, safe for ledger).
111
+ * - Generator: Provider/Server (Derived after successful token exchange).
112
+ *
113
+ * @param userNonce The public, high-entropy nonce.
114
+ * - Visibility: Public (Derivation salt, safe for ledger).
115
+ * - Generator: Client (Generated on user's device).
116
+ */
117
+ createCustodianChallengePool({ providerId, providerKey, userNonce, keystoneAddr, metaspace, space, }: {
118
+ providerId: string;
119
+ providerKey: string;
120
+ userNonce: string;
121
+ keystoneAddr: string;
122
+ metaspace: MetaspaceService;
123
+ space: IbGibSpaceAny;
124
+ }): Promise<KeystoneChallengePool>;
125
+ /**
126
+ * Maps private server configuration to safe public client configurations.
127
+ *
128
+ * @param hostUrl The root URL host address of the server (e.g. `https://space-gib.localhost` or `https://ibgib.space`).
129
+ * - Visibility: Public (Non-sensitive hostname configuration).
130
+ * - Generator: Server (Extracted from the HTTP request context headers/protocol).
131
+ */
132
+ getSsoClientConfigs(hostUrl: string): SsoProviderClientConfig[];
133
+ /**
134
+ * Revokes an active OAuth access or refresh token with the provider.
135
+ * Keeps token revocation logic DRY and centralized.
136
+ */
137
+ revokeToken(providerId: SsoProviderId, token: string): Promise<void>;
138
+ }
139
+ //# sourceMappingURL=sso-custodian-service.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-custodian-service.d.mts","sourceRoot":"","sources":["../../../src/identity/sso/sso-custodian-service.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAsB,MAAM,kDAAkD,CAAC;AAI7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EACH,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,uBAAuB,EACtE,uBAAuB,EAC1B,MAAM,iBAAiB,CAAC;AAgBzB;;GAEG;AACH,qBAAa,mBAAmB;IAYhB,OAAO,CAAC,MAAM;IAX1B,OAAO,CAAC,EAAE,CAAmC;IAG7C,OAAO,CAAC,SAAS,CAAwE;IACzF,OAAO,CAAC,SAAS,CAAuB;IAExC;;;;OAIG;IACH,YAAoB,MAAM,EAAE,eAAe,EAAK;IAEhD;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA4B3G;IAED;;;;;;;OAOG;IACG,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmC3E;IAED;;;;;;;;;;;;;;OAcG;YACW,qBAAqB;IAoCnC;;;;;;;;;;OAUG;YACW,2BAA2B;IA4DzC;;;;;;;;;;OAUG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAqD3F;IAED;;;;;;OAMG;YACW,WAAW;IA8BzB;;;;;;;;;;;OAWG;IACG,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWxF;IAED;;;;;;;;;;;OAWG;IACG,4BAA4B,CAAC,EAC/B,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE;QACC,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,gBAAgB,CAAC;QAC5B,KAAK,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuEjC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAwB9D;IAED;;;OAGG;IACG,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCzE;CACJ"}