@claudexor/daemon 3.9.7 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,383 @@
1
+ import { ControlModelOperationDetail, ControlProblem, ModelCallRequest, ModelCallResult, ModelOperationParams, ModelOperationReceipt, ModelUsage, isTerminalLifecycle, isModelOperation, } from "@claudexor/schema";
2
+ import { errorCode, redactSecrets } from "@claudexor/util";
3
+ import { commandStoreForId, commandStores } from "./command-authority.js";
4
+ import { findAcceptedCommand } from "./command-rpc.js";
5
+ export const MODEL_OPERATION_ID = "model.operation.create";
6
+ const RESPONSE_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
7
+ const emptyDispatch = () => ({ state: "not_started", startedAt: null, route: null });
8
+ const emptyEvidence = () => ({
9
+ dispatch: emptyDispatch(),
10
+ response: { state: "absent" },
11
+ usage: ModelUsage.parse({}),
12
+ cost: null,
13
+ problem: null,
14
+ });
15
+ function operationError(code, message, status = 409) {
16
+ return Object.assign(new Error(message), { code, status, retryable: false });
17
+ }
18
+ function problemFrom(error) {
19
+ const candidate = error && typeof error === "object" ? error : {};
20
+ const provided = ControlProblem.safeParse(candidate.problem);
21
+ if (provided.success)
22
+ return provided.data;
23
+ const context = {};
24
+ for (const key of ["resetsAt", "retryAfterMs", "httpStatus", "requestId"]) {
25
+ if (typeof candidate[key] === "string" || typeof candidate[key] === "number") {
26
+ context[key] =
27
+ typeof candidate[key] === "string" ? redactSecrets(candidate[key]) : candidate[key];
28
+ }
29
+ }
30
+ return ControlProblem.parse({
31
+ code: errorCode(error) || "model_operation_failed",
32
+ message: redactSecrets(error instanceof Error ? error.message : String(error)),
33
+ retryable: candidate.retryable === true,
34
+ context,
35
+ });
36
+ }
37
+ /** A model command reuses daemon queue/cancel/command authority. This owns only
38
+ * the generation's payload custody; it has no scheduler or conversation cache. */
39
+ export class ModelOperations {
40
+ deps;
41
+ expiryTimer;
42
+ closed = false;
43
+ startedAt;
44
+ constructor(deps) {
45
+ this.deps = deps;
46
+ this.startedAt = this.now().getTime();
47
+ }
48
+ async create(request, idempotencyKey) {
49
+ if (this.closed)
50
+ throw operationError("daemon_stopping", "Model operations are stopping", 503);
51
+ const envelope = {
52
+ request: ModelOperationParams.parse({ kind: "model", request }),
53
+ operation: MODEL_OPERATION_ID,
54
+ idempotencyKey,
55
+ clientId: "control-api",
56
+ // Uploaded copies of identical bytes are the same idempotent request.
57
+ idempotencyRequest: { kind: "model", sha256: request.sha256, sizeBytes: request.sizeBytes },
58
+ };
59
+ const replay = findAcceptedCommand(this.deps.commands, envelope);
60
+ let id = replay?.id;
61
+ if (!id) {
62
+ // Validate only a NEW request. A settled replay's input has been released.
63
+ // model_request_invalid from this boundary proves no command was accepted:
64
+ // the idempotency lookup above succeeded and validation precedes enqueue.
65
+ this.readRequest(request);
66
+ id = (await this.deps.enqueue(envelope)).id;
67
+ }
68
+ // Re-uploaded copies can lose either the early lookup or the enqueue race.
69
+ // Release only the unused copy; another live command may still own it.
70
+ const canonical = ModelOperationParams.parse(this.record(id).params).request;
71
+ if (canonical.resourceId !== request.resourceId)
72
+ this.releaseIfUnused(request);
73
+ return this.inspect(id);
74
+ }
75
+ async execute(raw, ctx) {
76
+ const params = ModelOperationParams.parse(raw);
77
+ let evidence = emptyEvidence();
78
+ try {
79
+ const request = this.readRequest(params.request);
80
+ ctx.signal.throwIfAborted();
81
+ const { adapter, profile } = await this.deps.resolve(request, ctx.signal);
82
+ ctx.signal.throwIfAborted();
83
+ const result = ModelCallResult.parse(await adapter.invoke(request, {
84
+ profile,
85
+ signal: ctx.signal,
86
+ onDispatch: async (route) => {
87
+ ctx.signal.throwIfAborted();
88
+ if (evidence.dispatch.state !== "not_started") {
89
+ throw operationError("duplicate_model_dispatch", "A model operation may send inference only once");
90
+ }
91
+ const dispatch = {
92
+ state: "started",
93
+ startedAt: this.now().toISOString(),
94
+ route,
95
+ };
96
+ this.update(ctx.jobId, { ...evidence, dispatch });
97
+ // The adapter cannot POST until this callback returns. A rejected
98
+ // journal write therefore never becomes evidence of a response.
99
+ evidence.dispatch = dispatch;
100
+ },
101
+ }));
102
+ evidence.usage = result.usage;
103
+ evidence.cost = result.cost;
104
+ evidence.problem = result.problem;
105
+ if (evidence.dispatch.state === "started") {
106
+ evidence.dispatch = {
107
+ ...evidence.dispatch,
108
+ state: result.outcome === "unknown" ? "unknown" : "response_received",
109
+ route: result.route,
110
+ };
111
+ }
112
+ // Preserve a useful response even when Cancel won before the daemon's
113
+ // durable terminal barrier. Provider completion and caller cancellation
114
+ // are different facts; a later cancel cannot rewrite a committed receipt.
115
+ const lifecycle = ctx.signal.aborted
116
+ ? "cancelled"
117
+ : result.outcome === "completed"
118
+ ? "succeeded"
119
+ : result.outcome === "unknown" || result.outcome === "incomplete"
120
+ ? "interrupted"
121
+ : "failed";
122
+ const ref = this.deps.resources().publishModel(Buffer.from(JSON.stringify(result), "utf8"));
123
+ const ready = this.now();
124
+ evidence.response = {
125
+ state: "ready",
126
+ ref,
127
+ readyAt: ready.toISOString(),
128
+ expiresAt: new Date(ready.getTime() + RESPONSE_RETENTION_MS).toISOString(),
129
+ };
130
+ // DaemonServer's existing terminal update atomically publishes this
131
+ // compact receipt. Bodies never enter JobRecord.params/result.
132
+ return ModelOperationReceipt.parse({ lifecycle, ...evidence });
133
+ }
134
+ catch (error) {
135
+ const sent = evidence.dispatch.state !== "not_started";
136
+ evidence.problem = problemFrom(error);
137
+ if (sent && evidence.dispatch.state !== "response_received") {
138
+ evidence.dispatch = { ...evidence.dispatch, state: "unknown" };
139
+ }
140
+ return ModelOperationReceipt.parse({
141
+ lifecycle: ctx.signal.aborted ? "cancelled" : sent ? "interrupted" : "failed",
142
+ ...evidence,
143
+ });
144
+ }
145
+ }
146
+ inspect(id) {
147
+ const record = this.record(id);
148
+ const evidence = this.evidence(record);
149
+ const response = this.responseAt(evidence.response, this.now().getTime());
150
+ return ControlModelOperationDetail.parse({
151
+ id,
152
+ state: record.state,
153
+ createdAt: record.createdAt,
154
+ startedAt: record.startedAt ?? null,
155
+ finishedAt: record.finishedAt ?? null,
156
+ ...evidence,
157
+ response,
158
+ });
159
+ }
160
+ readResult(id) {
161
+ const detail = this.inspect(id);
162
+ if (!isTerminalLifecycle(detail.state) || detail.response.state === "absent") {
163
+ throw operationError("model_result_not_ready", "The model operation has no ready result");
164
+ }
165
+ if (detail.response.state !== "ready") {
166
+ throw operationError("model_result_released", "The model result was acknowledged or expired", 410);
167
+ }
168
+ return {
169
+ bytes: this.deps.resources().readModel(detail.response.ref),
170
+ sha256: detail.response.ref.sha256,
171
+ };
172
+ }
173
+ acknowledge(id, sha256) {
174
+ const record = this.record(id);
175
+ if (!isTerminalLifecycle(record.state))
176
+ throw operationError("model_result_not_ready", "The operation is still running");
177
+ const evidence = this.evidence(record);
178
+ if (evidence.response.state === "absent")
179
+ throw operationError("model_result_not_ready", "The operation has no result");
180
+ const expected = evidence.response.ref.sha256;
181
+ if (sha256 !== expected)
182
+ throw operationError("model_result_digest_mismatch", "Acknowledgement must name the received result digest");
183
+ if (evidence.response.state === "acknowledged" || evidence.response.state === "expired")
184
+ return this.inspect(id);
185
+ const ref = evidence.response.ref;
186
+ evidence.response = this.responseAt(evidence.response, this.now().getTime());
187
+ if (evidence.response.state === "ready") {
188
+ evidence.response = { state: "acknowledged", ref, releasedAt: this.now().toISOString() };
189
+ }
190
+ this.update(id, ModelOperationReceipt.parse({ lifecycle: record.state, ...evidence }));
191
+ this.releaseIfUnused(ref);
192
+ this.armExpiry();
193
+ return this.inspect(id);
194
+ }
195
+ async cancel(id, reason) {
196
+ const record = this.record(id);
197
+ if (!isTerminalLifecycle(record.state))
198
+ await this.deps.cancel(id, reason);
199
+ return this.inspect(id);
200
+ }
201
+ /** Called by the existing daemon terminal boundary, queued cancellations included. */
202
+ onCommandTerminal(record) {
203
+ const params = ModelOperationParams.safeParse(record.params);
204
+ if (!params.success || !isTerminalLifecycle(record.state))
205
+ return;
206
+ try {
207
+ this.releaseIfUnused(params.data.request);
208
+ this.armExpiry();
209
+ }
210
+ catch (error) {
211
+ this.deps.warn?.(`Model payload reconciliation remains pending: ${redactSecrets(String(error))}`);
212
+ }
213
+ }
214
+ /** Existing maintenance invokes this after journal recovery/admission. Live
215
+ * command refs protect bytes; operational blobs cannot recreate a terminal. */
216
+ reconcileResources(dryRun = false) {
217
+ const report = { released: [], errors: [] };
218
+ const now = this.now().getTime();
219
+ const records = this.records();
220
+ const terminalRefs = new Set();
221
+ for (const record of records) {
222
+ if (!isTerminalLifecycle(record.state))
223
+ continue;
224
+ const params = ModelOperationParams.safeParse(record.params);
225
+ // A malformed raw command is refused by execution; it owns no valid
226
+ // payload ref and cannot prevent unrelated resource reconciliation.
227
+ if (!params.success)
228
+ continue;
229
+ terminalRefs.add(params.data.request.resourceId);
230
+ const evidence = this.evidence(record);
231
+ const response = this.responseAt(evidence.response, now);
232
+ if (response.state !== "absent")
233
+ terminalRefs.add(response.ref.resourceId);
234
+ if (response.state === "expired" && evidence.response.state === "ready" && !dryRun) {
235
+ this.update(record.id, ModelOperationReceipt.parse({ lifecycle: record.state, ...evidence, response }));
236
+ }
237
+ }
238
+ const liveRefs = this.retainedResources(now, records);
239
+ for (const ref of this.deps.resources().listModelResources()) {
240
+ if (liveRefs.has(ref.resourceId))
241
+ continue;
242
+ // A newly finalized input may still be on its way to create. Unbound
243
+ // resources from before this daemon's birth are crash residue.
244
+ const boundTerminal = terminalRefs.has(ref.resourceId);
245
+ if (!boundTerminal && Date.parse(ref.createdAt) >= this.startedAt)
246
+ continue;
247
+ report.released.push(ref.resourceId);
248
+ if (!dryRun) {
249
+ try {
250
+ const { createdAt: _createdAt, ...payload } = ref;
251
+ this.deps.resources().releaseModel(payload);
252
+ }
253
+ catch (error) {
254
+ report.errors.push(redactSecrets(String(error)));
255
+ }
256
+ }
257
+ }
258
+ if (!dryRun)
259
+ this.armExpiry();
260
+ return report;
261
+ }
262
+ close() {
263
+ this.closed = true;
264
+ if (this.expiryTimer)
265
+ clearTimeout(this.expiryTimer);
266
+ this.expiryTimer = undefined;
267
+ }
268
+ now() {
269
+ return (this.deps.now ?? (() => new Date()))();
270
+ }
271
+ readRequest(ref) {
272
+ // Preserve resource/digest/I/O failures; they are not invalid caller JSON.
273
+ const bytes = this.deps.resources().readModel(ref);
274
+ let parsed;
275
+ try {
276
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
277
+ parsed = ModelCallRequest.safeParse(JSON.parse(text));
278
+ }
279
+ catch (error) {
280
+ if (!(error instanceof SyntaxError) &&
281
+ errorCode(error) !== "ERR_ENCODING_INVALID_ENCODED_DATA")
282
+ throw error;
283
+ }
284
+ if (!parsed?.success) {
285
+ throw operationError("model_request_invalid", "The uploaded model request must be valid UTF-8 JSON matching ModelCallRequest.", 400);
286
+ }
287
+ return parsed.data;
288
+ }
289
+ records() {
290
+ return commandStores(this.deps.commands)
291
+ .flatMap((store) => store.records())
292
+ .filter((record) => isModelOperation(record.params));
293
+ }
294
+ record(id) {
295
+ const record = commandStoreForId(this.deps.commands, id)?.get(id);
296
+ if (!record || !ModelOperationParams.safeParse(record.params).success) {
297
+ throw operationError("model_operation_not_found", "No such model operation", 404);
298
+ }
299
+ return record;
300
+ }
301
+ evidence(record) {
302
+ const result = record.result && typeof record.result === "object"
303
+ ? record.result
304
+ : {};
305
+ const evidence = {
306
+ dispatch: result.dispatch ?? emptyDispatch(),
307
+ response: result.response ?? { state: "absent" },
308
+ usage: result.usage ?? ModelUsage.parse({}),
309
+ cost: result.cost ?? null,
310
+ problem: result.problem ?? null,
311
+ };
312
+ if (isTerminalLifecycle(record.state) && evidence.dispatch.state === "started") {
313
+ evidence.dispatch = { ...evidence.dispatch, state: "unknown" };
314
+ }
315
+ if (!evidence.problem && record.error)
316
+ evidence.problem = ControlProblem.parse({
317
+ code: record.errorCode || "model_operation_interrupted",
318
+ message: redactSecrets(record.error),
319
+ retryable: false,
320
+ });
321
+ return evidence;
322
+ }
323
+ update(id, evidence) {
324
+ const store = commandStoreForId(this.deps.commands, id);
325
+ if (!store)
326
+ throw operationError("model_operation_not_found", "No such model operation", 404);
327
+ store.update(id, { result: evidence });
328
+ }
329
+ responseAt(response, now) {
330
+ return response.state === "ready" && Date.parse(response.expiresAt) <= now
331
+ ? { state: "expired", ref: response.ref, releasedAt: response.expiresAt }
332
+ : response;
333
+ }
334
+ retainedResources(now, records = this.records()) {
335
+ const refs = new Set();
336
+ for (const record of records) {
337
+ if (!isTerminalLifecycle(record.state)) {
338
+ const params = ModelOperationParams.safeParse(record.params);
339
+ if (params.success)
340
+ refs.add(params.data.request.resourceId);
341
+ }
342
+ const response = this.responseAt(this.evidence(record).response, now);
343
+ if (response.state === "ready")
344
+ refs.add(response.ref.resourceId);
345
+ }
346
+ return refs;
347
+ }
348
+ releaseIfUnused(ref) {
349
+ if (this.retainedResources(this.now().getTime()).has(ref.resourceId))
350
+ return;
351
+ try {
352
+ this.deps.resources().releaseModel(ref);
353
+ }
354
+ catch (error) {
355
+ this.deps.warn?.(`Model payload cleanup remains pending: ${redactSecrets(String(error))}`);
356
+ }
357
+ }
358
+ armExpiry() {
359
+ if (this.expiryTimer)
360
+ clearTimeout(this.expiryTimer);
361
+ if (this.closed)
362
+ return;
363
+ const due = this.records()
364
+ .map((record) => this.evidence(record).response)
365
+ .filter((response) => response.state === "ready")
366
+ .map((response) => Date.parse(response.expiresAt))
367
+ .filter(Number.isFinite);
368
+ if (!due.length)
369
+ return;
370
+ const next = due.reduce((earliest, value) => Math.min(earliest, value), Infinity);
371
+ const delay = Math.max(1, Math.min(2_147_483_647, next - this.now().getTime()));
372
+ this.expiryTimer = setTimeout(() => {
373
+ try {
374
+ this.reconcileResources();
375
+ }
376
+ catch (error) {
377
+ this.deps.warn?.(`Model payload maintenance failed: ${redactSecrets(String(error))}`);
378
+ }
379
+ }, delay);
380
+ this.expiryTimer.unref?.();
381
+ }
382
+ }
383
+ //# sourceMappingURL=model-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-operations.js","sourceRoot":"","sources":["../src/model-operations.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export class OperatorDecisionStore {
7
7
  byKey = new Map();
8
8
  constructor(journal) {
9
9
  this.journal = journal;
10
- for (const entry of journal.records()) {
10
+ for (const entry of journal.records(0, [RECORDED])) {
11
11
  if (entry.type !== RECORDED)
12
12
  continue;
13
13
  const mutation = parseMutation(entry.payload);
@@ -1 +1 @@
1
- {"version":3,"file":"operator-decisions.js","sourceRoot":"","sources":["../src/operator-decisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operator-decisions.js","sourceRoot":"","sources":["../src/operator-decisions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Attachment, ControlResource, ControlUploadStatus, type ResourceAttachmentRef } from "@claudexor/schema";
1
+ import { Attachment, ControlResource, ControlUploadStatus, ModelPayloadRef, type ResourceAttachmentRef } from "@claudexor/schema";
2
2
  /** Daemon-owned immutable content store. Uploads are single-shot streams; finalized blobs dedupe. */
3
3
  export declare class ResourceStore {
4
4
  private readonly uploads;
@@ -15,6 +15,23 @@ export declare class ResourceStore {
15
15
  cancel(uploadId: string): ReturnType<typeof ControlUploadStatus.parse>;
16
16
  finalize(uploadId: string, expectedSha256: string | undefined, idempotencyKey: string): ReturnType<typeof ControlResource.parse>;
17
17
  resolve(refs: ResourceAttachmentRef[] | undefined): Attachment[];
18
+ /** Exact model bytes only; never a text/artifact projection or secret scanner. */
19
+ readModel(raw: ModelPayloadRef): Buffer;
20
+ /** Publish a daemon-produced result through the same durable finalize owner. */
21
+ publishModel(bytes: Uint8Array): ModelPayloadRef;
22
+ /** Caller owns command-reference checks. This removes only this resource;
23
+ * a blob shared with another resource or pending finalize remains owned. */
24
+ releaseModel(raw: ModelPayloadRef): void;
25
+ listModelResources(): Array<ModelPayloadRef & {
26
+ createdAt: string;
27
+ }>;
28
+ private assertModelRef;
29
+ private resourcePath;
30
+ private blobPath;
31
+ private metadata;
32
+ private verifiedBytes;
33
+ private completeFinalization;
34
+ private discardUpload;
18
35
  private persistUpload;
19
36
  private persistIdempotency;
20
37
  private restoreState;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-store.d.ts","sourceRoot":"","sources":["../src/resource-store.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,mBAAmB,EACnB,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAkC3B,qGAAqG;AACrG,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,IAAI,EAAE,MAAM,EAQvB;IAED,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CA+BzF;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAIrE;IAEK,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAyCvD;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAOrE;IAED,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GACrB,UAAU,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,CAuD1C;IAED,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,SAAS,GAAG,UAAU,EAAE,CAqC/D;IAED,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;CAgDrB"}
1
+ {"version":3,"file":"resource-store.d.ts","sourceRoot":"","sources":["../src/resource-store.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,UAAU,EACV,eAAe,EAEf,mBAAmB,EACnB,eAAe,EACf,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AA0C3B,qGAAqG;AACrG,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAGhC;IACJ,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,IAAI,EAAE,MAAM,EAQvB;IAED,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CA+BzF;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAIrE;IAEK,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,CA2CvD;IAED,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAWrE;IAED,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,cAAc,EAAE,MAAM,GACrB,UAAU,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,CAqE1C;IAED,OAAO,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,SAAS,GAAG,UAAU,EAAE,CAsB/D;IAED,kFAAkF;IAClF,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAKtC;IAED,gFAAgF;IAChF,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CA6B/C;IAED;gFAC4E;IAC5E,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAqBvC;IAED,kBAAkB,IAAI,KAAK,CAAC,eAAe,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAMnE;IAED,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,oBAAoB;IAiC5B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,YAAY;CA0ErB"}