@atlasauth/emulator-core 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/custom-html.d.ts +57 -0
  2. package/dist/custom-html.js +491 -0
  3. package/dist/custom-html.js.map +1 -0
  4. package/dist/engine.d.ts +1 -1
  5. package/dist/engine.js +4 -0
  6. package/dist/engine.js.map +1 -1
  7. package/dist/error-catalog.js +8 -0
  8. package/dist/error-catalog.js.map +1 -1
  9. package/dist/event-gate.js +60 -2
  10. package/dist/event-gate.js.map +1 -1
  11. package/dist/generic.js +5 -1
  12. package/dist/generic.js.map +1 -1
  13. package/dist/handlers/access-signals.d.ts +48 -0
  14. package/dist/handlers/access-signals.js +76 -0
  15. package/dist/handlers/access-signals.js.map +1 -0
  16. package/dist/handlers/approvals.js +54 -1
  17. package/dist/handlers/approvals.js.map +1 -1
  18. package/dist/handlers/authz-data.d.ts +2 -0
  19. package/dist/handlers/authz-data.js +627 -0
  20. package/dist/handlers/authz-data.js.map +1 -0
  21. package/dist/handlers/authz-layers.d.ts +229 -0
  22. package/dist/handlers/authz-layers.js +786 -0
  23. package/dist/handlers/authz-layers.js.map +1 -0
  24. package/dist/handlers/authz-state.d.ts +80 -0
  25. package/dist/handlers/authz-state.js +175 -0
  26. package/dist/handlers/authz-state.js.map +1 -0
  27. package/dist/handlers/authz.js +240 -177
  28. package/dist/handlers/authz.js.map +1 -1
  29. package/dist/handlers/billing.d.ts +99 -1
  30. package/dist/handlers/billing.js +556 -77
  31. package/dist/handlers/billing.js.map +1 -1
  32. package/dist/handlers/cedar-ext.d.ts +35 -0
  33. package/dist/handlers/cedar-ext.js +174 -0
  34. package/dist/handlers/cedar-ext.js.map +1 -0
  35. package/dist/handlers/cedar.d.ts +146 -0
  36. package/dist/handlers/cedar.js +689 -0
  37. package/dist/handlers/cedar.js.map +1 -0
  38. package/dist/handlers/connections.d.ts +4 -1
  39. package/dist/handlers/connections.js +267 -38
  40. package/dist/handlers/connections.js.map +1 -1
  41. package/dist/handlers/control.js +6 -1
  42. package/dist/handlers/control.js.map +1 -1
  43. package/dist/handlers/device.js +18 -1
  44. package/dist/handlers/device.js.map +1 -1
  45. package/dist/handlers/emu3-misc.d.ts +38 -0
  46. package/dist/handlers/emu3-misc.js +1056 -0
  47. package/dist/handlers/emu3-misc.js.map +1 -0
  48. package/dist/handlers/emu4-actions-access.d.ts +46 -0
  49. package/dist/handlers/emu4-actions-access.js +107 -0
  50. package/dist/handlers/emu4-actions-access.js.map +1 -0
  51. package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
  52. package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
  53. package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
  54. package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
  55. package/dist/handlers/emu4-actions-catalog.js +143 -0
  56. package/dist/handlers/emu4-actions-catalog.js.map +1 -0
  57. package/dist/handlers/emu4-actions-def.d.ts +50 -0
  58. package/dist/handlers/emu4-actions-def.js +250 -0
  59. package/dist/handlers/emu4-actions-def.js.map +1 -0
  60. package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
  61. package/dist/handlers/emu4-actions-sandbox.js +318 -0
  62. package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
  63. package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
  64. package/dist/handlers/emu4-actions-typegen.js +73 -0
  65. package/dist/handlers/emu4-actions-typegen.js.map +1 -0
  66. package/dist/handlers/emu4-actions.d.ts +2 -0
  67. package/dist/handlers/emu4-actions.js +506 -0
  68. package/dist/handlers/emu4-actions.js.map +1 -0
  69. package/dist/handlers/emu4-authz-trust.d.ts +40 -0
  70. package/dist/handlers/emu4-authz-trust.js +488 -0
  71. package/dist/handlers/emu4-authz-trust.js.map +1 -0
  72. package/dist/handlers/emu4-authz.d.ts +2 -0
  73. package/dist/handlers/emu4-authz.js +752 -0
  74. package/dist/handlers/emu4-authz.js.map +1 -0
  75. package/dist/handlers/emu4-billing-core.d.ts +23 -0
  76. package/dist/handlers/emu4-billing-core.js +22 -0
  77. package/dist/handlers/emu4-billing-core.js.map +1 -0
  78. package/dist/handlers/emu4-billing-x.d.ts +2 -0
  79. package/dist/handlers/emu4-billing-x.js +489 -0
  80. package/dist/handlers/emu4-billing-x.js.map +1 -0
  81. package/dist/handlers/emu4-billing.d.ts +14 -0
  82. package/dist/handlers/emu4-billing.js +846 -0
  83. package/dist/handlers/emu4-billing.js.map +1 -0
  84. package/dist/handlers/emu4-clones.d.ts +2 -0
  85. package/dist/handlers/emu4-clones.js +322 -0
  86. package/dist/handlers/emu4-clones.js.map +1 -0
  87. package/dist/handlers/emu4-compliance.d.ts +8 -0
  88. package/dist/handlers/emu4-compliance.js +39 -0
  89. package/dist/handlers/emu4-compliance.js.map +1 -0
  90. package/dist/handlers/emu4-config.d.ts +14 -0
  91. package/dist/handlers/emu4-config.js +148 -0
  92. package/dist/handlers/emu4-config.js.map +1 -0
  93. package/dist/handlers/emu4-cookies.d.ts +8 -0
  94. package/dist/handlers/emu4-cookies.js +248 -0
  95. package/dist/handlers/emu4-cookies.js.map +1 -0
  96. package/dist/handlers/emu4-erasure.d.ts +2 -0
  97. package/dist/handlers/emu4-erasure.js +587 -0
  98. package/dist/handlers/emu4-erasure.js.map +1 -0
  99. package/dist/handlers/emu4-federation.d.ts +8 -0
  100. package/dist/handlers/emu4-federation.js +18 -0
  101. package/dist/handlers/emu4-federation.js.map +1 -0
  102. package/dist/handlers/emu4-journey-math.d.ts +42 -0
  103. package/dist/handlers/emu4-journey-math.js +99 -0
  104. package/dist/handlers/emu4-journey-math.js.map +1 -0
  105. package/dist/handlers/emu4-messaging.d.ts +21 -0
  106. package/dist/handlers/emu4-messaging.js +595 -0
  107. package/dist/handlers/emu4-messaging.js.map +1 -0
  108. package/dist/handlers/emu4-minors.d.ts +7 -0
  109. package/dist/handlers/emu4-minors.js +408 -0
  110. package/dist/handlers/emu4-minors.js.map +1 -0
  111. package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
  112. package/dist/handlers/emu4-oauth-audit.js +17 -0
  113. package/dist/handlers/emu4-oauth-audit.js.map +1 -0
  114. package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
  115. package/dist/handlers/emu4-oauth-auth.js +363 -0
  116. package/dist/handlers/emu4-oauth-auth.js.map +1 -0
  117. package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
  118. package/dist/handlers/emu4-oauth-delivery.js +207 -0
  119. package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
  120. package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
  121. package/dist/handlers/emu4-oauth-keys.js +268 -0
  122. package/dist/handlers/emu4-oauth-keys.js.map +1 -0
  123. package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
  124. package/dist/handlers/emu4-oauth-pub.js +420 -0
  125. package/dist/handlers/emu4-oauth-pub.js.map +1 -0
  126. package/dist/handlers/emu4-oauth.d.ts +10 -0
  127. package/dist/handlers/emu4-oauth.js +23 -0
  128. package/dist/handlers/emu4-oauth.js.map +1 -0
  129. package/dist/handlers/emu4-policies.d.ts +2 -0
  130. package/dist/handlers/emu4-policies.js +408 -0
  131. package/dist/handlers/emu4-policies.js.map +1 -0
  132. package/dist/handlers/emu4-region.d.ts +2 -0
  133. package/dist/handlers/emu4-region.js +189 -0
  134. package/dist/handlers/emu4-region.js.map +1 -0
  135. package/dist/handlers/emu4-saml.d.ts +12 -0
  136. package/dist/handlers/emu4-saml.js +532 -0
  137. package/dist/handlers/emu4-saml.js.map +1 -0
  138. package/dist/handlers/emu4-shared.d.ts +44 -0
  139. package/dist/handlers/emu4-shared.js +90 -0
  140. package/dist/handlers/emu4-shared.js.map +1 -0
  141. package/dist/handlers/emu4-snapshots.d.ts +38 -0
  142. package/dist/handlers/emu4-snapshots.js +231 -0
  143. package/dist/handlers/emu4-snapshots.js.map +1 -0
  144. package/dist/handlers/emu4-sns.d.ts +9 -0
  145. package/dist/handlers/emu4-sns.js +21 -0
  146. package/dist/handlers/emu4-sns.js.map +1 -0
  147. package/dist/handlers/emu4-trust-binding.d.ts +27 -0
  148. package/dist/handlers/emu4-trust-binding.js +344 -0
  149. package/dist/handlers/emu4-trust-binding.js.map +1 -0
  150. package/dist/handlers/emu4-trust.d.ts +35 -0
  151. package/dist/handlers/emu4-trust.js +543 -0
  152. package/dist/handlers/emu4-trust.js.map +1 -0
  153. package/dist/handlers/fga-engine.d.ts +78 -0
  154. package/dist/handlers/fga-engine.js +663 -0
  155. package/dist/handlers/fga-engine.js.map +1 -0
  156. package/dist/handlers/hooks.js +13 -0
  157. package/dist/handlers/hooks.js.map +1 -1
  158. package/dist/handlers/index.js +14 -1
  159. package/dist/handlers/index.js.map +1 -1
  160. package/dist/handlers/machines.js +6 -0
  161. package/dist/handlers/machines.js.map +1 -1
  162. package/dist/handlers/messaging.d.ts +3 -1
  163. package/dist/handlers/messaging.js +455 -48
  164. package/dist/handlers/messaging.js.map +1 -1
  165. package/dist/handlers/oauth-adv.d.ts +191 -0
  166. package/dist/handlers/oauth-adv.js +1305 -0
  167. package/dist/handlers/oauth-adv.js.map +1 -0
  168. package/dist/handlers/oauth-flows.d.ts +25 -1
  169. package/dist/handlers/oauth-flows.js +111 -50
  170. package/dist/handlers/oauth-flows.js.map +1 -1
  171. package/dist/handlers/oauth.d.ts +24 -3
  172. package/dist/handlers/oauth.js +245 -60
  173. package/dist/handlers/oauth.js.map +1 -1
  174. package/dist/handlers/orgs.js +6 -0
  175. package/dist/handlers/orgs.js.map +1 -1
  176. package/dist/handlers/platform.d.ts +5 -0
  177. package/dist/handlers/platform.js +33 -15
  178. package/dist/handlers/platform.js.map +1 -1
  179. package/dist/handlers/scim.d.ts +2 -0
  180. package/dist/handlers/scim.js +198 -11
  181. package/dist/handlers/scim.js.map +1 -1
  182. package/dist/handlers/sessions.d.ts +2 -0
  183. package/dist/handlers/sessions.js +24 -16
  184. package/dist/handlers/sessions.js.map +1 -1
  185. package/dist/handlers/users.js +3 -0
  186. package/dist/handlers/users.js.map +1 -1
  187. package/dist/jwe.d.ts +18 -0
  188. package/dist/jwe.js +101 -0
  189. package/dist/jwe.js.map +1 -0
  190. package/dist/jws.js +2 -0
  191. package/dist/jws.js.map +1 -1
  192. package/dist/messaging-callbacks.d.ts +100 -0
  193. package/dist/messaging-callbacks.js +767 -0
  194. package/dist/messaging-callbacks.js.map +1 -0
  195. package/dist/openapi.js +41 -1
  196. package/dist/openapi.js.map +1 -1
  197. package/dist/parity-emu3-authz.d.ts +3 -0
  198. package/dist/parity-emu3-authz.js +61 -0
  199. package/dist/parity-emu3-authz.js.map +1 -0
  200. package/dist/parity-emu3-billing.d.ts +3 -0
  201. package/dist/parity-emu3-billing.js +25 -0
  202. package/dist/parity-emu3-billing.js.map +1 -0
  203. package/dist/parity-emu3-messaging.d.ts +3 -0
  204. package/dist/parity-emu3-messaging.js +27 -0
  205. package/dist/parity-emu3-messaging.js.map +1 -0
  206. package/dist/parity-emu3-misc.d.ts +2 -0
  207. package/dist/parity-emu3-misc.js +63 -0
  208. package/dist/parity-emu3-misc.js.map +1 -0
  209. package/dist/parity-emu3-oauth.d.ts +2 -0
  210. package/dist/parity-emu3-oauth.js +39 -0
  211. package/dist/parity-emu3-oauth.js.map +1 -0
  212. package/dist/parity-emu4-actions.d.ts +2 -0
  213. package/dist/parity-emu4-actions.js +38 -0
  214. package/dist/parity-emu4-actions.js.map +1 -0
  215. package/dist/parity-emu4-authz.d.ts +3 -0
  216. package/dist/parity-emu4-authz.js +68 -0
  217. package/dist/parity-emu4-authz.js.map +1 -0
  218. package/dist/parity-emu4-billing.d.ts +6 -0
  219. package/dist/parity-emu4-billing.js +44 -0
  220. package/dist/parity-emu4-billing.js.map +1 -0
  221. package/dist/parity-emu4-compliance.d.ts +2 -0
  222. package/dist/parity-emu4-compliance.js +92 -0
  223. package/dist/parity-emu4-compliance.js.map +1 -0
  224. package/dist/parity-emu4-federation.d.ts +2 -0
  225. package/dist/parity-emu4-federation.js +33 -0
  226. package/dist/parity-emu4-federation.js.map +1 -0
  227. package/dist/parity-emu4-messaging.d.ts +3 -0
  228. package/dist/parity-emu4-messaging.js +42 -0
  229. package/dist/parity-emu4-messaging.js.map +1 -0
  230. package/dist/parity-emu4-oauth.d.ts +2 -0
  231. package/dist/parity-emu4-oauth.js +55 -0
  232. package/dist/parity-emu4-oauth.js.map +1 -0
  233. package/dist/parity-emu4-trust.d.ts +2 -0
  234. package/dist/parity-emu4-trust.js +41 -0
  235. package/dist/parity-emu4-trust.js.map +1 -0
  236. package/dist/parity-routes.js +19 -1
  237. package/dist/parity-routes.js.map +1 -1
  238. package/dist/sns-cert.d.ts +9 -0
  239. package/dist/sns-cert.js +101 -0
  240. package/dist/sns-cert.js.map +1 -0
  241. package/dist/tokens.d.ts +69 -4
  242. package/dist/tokens.js +164 -38
  243. package/dist/tokens.js.map +1 -1
  244. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emu4-messaging.js","sourceRoot":"","sources":["../../src/handlers/emu4-messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { RouteDef } from '../engine';
2
+ export declare function minorsHandlers(): RouteDef[];
3
+ /** Validate a `compliance.minors` patch like the real settings validator (used by the config route). */
4
+ export declare function validateMinors(raw: unknown): Array<{
5
+ param: string;
6
+ message: string;
7
+ }>;
@@ -0,0 +1,408 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.minorsHandlers = minorsHandlers;
4
+ exports.validateMinors = validateMinors;
5
+ const errors_1 = require("../errors");
6
+ const store_1 = require("../store");
7
+ const support_1 = require("./support");
8
+ const emu4_shared_1 = require("./emu4-shared");
9
+ /**
10
+ * Family accounts: age assurance records, guardian consent with several methods and an assurance floor, and the minor profile
11
+ * they settle. Config lives in `compliance.minors` (see the `/__emulator/compliance/config` route). shortcut: no session is held
12
+ * for a minor without consent (the emulator issues sessions without this gate); read `minor_status` instead.
13
+ */
14
+ const LEVELS = ['low', 'medium', 'high'];
15
+ const CONSENT_METHODS = ['email_link', 'admin', 'signed_form', 'payment_card', 'video_call', 'id_document', 'third_party'];
16
+ const AGE_METHODS = ['self_declared', 'id_document', 'payment_card', 'estimation', 'credential', 'third_party', 'admin'];
17
+ const CONSENT_LEVEL = { email_link: 'low', admin: 'medium', signed_form: 'medium', payment_card: 'medium', video_call: 'high', id_document: 'high' };
18
+ const AGE_LEVEL = { self_declared: 'low', estimation: 'medium', payment_card: 'medium', admin: 'medium', credential: 'high', id_document: 'high' };
19
+ const rank = (l) => LEVELS.indexOf(l);
20
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
21
+ const st = (0, support_1.engineState)((e) => ({
22
+ profiles: new Map(),
23
+ links: new store_1.Table('guardian_links', e.clock.now, 'gl'),
24
+ assurances: new store_1.Table('age_assurances', e.clock.now, 'aa'),
25
+ verifications: new store_1.Table('identity_verifications', e.clock.now, 'idv'),
26
+ }));
27
+ const consentLevel = (method, stated) => (method === 'third_party' ? (stated ?? 'low') : CONSENT_LEVEL[method]);
28
+ const ageLevel = (method, stated) => (method === 'third_party' ? (stated ?? 'low') : AGE_LEVEL[method]);
29
+ function consentAllowed(cfg, method, stated) {
30
+ const level = consentLevel(method, stated);
31
+ if (!cfg.consentMethods.includes(method))
32
+ return { ok: false, reason: 'method_not_accepted', level };
33
+ if (rank(level) < rank(cfg.minAssuranceLevel))
34
+ return { ok: false, reason: 'level_too_low', level };
35
+ return { ok: true, level };
36
+ }
37
+ const ageOn = (birth, now) => {
38
+ const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(birth);
39
+ if (!m)
40
+ return null;
41
+ const n = new Date(now);
42
+ let age = n.getUTCFullYear() - Number(m[1]);
43
+ if (n.getUTCMonth() + 1 < Number(m[2]) || (n.getUTCMonth() + 1 === Number(m[2]) && n.getUTCDate() < Number(m[3])))
44
+ age -= 1;
45
+ return age;
46
+ };
47
+ function assess(e, u) {
48
+ const cfg = (0, emu4_shared_1.minorsCfg)(e);
49
+ const meta = (u.public_metadata ?? {});
50
+ const birthdate = meta[cfg.birthdateTrait];
51
+ const age = typeof birthdate === 'string' ? ageOn(birthdate, e.clock.now()) : null;
52
+ if (age === null)
53
+ return { status: 'unknown' };
54
+ const country = cfg.countryTrait && typeof meta[cfg.countryTrait] === 'string' ? String(meta[cfg.countryTrait]).toUpperCase() : null;
55
+ const byCountry = country ? cfg.consentAges[country] : undefined;
56
+ const consentAge = typeof byCountry === 'number' ? byCountry : cfg.defaultConsentAge;
57
+ if (cfg.minimumAge !== null && age < cfg.minimumAge)
58
+ return { status: 'below_minimum', age, consentAge, birthdate: birthdate };
59
+ if (age >= consentAge)
60
+ return { status: 'adult', age, consentAge, birthdate: birthdate };
61
+ return { status: 'consent_required', age, consentAge, jurisdiction: typeof byCountry === 'number' ? country : null, birthdate: birthdate };
62
+ }
63
+ const validAssurances = (e, userId) => st(e).assurances.filter((r) => r.user_id === userId && r.status === 'valid' && !(r.expires_at && r.expires_at <= e.clock.now()));
64
+ /** Recompute a user's minor profile. A recorded age assurance by a trusted method settles the question without a date of birth. */
65
+ function refresh(e, u) {
66
+ const cfg = (0, emu4_shared_1.minorsCfg)(e);
67
+ if (!cfg.enabled)
68
+ return null;
69
+ const s = st(e);
70
+ const a = assess(e, u);
71
+ const existing = s.profiles.get(u.id);
72
+ if (a.status === 'consent_required' && cfg.trustedAgeMethods.length > 0) {
73
+ const proven = validAssurances(e, u.id).some((r) => cfg.trustedAgeMethods.includes(r.method) && r.over_age >= a.consentAge);
74
+ if (proven) {
75
+ s.profiles.delete(u.id);
76
+ return null;
77
+ }
78
+ }
79
+ if (a.status === 'adult' || a.status === 'unknown') {
80
+ if (a.status === 'adult')
81
+ s.profiles.delete(u.id);
82
+ return a.status === 'unknown' ? (existing ?? null) : null;
83
+ }
84
+ const profile = { birthdate: a.birthdate, age_at_assessment: a.age, consent_age: a.status === 'consent_required' ? a.consentAge : cfg.defaultConsentAge, jurisdiction: a.status === 'consent_required' ? (a.jurisdiction ?? null) : null, status: existing?.status ?? 'consent_required', consented_at: existing?.consented_at ?? null };
85
+ s.profiles.set(u.id, profile);
86
+ if (!existing)
87
+ e.webhooks.emit('user.parental_consent_required', { object: 'minor_status', user_id: u.id, status: 'consent_required', consent_age: profile.consent_age });
88
+ return profile;
89
+ }
90
+ const presentMinor = (p) => (!p ? { object: 'minor_status', status: 'not_required' } : { object: 'minor_status', status: p.status, birthdate: p.birthdate, age_at_assessment: p.age_at_assessment, consent_age: p.consent_age, jurisdiction: p.jurisdiction, consented_at: p.consented_at });
91
+ const presentGuardian = (e, l, extra = {}) => ({
92
+ object: 'guardian_link',
93
+ id: l.id,
94
+ child_user_id: l.child_user_id,
95
+ guardian_user_id: l.guardian_user_id,
96
+ guardian_email: l.guardian_email,
97
+ relationship: l.relationship,
98
+ status: l.status === 'pending' && l.expires_at && l.expires_at <= e.clock.now() ? 'expired' : l.status,
99
+ expires_at: l.expires_at,
100
+ consent_method: l.consent_method ?? null,
101
+ assurance_level: l.assurance_level ?? null,
102
+ consent_reference: l.consent_reference ?? null,
103
+ verification_id: l.verification_id ?? null,
104
+ consented_at: l.consented_at ?? null,
105
+ created_at: l.created_at,
106
+ ...extra,
107
+ });
108
+ const presentAssurance = (e, r) => ({
109
+ object: 'age_assurance',
110
+ id: r.id,
111
+ user_id: r.user_id,
112
+ method: r.method,
113
+ level: r.level,
114
+ over_age: r.over_age,
115
+ provider: r.provider ?? null,
116
+ reference: r.reference ?? null,
117
+ verification_id: r.verification_id ?? null,
118
+ status: r.status === 'valid' && r.expires_at && r.expires_at <= e.clock.now() ? 'expired' : r.status,
119
+ trusted: (0, emu4_shared_1.minorsCfg)(e).trustedAgeMethods.includes(r.method),
120
+ expires_at: r.expires_at ?? null,
121
+ revoked_at: r.revoked_at ?? null,
122
+ revoked_reason: r.revoked_reason ?? null,
123
+ created_at: r.created_at,
124
+ });
125
+ /** Mark the child consented / back to required, from the set of active links. */
126
+ function syncChild(e, childId, declined = false) {
127
+ const s = st(e);
128
+ const profile = s.profiles.get(childId);
129
+ if (!profile)
130
+ return null;
131
+ const active = s.links.filter((l) => l.child_user_id === childId).some((l) => l.status === 'active');
132
+ const next = active ? 'consented' : declined ? 'declined' : 'consent_required';
133
+ if (next !== profile.status) {
134
+ profile.status = next;
135
+ profile.consented_at = active ? e.clock.now() : null;
136
+ e.webhooks.emit(next === 'consented' ? 'user.parental_consent_granted' : next === 'declined' ? 'user.parental_consent_declined' : 'user.parental_consent_required', { object: 'minor_status', user_id: childId, status: next, consent_age: profile.consent_age });
137
+ }
138
+ return next;
139
+ }
140
+ /** An approved identity verification the guardian (or the user) holds; the id_document methods rest on it. */
141
+ function approvedVerification(e, id, userId) {
142
+ const own = st(e).verifications.get(id);
143
+ if (own)
144
+ return own.user_id === userId && own.status === 'approved';
145
+ for (const [name, t] of e.generic) {
146
+ if (!name.includes('identity_verification'))
147
+ continue;
148
+ const r = t.get(id);
149
+ if (r && (r._parent === userId || r.user_id === userId) && r.status === 'approved')
150
+ return true;
151
+ }
152
+ return false;
153
+ }
154
+ const unknownField = (b, allowed) => {
155
+ const k = Object.keys(b).find((x) => !allowed.includes(x));
156
+ if (k)
157
+ throw (0, emu4_shared_1.bad)(`Unrecognised field ${k}. Expected any of ${allowed.join(', ')}.`, k);
158
+ };
159
+ const displayName = (u) => [u.first_name, u.last_name].filter(Boolean).join(' ') || u.username || 'A user';
160
+ function minorsHandlers() {
161
+ const linkOf = (e, childId, linkId) => {
162
+ const l = st(e).links.get(linkId);
163
+ if (!l || l.child_user_id !== childId)
164
+ throw (0, errors_1.notFound)('Guardian link');
165
+ return l;
166
+ };
167
+ const byToken = (e, token) => {
168
+ const l = st(e).links.find((x) => x.token === token);
169
+ if (!l || l.status !== 'pending' || !l.expires_at || l.expires_at <= e.clock.now() || !e.db.users.get(l.child_user_id))
170
+ throw (0, errors_1.notFound)('This consent link');
171
+ return l;
172
+ };
173
+ const statusBody = (e, userId) => {
174
+ const top = validAssurances(e, userId)[0];
175
+ return { ...presentMinor(st(e).profiles.get(userId)), age_assurance: top ? { over_age: top.over_age, method: top.method, level: top.level, expires_at: top.expires_at ?? null } : null, guardians: st(e).links.filter((l) => l.child_user_id === userId).map((l) => presentGuardian(e, l)) };
176
+ };
177
+ return [
178
+ { method: 'GET', pattern: '/v1/users/:id/minor_status', scope: 'users:read', handler: (c) => {
179
+ (0, emu4_shared_1.liveUser)(c.engine, c.params.id);
180
+ return { body: statusBody(c.engine, c.params.id) };
181
+ } },
182
+ { method: 'POST', pattern: '/v1/users/:id/minor_status/assess', scope: 'users:write', handler: (c) => {
183
+ const e = c.engine;
184
+ const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
185
+ if (!(0, emu4_shared_1.minorsCfg)(e).enabled)
186
+ throw (0, emu4_shared_1.bad)('Age gating is off for this application (compliance.minors.enabled).', 'compliance.minors.enabled');
187
+ refresh(e, u);
188
+ return { body: statusBody(e, u.id) };
189
+ } },
190
+ { method: 'POST', pattern: '/v1/users/:id/guardians', scope: 'users:write', handler: (c) => {
191
+ const e = c.engine;
192
+ const child = (0, emu4_shared_1.liveUser)(e, c.params.id);
193
+ const b = c.body;
194
+ unknownField(b, ['email', 'guardian_user_id', 'relationship', 'send_email']);
195
+ let guardianEmail = null;
196
+ let guardianUserId = null;
197
+ if (typeof b.guardian_user_id === 'string' && b.guardian_user_id) {
198
+ const g = (0, emu4_shared_1.liveUser)(e, b.guardian_user_id);
199
+ if (g.id === child.id)
200
+ throw (0, emu4_shared_1.bad)('A user cannot be their own guardian.', 'guardian_user_id');
201
+ guardianUserId = g.id;
202
+ }
203
+ if (b.email !== undefined) {
204
+ if (typeof b.email !== 'string' || !EMAIL_RE.test(b.email.trim()) || b.email.length > 320)
205
+ throw (0, emu4_shared_1.bad)('email must be an email address.', 'email');
206
+ guardianEmail = b.email.trim().toLowerCase();
207
+ }
208
+ if (!guardianEmail && !guardianUserId)
209
+ throw (0, emu4_shared_1.bad)('Name the guardian: email or guardian_user_id.', 'email');
210
+ if (guardianUserId && !guardianEmail) {
211
+ const emails = e.db.users.get(guardianUserId).emails ?? [];
212
+ guardianEmail = (emails.find((m) => m.verified) ?? emails[0])?.email_address ?? null;
213
+ }
214
+ const relationship = typeof b.relationship === 'string' ? b.relationship.trim().slice(0, 40) || null : null;
215
+ if (b.send_email !== undefined && typeof b.send_email !== 'boolean')
216
+ throw (0, emu4_shared_1.bad)('send_email must be a boolean.', 'send_email');
217
+ const cfg = (0, emu4_shared_1.minorsCfg)(e);
218
+ const emailOk = consentAllowed(cfg, 'email_link').ok;
219
+ if (!emailOk && b.send_email === true)
220
+ throw (0, emu4_shared_1.bad)('Consent by email link is not accepted here (compliance.minors.consentMethods, minAssuranceLevel), so there is nothing to email. Record consent with the approve route.', 'send_email');
221
+ const now = e.clock.now();
222
+ const token = emailOk ? `gct_${crypto.randomUUID().replace(/-/g, '')}${crypto.randomUUID().replace(/-/g, '')}` : null;
223
+ const link = st(e).links.insert({ child_user_id: child.id, guardian_user_id: guardianUserId, guardian_email: guardianEmail, relationship, status: 'pending', token, expires_at: emailOk ? now + cfg.consentTtlHours * 3_600_000 : null, created_at: now });
224
+ const consentUrl = token ? `${e.issuer}/hosted/parental-consent?token=${encodeURIComponent(token)}` : null;
225
+ let emailed = false;
226
+ if (b.send_email === true) {
227
+ if (!guardianEmail)
228
+ throw (0, emu4_shared_1.bad)('There is no address to send the request to.', 'email');
229
+ e.messages.send({ channel: 'email', to: guardianEmail, subject: `Parental consent for ${displayName(child)}`, body: `Approve or decline: ${consentUrl}`, link: consentUrl ?? undefined });
230
+ emailed = true;
231
+ }
232
+ (0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_requested', 'user', child.id, { guardian_link_id: link.id, emailed });
233
+ return { status: 201, body: presentGuardian(e, link, { consent_url: consentUrl, emailed }) };
234
+ } },
235
+ { method: 'POST', pattern: '/v1/users/:id/guardians/:linkId/approve', scope: 'users:write', handler: (c) => {
236
+ const e = c.engine;
237
+ (0, emu4_shared_1.liveUser)(e, c.params.id);
238
+ const link = linkOf(e, c.params.id, c.params.linkId);
239
+ if (link.status === 'active')
240
+ return { body: presentGuardian(e, link) };
241
+ if (link.status === 'revoked')
242
+ throw (0, emu4_shared_1.conflict)('This guardian link was revoked; request consent again.');
243
+ const b = c.body;
244
+ unknownField(b, ['note', 'method', 'assurance_level', 'reference', 'verification_id']);
245
+ const method = (b.method ?? 'admin');
246
+ if (!CONSENT_METHODS.includes(method))
247
+ throw (0, emu4_shared_1.bad)(`method must be one of ${CONSENT_METHODS.join(', ')}.`, 'method');
248
+ if (method === 'email_link')
249
+ throw (0, emu4_shared_1.bad)('email_link is recorded by the guardian opening their consent link, not by an admin.', 'method');
250
+ if (b.assurance_level !== undefined && !LEVELS.includes(b.assurance_level))
251
+ throw (0, emu4_shared_1.bad)(`assurance_level must be one of ${LEVELS.join(', ')}.`, 'assurance_level');
252
+ if (b.assurance_level !== undefined && method !== 'third_party')
253
+ throw (0, emu4_shared_1.bad)('assurance_level is stated only for third_party.', 'assurance_level');
254
+ if (b.reference !== undefined && (typeof b.reference !== 'string' || b.reference.length > 200))
255
+ throw (0, emu4_shared_1.bad)('reference is text of at most 200 characters.', 'reference');
256
+ const decision = consentAllowed((0, emu4_shared_1.minorsCfg)(e), method, b.assurance_level);
257
+ if (!decision.ok)
258
+ throw (0, emu4_shared_1.bad)(decision.reason === 'level_too_low' ? `${method} reaches ${decision.level}, below compliance.minors.minAssuranceLevel.` : `${method} is not in compliance.minors.consentMethods.`, 'method');
259
+ let verificationId = null;
260
+ if (method === 'id_document') {
261
+ if (typeof b.verification_id !== 'string' || !b.verification_id)
262
+ throw (0, emu4_shared_1.bad)("id_document needs the guardian's approved identity verification: verification_id.", 'verification_id');
263
+ if (!link.guardian_user_id)
264
+ throw (0, emu4_shared_1.bad)('id_document needs a guardian who has an account (guardian_user_id on the link).', 'method');
265
+ if (!approvedVerification(e, b.verification_id, link.guardian_user_id))
266
+ throw (0, emu4_shared_1.bad)('verification_id is not an approved identity verification of this guardian.', 'verification_id');
267
+ verificationId = b.verification_id;
268
+ }
269
+ else if (b.verification_id !== undefined)
270
+ throw (0, emu4_shared_1.bad)('verification_id applies only to id_document.', 'verification_id');
271
+ Object.assign(link, { status: 'active', consent_method: method, consented_at: e.clock.now(), token: null, note: typeof b.note === 'string' ? b.note.slice(0, 500) : null, assurance_level: decision.level, consent_reference: typeof b.reference === 'string' ? b.reference : null, verification_id: verificationId });
272
+ (0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_recorded', 'user', c.params.id, { guardian_link_id: link.id, method, assurance_level: decision.level });
273
+ syncChild(e, c.params.id);
274
+ return { body: presentGuardian(e, link) };
275
+ } },
276
+ { method: 'DELETE', pattern: '/v1/users/:id/guardians/:linkId', scope: 'users:write', handler: (c) => {
277
+ const e = c.engine;
278
+ (0, emu4_shared_1.liveUser)(e, c.params.id);
279
+ const link = linkOf(e, c.params.id, c.params.linkId);
280
+ Object.assign(link, { status: 'revoked', token: null });
281
+ (0, emu4_shared_1.audit)(e, c, 'user.guardian_consent_revoked', 'user', c.params.id, { guardian_link_id: link.id });
282
+ syncChild(e, c.params.id);
283
+ return { body: presentGuardian(e, link) };
284
+ } },
285
+ // The guardian's own page (an unguessable one-time token is the credential).
286
+ { method: 'GET', pattern: '/v1/parental_consent/:token', public: true, handler: (c) => {
287
+ const l = byToken(c.engine, c.params.token);
288
+ return { headers: { 'cache-control': 'no-store' }, body: { object: 'parental_consent_request', child_name: displayName(c.engine.db.users.get(l.child_user_id)), guardian_email: l.guardian_email, relationship: l.relationship, expires_at: l.expires_at } };
289
+ } },
290
+ { method: 'POST', pattern: '/v1/parental_consent/:token', public: true, handler: (c) => {
291
+ const e = c.engine;
292
+ const decision = c.body.decision;
293
+ if (decision !== 'approve' && decision !== 'decline')
294
+ throw (0, emu4_shared_1.bad)('decision must be approve or decline.', 'decision');
295
+ const l = byToken(e, c.params.token);
296
+ if (decision === 'approve' && !consentAllowed((0, emu4_shared_1.minorsCfg)(e), 'email_link').ok)
297
+ throw (0, emu4_shared_1.conflict)('Consent by email link is no longer accepted here. Ask the application for another way to give consent.');
298
+ Object.assign(l, { status: decision === 'approve' ? 'active' : 'declined', consent_method: 'email_link', assurance_level: decision === 'approve' ? 'low' : null, consented_at: decision === 'approve' ? e.clock.now() : null, token: null });
299
+ (0, emu4_shared_1.audit)(e, null, decision === 'approve' ? 'user.guardian_consent_granted' : 'user.guardian_consent_declined', 'user', l.child_user_id, { guardian_link_id: l.id, guardian_email: l.guardian_email });
300
+ const status = syncChild(e, l.child_user_id, decision === 'decline');
301
+ return { headers: { 'cache-control': 'no-store' }, body: { object: 'parental_consent', decision, status: status ?? 'not_required', guardian_link: presentGuardian(e, l) } };
302
+ } },
303
+ // ── age assurance ──
304
+ { method: 'GET', pattern: '/v1/users/:id/age_assurance', scope: 'users:read', handler: (c) => {
305
+ (0, emu4_shared_1.liveUser)(c.engine, c.params.id);
306
+ return { body: (0, emu4_shared_1.listOf)(st(c.engine).assurances.filter((r) => r.user_id === c.params.id).map((r) => presentAssurance(c.engine, r))) };
307
+ } },
308
+ { method: 'POST', pattern: '/v1/users/:id/age_assurance', scope: 'users:write', handler: (c) => {
309
+ const e = c.engine;
310
+ const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
311
+ const b = c.body;
312
+ unknownField(b, ['method', 'over_age', 'assurance_level', 'provider', 'reference', 'verification_id', 'expires_at']);
313
+ const method = b.method;
314
+ if (!AGE_METHODS.includes(method))
315
+ throw (0, emu4_shared_1.bad)(`method must be one of ${AGE_METHODS.join(', ')}.`, 'method');
316
+ const overAge = b.over_age;
317
+ if (typeof overAge !== 'number' || !Number.isInteger(overAge) || overAge < 1 || overAge > 99)
318
+ throw (0, emu4_shared_1.bad)('over_age is a whole number of years from 1 to 99.', 'over_age');
319
+ if (b.assurance_level !== undefined && !LEVELS.includes(b.assurance_level))
320
+ throw (0, emu4_shared_1.bad)(`assurance_level must be one of ${LEVELS.join(', ')}.`, 'assurance_level');
321
+ if (b.assurance_level !== undefined && method !== 'third_party')
322
+ throw (0, emu4_shared_1.bad)('assurance_level is stated only for third_party.', 'assurance_level');
323
+ for (const k of ['provider', 'reference'])
324
+ if (b[k] !== undefined && b[k] !== null && (typeof b[k] !== 'string' || b[k].length > 200))
325
+ throw (0, emu4_shared_1.bad)(`${k} is text of at most 200 characters.`, k);
326
+ let expiresAt = null;
327
+ if (b.expires_at !== undefined && b.expires_at !== null) {
328
+ if (typeof b.expires_at !== 'number' || !Number.isFinite(b.expires_at) || b.expires_at <= e.clock.now())
329
+ throw (0, emu4_shared_1.bad)('expires_at is a future time in epoch milliseconds.', 'expires_at');
330
+ expiresAt = b.expires_at;
331
+ }
332
+ let verificationId = null;
333
+ if (method === 'id_document') {
334
+ if (typeof b.verification_id !== 'string' || !b.verification_id)
335
+ throw (0, emu4_shared_1.bad)("id_document needs the user's approved identity verification: verification_id.", 'verification_id');
336
+ if (!approvedVerification(e, b.verification_id, u.id))
337
+ throw (0, emu4_shared_1.bad)('verification_id is not an approved identity verification of this user.', 'verification_id');
338
+ verificationId = b.verification_id;
339
+ }
340
+ else if (b.verification_id !== undefined)
341
+ throw (0, emu4_shared_1.bad)('verification_id applies only to id_document.', 'verification_id');
342
+ const level = ageLevel(method, b.assurance_level);
343
+ const row = st(e).assurances.insert({ user_id: u.id, method, level, over_age: overAge, provider: b.provider ?? null, reference: b.reference ?? null, verification_id: verificationId, status: 'valid', expires_at: expiresAt, created_at: e.clock.now() });
344
+ (0, emu4_shared_1.audit)(e, c, 'user.age_assurance_recorded', 'user', u.id, { assurance_id: row.id, method, level, over_age: overAge });
345
+ e.webhooks.emit('user.age_assurance_recorded', { object: 'age_assurance', id: row.id, user_id: u.id, method, level, over_age: overAge, provider: row.provider, trusted: (0, emu4_shared_1.minorsCfg)(e).trustedAgeMethods.includes(method), expires_at: expiresAt });
346
+ refresh(e, u);
347
+ return { status: 201, body: presentAssurance(e, row) };
348
+ } },
349
+ { method: 'POST', pattern: '/v1/users/:id/age_assurance/:assuranceId/revoke', scope: 'users:write', handler: (c) => {
350
+ const e = c.engine;
351
+ const u = (0, emu4_shared_1.liveUser)(e, c.params.id);
352
+ unknownField(c.body, ['reason']);
353
+ const reason = c.body.reason;
354
+ if (reason !== undefined && reason !== null && (typeof reason !== 'string' || reason.length > 500))
355
+ throw (0, emu4_shared_1.bad)('reason is text of at most 500 characters.', 'reason');
356
+ const r = st(e).assurances.get(c.params.assuranceId);
357
+ if (!r || r.user_id !== u.id)
358
+ throw (0, errors_1.notFound)('Age assurance');
359
+ if (r.status !== 'revoked') {
360
+ Object.assign(r, { status: 'revoked', revoked_at: e.clock.now(), revoked_reason: reason ?? null });
361
+ (0, emu4_shared_1.audit)(e, c, 'user.age_assurance_revoked', 'user', u.id, { assurance_id: r.id });
362
+ e.webhooks.emit('user.age_assurance_revoked', { object: 'age_assurance', id: r.id, user_id: u.id, status: 'revoked', revoked_at: r.revoked_at });
363
+ refresh(e, u);
364
+ }
365
+ return { body: presentAssurance(e, r) };
366
+ } },
367
+ // ── emulator helper: an identity verification the id_document methods rest on ──
368
+ { method: 'POST', pattern: '/__emulator/compliance/identity_verifications', public: true, handler: (c) => {
369
+ const e = c.engine;
370
+ (0, emu4_shared_1.liveUser)(e, c.body.user_id);
371
+ const status = (c.body.status ?? 'approved');
372
+ if (!['approved', 'pending', 'rejected'].includes(status))
373
+ throw (0, emu4_shared_1.bad)('status is approved, pending or rejected.', 'status');
374
+ const row = st(e).verifications.insert({ user_id: c.body.user_id, status, created_at: e.clock.now() });
375
+ return { status: 201, body: { object: 'identity_verification', id: row.id, user_id: row.user_id, status } };
376
+ } },
377
+ ];
378
+ }
379
+ /** Validate a `compliance.minors` patch like the real settings validator (used by the config route). */
380
+ function validateMinors(raw) {
381
+ const p = 'compliance.minors';
382
+ if (!(0, emu4_shared_1.isObj)(raw))
383
+ return [{ param: p, message: 'Expected an object.' }];
384
+ const out = [];
385
+ const known = ['enabled', 'birthdateTrait', 'countryTrait', 'defaultConsentAge', 'consentAges', 'minimumAge', 'restriction', 'consentTtlHours', 'consentMethods', 'minAssuranceLevel', 'trustedAgeMethods'];
386
+ for (const k of Object.keys(raw))
387
+ if (!known.includes(k))
388
+ out.push({ param: `${p}.${k}`, message: `Unknown field. Expected ${known.join(', ')}.` });
389
+ const age = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 1 && v <= 21;
390
+ if (raw.enabled !== undefined && typeof raw.enabled !== 'boolean')
391
+ out.push({ param: `${p}.enabled`, message: 'Expected a boolean.' });
392
+ if (raw.defaultConsentAge !== undefined && !age(raw.defaultConsentAge))
393
+ out.push({ param: `${p}.defaultConsentAge`, message: 'A whole number of years from 1 to 21.' });
394
+ if (raw.minimumAge !== undefined && raw.minimumAge !== null && !age(raw.minimumAge))
395
+ out.push({ param: `${p}.minimumAge`, message: 'A whole number of years from 1 to 21, or null.' });
396
+ if (raw.restriction !== undefined && raw.restriction !== 'hold' && raw.restriction !== 'flag')
397
+ out.push({ param: `${p}.restriction`, message: 'One of hold, flag.' });
398
+ if (raw.consentTtlHours !== undefined && !(typeof raw.consentTtlHours === 'number' && Number.isInteger(raw.consentTtlHours) && raw.consentTtlHours >= 1 && raw.consentTtlHours <= 720))
399
+ out.push({ param: `${p}.consentTtlHours`, message: 'A whole number of hours from 1 to 720.' });
400
+ if (raw.consentMethods !== undefined && (!Array.isArray(raw.consentMethods) || raw.consentMethods.length === 0 || raw.consentMethods.some((m) => !CONSENT_METHODS.includes(m))))
401
+ out.push({ param: `${p}.consentMethods`, message: `A non-empty list of ${CONSENT_METHODS.join(', ')}.` });
402
+ if (raw.minAssuranceLevel !== undefined && !LEVELS.includes(raw.minAssuranceLevel))
403
+ out.push({ param: `${p}.minAssuranceLevel`, message: `One of ${LEVELS.join(', ')}.` });
404
+ if (raw.trustedAgeMethods !== undefined && (!Array.isArray(raw.trustedAgeMethods) || raw.trustedAgeMethods.some((m) => !AGE_METHODS.includes(m))))
405
+ out.push({ param: `${p}.trustedAgeMethods`, message: `A list of ${AGE_METHODS.join(', ')}.` });
406
+ return out;
407
+ }
408
+ //# sourceMappingURL=emu4-minors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emu4-minors.js","sourceRoot":"","sources":["../../src/handlers/emu4-minors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Engine } from '../engine';
2
+ import type { Obj } from '../openapi';
3
+ export declare function auditOf(e: Engine): Obj[];
4
+ /** Record one audit row. `actor` is `api_key` for a Backend API call and `system` for work the clock does. */
5
+ export declare function recordAudit(e: Engine, action: string, actor: 'api_key' | 'system' | 'oauth_client', targetType: string, targetId: string, metadata?: Obj): Obj;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.auditOf = auditOf;
4
+ exports.recordAudit = recordAudit;
5
+ const support_1 = require("./support");
6
+ /** The audit trail of the signing-key, publisher, delivery and token-exchange routes of this module, newest last. */
7
+ const rows = (0, support_1.engineState)(() => []);
8
+ function auditOf(e) {
9
+ return rows(e);
10
+ }
11
+ /** Record one audit row. `actor` is `api_key` for a Backend API call and `system` for work the clock does. */
12
+ function recordAudit(e, action, actor, targetType, targetId, metadata = {}) {
13
+ const row = { id: e.db.newId('audit'), object: 'audit_log_entry', action, actor_type: actor, actor_id: actor === 'api_key' ? 'emulator_key' : actor === 'system' ? action.split('.')[0] : null, target_type: targetType, target_id: targetId, ip: null, metadata, created_at: e.clock.now() };
14
+ rows(e).push(row);
15
+ return row;
16
+ }
17
+ //# sourceMappingURL=emu4-oauth-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emu4-oauth-audit.js","sourceRoot":"","sources":["../../src/handlers/emu4-oauth-audit.ts"],"names":[],"mappings":";;AAOA,0BAEC;AAGD,kCAIC;AAdD,uCAAwC;AAExC,qHAAqH;AACrH,MAAM,IAAI,GAAG,IAAA,qBAAW,EAAC,GAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1C,SAAgB,OAAO,CAAC,CAAS;IAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,8GAA8G;AAC9G,SAAgB,WAAW,CAAC,CAAS,EAAE,MAAc,EAAE,KAA4C,EAAE,UAAkB,EAAE,QAAgB,EAAE,WAAgB,EAAE;IAC3J,MAAM,GAAG,GAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IACnS,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}