@ttt-productions/ttt-core 0.27.0 → 0.28.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 (47) hide show
  1. package/dist/doc-schemas/index.d.ts +0 -2
  2. package/dist/doc-schemas/index.d.ts.map +1 -1
  3. package/dist/doc-schemas/index.js +0 -2
  4. package/dist/doc-schemas/index.js.map +1 -1
  5. package/dist/doc-schemas/ncii/cases.d.ts +0 -21
  6. package/dist/doc-schemas/ncii/cases.d.ts.map +1 -1
  7. package/dist/doc-schemas/ncii/cases.js +3 -18
  8. package/dist/doc-schemas/ncii/cases.js.map +1 -1
  9. package/dist/doc-schemas/ncii/config.d.ts +1 -51
  10. package/dist/doc-schemas/ncii/config.d.ts.map +1 -1
  11. package/dist/doc-schemas/ncii/config.js +6 -72
  12. package/dist/doc-schemas/ncii/config.js.map +1 -1
  13. package/dist/doc-schemas/ncii/requests.d.ts +0 -9
  14. package/dist/doc-schemas/ncii/requests.d.ts.map +1 -1
  15. package/dist/doc-schemas/ncii/requests.js +1 -3
  16. package/dist/doc-schemas/ncii/requests.js.map +1 -1
  17. package/dist/doc-schemas/registry.d.ts +3 -172
  18. package/dist/doc-schemas/registry.d.ts.map +1 -1
  19. package/dist/doc-schemas/registry.js +1 -9
  20. package/dist/doc-schemas/registry.js.map +1 -1
  21. package/dist/doc-schemas/safety/foundation.d.ts +1 -36
  22. package/dist/doc-schemas/safety/foundation.d.ts.map +1 -1
  23. package/dist/doc-schemas/safety/foundation.js +1 -24
  24. package/dist/doc-schemas/safety/foundation.js.map +1 -1
  25. package/dist/doc-schemas/safety/holds.d.ts +3 -0
  26. package/dist/doc-schemas/safety/holds.d.ts.map +1 -1
  27. package/dist/doc-schemas/safety/holds.js +13 -0
  28. package/dist/doc-schemas/safety/holds.js.map +1 -1
  29. package/dist/paths/collections.d.ts +0 -3
  30. package/dist/paths/collections.d.ts.map +1 -1
  31. package/dist/paths/collections.js +1 -4
  32. package/dist/paths/collections.js.map +1 -1
  33. package/dist/paths/path-builders.d.ts +0 -6
  34. package/dist/paths/path-builders.d.ts.map +1 -1
  35. package/dist/paths/path-builders.js +0 -6
  36. package/dist/paths/path-builders.js.map +1 -1
  37. package/dist/types/audit.d.ts +1 -1
  38. package/dist/types/audit.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/doc-schemas/ncii/appeals.d.ts +0 -121
  41. package/dist/doc-schemas/ncii/appeals.d.ts.map +0 -1
  42. package/dist/doc-schemas/ncii/appeals.js +0 -132
  43. package/dist/doc-schemas/ncii/appeals.js.map +0 -1
  44. package/dist/doc-schemas/ncii/notices.d.ts +0 -109
  45. package/dist/doc-schemas/ncii/notices.d.ts.map +0 -1
  46. package/dist/doc-schemas/ncii/notices.js +0 -114
  47. package/dist/doc-schemas/ncii/notices.js.map +0 -1
@@ -1,109 +0,0 @@
1
- import { z } from 'zod';
2
- /** Notice delivery channel. */
3
- export declare const NciiUploaderNoticeChannelSchema: z.ZodEnum<{
4
- email: "email";
5
- inApp: "inApp";
6
- }>;
7
- export type NciiUploaderNoticeChannel = z.infer<typeof NciiUploaderNoticeChannelSchema>;
8
- /** Who the notice is for, snapshotted at decision time (NEVER re-resolved). */
9
- export declare const NciiUploaderNoticeRecipientSnapshotSchema: z.ZodObject<{
10
- uid: z.ZodString;
11
- deliveryAddressRef: z.ZodString;
12
- capturedAt: z.ZodNumber;
13
- }, z.core.$strict>;
14
- export type NciiUploaderNoticeRecipientSnapshot = z.infer<typeof NciiUploaderNoticeRecipientSnapshotSchema>;
15
- /** Durable retry/dead-letter delivery command on the notice. */
16
- export declare const NciiUploaderNoticeCommandV1Schema: z.ZodObject<{
17
- commandId: z.ZodString;
18
- attemptCount: z.ZodNumber;
19
- nextAttemptAt: z.ZodOptional<z.ZodNumber>;
20
- leaseOwner: z.ZodOptional<z.ZodString>;
21
- leaseExpiresAt: z.ZodOptional<z.ZodNumber>;
22
- lastErrorCode: z.ZodOptional<z.ZodString>;
23
- }, z.core.$strict>;
24
- export type NciiUploaderNoticeCommandV1 = z.infer<typeof NciiUploaderNoticeCommandV1Schema>;
25
- /** `nciiCases/{caseId}/uploaderNotices/{noticeId}` — durable uploader-notice
26
- * delivery record (OWNED by the notices cluster). Doc id `noticeId` is
27
- * deterministic:
28
- * `sha256('ncii-uploader-notice-v1:' + caseId + ':' + recipientUid + ':' + removalGeneration)`. */
29
- export declare const NciiUploaderNoticeV1Schema: z.ZodObject<{
30
- schemaVersion: z.ZodLiteral<1>;
31
- noticeId: z.ZodString;
32
- caseId: z.ZodString;
33
- requestIds: z.ZodArray<z.ZodString>;
34
- removalGeneration: z.ZodNumber;
35
- recipientSnapshot: z.ZodObject<{
36
- uid: z.ZodString;
37
- deliveryAddressRef: z.ZodString;
38
- capturedAt: z.ZodNumber;
39
- }, z.core.$strict>;
40
- channel: z.ZodEnum<{
41
- email: "email";
42
- inApp: "inApp";
43
- }>;
44
- templateId: z.ZodString;
45
- templateVersion: z.ZodNumber;
46
- status: z.ZodEnum<{
47
- pending: "pending";
48
- sent: "sent";
49
- delayed: "delayed";
50
- suppressed: "suppressed";
51
- notApplicable: "notApplicable";
52
- }>;
53
- suppressionReason: z.ZodOptional<z.ZodEnum<{
54
- victimSafetyRisk: "victimSafetyRisk";
55
- retaliationRisk: "retaliationRisk";
56
- extortionRisk: "extortionRisk";
57
- lawEnforcementRequest: "lawEnforcementRequest";
58
- childSafetyInvestigation: "childSafetyInvestigation";
59
- evidencePreservationRisk: "evidencePreservationRisk";
60
- legalRestriction: "legalRestriction";
61
- otherApproved: "otherApproved";
62
- }>>;
63
- rationaleRef: z.ZodOptional<z.ZodString>;
64
- decidedByUid: z.ZodOptional<z.ZodString>;
65
- delayedUntil: z.ZodOptional<z.ZodNumber>;
66
- idempotencyKey: z.ZodString;
67
- command: z.ZodObject<{
68
- commandId: z.ZodString;
69
- attemptCount: z.ZodNumber;
70
- nextAttemptAt: z.ZodOptional<z.ZodNumber>;
71
- leaseOwner: z.ZodOptional<z.ZodString>;
72
- leaseExpiresAt: z.ZodOptional<z.ZodNumber>;
73
- lastErrorCode: z.ZodOptional<z.ZodString>;
74
- }, z.core.$strict>;
75
- verifiedDeliveredAt: z.ZodOptional<z.ZodNumber>;
76
- createdAt: z.ZodNumber;
77
- updatedAt: z.ZodNumber;
78
- }, z.core.$strict>;
79
- export type NciiUploaderNoticeV1 = z.infer<typeof NciiUploaderNoticeV1Schema>;
80
- /** Per-attempt delivery result. */
81
- export declare const NciiUploaderNoticeAttemptResultSchema: z.ZodEnum<{
82
- queued: "queued";
83
- failed: "failed";
84
- deferred: "deferred";
85
- sent: "sent";
86
- }>;
87
- export type NciiUploaderNoticeAttemptResult = z.infer<typeof NciiUploaderNoticeAttemptResultSchema>;
88
- /** `nciiCases/{caseId}/uploaderNotices/{noticeId}/attempts/{attemptId}` —
89
- * IMMUTABLE append-only per-attempt ledger. Doc id `attemptId` is a
90
- * deterministic/assigned id (z.string().min(1)). */
91
- export declare const NciiUploaderNoticeAttemptV1Schema: z.ZodObject<{
92
- schemaVersion: z.ZodLiteral<1>;
93
- attemptId: z.ZodString;
94
- at: z.ZodNumber;
95
- channel: z.ZodEnum<{
96
- email: "email";
97
- inApp: "inApp";
98
- }>;
99
- result: z.ZodEnum<{
100
- queued: "queued";
101
- failed: "failed";
102
- deferred: "deferred";
103
- sent: "sent";
104
- }>;
105
- providerRef: z.ZodOptional<z.ZodString>;
106
- errorCode: z.ZodOptional<z.ZodString>;
107
- }, z.core.$strict>;
108
- export type NciiUploaderNoticeAttemptV1 = z.infer<typeof NciiUploaderNoticeAttemptV1Schema>;
109
- //# sourceMappingURL=notices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notices.d.ts","sourceRoot":"","sources":["../../../src/doc-schemas/ncii/notices.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,+BAA+B;AAC/B,eAAO,MAAM,+BAA+B;;;EAA6B,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,+EAA+E;AAC/E,eAAO,MAAM,yCAAyC;;;;kBAI3C,CAAC;AACZ,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yCAAyC,CAAC,CAAC;AAE5G,gEAAgE;AAChE,eAAO,MAAM,iCAAiC;;;;;;;kBAOnC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAM5F;;;mGAGmG;AACnG,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6B5B,CAAC;AACZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAO9E,mCAAmC;AACnC,eAAO,MAAM,qCAAqC;;;;;EAAmD,CAAC;AACtG,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG;;oDAEoD;AACpD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;kBAQnC,CAAC;AACZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC"}
@@ -1,114 +0,0 @@
1
- // Trust & Safety — durable uploader-notice delivery state machine (Appendix A
2
- // §A11 [H-10]).
3
- //
4
- // `nciiCases/{caseId}/uploaderNotices/{noticeId}` — the uploader notice is a
5
- // first-class durable delivery record like every other NCII workflow object (NOT
6
- // just two bare enums). NOTE: this notices cluster OWNS the
7
- // `nciiCases/{caseId}/uploaderNotices/{noticeId}` subcollection schema even though
8
- // the `nciiCases` root doc itself is owned by the requests cluster.
9
- //
10
- // Deterministic `noticeId = sha256('ncii-uploader-notice-v1:' + caseId + ':' +
11
- // recipientUid + ':' + removalGeneration)`. The client-supplied ≥128-bit
12
- // `idempotencyKey` together with the deterministic noticeId guarantees one record
13
- // per retry.
14
- //
15
- // TRANSITIONS [H-10]:
16
- // pending → sent | delayed | suppressed | notApplicable
17
- // delayed → sent (when `delayedUntil` elapses and no suppression applies)
18
- // delayed → suppressed
19
- // A failed delivery re-drives through `command` (retry/dead-letter), never silently
20
- // drops. Each terminal/transition writes the matching NciiActionType
21
- // (`uploaderNoticeSent` / `uploaderNoticeDelayed` / `uploaderNoticeSuppressed` /
22
- // `uploaderNoticeNotApplicable`) to the request `actions` log.
23
- //
24
- // Every shape here is transcribed verbatim from docs/code_changes_needed/
25
- // trust-and-safety/IMPLEMENTATION_PLAN.md Appendix A §A11 [H-10] — no invented
26
- // values, no placeholders.
27
- //
28
- // SHARED enums come from ../safety/foundation.js (the single source for every
29
- // cross-cluster enum); they are NEVER redefined here. This cluster IMPORTS
30
- // UploaderNoticeStatusSchema + UploaderNoticeReasonSchema.
31
- //
32
- // Collection note: this cluster owns a NEW subcollection of the requests-cluster
33
- // `nciiCases` root (+ an append-only per-attempt ledger); wiring collections.ts /
34
- // path-builders.ts / registry.ts is deferred to the app leg (the orchestrator
35
- // binds the schemas + path builders there); the deterministic doc-id shape is
36
- // documented on each schema below.
37
- import { z } from 'zod';
38
- import { UploaderNoticeStatusSchema, UploaderNoticeReasonSchema, } from '../safety/foundation.js';
39
- // ===========================================================================
40
- // §A11 [H-10] — delivery channel + embedded shapes
41
- // ===========================================================================
42
- /** Notice delivery channel. */
43
- export const NciiUploaderNoticeChannelSchema = z.enum(['inApp', 'email']);
44
- /** Who the notice is for, snapshotted at decision time (NEVER re-resolved). */
45
- export const NciiUploaderNoticeRecipientSnapshotSchema = z.object({
46
- uid: z.string().min(1),
47
- deliveryAddressRef: z.string().min(1),
48
- capturedAt: z.number(),
49
- }).strict();
50
- /** Durable retry/dead-letter delivery command on the notice. */
51
- export const NciiUploaderNoticeCommandV1Schema = z.object({
52
- commandId: z.string().min(1),
53
- attemptCount: z.number(),
54
- nextAttemptAt: z.number().optional(),
55
- leaseOwner: z.string().min(1).optional(),
56
- leaseExpiresAt: z.number().optional(),
57
- lastErrorCode: z.string().optional(),
58
- }).strict();
59
- // ===========================================================================
60
- // §A11 [H-10] — nciiCases/{caseId}/uploaderNotices/{noticeId}
61
- // ===========================================================================
62
- /** `nciiCases/{caseId}/uploaderNotices/{noticeId}` — durable uploader-notice
63
- * delivery record (OWNED by the notices cluster). Doc id `noticeId` is
64
- * deterministic:
65
- * `sha256('ncii-uploader-notice-v1:' + caseId + ':' + recipientUid + ':' + removalGeneration)`. */
66
- export const NciiUploaderNoticeV1Schema = z.object({
67
- schemaVersion: z.literal(1),
68
- noticeId: z.string().min(1),
69
- caseId: z.string().min(1),
70
- requestIds: z.array(z.string().min(1)).max(16),
71
- removalGeneration: z.number(),
72
- // who, snapshotted at decision time (never re-resolved)
73
- recipientSnapshot: NciiUploaderNoticeRecipientSnapshotSchema,
74
- channel: NciiUploaderNoticeChannelSchema,
75
- // the notice template + version actually used
76
- templateId: z.string().min(1),
77
- templateVersion: z.number(),
78
- // 'pending'|'sent'|'delayed'|'suppressed'|'notApplicable'
79
- status: UploaderNoticeStatusSchema,
80
- // present ONLY when status='suppressed' (+ restricted rationale via rationaleRef + reviewer identity)
81
- suppressionReason: UploaderNoticeReasonSchema.optional(),
82
- // suppression/delay rationale (restricted) + reviewer identity
83
- rationaleRef: z.string().min(1).optional(),
84
- decidedByUid: z.string().min(1).optional(),
85
- // when status='delayed' — the scheduled re-evaluation time (delayed → sent transition)
86
- delayedUntil: z.number().optional(),
87
- // ≥128-bit; with the deterministic noticeId guarantees one record per retry
88
- idempotencyKey: z.string().min(1),
89
- // durable retry/dead-letter delivery command
90
- command: NciiUploaderNoticeCommandV1Schema,
91
- // proof of delivery (provider receipt / read marker), when available
92
- verifiedDeliveredAt: z.number().optional(),
93
- createdAt: z.number(),
94
- updatedAt: z.number(),
95
- }).strict();
96
- // ===========================================================================
97
- // §A11 [H-10] — nciiCases/{caseId}/uploaderNotices/{noticeId}/attempts/{attemptId}
98
- // IMMUTABLE append-only per-attempt ledger.
99
- // ===========================================================================
100
- /** Per-attempt delivery result. */
101
- export const NciiUploaderNoticeAttemptResultSchema = z.enum(['queued', 'sent', 'failed', 'deferred']);
102
- /** `nciiCases/{caseId}/uploaderNotices/{noticeId}/attempts/{attemptId}` —
103
- * IMMUTABLE append-only per-attempt ledger. Doc id `attemptId` is a
104
- * deterministic/assigned id (z.string().min(1)). */
105
- export const NciiUploaderNoticeAttemptV1Schema = z.object({
106
- schemaVersion: z.literal(1),
107
- attemptId: z.string().min(1),
108
- at: z.number(),
109
- channel: NciiUploaderNoticeChannelSchema,
110
- result: NciiUploaderNoticeAttemptResultSchema,
111
- providerRef: z.string().min(1).optional(),
112
- errorCode: z.string().optional(),
113
- }).strict();
114
- //# sourceMappingURL=notices.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notices.js","sourceRoot":"","sources":["../../../src/doc-schemas/ncii/notices.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,gBAAgB;AAChB,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,4DAA4D;AAC5D,mFAAmF;AACnF,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,kFAAkF;AAClF,aAAa;AACb,EAAE;AACF,sBAAsB;AACtB,0DAA0D;AAC1D,6EAA6E;AAC7E,yBAAyB;AACzB,oFAAoF;AACpF,qEAAqE;AACrE,iFAAiF;AACjF,+DAA+D;AAC/D,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,2BAA2B;AAC3B,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,2DAA2D;AAC3D,EAAE;AACF,iFAAiF;AACjF,kFAAkF;AAClF,8EAA8E;AAC9E,8EAA8E;AAC9E,mCAAmC;AAEnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAEjC,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,+BAA+B;AAC/B,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAG1E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC,MAAM,CAAC;IAChE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,gEAAgE;AAChE,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E;;;mGAGmG;AACnG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B,wDAAwD;IACxD,iBAAiB,EAAE,yCAAyC;IAC5D,OAAO,EAAE,+BAA+B;IACxC,8CAA8C;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,0DAA0D;IAC1D,MAAM,EAAE,0BAA0B;IAClC,sGAAsG;IACtG,iBAAiB,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IACxD,+DAA+D;IAC/D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,uFAAuF;IACvF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,4EAA4E;IAC5E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,6CAA6C;IAC7C,OAAO,EAAE,iCAAiC;IAC1C,qEAAqE;IACrE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,8EAA8E;AAC9E,mFAAmF;AACnF,4CAA4C;AAC5C,8EAA8E;AAE9E,mCAAmC;AACnC,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGtG;;oDAEoD;AACpD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,OAAO,EAAE,+BAA+B;IACxC,MAAM,EAAE,qCAAqC;IAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,MAAM,EAAE,CAAC"}