@cendor/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.
@@ -63,6 +63,12 @@ function findTargets(client) {
63
63
  if (client == null || typeof client !== 'object')
64
64
  return [];
65
65
  const c = client;
66
+ // Hugging Face InferenceClient exposes chatCompletion(...) on the client itself (it also has an
67
+ // OpenAI-compatible chat.completions.create). Bind chatCompletion FIRST — before the OpenAI check
68
+ // matches that compat namespace — so the LLMCall is attributed to "huggingface". The response is
69
+ // OpenAI-shaped, so usage/parse/stream reuse the OpenAI path. (JS SDK method is camelCase.)
70
+ if (typeof c.chatCompletion === 'function')
71
+ return [[c, 'chatCompletion', 'huggingface']];
66
72
  const targets = [];
67
73
  const chat = c.chat;
68
74
  const completions = chat?.completions;
@@ -79,14 +85,46 @@ function findTargets(client) {
79
85
  if (messages && typeof messages.create === 'function') {
80
86
  return [[messages, 'create', 'anthropic']];
81
87
  }
88
+ // AWS Bedrock Converse. LIMITATION: aws-sdk v3 uses `client.send(new ConverseCommand(...))` — there
89
+ // is NO duck-typable `client.converse(...)`, and `send` is shared by every AWS command so it can't
90
+ // be cleanly duck-typed. This predicate matches boto-shaped / wrapper clients that DO expose
91
+ // `converse()`; first-class aws-sdk-v3 Bedrock support rides the SDK provider (Phase C), which wraps
92
+ // the client directly. The usage/request/stream bedrock branches below are implemented regardless so
93
+ // Phase C reuses them.
94
+ if (typeof c.converse === 'function')
95
+ return [[c, 'converse', 'bedrock']];
96
+ // Legacy @google/generative-ai: `model.generateContent(...)` with the model id bound to the object
97
+ // (read as modelDefault in instrument()).
98
+ if (typeof c.generateContent === 'function')
99
+ return [[c, 'generateContent', 'google']];
100
+ // @google/genai SDK: sync `client.models.generateContent` + (parity) async
101
+ // `client.aio?.models?.generateContent`. In the JS SDK there is only one async surface (no `aio`),
102
+ // but the `aio` probe is harmless and keeps parity with the Python detection.
103
+ const google = [];
104
+ const models = c.models;
105
+ if (models && typeof models.generateContent === 'function') {
106
+ google.push([models, 'generateContent', 'google']);
107
+ }
108
+ const aio = c.aio;
109
+ const aioModels = aio?.models;
110
+ if (aioModels && typeof aioModels.generateContent === 'function') {
111
+ google.push([aioModels, 'generateContent', 'google']);
112
+ }
113
+ if (google.length > 0)
114
+ return google;
115
+ // Ollama: `client.chat(...)` is itself callable (vs OpenAI's `chat` namespace). Checked LAST.
116
+ if (typeof c.chat === 'function')
117
+ return [[c, 'chat', 'ollama']];
82
118
  return [];
83
119
  }
84
120
  const PUBLIC_PROVIDER = { openai_responses: 'openai' };
85
121
  function publicProvider(provider) {
86
122
  return PUBLIC_PROVIDER[provider] ?? provider;
87
123
  }
88
- /** Per-provider kwarg carrying request messages (so `Reroute({ messages })` rewrites the right field). */
89
- const MESSAGES_KWARG = { openai_responses: 'input' };
124
+ /** Per-provider kwarg carrying request messages (so `Reroute({ messages })` rewrites the right field).
125
+ * Chat Completions / Anthropic / Bedrock / Ollama use `messages`; the Responses API uses `input`;
126
+ * Gemini uses `contents`. */
127
+ const MESSAGES_KWARG = { openai_responses: 'input', google: 'contents' };
90
128
  /**
91
129
  * Wrap a provider client so each call emits an `LLMCall` on the bus. Detection is structural. Unknown
92
130
  * clients are returned untouched; wrapping is idempotent and returns the same client object.
@@ -96,20 +134,36 @@ export function instrument(client) {
96
134
  const fn = owner[attr];
97
135
  if (fn[WRAPPED])
98
136
  continue;
99
- owner[attr] = wrap(fn.bind(owner), provider);
137
+ let modelDefault = '';
138
+ if (provider === 'google') {
139
+ // The legacy @google/generative-ai GenerativeModel binds the model id to the object (`.model`,
140
+ // e.g. "models/gemini-1.5-pro"), not the call args — read it so the LLMCall carries a real,
141
+ // priceable model id (strip the "models/" prefix). The @google/genai Client has no such field;
142
+ // its model rides the `model` arg instead. (`modelName`/`_modelName` covered for parity.)
143
+ const c = client;
144
+ const name = (get(c, 'model') ?? get(c, 'modelName') ?? get(c, '_modelName') ?? '');
145
+ modelDefault = String(name).replace(/^models\//, '');
146
+ }
147
+ owner[attr] = wrap(fn.bind(owner), provider, modelDefault);
100
148
  }
101
149
  return client;
102
150
  }
103
151
  // --------------------------------------------------------------------------- model clients
104
- function wrap(orig, provider) {
152
+ function wrap(orig, provider, modelDefault = '') {
105
153
  const wrapper = async (...args) => {
106
- const kwargs = {
107
- ...(args[0] ?? {}),
108
- };
154
+ // The JS SDKs mostly take a single options object (`create({...})`); the legacy Gemini surface
155
+ // also accepts a positional string/array (`generateContent("hi")`). Only spread args[0] into
156
+ // `kwargs` when it is a plain options object — otherwise keep the original positional args intact.
157
+ const first = args[0];
158
+ const hasOptions = first != null && typeof first === 'object' && !Array.isArray(first);
159
+ const kwargs = hasOptions
160
+ ? { ...first }
161
+ : {};
109
162
  const rest = args.slice(1);
110
- const { call, start } = pre(provider, kwargs);
163
+ const { call, start } = pre(provider, kwargs, args, modelDefault);
111
164
  ensureStreamUsageOptions(provider, kwargs);
112
165
  const streaming = Boolean(kwargs.stream);
166
+ const runReal = () => (hasOptions ? orig(kwargs, ...rest) : orig(...args));
113
167
  const directive = intercept(call);
114
168
  if (directive instanceof Reroute) {
115
169
  applyReroute(call, kwargs, directive, provider);
@@ -126,7 +180,7 @@ function wrap(orig, provider) {
126
180
  post(call, directive, provider, start);
127
181
  return directive;
128
182
  }
129
- const response = await orig(kwargs, ...rest);
183
+ const response = await runReal();
130
184
  if (streaming)
131
185
  return proxyStream(call, response, provider, start);
132
186
  post(call, response, provider, start);
@@ -148,8 +202,8 @@ function applyReroute(call, kwargs, directive, provider) {
148
202
  }
149
203
  call.metadata.rerouted = true;
150
204
  }
151
- function pre(provider, kwargs) {
152
- const { model, messages } = extractRequest(provider, kwargs);
205
+ function pre(provider, kwargs, args, modelDefault) {
206
+ const { model, messages } = extractRequest(provider, kwargs, args, modelDefault);
153
207
  const call = new LLMCall({
154
208
  id: uuidHex(),
155
209
  provider: publicProvider(provider),
@@ -161,7 +215,7 @@ function pre(provider, kwargs) {
161
215
  call.metadata.request_kwargs = kwargs;
162
216
  return { call, start: performance.now() };
163
217
  }
164
- function extractRequest(provider, kwargs) {
218
+ function extractRequest(provider, kwargs, args, modelDefault) {
165
219
  if (provider === 'openai_responses') {
166
220
  const inp = kwargs.input ?? kwargs.messages;
167
221
  let messages;
@@ -173,7 +227,27 @@ function extractRequest(provider, kwargs) {
173
227
  messages = [];
174
228
  return { model: kwargs.model ?? '', messages };
175
229
  }
176
- // openai / anthropic both take model= + messages=
230
+ if (provider === 'bedrock') {
231
+ // Converse: modelId= (not model=) carries the model; messages= carries the turns.
232
+ const messages = Array.isArray(kwargs.messages) ? kwargs.messages : [];
233
+ return { model: kwargs.modelId ?? '', messages };
234
+ }
235
+ if (provider === 'google') {
236
+ // Gemini messages ride `contents` (or the first positional arg on the legacy surface); the model
237
+ // id rides `model` on the new client, else the object-bound modelDefault on the legacy one.
238
+ let contents = kwargs.contents;
239
+ if (contents == null && args.length > 0)
240
+ contents = args[0];
241
+ let messages;
242
+ if (Array.isArray(contents))
243
+ messages = contents;
244
+ else if (contents)
245
+ messages = [{ role: 'user', content: String(contents) }];
246
+ else
247
+ messages = [];
248
+ return { model: kwargs.model || modelDefault, messages };
249
+ }
250
+ // openai / anthropic / ollama / huggingface all take model= + messages=
177
251
  const messages = Array.isArray(kwargs.messages) ? kwargs.messages : [];
178
252
  return { model: kwargs.model ?? '', messages };
179
253
  }
@@ -236,17 +310,25 @@ async function* fromArray(items) {
236
310
  for (const item of items)
237
311
  yield item;
238
312
  }
313
+ /** `Symbol.asyncDispose` if the runtime defines it (Node ≥ 20 / TS `using`); typed defensively
314
+ * because the compile target is ES2022, whose lib does not yet declare it. */
315
+ const ASYNC_DISPOSE = Symbol.asyncDispose;
239
316
  /**
240
- * Wraps a streaming response: chunks pass through unchanged and usage is accumulated, so the
241
- * `LLMCall` is emitted once with usage/cost/latency when the stream completes (or the consumer stops
242
- * early). The result is an async-iterable — the contract callers rely on (`for await (const chunk)`).
317
+ * State + behaviour for one wrapped streaming response. Chunks pass through unchanged and usage is
318
+ * accumulated, so the `LLMCall` is emitted **exactly once** (guarded by {@link finalized}) when the
319
+ * stream completes, or when the consumer stops early via `close()`/`Symbol.asyncDispose`. The public
320
+ * value handed back to callers is a `Proxy` (see {@link wrapStream}) that keeps this iteration
321
+ * behaviour while forwarding every other member (`.tee()`, `.controller`, `.response`,
322
+ * `.finalMessage()`, …) to the underlying SDK stream. Mirrors Python's `_AProxyStream`.
243
323
  */
244
- class AsyncStreamProxy {
324
+ class StreamState {
245
325
  call;
246
326
  stream;
247
327
  provider;
248
328
  start;
249
329
  replayChunks;
330
+ finalized = false;
331
+ chunks = [];
250
332
  constructor(call, stream, provider, start, replayChunks = null) {
251
333
  this.call = call;
252
334
  this.stream = stream;
@@ -254,26 +336,79 @@ class AsyncStreamProxy {
254
336
  this.start = start;
255
337
  this.replayChunks = replayChunks;
256
338
  }
257
- async *[Symbol.asyncIterator]() {
258
- const chunks = [];
339
+ finalize() {
340
+ if (this.finalized)
341
+ return;
342
+ this.finalized = true;
343
+ const finalChunks = this.replayChunks ?? this.chunks;
344
+ finalizeStream(this.call, finalChunks, this.provider, this.start);
345
+ }
346
+ async *iterate() {
259
347
  try {
260
348
  for await (const chunk of this.stream) {
261
- chunks.push(chunk);
349
+ this.chunks.push(chunk);
262
350
  yield chunk;
263
351
  }
264
352
  }
265
353
  finally {
266
- const finalChunks = this.replayChunks ?? chunks;
267
- finalizeStream(this.call, finalChunks, this.provider, this.start);
354
+ this.finalize();
268
355
  }
269
356
  }
357
+ async closeUnderlying() {
358
+ const s = this.stream;
359
+ const close = (s.close ?? s.aclose);
360
+ if (typeof close === 'function') {
361
+ const result = close.call(this.stream);
362
+ if (result != null && typeof result.then === 'function') {
363
+ await result;
364
+ }
365
+ }
366
+ }
367
+ async aclose() {
368
+ try {
369
+ await this.closeUnderlying();
370
+ }
371
+ finally {
372
+ this.finalize();
373
+ }
374
+ }
375
+ }
376
+ /**
377
+ * Wrap a {@link StreamState} in a `Proxy`: `Symbol.asyncIterator` runs the usage-capturing generator,
378
+ * `close`/`aclose`/`Symbol.asyncDispose` close the underlying stream and finalize once, and every
379
+ * other member is forwarded to the underlying SDK stream (functions bound so `this` is the stream).
380
+ */
381
+ function wrapStream(state) {
382
+ const handler = {
383
+ get(_target, prop) {
384
+ if (prop === Symbol.asyncIterator)
385
+ return () => state.iterate();
386
+ if (prop === 'close' || prop === 'aclose')
387
+ return () => state.aclose();
388
+ if (ASYNC_DISPOSE !== undefined && prop === ASYNC_DISPOSE)
389
+ return () => state.aclose();
390
+ const value = state.stream[prop];
391
+ if (typeof value === 'function') {
392
+ return value.bind(state.stream);
393
+ }
394
+ return value;
395
+ },
396
+ has(_target, prop) {
397
+ if (prop === Symbol.asyncIterator || prop === 'close' || prop === 'aclose')
398
+ return true;
399
+ if (ASYNC_DISPOSE !== undefined && prop === ASYNC_DISPOSE)
400
+ return true;
401
+ return prop in state.stream;
402
+ },
403
+ };
404
+ return new Proxy({}, handler);
270
405
  }
271
406
  function proxyStream(call, stream, provider, start) {
272
- return new AsyncStreamProxy(call, stream, provider, start);
407
+ return wrapStream(new StreamState(call, stream, provider, start));
273
408
  }
274
409
  function replayStream(call, recorded, provider, start) {
275
410
  const chunks = Array.isArray(recorded) ? [...recorded] : recorded == null ? [] : [recorded];
276
- return new AsyncStreamProxy(call, fromArray(chunks), provider, start, chunks);
411
+ return wrapStream(new StreamState(call, fromArray(chunks), provider, start, chunks));
277
412
  }
278
413
  function finalizeStream(call, chunks, provider, start) {
279
414
  call.latencyMs = performance.now() - start;
@@ -321,6 +456,19 @@ function streamUsage(chunks, provider) {
321
456
  cacheWrite,
322
457
  });
323
458
  }
459
+ if (provider === 'bedrock') {
460
+ // Bedrock streams usage on a `metadata` event (camelCase token keys).
461
+ for (const ch of chunks) {
462
+ const u = get(get(ch, 'metadata'), 'usage');
463
+ if (u !== null) {
464
+ return new Usage({
465
+ inputTokens: toInt(get(u, 'inputTokens', 0) || 0),
466
+ outputTokens: toInt(get(u, 'outputTokens', 0) || 0),
467
+ });
468
+ }
469
+ }
470
+ return null;
471
+ }
324
472
  if (provider === 'openai_responses') {
325
473
  for (const ch of chunks) {
326
474
  const resp = get(ch, 'response');
@@ -329,6 +477,7 @@ function streamUsage(chunks, provider) {
329
477
  }
330
478
  return null;
331
479
  }
480
+ // openai / huggingface / ollama / google: usage rides one (final) chunk, full-response shaped.
332
481
  for (const ch of chunks) {
333
482
  const u = extractUsage(ch, provider);
334
483
  if (u !== null)
@@ -352,7 +501,8 @@ function streamText(chunk, provider) {
352
501
  return String(get(chunk, 'delta', '') ?? '');
353
502
  return '';
354
503
  }
355
- if (provider === 'openai') {
504
+ if (provider === 'openai' || provider === 'huggingface') {
505
+ // Both stream Chat Completions-shaped chunks (HF's response is OpenAI-shaped).
356
506
  const choices = get(chunk, 'choices') ?? [];
357
507
  return choices.map((c) => String(get(get(c, 'delta'), 'content', '') ?? '')).join('');
358
508
  }
@@ -361,6 +511,15 @@ function streamText(chunk, provider) {
361
511
  return String(get(get(chunk, 'delta'), 'text', '') ?? '');
362
512
  return '';
363
513
  }
514
+ if (provider === 'ollama') {
515
+ return String(get(get(chunk, 'message'), 'content', '') ?? '');
516
+ }
517
+ if (provider === 'google') {
518
+ return String(get(chunk, 'text', '') ?? '');
519
+ }
520
+ if (provider === 'bedrock') {
521
+ return String(get(get(get(chunk, 'contentBlockDelta'), 'delta'), 'text', '') ?? '');
522
+ }
364
523
  }
365
524
  catch {
366
525
  return '';
@@ -371,31 +530,55 @@ function extractUsage(response, provider) {
371
530
  let cached = 0;
372
531
  let cacheWrite = 0;
373
532
  let reasoning = 0;
374
- const u = get(response, 'usage');
375
- if (u === null)
376
- return null;
377
533
  let inp;
378
534
  let out;
379
- if (provider === 'openai' || provider === 'openai_responses') {
380
- inp = get(u, 'prompt_tokens');
381
- if (inp == null)
382
- inp = get(u, 'input_tokens');
383
- out = get(u, 'completion_tokens');
384
- if (out == null)
385
- out = get(u, 'output_tokens', 0);
386
- out = out || 0;
387
- const details = get(u, 'prompt_tokens_details') ?? get(u, 'input_tokens_details');
388
- cached = details !== null ? get(details, 'cached_tokens', 0) || 0 : 0;
389
- const cdetails = get(u, 'completion_tokens_details') ?? get(u, 'output_tokens_details');
390
- reasoning = cdetails !== null ? get(cdetails, 'reasoning_tokens', 0) || 0 : 0;
535
+ if (provider === 'google') {
536
+ // Usage lives under `usage_metadata`. Gemini reports thinking-model reasoning under
537
+ // `thoughts_token_count`, *separate* from `candidates_token_count`; both bill as output, so fold
538
+ // thoughts into the output total (else reasoning models under-count) and surface as reasoning.
539
+ const meta = get(response, 'usage_metadata');
540
+ inp = get(meta, 'prompt_token_count');
541
+ reasoning = get(meta, 'thoughts_token_count', 0) || 0;
542
+ out = (get(meta, 'candidates_token_count', 0) || 0) + reasoning;
543
+ }
544
+ else if (provider === 'ollama') {
545
+ // Token counts are top-level on the response.
546
+ inp = get(response, 'prompt_eval_count');
547
+ out = get(response, 'eval_count', 0) || 0;
391
548
  }
392
549
  else {
393
- // anthropic thinking tokens are folded into output_tokens with no separate count
394
- const baseIn = get(u, 'input_tokens');
395
- out = get(u, 'output_tokens', 0) || 0;
396
- cached = get(u, 'cache_read_input_tokens', 0) || 0;
397
- cacheWrite = get(u, 'cache_creation_input_tokens', 0) || 0;
398
- inp = baseIn == null ? null : toInt(baseIn) + cached;
550
+ const u = get(response, 'usage');
551
+ if (u === null)
552
+ return null;
553
+ if (provider === 'openai' || provider === 'openai_responses' || provider === 'huggingface') {
554
+ // Dual-shape: Chat Completions uses prompt_tokens/completion_tokens (+ details); the Responses
555
+ // API uses input_tokens/output_tokens (+ *_tokens_details). HF's chatCompletion returns the
556
+ // Chat Completions shape. Read whichever the response carries so one branch covers all three.
557
+ inp = get(u, 'prompt_tokens');
558
+ if (inp == null)
559
+ inp = get(u, 'input_tokens');
560
+ out = get(u, 'completion_tokens');
561
+ if (out == null)
562
+ out = get(u, 'output_tokens', 0);
563
+ out = out || 0;
564
+ const details = get(u, 'prompt_tokens_details') ?? get(u, 'input_tokens_details');
565
+ cached = details !== null ? get(details, 'cached_tokens', 0) || 0 : 0;
566
+ const cdetails = get(u, 'completion_tokens_details') ?? get(u, 'output_tokens_details');
567
+ reasoning = cdetails !== null ? get(cdetails, 'reasoning_tokens', 0) || 0 : 0;
568
+ }
569
+ else if (provider === 'bedrock') {
570
+ // Converse usage uses camelCase token keys.
571
+ inp = get(u, 'inputTokens');
572
+ out = get(u, 'outputTokens', 0) || 0;
573
+ }
574
+ else {
575
+ // anthropic — thinking tokens are folded into output_tokens with no separate count
576
+ const baseIn = get(u, 'input_tokens');
577
+ out = get(u, 'output_tokens', 0) || 0;
578
+ cached = get(u, 'cache_read_input_tokens', 0) || 0;
579
+ cacheWrite = get(u, 'cache_creation_input_tokens', 0) || 0;
580
+ inp = baseIn == null ? null : toInt(baseIn) + cached;
581
+ }
399
582
  }
400
583
  if (inp == null)
401
584
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"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"}
package/dist/otel.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import { LLMCall, type Message } from './types.js';
2
+ /** Minimal shape of the bits of the OTel span we touch (typed defensively — OTel is optional). */
3
+ interface OTelSpan {
4
+ setAttribute(key: string, value: unknown): void;
5
+ end(): void;
6
+ }
7
+ export interface SpanOptions {
8
+ /** Optional system name, recorded as `gen_ai.system`. */
9
+ provider?: string;
10
+ /** Extra span attributes, set verbatim. */
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Run `fn` inside a `gen_ai` span named `chat {model}`, setting `gen_ai.request.model`,
15
+ * `gen_ai.system` (= provider), and any extra attributes. The span is passed to `fn`, or **`null`
16
+ * when `@opentelemetry/api` is absent** — in which case `fn(null)` still runs and its value is
17
+ * returned (a no-op that never raises). The span is ended when `fn` returns (awaiting a returned
18
+ * promise first). Callback form (a `@contextmanager` in Python); `ingest()` is the bus path.
19
+ */
20
+ export declare function span<T>(model: string, opts: SpanOptions, fn: (span: OTelSpan | null) => T): T;
21
+ export interface IngestOptions {
22
+ messages?: Message[];
23
+ emit?: boolean;
24
+ }
25
+ /**
26
+ * Turn OpenTelemetry GenAI (`gen_ai.*`) span attributes into a normalized `LLMCall`. This is the
27
+ * managed-runtime capture path: when a server-side runtime owns the loop and only emits `gen_ai.*`
28
+ * spans, feed those attributes here and the call joins the same event bus — so `@cendor/tokenguard`
29
+ * and `@cendor/acttrace` consume it exactly as if it had been instrumented locally. No OTel dependency.
30
+ *
31
+ * Reads `gen_ai.request.model` (or `response.model`), `gen_ai.system`, and the usage attributes;
32
+ * prices it via `@cendor/core` `prices` (missing price → `cost = null`); emits on the bus unless
33
+ * `emit: false`. Returns the call.
34
+ */
35
+ export declare function ingest(attributes: Record<string, unknown>, opts?: IngestOptions): LLMCall;
36
+ export {};
37
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAS,MAAM,YAAY,CAAC;AAE1D,kGAAkG;AAClG,UAAU,QAAQ;IAChB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAChD,GAAG,IAAI,IAAI,CAAC;CACb;AAeD,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAmC7F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAcD;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAwC7F"}