@anuma/sdk 6.35.0 → 6.37.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.
@@ -354,10 +354,10 @@ var init_redactor = __esm({
354
354
  const existing = this.valueToPlaceholder.get(normalizedValue);
355
355
  if (existing) return existing;
356
356
  const existingCount = this.categoryCounters.get(category);
357
- const count = (existingCount ?? 0) + 1;
358
- this.categoryCounters.set(category, count);
357
+ const count2 = (existingCount ?? 0) + 1;
358
+ this.categoryCounters.set(category, count2);
359
359
  if (existingCount === void 0) this.storagePattern = void 0;
360
- const placeholder = `[${category}_${count}]`;
360
+ const placeholder = `[${category}_${count2}]`;
361
361
  this.valueToPlaceholder.set(normalizedValue, placeholder);
362
362
  this.placeholderToValue.set(placeholder, normalizedValue);
363
363
  this.storageLookup = null;
@@ -370,15 +370,15 @@ var init_redactor = __esm({
370
370
  * (sequential, per-pattern) and the async {@link collectRegexSpans} (span)
371
371
  * paths so the detection rules live in exactly one place.
372
372
  */
373
- findMatches(text12, pattern) {
373
+ findMatches(text13, pattern) {
374
374
  const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
375
375
  const found = [];
376
376
  let m;
377
- while ((m = regex.exec(text12)) !== null) {
377
+ while ((m = regex.exec(text13)) !== null) {
378
378
  const value = m[0];
379
379
  if (pattern.validate && !pattern.validate(value)) continue;
380
380
  if (pattern.context) {
381
- const before = text12.slice(Math.max(0, m.index - 40), m.index);
381
+ const before = text13.slice(Math.max(0, m.index - 40), m.index);
382
382
  if (!pattern.context.test(before)) continue;
383
383
  }
384
384
  found.push({ match: value, index: m.index });
@@ -394,9 +394,9 @@ var init_redactor = __esm({
394
394
  * earlier patterns, so an earlier (more specific) pattern claims a region
395
395
  * before a later one can — placeholders are inert and match no pattern.
396
396
  */
397
- scan(text12, makeReplacement) {
397
+ scan(text13, makeReplacement) {
398
398
  const matches = [];
399
- let redacted = text12;
399
+ let redacted = text13;
400
400
  for (const pattern of this.patterns) {
401
401
  const found = this.findMatches(redacted, pattern);
402
402
  if (found.length === 0) continue;
@@ -417,8 +417,8 @@ var init_redactor = __esm({
417
417
  * Scan and redact PII from a single text string, using numbered, reversible
418
418
  * placeholders ([EMAIL_1], …) tracked on this instance.
419
419
  */
420
- redactText(text12) {
421
- return this.scan(text12, (category, value) => this.getPlaceholder(category, value));
420
+ redactText(text13) {
421
+ return this.scan(text13, (category, value) => this.getPlaceholder(category, value));
422
422
  }
423
423
  /**
424
424
  * Mask PII with unnumbered, NON-reversible tokens ([EMAIL], [SSN], …) without
@@ -427,15 +427,15 @@ var init_redactor = __esm({
427
427
  * embeddings endpoint while staying deterministic, so the same content always
428
428
  * masks identically and search stays consistent across conversations.
429
429
  */
430
- maskText(text12) {
431
- return this.scan(text12, (category) => `[${category}]`).text;
430
+ maskText(text13) {
431
+ return this.scan(text13, (category) => `[${category}]`).text;
432
432
  }
433
433
  /** All regex matches as spans on the ORIGINAL text (priority 0). Uses the
434
434
  * same {@link findMatches} guards as the sync scan. */
435
- collectRegexSpans(text12) {
435
+ collectRegexSpans(text13) {
436
436
  const spans = [];
437
437
  this.patterns.forEach((pattern, patternIndex) => {
438
- for (const { match, index } of this.findMatches(text12, pattern)) {
438
+ for (const { match, index } of this.findMatches(text13, pattern)) {
439
439
  spans.push({
440
440
  start: index,
441
441
  end: index + match.length,
@@ -454,16 +454,16 @@ var init_redactor = __esm({
454
454
  * of "Stripe") from producing a corrupting partial placeholder like
455
455
  * `[ORG_1]e`.
456
456
  */
457
- normalizeNerSpans(text12, raw) {
457
+ normalizeNerSpans(text13, raw) {
458
458
  if (!Array.isArray(raw)) return [];
459
459
  const out = [];
460
460
  raw.forEach((s, i) => {
461
461
  if (!Number.isFinite(s.start) || !Number.isFinite(s.end)) return;
462
- let start = Math.max(0, Math.min(Math.trunc(s.start), text12.length));
463
- let end = Math.max(0, Math.min(Math.trunc(s.end), text12.length));
462
+ let start = Math.max(0, Math.min(Math.trunc(s.start), text13.length));
463
+ let end = Math.max(0, Math.min(Math.trunc(s.end), text13.length));
464
464
  if (end <= start) return;
465
- while (start > 0 && isWordChar(text12[start - 1])) start--;
466
- while (end < text12.length && isWordChar(text12[end])) end++;
465
+ while (start > 0 && isWordChar(text13[start - 1])) start--;
466
+ while (end < text13.length && isWordChar(text13[end])) end++;
467
467
  const category = String(s.category ?? "").trim();
468
468
  if (!category) return;
469
469
  out.push({ start, end, category, priority: 1, order: i });
@@ -472,10 +472,10 @@ var init_redactor = __esm({
472
472
  }
473
473
  /** Run the configured detector defensively: failures degrade to regex-only
474
474
  * (fail-open on detection, not on protection) with a one-time warning. */
475
- async detectNerSpans(text12) {
475
+ async detectNerSpans(text13) {
476
476
  if (!this.nerDetector) return [];
477
477
  try {
478
- return this.normalizeNerSpans(text12, await this.nerDetector.detect(text12));
478
+ return this.normalizeNerSpans(text13, await this.nerDetector.detect(text13));
479
479
  } catch (err) {
480
480
  this.warnNerFailure(err);
481
481
  return [];
@@ -508,11 +508,11 @@ var init_redactor = __esm({
508
508
  * in pattern then document order, matching the sync scan's numbering). The
509
509
  * string is then EMITTED in document order.
510
510
  */
511
- rebuildSpans(text12, spans, makeReplacement) {
511
+ rebuildSpans(text13, spans, makeReplacement) {
512
512
  const placeholderByStart = /* @__PURE__ */ new Map();
513
513
  const matches = [];
514
514
  for (const s of spans) {
515
- const value = text12.slice(s.start, s.end);
515
+ const value = text13.slice(s.start, s.end);
516
516
  const placeholder = makeReplacement(s.category, value);
517
517
  placeholderByStart.set(s.start, placeholder);
518
518
  matches.push({ category: s.category, original: value, placeholder });
@@ -521,16 +521,16 @@ var init_redactor = __esm({
521
521
  let result = "";
522
522
  let cursor = 0;
523
523
  for (const s of emitOrder) {
524
- result += text12.slice(cursor, s.start) + (placeholderByStart.get(s.start) ?? "");
524
+ result += text13.slice(cursor, s.start) + (placeholderByStart.get(s.start) ?? "");
525
525
  cursor = s.end;
526
526
  }
527
- result += text12.slice(cursor);
527
+ result += text13.slice(cursor);
528
528
  return { text: result, matches };
529
529
  }
530
530
  /** Merge regex + NER spans for `text` into a resolved, non-overlapping set. */
531
- async detectAllSpans(text12) {
532
- const nerPromise = this.detectNerSpans(text12);
533
- const regexSpans = this.collectRegexSpans(text12);
531
+ async detectAllSpans(text13) {
532
+ const nerPromise = this.detectNerSpans(text13);
533
+ const regexSpans = this.collectRegexSpans(text13);
534
534
  const ner = await nerPromise;
535
535
  return this.resolveOverlaps([...regexSpans, ...ner]);
536
536
  }
@@ -539,11 +539,11 @@ var init_redactor = __esm({
539
539
  * unstructured PII (the configured {@link NerDetector}) with numbered,
540
540
  * reversible placeholders. With no detector, identical to `redactText`.
541
541
  */
542
- async redactTextAsync(text12) {
543
- if (!this.nerDetector) return this.redactText(text12);
544
- const spans = await this.detectAllSpans(text12);
542
+ async redactTextAsync(text13) {
543
+ if (!this.nerDetector) return this.redactText(text13);
544
+ const spans = await this.detectAllSpans(text13);
545
545
  return this.rebuildSpans(
546
- text12,
546
+ text13,
547
547
  spans,
548
548
  (category, value) => this.getPlaceholder(category, value)
549
549
  );
@@ -552,10 +552,10 @@ var init_redactor = __esm({
552
552
  * Async counterpart to {@link maskText}: stateless `[CATEGORY]` masking over
553
553
  * regex + NER matches. With no detector, identical to `maskText`.
554
554
  */
555
- async maskTextAsync(text12) {
556
- if (!this.nerDetector) return this.maskText(text12);
557
- const spans = await this.detectAllSpans(text12);
558
- return this.rebuildSpans(text12, spans, (category) => `[${category}]`).text;
555
+ async maskTextAsync(text13) {
556
+ if (!this.nerDetector) return this.maskText(text13);
557
+ const spans = await this.detectAllSpans(text13);
558
+ return this.rebuildSpans(text13, spans, (category) => `[${category}]`).text;
559
559
  }
560
560
  /**
561
561
  * Async counterpart to {@link redactMessages}. Text parts are redacted
@@ -641,9 +641,9 @@ var init_redactor = __esm({
641
641
  * {@link restoreForStorage} instead, which tolerates the mangled echoes the
642
642
  * extraction models produce.
643
643
  */
644
- deAnonymize(text12) {
645
- if (!text12.includes("[")) return text12;
646
- let restored = text12;
644
+ deAnonymize(text13) {
645
+ if (!text13.includes("[")) return text13;
646
+ let restored = text13;
647
647
  for (const [placeholder, original] of this.placeholderToValue) {
648
648
  if (restored.includes(placeholder)) {
649
649
  restored = restored.split(placeholder).join(original);
@@ -668,15 +668,15 @@ var init_redactor = __esm({
668
668
  * - `unresolved` is derived from the lookup miss during this pass, not from a
669
669
  * regex re-scan of the output — so it can't trip over a restored value.
670
670
  */
671
- restoreForStorage(text12) {
671
+ restoreForStorage(text13) {
672
672
  if (this.storagePattern === void 0) this.storagePattern = this.buildStoragePattern();
673
673
  if (!this.storagePattern || this.placeholderToValue.size === 0) {
674
- return { text: text12, unresolved: false };
674
+ return { text: text13, unresolved: false };
675
675
  }
676
676
  this.storageLookup ?? (this.storageLookup = this.buildStorageLookup());
677
677
  const { exact, ci, ciCollisions } = this.storageLookup;
678
678
  let unresolved = false;
679
- const restored = text12.replace(
679
+ const restored = text13.replace(
680
680
  this.storagePattern,
681
681
  (match, bracketed, bare) => {
682
682
  const body = bracketed ?? bare ?? "";
@@ -892,44 +892,44 @@ async function callPortalJsonCompletion(req) {
892
892
  ),
893
893
  ...reinforce && { reinforceJsonContract: true }
894
894
  } : reinforce ? { ...req, reinforceJsonContract: true } : req;
895
- const outcome = await attemptPortalJson(
895
+ const outcome2 = await attemptPortalJson(
896
896
  { ...attemptReq, transport },
897
897
  endpoint
898
898
  );
899
- if (outcome.kind === "ok") {
899
+ if (outcome2.kind === "ok") {
900
900
  req.onAttempt?.({ attempt, ok: true });
901
- return outcome.value;
901
+ return outcome2.value;
902
902
  }
903
903
  req.onAttempt?.({
904
904
  attempt,
905
905
  ok: false,
906
- reason: outcome.code,
907
- ...outcome.httpStatus !== void 0 && { httpStatus: outcome.httpStatus }
906
+ reason: outcome2.code,
907
+ ...outcome2.httpStatus !== void 0 && { httpStatus: outcome2.httpStatus }
908
908
  });
909
909
  lastFailure = {
910
- reason: outcome.code,
911
- ...outcome.httpStatus !== void 0 && { httpStatus: outcome.httpStatus },
910
+ reason: outcome2.code,
911
+ ...outcome2.httpStatus !== void 0 && { httpStatus: outcome2.httpStatus },
912
912
  attempts: attempt
913
913
  };
914
- if (outcome.code === "invalid-json" || outcome.code === "null-completion") reinforce = true;
915
- if (outcome.kind === "terminal") {
916
- log.warn(`[${req.tag}] ${outcome.reason}`);
914
+ if (outcome2.code === "invalid-json" || outcome2.code === "null-completion") reinforce = true;
915
+ if (outcome2.kind === "terminal") {
916
+ log.warn(`[${req.tag}] ${outcome2.reason}`);
917
917
  return giveUp();
918
918
  }
919
919
  if (attempt >= maxAttempts) {
920
- log.warn(`[${req.tag}] ${outcome.reason} \u2014 attempt ${attempt}/${maxAttempts}, giving up`);
920
+ log.warn(`[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, giving up`);
921
921
  break;
922
922
  }
923
923
  const backoff = (req.backoffMs ?? defaultBackoffMs)(attempt);
924
- const delay = Math.max(backoff, outcome.retryAfterMs ?? 0);
924
+ const delay = Math.max(backoff, outcome2.retryAfterMs ?? 0);
925
925
  if (overBudget() || req.totalTimeoutMs !== void 0 && Date.now() - startedAt + delay >= req.totalTimeoutMs) {
926
926
  log.warn(
927
- `[${req.tag}] ${outcome.reason} \u2014 attempt ${attempt}/${maxAttempts}, over time budget, giving up`
927
+ `[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, over time budget, giving up`
928
928
  );
929
929
  lastFailure = { reason: "time-budget-exhausted", attempts: attempt };
930
930
  break;
931
931
  }
932
- log.warn(`[${req.tag}] ${outcome.reason} \u2014 attempt ${attempt}/${maxAttempts}, retrying`);
932
+ log.warn(`[${req.tag}] ${outcome2.reason} \u2014 attempt ${attempt}/${maxAttempts}, retrying`);
933
933
  if (delay > 0) await sleep3(delay);
934
934
  }
935
935
  return giveUp();
@@ -1132,8 +1132,8 @@ function extractResponsesContent(body) {
1132
1132
  if (!root) return null;
1133
1133
  if (typeof root.output_text === "string" && root.output_text !== "") return root.output_text;
1134
1134
  if (!Array.isArray(root.output)) return null;
1135
- const text12 = root.output.filter((item) => asRecord(item)?.type === "message").flatMap((item) => Array.isArray(item.content) ? item.content : []).map((part) => asRecord(part)?.text).filter((t) => typeof t === "string").join("");
1136
- return text12;
1135
+ const text13 = root.output.filter((item) => asRecord(item)?.type === "message").flatMap((item) => Array.isArray(item.content) ? item.content : []).map((part) => asRecord(part)?.text).filter((t) => typeof t === "string").join("");
1136
+ return text13;
1137
1137
  }
1138
1138
  var RESPONSE_FORMAT_OK, RESPONSE_SCHEMA_OK, JSON_CONTRACT_REMINDER, RESPONSES_ONLY_MODEL_PREFIXES, CHAT_TO_RESPONSES_FIELDS, FOREIGN_ENDPOINT_SUFFIX, RETRYABLE_HTTP;
1139
1139
  var init_portalLlm = __esm({
@@ -1427,6 +1427,7 @@ __export(index_exports, {
1427
1427
  MEMORY_KINDS: () => MEMORY_KINDS,
1428
1428
  MEMORY_LEVELS: () => MEMORY_LEVELS,
1429
1429
  MemoryEntityModel: () => MemoryEntity,
1430
+ MemoryKeyError: () => MemoryKeyError,
1430
1431
  MemoryLevelError: () => MemoryLevelError,
1431
1432
  NEVER_TTL_MS: () => NEVER_TTL_MS,
1432
1433
  NODE_BUDGET: () => NODE_BUDGET,
@@ -1441,6 +1442,7 @@ __export(index_exports, {
1441
1442
  RECALL_MAX_LIMIT: () => RECALL_MAX_LIMIT,
1442
1443
  RECALL_TOOL_NAME: () => RECALL_TOOL_NAME,
1443
1444
  RemoteMemoryError: () => RemoteMemoryError,
1445
+ RemoteMemoryPartialCreateError: () => RemoteMemoryPartialCreateError,
1444
1446
  RerankerUnavailableError: () => RerankerUnavailableError,
1445
1447
  SDK_SCHEMA_VERSION: () => SDK_SCHEMA_VERSION,
1446
1448
  SERVER_TOOL_DEPENDENCY_SETS: () => SERVER_TOOL_DEPENDENCY_SETS,
@@ -1534,6 +1536,7 @@ __export(index_exports, {
1534
1536
  createRecallTool: () => createRecallTool,
1535
1537
  createRemoteMemoryPersistence: () => createRemoteMemoryPersistence,
1536
1538
  createRemoteMemoryPipeline: () => createRemoteMemoryPipeline,
1539
+ createRemoteMemoryStore: () => createRemoteMemoryStore,
1537
1540
  createSavedToolOp: () => createSavedToolOp,
1538
1541
  createServerToolsFilter: () => createServerToolsFilter,
1539
1542
  createStockPricePreProcessor: () => createStockPricePreProcessor,
@@ -1565,6 +1568,7 @@ __export(index_exports, {
1565
1568
  deleteVaultMemoryOp: () => deleteVaultMemoryOp,
1566
1569
  dequantizeEmbedding: () => dequantizeEmbedding,
1567
1570
  deriveKeyFromSignatureBytes: () => deriveKeyFromSignatureBytes,
1571
+ deriveMemoryKeyRing: () => deriveMemoryKeyRing,
1568
1572
  eagerEmbedContent: () => eagerEmbedContent,
1569
1573
  embedAllMessages: () => embedAllMessages,
1570
1574
  embedMessage: () => embedMessage,
@@ -1584,6 +1588,7 @@ __export(index_exports, {
1584
1588
  extractFacts: () => extractFacts,
1585
1589
  extractFileIds: () => extractFileIds,
1586
1590
  extractMCPImageUrls: () => extractMCPImageUrls,
1591
+ extractReservationReceipts: () => extractReservationReceipts,
1587
1592
  fileExists: () => fileExists,
1588
1593
  findById: () => findById,
1589
1594
  findMatchingTools: () => findMatchingTools,
@@ -1704,6 +1709,7 @@ __export(index_exports, {
1704
1709
  linkMemoryEntitiesOp: () => linkMemoryEntitiesOp,
1705
1710
  maskScopedEmbeddingCache: () => maskScopedEmbeddingCache,
1706
1711
  mediaToStored: () => mediaToStored,
1712
+ memoryCipher: () => memoryCipher,
1707
1713
  migrateCalendarToken: () => migrateCalendarToken,
1708
1714
  migrateDisplayResult: () => migrateDisplayResult,
1709
1715
  migrateDriveToken: () => migrateDriveToken,
@@ -1725,6 +1731,7 @@ __export(index_exports, {
1725
1731
  rankProfileCandidates: () => rankProfileCandidates,
1726
1732
  readEncryptedFile: () => readEncryptedFile,
1727
1733
  recall: () => recall,
1734
+ reencryptMemoryField: () => reencryptMemoryField,
1728
1735
  reflect: () => reflect,
1729
1736
  refreshCalendarToken: () => refreshCalendarToken,
1730
1737
  refreshDriveToken: () => refreshDriveToken,
@@ -1904,9 +1911,9 @@ function createSseClient({
1904
1911
  if (done) break;
1905
1912
  buffer += value;
1906
1913
  buffer = buffer.replace(/\r\n?/g, "\n");
1907
- const chunks = buffer.split("\n\n");
1908
- buffer = chunks.pop() ?? "";
1909
- for (const chunk of chunks) {
1914
+ const chunks2 = buffer.split("\n\n");
1915
+ buffer = chunks2.pop() ?? "";
1916
+ for (const chunk of chunks2) {
1910
1917
  const lines = chunk.split("\n");
1911
1918
  const dataLines = [];
1912
1919
  let eventName;
@@ -2519,8 +2526,8 @@ var createClient = (config = {}) => {
2519
2526
  data = await response[parseAs]();
2520
2527
  break;
2521
2528
  case "json": {
2522
- const text12 = await response.text();
2523
- data = text12 ? JSON.parse(text12) : {};
2529
+ const text13 = await response.text();
2530
+ data = text13 ? JSON.parse(text13) : {};
2524
2531
  break;
2525
2532
  }
2526
2533
  case "stream":
@@ -5804,8 +5811,8 @@ var ATTACHED_FILES_OPEN_TAG = "<attached_files>";
5804
5811
  var ATTACHED_FILES_CLOSE_TAG = "</attached_files>";
5805
5812
  var ATTACHED_FILES_PREFIX = `${ATTACHED_FILES_OPEN_TAG}
5806
5813
  The user attached the following file(s) to this message. Their extracted contents are below; when the user refers to "the attached file", "this file" or "the document", they mean these.`;
5807
- function isAttachedFilesText(text12) {
5808
- return typeof text12 === "string" && text12.startsWith(ATTACHED_FILES_PREFIX) && text12.endsWith(ATTACHED_FILES_CLOSE_TAG);
5814
+ function isAttachedFilesText(text13) {
5815
+ return typeof text13 === "string" && text13.startsWith(ATTACHED_FILES_PREFIX) && text13.endsWith(ATTACHED_FILES_CLOSE_TAG);
5809
5816
  }
5810
5817
  function buildAttachedFilesText(fileContext) {
5811
5818
  return `${ATTACHED_FILES_PREFIX}
@@ -6558,14 +6565,14 @@ async function updateMessageEmbeddingOp(ctx, uniqueId, vector, embeddingModel) {
6558
6565
  });
6559
6566
  return messageToStored(message, ctx.walletAddress, ctx.signMessage, ctx.embeddedWalletSigner);
6560
6567
  }
6561
- async function updateMessageChunksOp(ctx, uniqueId, chunks, embeddingModel) {
6568
+ async function updateMessageChunksOp(ctx, uniqueId, chunks2, embeddingModel) {
6562
6569
  let message;
6563
6570
  try {
6564
6571
  message = await ctx.messagesCollection.find(uniqueId);
6565
6572
  } catch {
6566
6573
  return null;
6567
6574
  }
6568
- const storedChunks = chunks.map(({ text: _text, ...rest }) => rest);
6575
+ const storedChunks = chunks2.map(({ text: _text, ...rest }) => rest);
6569
6576
  await ctx.database.write(async () => {
6570
6577
  await message.update((msg) => {
6571
6578
  msg._setRaw("chunks", JSON.stringify(storedChunks));
@@ -6609,12 +6616,12 @@ async function stripLegacyChunkTextOp(ctx) {
6609
6616
  const messages = await ctx.messagesCollection.query(import_watermelondb2.Q.where("id", import_watermelondb2.Q.oneOf(changedIds))).fetch();
6610
6617
  const updates = messages.flatMap((message) => {
6611
6618
  const raw = message._raw;
6612
- const chunks = chunksWithoutText(raw.chunks);
6613
- if (!chunks) return [];
6619
+ const chunks2 = chunksWithoutText(raw.chunks);
6620
+ if (!chunks2) return [];
6614
6621
  const updatedAt = raw.updated_at;
6615
6622
  return [
6616
6623
  message.prepareUpdate((msg) => {
6617
- msg._setRaw("chunks", JSON.stringify(chunks));
6624
+ msg._setRaw("chunks", JSON.stringify(chunks2));
6618
6625
  msg._setRaw("updated_at", updatedAt);
6619
6626
  })
6620
6627
  ];
@@ -6824,15 +6831,15 @@ async function searchChunksOp(ctx, queryVector, options) {
6824
6831
  }
6825
6832
  continue;
6826
6833
  }
6827
- const chunks = await readRawJsonField(message, "chunks", ctx.walletAddress);
6828
- if (chunks && chunks.length > 0) {
6829
- const vectors = chunks.map(
6834
+ const chunks2 = await readRawJsonField(message, "chunks", ctx.walletAddress);
6835
+ if (chunks2 && chunks2.length > 0) {
6836
+ const vectors = chunks2.map(
6830
6837
  (chunk) => decodeChunkVector(chunk.vector, () => {
6831
6838
  unreadableVectors++;
6832
6839
  })
6833
6840
  );
6834
6841
  chunkCache?.set(message.id, { version, chunks: vectors });
6835
- for (let ci = 0; ci < chunks.length; ci++) {
6842
+ for (let ci = 0; ci < chunks2.length; ci++) {
6836
6843
  const vec = vectors[ci];
6837
6844
  if (vec.length === 0) continue;
6838
6845
  const similarity = cosineSimilarity(queryVector, vec);
@@ -6840,7 +6847,7 @@ async function searchChunksOp(ctx, queryVector, options) {
6840
6847
  candidates.push({
6841
6848
  message,
6842
6849
  similarity,
6843
- chunkTextSource: { kind: "chunk", chunk: chunks[ci], siblings: chunks }
6850
+ chunkTextSource: { kind: "chunk", chunk: chunks2[ci], siblings: chunks2 }
6844
6851
  });
6845
6852
  }
6846
6853
  }
@@ -6984,49 +6991,49 @@ init_logger();
6984
6991
  var DEFAULT_CHUNK_SIZE = 400;
6985
6992
  var DEFAULT_CHUNK_OVERLAP = 50;
6986
6993
  var DEFAULT_MIN_CHUNK_SIZE = 50;
6987
- function splitIntoSentences(text12) {
6994
+ function splitIntoSentences(text13) {
6988
6995
  const sentenceRegex = /[.!?]+[\s"')}\]]*(?=\s|$)/g;
6989
6996
  const sentences = [];
6990
6997
  let lastIndex = 0;
6991
6998
  let match;
6992
- while ((match = sentenceRegex.exec(text12)) !== null) {
6999
+ while ((match = sentenceRegex.exec(text13)) !== null) {
6993
7000
  const endIndex = match.index + match[0].length;
6994
- const sentence = text12.slice(lastIndex, endIndex).trim();
7001
+ const sentence = text13.slice(lastIndex, endIndex).trim();
6995
7002
  if (sentence) {
6996
7003
  sentences.push(sentence);
6997
7004
  }
6998
7005
  lastIndex = endIndex;
6999
7006
  }
7000
- const remaining = text12.slice(lastIndex).trim();
7007
+ const remaining = text13.slice(lastIndex).trim();
7001
7008
  if (remaining) {
7002
7009
  sentences.push(remaining);
7003
7010
  }
7004
7011
  return sentences;
7005
7012
  }
7006
- function chunkText(text12, options) {
7013
+ function chunkText(text13, options) {
7007
7014
  const {
7008
7015
  chunkSize = DEFAULT_CHUNK_SIZE,
7009
7016
  chunkOverlap: requestedOverlap = DEFAULT_CHUNK_OVERLAP,
7010
7017
  minChunkSize = DEFAULT_MIN_CHUNK_SIZE
7011
7018
  } = options ?? {};
7012
7019
  const chunkOverlap = Math.min(requestedOverlap, chunkSize - 1);
7013
- if (text12.length <= chunkSize) {
7020
+ if (text13.length <= chunkSize) {
7014
7021
  return [
7015
7022
  {
7016
- text: text12.trim(),
7023
+ text: text13.trim(),
7017
7024
  startOffset: 0,
7018
- endOffset: text12.length
7025
+ endOffset: text13.length
7019
7026
  }
7020
7027
  ];
7021
7028
  }
7022
- const sentences = splitIntoSentences(text12);
7023
- const chunks = [];
7029
+ const sentences = splitIntoSentences(text13);
7030
+ const chunks2 = [];
7024
7031
  let currentChunkSentences = [];
7025
7032
  let currentChunkStart = 0;
7026
7033
  let currentOffset = 0;
7027
7034
  for (let i = 0; i < sentences.length; i++) {
7028
7035
  const sentence = sentences[i];
7029
- let sentenceStart = text12.indexOf(sentence, currentOffset);
7036
+ let sentenceStart = text13.indexOf(sentence, currentOffset);
7030
7037
  if (sentenceStart === -1) {
7031
7038
  sentenceStart = currentOffset;
7032
7039
  }
@@ -7034,7 +7041,7 @@ function chunkText(text12, options) {
7034
7041
  if (sentence.length > chunkSize) {
7035
7042
  if (currentChunkSentences.length > 0) {
7036
7043
  const chunkText2 = currentChunkSentences.join(" ");
7037
- chunks.push({
7044
+ chunks2.push({
7038
7045
  text: chunkText2,
7039
7046
  startOffset: currentChunkStart,
7040
7047
  endOffset: currentOffset
@@ -7045,7 +7052,7 @@ function chunkText(text12, options) {
7045
7052
  const chunkEnd = Math.min(j + chunkSize, sentence.length);
7046
7053
  const chunk = sentence.slice(j, chunkEnd);
7047
7054
  if (chunk.length >= minChunkSize) {
7048
- chunks.push({
7055
+ chunks2.push({
7049
7056
  text: chunk,
7050
7057
  startOffset: sentenceStart + j,
7051
7058
  endOffset: sentenceStart + chunkEnd
@@ -7059,7 +7066,7 @@ function chunkText(text12, options) {
7059
7066
  const currentText = currentChunkSentences.join(" ");
7060
7067
  const potentialLength = currentText.length + (currentText ? 1 : 0) + sentence.length;
7061
7068
  if (potentialLength > chunkSize && currentChunkSentences.length > 0) {
7062
- chunks.push({
7069
+ chunks2.push({
7063
7070
  text: currentText,
7064
7071
  startOffset: currentChunkStart,
7065
7072
  endOffset: currentOffset
@@ -7073,7 +7080,7 @@ function chunkText(text12, options) {
7073
7080
  if (overlapSentences.length > 0) {
7074
7081
  currentChunkSentences = [...overlapSentences, sentence];
7075
7082
  const overlapText = overlapSentences[0];
7076
- const overlapStart = text12.lastIndexOf(overlapText, currentOffset);
7083
+ const overlapStart = text13.lastIndexOf(overlapText, currentOffset);
7077
7084
  currentChunkStart = overlapStart === -1 ? sentenceStart : overlapStart;
7078
7085
  } else {
7079
7086
  currentChunkSentences = [sentence];
@@ -7090,26 +7097,26 @@ function chunkText(text12, options) {
7090
7097
  if (currentChunkSentences.length > 0) {
7091
7098
  const chunkText2 = currentChunkSentences.join(" ");
7092
7099
  if (chunkText2.length >= minChunkSize) {
7093
- chunks.push({
7100
+ chunks2.push({
7094
7101
  text: chunkText2,
7095
7102
  startOffset: currentChunkStart,
7096
- endOffset: text12.length
7103
+ endOffset: text13.length
7097
7104
  });
7098
7105
  }
7099
7106
  }
7100
- if (chunks.length === 0) {
7101
- const trimmedText = text12.trim();
7107
+ if (chunks2.length === 0) {
7108
+ const trimmedText = text13.trim();
7102
7109
  if (trimmedText.length > 0) {
7103
7110
  return [
7104
7111
  {
7105
7112
  text: trimmedText,
7106
7113
  startOffset: 0,
7107
- endOffset: text12.length
7114
+ endOffset: text13.length
7108
7115
  }
7109
7116
  ];
7110
7117
  }
7111
7118
  }
7112
- return chunks;
7119
+ return chunks2;
7113
7120
  }
7114
7121
  function shouldChunkMessage(content, chunkSize = DEFAULT_CHUNK_SIZE) {
7115
7122
  return content.length > chunkSize;
@@ -7205,16 +7212,16 @@ function embeddingErrorFrom(response) {
7205
7212
  const message = typeof response.error === "object" && response.error && "error" in response.error ? response.error.error : "API embedding failed";
7206
7213
  return new EmbeddingHttpError(message, response.response?.status);
7207
7214
  }
7208
- async function generateEmbedding(text12, options) {
7215
+ async function generateEmbedding(text13, options) {
7209
7216
  const total = options.totalTimeoutMs;
7210
- if (total === void 0) return embedOne(text12, options, void 0);
7211
- return withDeadline((signal) => embedOne(text12, options, signal), total, "embedding");
7217
+ if (total === void 0) return embedOne(text13, options, void 0);
7218
+ return withDeadline((signal) => embedOne(text13, options, signal), total, "embedding");
7212
7219
  }
7213
- async function embedOne(text12, options, outer) {
7220
+ async function embedOne(text13, options, outer) {
7214
7221
  const { baseUrl = BASE_URL, model, cache } = options;
7215
7222
  const timeoutMs = options.timeoutMs ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS;
7216
7223
  if (cache) {
7217
- const cached = cache.get(text12);
7224
+ const cached = cache.get(text13);
7218
7225
  if (cached) return Array.from(cached);
7219
7226
  }
7220
7227
  const headers = await resolveAuthHeaders(options, outer);
@@ -7223,7 +7230,7 @@ async function embedOne(text12, options, outer) {
7223
7230
  (signal) => postApiV1Embeddings({
7224
7231
  baseUrl,
7225
7232
  body: {
7226
- input: options.maskInput ? options.maskInput(text12) : text12,
7233
+ input: options.maskInput ? options.maskInput(text13) : text13,
7227
7234
  model: model ?? DEFAULT_API_EMBEDDING_MODEL
7228
7235
  },
7229
7236
  headers,
@@ -7250,7 +7257,7 @@ async function embedOne(text12, options, outer) {
7250
7257
  }
7251
7258
  const f32Embedding = Float32Array.from(embedding);
7252
7259
  if (cache) {
7253
- cache.set(text12, f32Embedding);
7260
+ cache.set(text13, f32Embedding);
7254
7261
  }
7255
7262
  return Array.from(f32Embedding);
7256
7263
  }
@@ -7328,18 +7335,18 @@ async function embedMany(texts, options, outer) {
7328
7335
  outer
7329
7336
  );
7330
7337
  } else {
7331
- const chunks = [];
7338
+ const chunks2 = [];
7332
7339
  for (let i = 0; i < uncachedTexts.length; i += chunkSize) {
7333
- chunks.push(uncachedTexts.slice(i, i + chunkSize));
7340
+ chunks2.push(uncachedTexts.slice(i, i + chunkSize));
7334
7341
  }
7335
- const allEmbeddings = new Array(chunks.length);
7342
+ const allEmbeddings = new Array(chunks2.length);
7336
7343
  let nextIndex = 0;
7337
7344
  const worker = async () => {
7338
- while (nextIndex < chunks.length) {
7345
+ while (nextIndex < chunks2.length) {
7339
7346
  if (outer?.aborted) throw outer.reason;
7340
7347
  const idx = nextIndex++;
7341
7348
  allEmbeddings[idx] = await generateEmbeddingsBatch(
7342
- chunks[idx],
7349
+ chunks2[idx],
7343
7350
  headers,
7344
7351
  baseUrl,
7345
7352
  embeddingModel,
@@ -7351,7 +7358,7 @@ async function embedMany(texts, options, outer) {
7351
7358
  }
7352
7359
  };
7353
7360
  const workers = Array.from(
7354
- { length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY, chunks.length) },
7361
+ { length: Math.min(DEFAULT_EMBEDDING_BATCH_CONCURRENCY, chunks2.length) },
7355
7362
  () => worker()
7356
7363
  );
7357
7364
  await Promise.all(workers);
@@ -7584,10 +7591,10 @@ var cryptoPriceCentroid = [0.025576787463333337, 0.0017598020599999997, -0.01339
7584
7591
  var noCryptoPriceCentroid = [0.015473095138684206, 0.0031634101517105263, -0.011257569272697374, -0.02186071628118421, 0.008889833600921049, -0.006683160151842105, -0.009353561542368423, 0.01352172231447368, -0.01804750482084211, -0.00367377302894737, -0.02944732364736842, -0.002762284484078947, 0.033265779919736845, -0.006296026233684209, 0.022671929989210516, -0.0011530866775394733, 0.007070449366500001, -0.0050351310097368415, 0.010799295548421052, 8887227547368423e-20, 0.016334833743289468, 0.014258147745263154, 0.009584979092368422, 0.003050773904342107, -0.013426355076315791, 0.03582639014592105, -0.01160198427105263, -0.012974957788421051, -0.0031303864967105266, 0.021372544676315785, -0.02374843410263159, -0.009223416682894739, 0.005602822635394739, 0.02924898819473684, -0.014123551471890794, 0.019027650408421047, -0.005074793619605263, -4600031255263159e-19, 0.010498459563947368, -0.011094227593421054, 0.010249076817105258, -5753623577631579e-19, -0.005674418818421051, -0.00447285064486842, -0.005516097867105263, -0.007470266562368424, -0.005471375803289476, -0.006780112021052632, 0.007059772195657894, 0.0021554959672368413, 0.004705735464473685, -0.02317132775394737, -0.011564555390789474, -0.002422056378552632, -0.006380764081578948, -0.004005146213289473, -0.00794062262769737, 0.01414054164342105, -0.01016237577355263, 0.003978143405131578, -0.03655277326578946, 0.006158242906276315, 0.004217046339078946, -0.008940671309210528, -0.00673433677186842, 0.010728261618421055, 0.005998754786184212, -0.012994214264868421, 0.01220040680802632, -0.010796953655434208, -0.006105011632500001, 0.008011191312894737, 0.006423354985394737, 0.0012142853823684213, 0.009146709284210528, 0.022887410982105266, -0.022682944046052637, -0.020356859009684213, 0.010394592805789476, 0.022593094030263154, -7750265294736841e-19, 0.010491877809868419, -0.00632094335789474, -0.00435166075344737, -0.0033312799659210527, -0.013687921215789472, -0.0021700710893421053, -0.009265354446052636, -0.007450454793684212, -0.01119890545223684, 0.01885215469736842, -0.0016829954880263156, 0.004660542770078946, 0.01614547219013159, 0.0012384379707105267, 0.0012953595593421052, -0.019026688374473685, -0.012046473879210519, -0.01890812402105263, -0.0013315808465131577, 0.011091345418421055, 0.021520818015789468, -0.005630902795947368, -0.0019751528094210527, 0.016361938930000004, -0.006861605829210528, -0.0028363347098684204, 0.008591381667894738, -0.009064190686052631, 0.0019356226038157898, 6169263489473686e-19, 0.005576595939605265, 0.01869662389342105, 0.001262012349342105, -0.005366806441447369, -0.016217105081578947, 0.0016831897417500007, -0.0018950253057894739, -0.002175052982236842, 0.015151523774342104, 0.009984357328157894, -0.008543766583157896, -0.00730858755781579, -0.005671754766447369, 0.016222894231578945, -0.006877592555789474, -0.00339728109881579, 0.002327833744078947, -0.007433236152460526, 0.003641817336996051, -22983315413157884e-20, -0.018579861956578948, -0.002013661149605263, -0.0012221983013157892, -0.005588193124592107, 0.0017740131994736844, -0.005087314752105264, -0.0024032324010526303, -0.021181957791973682, 0.015352973211842105, 0.0014077697809210523, 0.01886358938289474, 0.0034620092081578944, 0.001262707815105263, -0.016702094776315787, 0.0024528663467105263, -0.015399577423684214, 0.013716609889342105, 0.008007916322368419, 17873636657894727e-20, 0.012559814308552636, 0.004152347459210525, -0.007167261042105263, -0.010308009533421052, -0.0118209450956579, 0.0034850848647894755, -0.01689842138618421, 0.02312426354868421, 0.018107834585526318, -0.005113781234210525, 0.0036598878982894733, -0.002219674033289473, 0.010094555771578948, -0.004721280503184208, -4728102780263162e-19, -0.005741379793631579, 0.004688492021052632, -0.009298409537368421, 0.021306954543421058, 0.002625481324473684, 0.0021689222906578947, 0.0016470091790789468, 0.021918357023684207, 0.01859015762499999, 0.008736974258815788, -0.007575892959605263, 0.0012198560669736834, -0.013031221881184206, 0.005416682665447367, 0.014852952819736842, -27517017642368397e-20, 0.01096887469118421, -0.0013455180846052635, 0.022272436745131585, 0.0067934349073684175, 0.012959732387171052, -0.02075517668026316, -0.0064723936585, -0.0038070007211315794, 0.0012372250631578945, 0.0050306169430263175, -0.006763357246763157, -0.006772821312763157, 0.010125664042499998, 0.002038023320000001, 0.011549378190657895, 0.0029378070836842116, 0.010960937982500004, 0.010825824704473684, 0.0021591957962631583, 0.04206184268421052, -0.024262397277631575, 0.008255900677763156, 0.009695903923947372, -0.007390906788684211, -0.008087284358947368, -0.021996855926315787, 0.011287301983684214, -5568711708289474e-19, -0.014932725518421055, 0.009245778972302627, 0.0015213949119210516, 0.009132084528947367, 0.016006044472368423, 0.011636527018026314, 0.006784626309736844, 0.013307319816763155, -0.0027379106158421057, -0.0020452238106578946, -0.004009475287105262, 0.010760948439342109, -0.008745640049473686, -0.003213084865263158, -0.002908590922105263, -0.008224298627236842, -0.01243814725003421, 0.002076089559092105, -0.009891295528947368, 0.002955430833842103, -0.026389982763157894, 0.00307576746013158, -0.019563673766447378, 0.0016621273825, -0.008313485993421054, 0.004804929035789474, -0.00549750888473684, 0.00505214069705263, -0.011755459830263165, -0.0024296008852631576, 0.00875007432236842, -0.008075735610789475, -0.01105359596322368, 0.0039991457536842105, -0.010148718380263164, 0.0025960758788157894, -0.010566656651710528, 0.012436943196578952, -0.016535537697368412, 0.01290098068868421, -0.01656991388736842, -0.007831062019144736, 0.005940865221447369, -9759450793421052e-19, -0.008620581310184207, -0.003005893026447368, -0.002761302409605262, -0.0030793885886842114, -0.006974357054078946, 9721991617105264e-19, 0.010942189804473684, 0.002026653777631579, -0.012401945011578947, 0.0033469499360526318, 0.018924720229473682, -0.005991988553184208, 0.0033316007316315788, -0.015320591599605263, -0.02128828745542763, -0.0022622942237697373, 0.0069056783826315785, 0.004446302767763156, -0.016207595330789474, 11362097776315657e-20, 0.008954130263986842, -0.010221943235789475, 0.014461354018157896, 0.0028590932341973686, -0.010514913011447373, -0.015841919529473683, -0.01389901701263158, -0.009229765706842105, 2461921435526319e-19, 0.020577489130263162, -0.022800926136842106, -0.0015163221825394738, -0.013809464157236842, 0.004897803686315791, 0.018522811494736845, -0.009630460222828948, 0.011984547498157897, 0.0111937101125, 0.015270678807631577, 0.0019252811815789483, 0.014758101361842106, -0.005758524065263159, -0.0021391250729868427, -0.010472078178684207, -0.012900316256973682, -0.0014497102297763157, 0.006431885074342107, -0.003826420850657895, 0.004125123941578948, 7190557013157885e-20, 0.005760016457894736, -0.01029894582407894, -0.014202551836842109, -0.008429392661184212, -0.004542960022631579, 0.004390327258289474, -0.017841332352631578, -0.02092670811578947, -0.011721044171184207, 0.001154552708868421, -0.008358092435263156, -0.009767428120921056, 0.00617505359518421, 0.004506490673552631, 0.0020017606636842113, -0.00796983946092105, 0.020977802086842096, -0.0075353952266447415, -0.007463197555921055, -0.012128650817236842, 0.019736432668421053, 0.002261451146973684, 0.004720614210526316, -0.009998388954473686, -0.005624677788552632, -0.022545385379078953, -0.001583800878381579, -0.002379242887671053, -0.006442413411381578, -0.00695587538394737, 0.0011264698367105268, -0.0045705394853947385, -0.0015821324533815784, 0.023414226677631576, -0.0012724761923684214, 0.023761430540263154, 0.0029503868397894734, -0.0033352330858684217, -0.011512791865657892, 0.00981099949723684, -5708729797368422e-19, 8188937956578947e-19, 0.010694227110197371, 0.008592401465789476, -35825991868421067e-20, -0.004266100294447367, 0.005692018715789475, -0.0033002098638157907, 0.004866896994999999, 0.01000889828684211, 0.006752862654868419, 0.0026472819757499995, -0.005589931472697369, -0.017258877186842114, 0.01836197345605264, 0.003980058679868421, -0.0020851821997368417, -0.006682193140302631, 0.008638199788657895, 0.01154588990657895, -0.0014030509926710529, 0.00623447043604513, 0.016997480921671054, -0.0076195284961842105, 9118090571052634e-19, -0.01740562824342105, 0.001625513271842105, -0.012645379938157893, 0.010188843557894742, -0.012510250708026317, 0.0014163581344342104, 0.007640950823026323, 0.009030281375263157, -6778679552631581e-19, -0.021454867002973686, 0.001957897549473684, 0.001193311223026316, 0.0027351965483684215, -0.05114138984210526, 9931653628947367e-19, -0.0034956210430263156, -0.011831037061315788, 0.010289316701315792, -0.006878016126315793, 0.004890278758947368, 0.005483033461842105, -0.01275958679236842, -0.01331795716276316, 0.003143929424078947, -0.0022857318045394724, 0.007633577711973686, 0.0021747185855263158, 0.005520500721710526, 0.008252045688684212, -0.014708749063026315, -0.010071718517500002, 0.004989717453947367, 0.017077984349605266, -8273659215789473e-19, 0.005120420113328947, 0.007857212020657894, -0.007720276348289473, 0.002462438197763158, -55125038157895184e-21, 0.004356982750105262, -0.00700954478736842, 0.008855195414342104, -0.007593518517105262, 5683125496052636e-19, 0.006104346186842107, 0.0018523006100263158, 0.011868568778421053, 0.008818247002631579, 0.007355409463684211, 0.014110024566184213, -0.004139245012105264, -0.008042714513815788, -0.008814672356447366, 0.010348661143157892, 0.008645756135526317, -0.0039321516707894735, -0.018719250872499996, 0.016164309558789468, 0.011362069608157893, 0.012222493691973682, 0.009424688908947371, -0.00664402617118421, -0.007866664878289475, -0.012993650039078946, -0.018103016852631583, -0.0065906644863157875, 0.004789760346776317, -0.014935053199342104, 0.014902569211842109, 0.004785409491052631, 0.007345346444473684, 0.003159245409736842, 0.01312098370328947, 0.006301784642499999, 0.005022653047368423, -0.002849895648684211, -0.0032933022748421045, 0.004350993063026316, -0.007350343983026319, 0.010007334274736844, -0.0028172315381578953, -0.011997126834394734, -0.005281044011052631, 0.017256082294736845, -0.026231524928157893, 0.001482624986578947, -0.01504677556723684, -0.006961093627631583, -0.009158235009605265, -0.010464971171052636, -0.012205843889473683, 0.013581314933421051, 0.024057515715473682, -0.026571698318421058, -39512425210526327e-20, -0.008364490104342107, 0.01043953546486842, -0.006329244778157894, 0.00677121107763158, -0.006404679137105265, -0.008498417039605265, -0.011997726845921054, -0.00819236379276316, -0.008719842036447368, 2480567830263159e-19, -0.009615319662105265, 0.010179268672105262, 0.010257863497157897, -0.002203600034342105, -0.014915970727368411, 0.010107625643947371, -0.0016536920541710522, -0.006636945585526316, -0.016858044851315784, -0.020209110402631573, -0.007010765250131577, 0.0073754879921052625, 0.019676440628368427, 0.010058316429868416, -0.026224092562236838, -0.010421548158342108, 0.004843649796842105, -0.018334794059605263, 0.007321559153421053, 0.014406508708157897, -0.013035912961381586, 0.008222181527763156, -0.002566978908289474, 0.009497600043981577, -0.0056751013231578955, 0.004298258599210526, -0.00134152910618421, 0.0017198262138157904, -0.00527642314413158, -0.006738037163421052, 8391017913947374e-19, -0.011822055771453949, -0.0023647280209210526, 0.018581314182894736, 0.0013511696361842105, -0.008034561226052629, 0.0050400383831578945, 0.011289238419736843, -0.01018335548486842, -0.008891896734736842, 0.007739089927236841, -0.014787865826578945, -0.017835246043026314, 0.0056641722032894715, -0.0059957612642105255, -0.006282649575526315, 0.016645820401710514, 0.002203326760921053, 0.0022889429653157895, -0.008153908865789473, -0.009116433642894738, 0.014059073972894742, 0.006152197939947369, 0.01395997850157895, -0.012334291357763155, 0.017010570389868414, -0.0063333831828947355, -0.0025206653310921056, 0.006800531193421053, -0.004048019489342104, -0.006107880013157895, -0.011589549206710528, -0.0023016446209210527, 0.018917020458026318, -0.0018317876103026314, 0.007985371543710523, -0.009285482378157892, -0.007067705323684211, 0.011150805990789475, -0.009777598592105264, -0.008635949183289476, -0.004163104284868419, 0.010232138396315793, -0.0019257375613157897, -5739201986842089e-20, 0.013092055408684215, 0.01974871008065789, 0.005587073321842107, 0.025888940701315793, 0.016139226412631578, -0.0011026304183986845, -0.006448130678552632, 0.0013506662108157892, -0.00879462901421053, 0.0067748442927236825, -0.002999273877368421, 5861502590000002e-19, -31988263750131585e-20, -9557692903947368e-19, -0.005667702506315793, -0.006468547942684208, -0.017199129730526317, -0.019429718929210527, -0.003644407856578948, 0.004087335838671054, -0.003677765850855264, 0.007942120783605264, 6586344227631579e-19, -0.0037614600624999986, 0.0055129023461368415, 0.011244061396578945, 0.005010426876315791, 0.0072596023613157885, -0.008378387808157896, 0.01193223011842105, 0.002783704421578947, -0.0018955311381578942, 0.016495522016315784, 0.0010300654348684207, 0.0029166797853947372, 0.0019548181412, 0.0034482197978947357, -0.01597233675447369, -0.004172262047894737, 0.004349557685394737, 0.0057765581432894725, -0.017049438059999998, -0.004525430396052631, -28143429157894773e-20, 0.008926862911842108, -0.01706470510842106, -0.009343251894078945, -0.014551790916315796, 0.0037077234910526317, -0.024520926263157893, 0.005740144142368422, 0.0053956368143421056, -0.005766834186973687, -0.012353098134999999, 0.005150600744473685, -0.002591634655236843, -0.0034600672671052644, 0.020232129807894742, 0.0019706625393421055, -0.021094935969078955, 0.013562589856578945, -0.01982315960263158, 0.0022789787307368413, 0.0030350554696052627, -0.0023380354609868425, 0.0016429701249999996, 0.0013748243807894737, -0.011015212538802624, -0.01045923693026316, -0.010230515132368417, 0.0031865286891710532, 0.019525663493815786, -0.01229977110328947, -0.01392738180263158, 0.0047192255380921035, 0.009634271472381582, -0.0036637588399210516, 0.01367465738263158, -9074315167105264e-19, 0.009034615510460526, -0.013227085239526318, -0.008698134963421054, -0.005679745975289474, 0.016064328626710523, 6854882098684209e-19, -0.02409260117894737, -0.029390496973684222, -8429490286315783e-19, 0.017532396812105267, 0.003992892611842105, -0.015176699562894741, 0.017688143694565794, 0.015704753903289473, -0.006714242723157895, 0.006966373187026316, 0.014712872807894739, 0.0048426642788421065, 0.004560759092499999, 0.014764954930526316, 0.007755880210394735, -0.0063704605949999995, 0.013370230355131577, 0.006058873911578949, -0.007236065584644737, 0.02192650811447368, -0.0036055442649473683, 0.017262371172368424, -0.019675186598421057, 0.012352453031578945, -0.019395975741052625, -0.005476996759473683, -0.003981952255394738, -0.019128493134342103, -0.006420192784736843, 0.00663706127763158, -0.00931713626539474, -0.004438600155394738, -0.0074747220036842105, -3532221511315789e-19, 0.003786715305789473, 0.002143004024210527, -0.013259830103026315, -0.019481669799736843, 0.0063924609735921045, -0.006268689519868423, 0.011194401769210527, 0.014244597600921052, -0.009581357068684208, 0.015704279303947365, 0.002868509497368421, 0.009993456976842102, -0.009288659571184214, -0.00567008211111842, -0.0016774708461842105, -0.015881515857631583, -0.0031357240957894735, 0.009431347011250004, -0.02115866819605263, -0.002224235694342105, 0.016286955564605264, 0.007042988388157893, 0.002287434175, 0.010197640378157893, -0.005280943861578946, 0.0014105266302631581, 8359535263157892e-19, 0.0047502692026315805, 0.013299677349078947, -0.0023519426788157897, -0.004674174603421053, 0.018177119728907887, -0.0014176172173881575, 0.007134867282894738, -22741002690789458e-20, -0.022838398981578946, -0.003212089612105263, 2004287202631577e-19, -0.022176862091973677, -0.020671407409605266, 0.009063825494342106, -0.016635621425526326, -0.008275760027894737, -0.010347646235000002, 0.009041304183157893, 0.0051814241601315794, 0.005795941738552632, -0.006237753602210528, -0.004308292899078948, 0.027939477830263154, 0.0022927221325526313, -0.009122603172894738, -0.012685393528368422, 0.035720136647368415, 3721588992105262e-19, -0.015025574779078942, 0.0087486222525, -0.009074244906710525, -0.01173346431697368, 0.012090590483960533, 0.016366954857105268, 0.011179668721052633, -0.0073358287721842115, -0.007733899611315792, -0.003457529575921053, -0.006236338289078949, 0.005774385420526318, -0.018860930085526313, 0.01522345625828947, -0.012091792738157891, -0.004068704780263158, -0.004178824925921053, -0.013820312269210535, -0.01096366969644737, -0.004025642653947369, -0.024534325314078946, 0.006440052884473688, -0.016726629586052633, -3620708957894737e-19, 0.0047140585557894745, 0.0018035156026315793, 0.0048402487059210535, -0.00438187360013158, -6329667841710535e-19, 0.013023098627184216, -0.0015603331286578957, -0.0015727194086052627, 0.015044479001315789, 0.003913626584973687, -0.011406708371973688, 0.009567988548947368, 0.0048712744065789486, 8060304496052634e-19, -0.0027007557632499997, -0.007984334569848683, 0.0035786119902631594, 0.008549296575394733, 0.013448384334736838, 0.003980597008986842, 0.0027732479433552628, 0.0022548364651710537, 0.01305019627302631, -0.010885881758421052, 0.0046425705302631575, -0.006159144808684208, 0.0016908100748684212, 0.010177649750394735, -0.00148574499868421, -0.007758489989078948, -0.010132687943157893, 0.010328826282539472, -0.007675625043065791, 0.010875474622368417, -10961718381578953e-20, 2469314122368423e-19, 0.01456813955157895, -0.002258910603421052, -0.006317790170921054, 0.008751932444473686, -0.009791627398947367, 0.015247204259210523, 0.010811477365789473, 0.006444553805289473, -0.009046801008342103, 0.0030660862369736833, 0.020425601981842102, 1083259947368725e-21, 0.024182386267499998, -0.017303176044473685, 0.006597084168552631, 0.001865562837526316, 0.001028871313631579, 0.01472760354684211, -0.0075378481717105275, 0.010146784916184209, -0.007357307590657895, 0.015889662872500005, -0.0010280143740789473, 0.008057754063236841, -0.0017568669571052641, -0.004133698758421052, 0.007827215762368422, 0.03512832019999999, -0.00993780903394737, -0.004260993277631579, -0.008866919430526315, -0.012339414527631576, -45847830315789447e-20, 0.00838245042193421, -0.016904068641184215, -0.01032341292509211, -0.0179430145493421, -0.005017911380025, 0.004198584343289474, -0.012134608429342105, 0.02621189465, 0.021764919877236843, -0.0016967839548684218, 0.0064469595144736845, 0.0015113159294999998, 0.01449087951447368, 0.00908490776328947, 0.0021144275999999997, -0.0023710569351315784, -0.012429141851184206, -0.007313173065394735, -0.003165631556907895, -0.005191618546052632, -0.00811820481360526, 0.006263298302894738, -4727746834342098e-19, 0.01215529816414474, 0.005959134763223686, -0.003053097290263157, 0.0022509379385526307, -0.012437947575526312, -0.017363427211052634, -0.0044620109, 0.01702834882368421, -0.0014438623280263164, 0.007209018304078949, -0.005530027731842105, -0.006350269325728949, -1933061736184215e-19, -0.012560664186842102, 0.021907004355263156, -0.00368476647618421, -0.008714235420315792, 0.006064745458157897, 0.004239938750368421, -0.003381502998157895, -0.009450509392500002, 0.021473245165789474, -0.006664313856578946, -0.007727308110131578, 0.01755496648539474, -0.008046387513815787, 0.004243436594473684, -0.0018419240855263163, -0.002696314727236842, 0.00458863617605263, -0.009136615755921052, -0.01227240456026316, 0.007315492906276317, 0.001563661388157895, -0.005130049675394736, -0.002669057950473685, -0.0014561823650000002, -0.005081315489473683, -0.019940945634210522, 0.0020929494719736843, 0.004403723249342103, -0.03075529604868421, -0.008624309510289472, 0.01228930504118421, -0.009409504784473681, 0.0011323868934210513, -5501856157894726e-19, 0.011253276619736843, -0.005881537943934211, -0.009128014259078948, -0.002782203197434212, -0.00439761305381579, 0.018774566821052625, -0.011816556899605264, -0.019359096755263157, -0.009348714950473683, -0.0010719945900657896, 0.010479289703256579, -0.011939962278157891, 0.005665995433736843, 0.006774268349210528, 0.0034390900013157896, -0.008370486944868423, 0.017960268711842104, -0.0040098660762236836, 7006663912157889e-19, 0.0015448419175000006, 0.030164748171052642, -0.013288672209210527, -0.0194342324281579, -0.014333865537368415, -0.0010687613120394742, 0.006369927146184209, -0.02037403711921052, -0.0011595645836842109, 0.012291525279210526, -0.004659846724868422, 0.014351864156447373, 0.004539899117368421, -0.011356260933815792, 0.014434559298684207, 0.003388873248815791, 6091339384210531e-19, 0.009991929092763158, 0.019049285447499998, -0.007336658402000001, 0.01645323191407895, 0.011546428464605267, -0.003781113732894739, 0.01016362579592105, 0.003369438427763157, -0.012699591561842107, -0.027960629820000003, 0.006582685929197369, -0.0014268903726315791, 0.005638759550394738, -0.006515546567039474, -0.004676419364394737, 0.008950068268947365, -0.006762236009210526, 0.010658080675000004, -0.005891587223157895, -0.014665679521842107, -0.013644553504473684, 10368947013157792e-20, -0.007762898519210526, -0.01131838790855263, -0.00988497489276316, -0.0072114894752039445, 0.0027077467686842105, 7480073221052632e-19, 0.001175619631578947, 9005636573684216e-19, -0.017333229999605265, 5094909162236838e-19, 0.012029732047368418, 0.009794908618684218, -0.01157117548918421, -0.009239849182894735, 0.005636658962236845, -0.008340407034210524, -817503516907895e-18, 0.003921638921052632, 0.005545640947368417, 0.014569629413078954, -0.00717244047236842, 0.00835087193605263, -0.008531247800499998, -0.004064330462, 0.008101339765526315, -0.01701503037605263, 0.004955823044473687, -0.0022204531394868425, -0.01208521188631579, -0.002832061093026315, -0.002318643040434209, -0.007110677303947368, 0.001033564958947368, 0.027433827638157895, 0.010220588290263156, -0.007394786349605265, -0.006538531349210523, -0.0022718601860526317, -0.004229559157973685, 0.005938436034868422, 0.01048373804263158, 0.00986031018078947, 0.020336058257894734, 0.004668691585657895, -0.011039444343815792, -0.03195965501315791, 22211712236841965e-20, 0.004621380856581578, -0.0032872489723684223, 0.0022427985402631574, 0.009466410571710526, 0.017591113605263154, -0.004106379021052631, 0.006385616363748682, -0.0040017953515789455, 0.0012984135143552632, -0.0013681684519605262, 0.006150785983582896, 0.02349364751052632, -0.003507428290921053, -0.023245202525000005, 0.0073350322506578955, -0.012751762621973684, -0.009509772432105263, -0.011624634206315787, 0.008383111918289473, 0.008738430290394734, -0.0019306551646052629, 0.004987825924447366, 0.0067051984610657905, 0.010962145944078953, -0.006160766227763156, -0.01599381954276316, -0.005996254381473684, 0.013413042621052635, -0.016699554863157894, -0.00425797138263158, -0.002346582932368421, -0.003454997969210526, 0.015414278531447364, 0.0020144495526315796, 0.004778662968414474, 0.019607659189473686, -36090899996052645e-20, -0.008492139364605267, 0.007747498233499999, -0.0013514066389473686, -0.013021238629802628, 0.02135893455000001, 0.0050934569453947335, -0.005380931788039476, 0.0034462612061184213, 0.002471601183026315, 0.0018443146213815793, -0.005110344829342106, -0.014184218227105262, -0.0043937764976315795, -0.004010257807763158, 0.007609986475131577, -0.0017383072384999994, -0.008765348437499997, 0.006436899067289473, -0.005252098280921053, 0.0012666882906842106, 7271012838815791e-19, -0.012168801171973687, -0.006950649873815789, 0.006179354461447367, 0.008584705725921056, 6826743815789457e-20, 0.005478510884342106, -0.001656087406842105, 0.004353472659210527, -0.007852758323026314, 0.00774670264888684, -0.004548253065789474, -0.00872336939763158, 0.007497302493421052, -0.003937119212631579, 0.005084670148232898, -0.006804365856578951, -0.004160022079342104, -8716827518421054e-19, -0.0018917191575000003, -0.04542618686578948, -7962240394736886e-20, 0.005303945623421051, -0.0010489784114473685, 0.0040561710610526325, -0.005575023273947369, -0.014307941818026318, -0.005483095651842106, -0.0036865826026315804, -0.007326996465921051, -0.007258892687710523, -0.017002108826973682, 0.0026596006468421053, 0.007241479605526319, -0.006855145818736838, -0.007547068765263157, -0.011135433282763159, 0.015574704355921056, 0.015176253521052627, -0.006872319883815792, 0.0017937790452631581, 0.0012157494165789468, 0.007882637975789471, 0.003405427387894736, -0.004297595478375, 0.017864616917368424, 0.0030970381859210523, -0.0023354204692105267, 0.0017386867781578944, 0.02049815361294737, -0.00913410340657895, 0.01556748598855263, 0.0014741332142105261, 0.00888697265651316, -0.008259757955789475, 0.010162209150921054, -0.015258628212236844, 0.007913002543421052, 5999896474736846e-19, 0.010361211858157896, -0.005668571334210528, 0.009625429015263158, -0.0104467670125, 82077470868421e-17, -0.0016111464500000003, 0.011819657311842107, -0.010997043170815787, 0.026556267275000003, 0.006691072826710528, 0.020695954338157893, 0.003105390495, 0.007586750871802631, -0.006386726654605265, -0.02003319237539473, 4345854440394738e-19, -0.008994508450263157, -0.026183591028947364, -0.002199864392631578, -0.0028300363084210523, 0.008933973642105263, -0.004872168878026316, -0.010508434657894736, -0.030814126236842106, 0.003977499332947367, 0.003367798314605263, -0.008800812126184209, 0.03421133572763158, 0.036882231234210514, -0.009774976162894739, 0.014867376786052633, 0.01847335194828948, 0.004703114508157895, 0.004981278706842106, -20820300881578947e-20, 0.0023825047832894738, -0.006051949050131578, 0.005748253940526316, -0.048717287638157886, 0.006936276815973685, -0.00717120160088158, -0.0011371543828947368, -633878522763158e-18, -0.009472156436842108, 0.004011299037763159, -6579590755328946e-19, 0.006974676819078946, -0.005393841788815792, -0.004757979923842104, -0.0033050710856578945, 0.011350404267631583, -0.007076194413157896, 0.0017202756382894743, 0.012773173556842102, 0.0030848825621578946, 0.0027823394973684207, -0.00670719708276316, 0.005835784166710526, 0.006515324253026317, 0.008066022838947366, 0.001960170838894737, 0.0051619980871052615, 0.0026211382473684216, -5182459471052627e-19, -0.0027954785167105234, -0.004234536522631581, -0.009315601918947366, 0.008809953131578951, -6880571447368561e-21, -7682047319210527e-19, -4287664078947533e-21, -0.008450649188421052, -0.0035262061703947374, 0.012014457226315788, 0.00802163259636842, -0.014263569363815795, -0.001529443673157895, 0.0038201108919736853, -0.0021061006564999994, -0.006485662478921053, -4953983351315789e-19, -39382826565789427e-20, 0.0028122849150000006, -0.012065431929342112, -0.004557107439381579, -0.004202265546447372, -0.006648211306315786, -0.0026814599381578944, -0.004716990799535528, 0.011677914061486841, 0.0054311442510526315, -0.009687709625394739, -0.00401446957026316, 21303643315789461e-20, -0.004548820044210527, 0.001488740388592105, -0.008498280648552632, -0.009067142177105258, -0.001475207605789474, 0.003382969827236843, -0.003364108026184211, -0.015231927833026314, -25714068360526294e-20, -0.009678724665486842, 21494394868420982e-20, 0.0069928910540789455, -0.009154249508157892, -0.014927330287236848, -0.04244073076315791, -0.009253368699736841, -0.007564927833815789, -0.006217242748684212, -0.007667895968815788, 0.012352994166578951, 0.005073167429381579, -0.005000820531315791, -0.01045439083394737, 0.0015025571015789476, 0.0064443839557894724, -0.007921140097105263, 0.01298356292368421, 0.022927954959605267, -0.005738576246052634, 0.01002808020881579, -0.0017933789327631581, -0.0036308607342026324, 0.007852910432894737, 0.008723654298289477, 0.005285313737631579, 0.013029228591842109, 0.0033245363744736855, -0.00546107157763158, -0.01238937413552632, -0.014016715163947365, -0.00480338421131579, -0.017565224993223685, -0.0010297757147368421, 0.0190754480131579, -0.016528817848684218, -1554027478552634e-19, -0.0033909335259210555, -0.02275056143078949, -0.012455294898723683, -4695065194736842e-19, -0.019497075148026316, 29407749652631535e-20, -0.004932486893276316, 800515078947368e-20, -0.019466739034210534, 0.0011483287201315788, -0.006102988706842104, 0.004115763767592106, 0.004177756370252632, -0.002618433127763157, -0.00537044665544737, -0.011829460742671057, 0.00692578045657895, 0.006913495407763157, -0.0012394369451315791, 0.004177181062190789, -0.004855147448592105, -0.009354103443947366, 0.008475817234342108, -0.0060853426540789495, 0.017770833389999994, 0.010468942911184213, -0.006522560685973683, -0.015092426563342105, 0.008636236548684206, 0.004441229959605264, 0.005320611943289475, -9800074276184207e-19, -0.010191143523026322, -0.007796377074999998, 0.005595688935526317, -0.0016283605736842112, -0.012121330430263163, 0.008727131922578948, 0.002284515743368422, 0.002682018403026316, 0.02112667354078947, -0.013087226411842108, 0.011961740068421057, -0.0029621327447368426, -0.00711086599605263, -7157445806315789e-19, 0.00296389472118421, -0.002106245437236842, -2060961381578952e-19, -0.0023762942430657894, 0.0067748971048684214, 0.02305358949394737, 0.024209113952105267, -0.0010323672338157883, 5835666469736843e-19, 0.0011928865788157893, -0.013926641433421053, -0.0010454462015131592, -0.008992499685921052, 0.005833304399473685, 0.007247240086842105, 0.007005285494078946, 0.00532119499868421, -0.002409817022763158, -0.009118484332407894, 0.00902553582131579, 0.003644393953815789, -0.001458669926578947, -0.007759722557236839, -0.015974711869276317, 0.005593415395263159, -0.00699891096894737, 0.013671992413157898, 0.0030071592296052633, -0.00725996611631579, 0.00831834310973684, 15080351578947707e-21, 0.010492338298289472, -0.011587350163157897, 0.007662332826842105, 0.008755792813026311, 0.007074787369210524, 0.01825972633684211, 0.005628270758078947, 0.013933462579342108, 4695127519736841e-19, -0.016538577678947376, 0.013688757842105262, -0.00958296806763158, -0.01084689514210526, 0.004655695267894736, 0.002764839804828948, -0.008966435890710524, 0.01818742012328948, -0.002021167613421053, 0.011088005707894739, -0.003949641440789475, 0.016206056167105264, -0.018271099290000006, 0.012128778174342108, 0.016409871427894733, -0.005132905442789474, 0.013977325583552627, 0.0027061513397368423, -0.030432116805263153, 0.009202131592500001, -0.005219011863552631, -0.02768622942105263, 0.005146511143078947, 0.016741514684210528, 0.008617631309868421, 0.001446558946578948, -0.010973319831578945, -0.002393318402447369, 0.0025146223098815794, 0.002058704305, 0.009670727197499998, 0.006972026925486846, 0.007941592818026316, 0.006313998498157896, 0.004550358204605262, 0.019503475739868426, -0.00808706035526316, 0.0014521665658289477, 0.008814657770526316, -0.0034991419792894736, 0.001152647225789473, 0.0035165233944736848, -0.008015521834605265, 0.0030662299349999986, -0.008316208095789476, 0.0018460274468421055, 0.010874037769736845, 0.0019301458946052628, 0.014981398493289479, 0.0063040013951315785, 0.0011182811667105259, -0.001531185306381579, 0.007286755069710524, 0.007252432990381575, 0.005447569480263158, 0.005672717215565791, -0.011183678003684212, 0.0010281094409210528, 0.0037040489348026313, -0.018558228386052637, -0.0024118456417105264, 0.001912976863157895, 0.004824422551335526, -0.007085397379605263, 0.010146420386052636, -0.012797370635526323, 0.005280684883421054, -0.007430231397421052, 0.0012657216987105263, -0.003414122816315788, -0.001953577547894738, 0.004944337450526315, -0.009499839262763153, -0.007726497248157897, 0.02043591631578946, 0.005235241476657896, -0.016428867193421043, -0.02316521289473684, -5283661032894735e-19, 0.0039097042727631575, -33895851092105274e-20, 0.01083217157236842, -7426432255263161e-19, -0.00391929611618421, -0.007359749506882893, -0.0035571319606578938, 0.012559667453289472, 0.0058923027007894745, 0.015785403049999997, -0.013460644672368413, 8476099292105275e-19, -0.0033159500932236833, 0.008975023673552632, -0.01474813875868421, 0.01023825899394737, -0.01589566984736842, -7458934167105253e-19, 0.015296658677631575, 0.008350472782171053, -0.01303794148592105, 0.009825855495394734, -0.0031653390423157907, -0.0023992715984210533, 0.012867784544868418, -0.007730846508157893, -0.008233608065789473, -0.00578186875105263, 7660654657894731e-19, 0.007309484258749999, -0.004728002686184211, 0.024414807685526316, 0.07103057530263161, 138350805131579e-18, -0.0227730847868421, -0.002000239483157895, -2523412961842105e-19, 0.0036002593248947363, -0.00960461145763158, -0.014719047412763165, -0.010525172183026317, -0.008946292160657896, -0.00487614558486842, -0.015348885583552638, 0.005484280077631576, 0.0047399032012368425, -0.011332118468552635, 0.018375535672368423, 0.0028248364129736837, 0.002669773003710525, -0.013733811623947365, -0.012085463925657897, -0.005202895044802634, 0.0011071545386052636, 0.002822448957105263, -0.005775769501039475, -0.007958374655000005, -0.012961527270999999, 0.008736424775394736, 0.001623934084342105, -0.0029857376405, 0.006539750386447366, -921088730657895e-18, 0.01011317570105263, 0.004816758724236842, 0.01006797531394737, -0.024919923669736846, -0.013252434965131578, 0.004975805359868419, 0.0028436151710394737, 0.026767861371052633, 0.01679312495263158, 0.0029180558214473695, -0.01334025122631579, 0.006395531258157895, 0.012167909879868426, 0.0010437845743947376, 0.015899900866315795, -0.015891970886315786, -0.007016795418947369, 0.005720414304868421, 0.014279509605394737, 0.011842180225789475, 0.012174502878815788, -0.004032991572842103, -0.01191846249868421, 0.006569720230394738, -0.007758679420881577, 0.008243021787499999, -0.0056768207752631574, -0.010259304986710528, -0.005975154729605264, 0.022218811560526314, -0.01284212495, -0.0043886743385526325, -0.007587261113289475, -0.00100997453736842, 0.007466683218736842, 0.0017474622250000002, 0.011411024255263157, 0.007287669592105263, -0.011071793518989473, -0.007791523718026317, 0.0024424171717105266, 0.010883432589473684, 0.017893625253684212, 0.008674725273447368, 0.00948412372276316, 0.004439929401005265, -0.012966921410526314, -0.009952035897894734, -0.009481836221250003, 6631337719736842e-19, 0.013784739155921056, 0.01274559315868421, 0.015312255263157895, 0.014739994169736837, 0.001961665102973683, 0.016666361813815787, -0.01601210714707894, -0.003862630162710527, 0.0017456178976315803, 0.002383359211842105, 0.005658344708289475, 0.02028012731447368, 0.0038586854298289478, -0.003930425682236844, 0.005947570116842103, 0.006645788041973682, 0.00593962558863158, -0.0055098527475, -2709300878947366e-19, -0.02526451096052632, 0.0034957235959210526, -0.004797192927499998, 0.010852291108092103, -0.0024250138515789464, -0.008193180311052631, -0.006060304734868421, -0.005015898619736843, 0.009915213199078949, 0.0049576433317105265, 13137401934210517e-20, -0.011906290325000004, 0.005487915484868421, -0.0026353010490789476, -0.006053524171552631, -0.01679510672763158, 0.0019228737013157898, 0.01702610227171053, 0.007407213732763154, 0.001119691041315789, -0.0041095490676315806, -8301038464210527e-19, 0.0033998062114736845, 0.010597575788947365, 0.014257269136842107, 0.007372944618421052, -0.0035281079432894734, -0.017203723107131575, 0.004068165850842105, 0.00382046129631579, -0.011138788382368418, 0.01527541427763158, 0.01094105444394737, 0.003186118735263158, -0.011153858221842101, -0.001682062516447369, 1102902368421087e-20, -0.007634609815394738, -0.0024121695576315794, -0.004676494936184211, -0.004374885159342105, -0.004125291510394737, 8512605788947367e-19, -0.015911860113236847, -0.01630071632578947, 0.0075893821925000025, 0.016570409282894737, -0.0028060973136842106, -0.010812139536144735, -0.0035154795997368424, -0.007599472084868421, -0.0027118450077763152, 0.003790211149736841, -0.0016624428627631574, -0.006025105557500002, -0.00271212489868421, 0.004819238931578948, -2838972343421054e-19, 0.008508885079999997, 0.0037412741409736843, 0.003480958837938158, 0.01989113539539474, -0.007170555643552633, 0.007131082274999999, -0.00324891509618421, 0.017624990426578946, -0.008696587564605262, 0.009625076661710525, -0.003385572580052631, -0.0011940798148684204, 0.013382737070394736, -0.0019341717852631578, 0.014078404609210527, 0.006157531654513156, -0.00436843442881579, 0.010804814319078945, 0.016877812977368414, -0.004866282633157894, -0.004019908407105263, -0.008622002943026319, -0.001156913919736843, 0.00860937810460526, 0.00854736410960526, 0.006645876394210526, 0.006044397847105263, -0.0029129494269078955, 0.005728795454605264, 0.003868690374868421, 14415561068421056e-20, -0.011550837929210526, 0.0024273528732894744, 0.01675736555552631, 0.008618001551842105, -0.009086696278947369, -0.0019255664260000005, 0.017823474286842108, 0.023852092268289476, 0.005640211945657894, -0.0157103212696579, 0.002671248446973685, 5732126974736841e-19, -0.003747782739723685, -0.015167234880263156, -7942613815789339e-21, 20631670931578946e-20, 0.005739634929078944, 0.008089517185263155, -0.005618019369960528, -0.004716671923026316, 0.002440650008157895, -0.013887452536578948, 0.010245098745394738, 0.011824351372763156, -0.005547870031710528, -16388543065789472e-20, -0.0074466632465789466, 0.00498810127631579, 0.015039879665789478, -0.0040669246943421085, -0.005869341766447369, -0.024218201709868412, 0.001695024713552631, -0.005041553392631579, -0.00783228454736842, -0.005132145636842107, 579431247268421e-18, 0.0026811771932894746, -0.007146641212236844, -0.008457516277105264, -0.015692255188223682, 0.024690377132894726, 20765250613157882e-20, -0.0020539644646052624, -0.005768370673684211, 0.003702322850921053, 0.004201434479473683, 0.0028723328136842103, -0.014360589550263161, 0.003967806877105263, 0.004476002342671051, 0.004944308020131578, -0.01157276546618421, -0.009082047036973684, 0.0036693403972368425, 0.009826728072236843, 0.0074656336861842094, -6485088782894734e-19, -0.0014051343403289473, 0.007369758026842101, -0.010425479788289477, 0.01821328323157895, -0.012023113507986844, 0.001740522146710527, 0.005332594062894738, -0.001378770888421052, -0.015753834223815794, 0.0076369660996052635, -0.014926969834157896, 0.0038507784668157883, -0.0041886614165, 0.005354455710657894, -9931518065789487e-20, -0.002756159138157895, 0.014061157835657897, -13951124842105257e-20, -0.013132667226578947, -0.0019348305806052633, -0.009907254651973684, 0.009314450074276314, -0.006995864365000003, -0.004312180836447369, 0.004297729036710528, 0.0047553823486842116, -0.00931211325394737, 0.021702308997368424, 0.007112765311718424, -0.008150883757249996, -0.0015760545419210529, -16017972894736844e-20, 0.0012709232195131578, 0.008913342906302628, -0.009902096786842104, 0.03158665600926315, -0.0043072190056578944, 0.007661704021052634, 0.004888625593815791, 0.003962992540921054, 0.004328961708421054, -0.0062252458030263155, -0.0073411886288157905, -0.002077252053605263, -0.011778288789210526, -0.00824901193289474, -0.0036174059680000002, 0.008596170780328946, -0.007529505605394737, 0.00450591202768421, -0.016162284833421053, -0.006285099551315791, 0.01741020744342105, -0.004753392869697369, 0.004862889815131579, 0.008373598259, 0.007595550645657895, -0.007107993389473689, -0.008475462659473682, 5595674320263158e-19, -0.0034365798056578915, -0.016078184318421052, -0.010819015256052633, -0.0018932811597368428, -0.0060824286468421015, 0.009014217587631579, -0.005298673378684211, 0.0020203203051710524, 0.0023555486237763156, -0.011414600681763159, -0.029000318375131576, 0.012605560375, -0.015203555485526316, 0.013647403227894738, -0.008804857755526316, 0.008642128292289471, -7019206473684211e-19, 0.028421054261842115, 0.010750185311184211, 0.004273382298328947, 0.014962174191052634, -0.0091029727825, 0.004545577043947365, -0.005067943168815789, -0.008576309225131579, -0.009371516520921051, -0.003953041012539474, 0.0026335486594868413, 0.0010443595075789475, -0.006137380078947367, -0.019068207819210526, -0.0066171946843947395, 0.0154603859943421, -0.03956156613026316, -0.005423286051376317, 0.0064764647446052615, 0.017917068601973684, 0.018834929819078944, -0.023795076729473678, -0.005232680938421053, 0.007063256785526317, -0.002471332747368421, -0.005540072479078948, 0.0030247992273684196, -0.041372428210526314, -0.022792676082894738, 0.01496056775592105, 7162006171052637e-20, -0.0054049346089473675, -5917285729473686e-19, -0.006140541838736841, 0.01165498020263158, 7520184688157894e-19, -0.004048719246052633, -0.004093513149078948, 0.001113782621578947, -0.00515289844513158, -0.014532121503749999, -0.005462963103684211, 0.002013934241710526, 0.006934004597374998, 0.011849665684605267, -0.02845128821973684, -0.0027645604678947374, -0.029641802678947365, 0.005846543234157898, 0.004001273209868421, 0.009660376192697369, -0.01431830397552632, -0.0034636234957236833, -0.015780388346842117, -0.0061515257567105255, 0.011677517784078944, 0.011294756013947365, 0.009406988080263162, 0.02362260060394736, 0.006315555671052633, -0.00983715779947368, -0.012793336953947368, -0.010380582411513158, -0.005019749015, 0.004049450225131579, 0.017717702139473684, 0.012014558753947363, -0.004216072575789474, 0.012309840076065792, 0.003926167156578947, -0.011685566748684212, -25353602302631577e-22, -0.005299348902368422, 0.007730379013289471, -0.0027699679941184216, -0.0069104686293421065, -0.002654266115921053, -0.012859640121842106, -0.0107146154105921, 0.004399860249078947, -0.006205988169868421, -0.002287691709381579, 0.0022477117532631575, -0.011032372216710525, 0.0038386147140789476, 0.017001313835526322, 0.003409522446052632, 0.0038818556153947365, 0.0010723420983289483, 0.007902039610460527, 0.0023776093863157894, -0.006922669011657895, -0.012493596986842102, 5051128443421054e-19, -0.003519559938197369, 0.009428645297631578, -0.0010605874422368415, -0.008557814389473686, -7813989881578948e-19, -0.008372406573684214, 9731762513157829e-20, -0.008460361298552634, -0.0022174336363157904, -0.008624776876973684, 11917679249999991e-20, 0.006416730669828947, 0.008520198330263157, 0.012873614050657895, 0.011955042275394739, 0.01041146601725, -0.007033908750526316, -0.0016643551606578938, -0.011975207748157898, -0.010176406554210527, 0.0046722559355434215, -0.019248556189473687, 0.012035626013513158, 0.005876074411052633, 0.0023601008795000006, 0.0017393916595131586, -0.006760177633552631, 0.0037472353740789477, 0.08577118239473684, -0.004266319282368422, -0.0071308153913157875, 0.002913963492236842, -0.011218220720921051, 0.0016349006751315786, -0.0019050253921052633, -0.003319563322894737, -0.004499976557500002, 0.009833074842368417, 0.007605858973947369, 0.005772069280921054, -5503060188947367e-19, 0.013013069021578944, -0.0034565342047368423, -0.01143237421848684, 0.01110795669013158, -987561984539474e-18, -0.006423849459473684, 0.00217356449263158, 0.0010567873492894734, 0.014532239263815788, 0.010447370052631582, -0.00759626205513158, -0.0022266032110526313, -0.008538287243881578, -0.01131031077157895, -0.015313536264473682, 0.005158005157763159, 0.0030549536626315785, 0.004764115755657894, -0.012034718590789474, -0.006626763940263157, 0.009110119795921048, -0.002301413071921053, 0.015578638884210528, -0.005167726482500001, 0.02117604996315789, 0.008285337067996052, -0.007844231455157892, -0.01983585482868422, 0.008469638907236843, 3119132776315813e-20, -0.001960619750092105, -0.0174250582075, 0.0024971948229210532, -0.009844892709210526, -0.00997894878157895, 0.008923550396710523, -0.015006534729868421, 0.010365114785526321, -0.01453934758578947, -0.003352099966710527, 7359328694736843e-19, -0.010912618383552628, 0.00553644026263158, -0.0020364845940789474, 0.01638792804421053, -0.002702654283236842, 8317131059210523e-19, -0.0062164165, 0.01416901248881579, -0.001157289313026316, 0.0015120998847368426, 0.018197012598026318, 0.018230856374999993, 0.0013759326027105259, -0.0022414605464473685, 0.010594263889473684, 0.0032048177697368407, 0.0015967663478421053, 0.005898981746447367, 0.0026566908555921056, 0.007526576979868416, 0.006680355165921054, -0.010573069984868419, -0.0037745313918421054, 0.005754974540473685, 0.008721350822763157, -0.004220488521921052, 0.007543852856315786, 0.002001725290789474, 3765012028947365e-19, -0.005974376834473688, -0.007132448870578947, -0.008149476120263158, 0.020858640447368428, -0.0026150683706578945, 0.0025981752977631586, 0.011055772810526318, 0.006417484732236842, 0.02127346352631579, -0.010789793555, 0.0018354179835526315, 0.01635032267421053, -0.00914016103246053, 0.00721719150447368, -0.011749975486184212, 0.007983058785, -0.0025599285438157905, -0.02525250945921052, 0.016565419086578947, -0.0049727678667105275, 0.016954254666710526, 0.0072252290184210526, 0.00663506177881579, -0.016708790731052633, -0.019179279734736834, 0.0036575822153815793, -0.0036278681642105243, 9362055535526312e-19, 0.003667399366578948, -0.005599063442105262, -0.001710235229973684, -0.0020441094883684213, 0.008895651518289471, 0.011197020705263155, -0.0096675727705921, 0.0048109815131578935, -0.009713690278157895, -6161499026315836e-20, 0.013903376549342109, -0.0037505515171052627, -0.004402282192631579, -0.00803135064986842, -0.0022901599207236834, 0.0028172990298684225, 0.005441962186973684, 0.008157506930394737, -0.005246615045631578, 0.0017373259923157893, -0.011001224905657895, 0.0012983470696052632, -0.01309617162052632, 5287650694736846e-19, -0.012678124126447364, -0.004449979991315788, 0.013012943638552632, 0.002311609178421053, 0.00852208751355263, -0.0021326908651973695, 0.006498695877500001, -0.012073736925131582, 0.010822192646592104, 0.004732820625263159, -0.003690172558684211, -0.009818942454868423, -0.00727969328513158, -0.01263686636618421, -0.003183486671921052, -0.009880075140921055, 0.002198814761578948, 0.013470662695263156, 0.00607287450868421, -6002962989999996e-19, 0.008114174997552634, 0.011275753842105262, -0.005673379224736841, 0.0031662297654605257, 0.0028777117961842117, 0.008016936837894739, 0.0017901154897368426, -0.006646555544013159, -0.008096424208289474, -0.006122036452894737, -0.0057617752151315794, 0.0011516110418421056, 0.0033034063114473684, 0.001144898634342105, 0.015016336455263162, -0.005089427256578948, 0.011095485811210526, -0.01487947794381579, 2754231664473685e-19, 0.01434458742828948, 0.004142680879736844, -0.008173420285131577, 0.009047083722894741, 0.006638912060921054, -0.010928462396842106, 0.005584001594493421, -0.006758851203157896, 0.012239943157835526, 7178325472368416e-19, 0.004164529241644737, 0.006919659793157895, 0.0018766501502631577, 0.005851904381052632, 0.01649575659144737, 0.018543284467894737, -0.004570943860131577, -0.014199454217763158, -0.004522597645789472, 0.01323128955736842, 0.009430725228289473, 4302028357894734e-19, 0.014124286351315792, 0.0014682764307894735, 0.014347456733684217, -0.004273947661315787, -0.005397340513289473, 0.004777006242105263, 0.0014340101824815783, 0.004214361838684211, 0.004253698227473684, -0.005495129646250002, -0.004944426877631579, 0.001132264872631579, -0.025759664019736846, 0.01343974873236842, 0.007074848766842105, -0.017592669572894747, 0.0017375639004473685, 0.015513802537763154, -976651714342105e-18, 0.006099546812236844, 0.009297965083289474, -0.006545829302368422, 0.002187739041315791, 0.003335506018026315, 0.0021257748652631593, 0.007083832225526319, -0.00821666152184211, 0.008502307442157893, -0.0012726394867368417, 0.003975927348552632, 0.005120596614473684, 0.005579327967368418, -0.0076789852039473696, -0.021034838578947373, 0.007545610900131577, 0.011339017010394737, 0.01220300189605263, 0.012834558334486842, 23943841328947444e-20, -0.012060543739868423, -9013390900000001e-19, -0.007001447220394739, 0.001807072239342103, -0.007920413789473684, -0.014183284144078948, 0.0032435898167105224, 0.007661070786578948, -0.009576734622368422, -24735532930263165e-20, -3279625464473687e-19, 0.00592114891631579, -0.0031360228920394744, -0.004423669705131578, -0.006236715882473684, -0.01428929095, 0.0012041522547368432, 0.009992463885789478, 0.014660581713355257, -0.012100258024789475, -0.0041604909128947366, -0.0022737396475000005, -0.005318546005078945, -0.0019765347979631576, 0.001943228074394737, 0.01009488755486842, 0.006165831676578947, 0.0018300388325000001, -18122561157894723e-20, -0.020566950382894744, -0.006887413951872369, 0.004043231116447368, 0.014405956009276313, -0.004649199056078947, 0.016667253566842104, -0.012720103426315793, -0.004804016313157894, -4011695289473683e-19, 0.004846170921052631, -0.0016384565850263162, 0.017794608296052634, -0.007291804857605264, 5409149652631579e-19, -0.005412328068421052, 0.014002738125526317, 0.007782216855789474, 0.03379361171052632, -0.0037693036657894725, 0.006207439997131578, 0.011665550201763155, -0.002727257783815789, 0.006404820097236843, -0.007757448749342103, 0.00321114124381579, -0.005974114834342104, -0.017798501374999998, 0.008996167303710525, 0.004107372101447368, 0.007539583035263157, -0.0014233594372368415, 0.00381117836013158, 0.008256078101842102, -0.0018291068210526304, 0.0019358302312894743, -0.010674378317894738, 0.0065658293554078945, -0.007450003366710528, 0.004437219244605264, -0.024618154752631582, -0.015038326359078957, -0.00463826566381579, 0.007930537400131579, 0.004519121789078946, -21704581684210515e-20, -0.007922356677894737, -0.011271936131578942, 0.006213316302368421, -0.001811201335361843, -0.06298805399342101, -0.003931348754999999, -0.002375323733289475, 0.006955065128421053, 0.011551465797368423, 0.005049561330973682, -0.004226440632631578, 0.001415731466381579, -13998377784210452e-20, -0.0011909930659210531, -0.002045448113026316, -7439456209210522e-19, 0.008089150971763161, -0.007385254353552632, 0.0017794121346052629, -0.0021466796694736847, -0.007901907795526318, -0.006739856069736841, -0.0031380352994736845, 0.0076046099585000025, -0.011527594351315795, -0.0020396639011052635, 0.001525548389342105, -0.006094216933684211, -0.0014722651828947364, -4518903077631577e-19, 0.007140101749473689, -0.011676537059210524, -0.019966328755921053, -0.0024167389288157906, -0.008110973655078945, -0.010138389487328942, 0.004652459228947369, 0.003344180307855263, -0.00269698604401316, -0.006219439502236842, -0.012621290809263159, -0.010441855874605261, -0.001525004825868421, 3106502772368417e-19, -0.02632054453157896, 0.014578032460263153, -0.004134980474473683, 11510845465789741e-21, 0.0062397942408684215, -0.0063305206980263165, -0.0032845915709868406, -0.011880825206578951, -0.004127339640789471, -0.005412744576842107, 5791435789473685e-19, -0.005604593690263158, 0.01140999920789474, -0.0035105268881578944, -0.005644377784736843, 3777405411052633e-19, 0.006655294573118422, 0.012310034789868423, -0.012314680914342105, -0.004660671697236843, 0.019227642512499997, 0.012370556660526312, 0.0018540437435131578, 2843068044736842e-19, 0.0029149404551315795, 0.001349117293078947, 0.004231145650921054, 0.005014896011447368, 0.0030759806921052636, 0.002634996195394737, -0.02146838184355263, -0.023354627235526327, 0.007463801508881578, -0.044740355858815806, 16885995480789474e-21, 0.0018187605642105266, -0.0028608081773684206, -0.019586663092236847, -0.005291358396439473, -9306446955263162e-19, 9336062423026312e-19, 0.00640387573013158, -0.05765600515921052, -0.0010193050008289466, 0.0029813614198157894, 0.0017824373404078948, -0.006496215178552631, 0.024087691802631577, -0.010348639678947369, 503021751973684e-18, -0.009403571023947366, 0.012732326389460522, -0.005403565589605263, 10905120605263125e-20, -0.008504000929605262, 0.006370600620263157, 0.018242643109210525, 0.009379113575526317, -0.01214825572302631, -0.0015711109278947369, -0.0020749150806842107, 0.0051656843653947355, -0.015150247375526317, 0.0034633881215789457, -0.0023204803727631573, 0.0013554988172368421, -0.00916673603631579, -1386599248684208e-19, -0.011236653686842102, 0.01057515615355263, 0.0038270946907894747, 0.0032054099676315792, -718647992236842e-18, -8057763245394725e-19, -0.004644138220394738, 5584668676973688e-19, 0.004134472640657893, 0.003242992475139473, 0.004408569986710524, 0.006886769568421052, 0.0022040188868421057, 0.004717420271184211, -0.010944220514868425, -0.01496134418960526, -0.004904572456118423, -0.0029349479123026317, 5269890798684209e-19, -0.018642433568684214, -0.0014636822255263157, -0.0032874282358578933, -0.005220993034210527, -0.001006430675144737, 9930258057894734e-19, 0.01337606780197368, 0.009240478431184211, -0.01117918292618421, 0.015037270521710534, 0.00705424925763158, 0.004022910573421053, 0.004511536920394735, 7300990415789472e-19, 0.0025198337564868423, 0.004174408284605264, -0.006822327408157894, -0.012508884771973679, 0.0018977242146052643, 0.00169175941868421, 0.00914618583809211, 0.00616711017276316, -0.016066297167105267, -0.007600618392368421, -5936514901315801e-19, 0.009191851769736843, -0.01048495533644737, 0.0039003314751315785, 0.010082093744078946, -0.02150961690736843, -0.003076141387631579, 0.01795051239210526, -0.0016097397646052626, 0.006738568165394737, -0.01008712938552631, -0.0023239680332894736, -0.0023542645427631586, -0.007415254536973685, -0.0017370888950000002, -2142969864736847e-19, -0.0019526079594736842, 0.004812759554289475, -0.003177666265657895, -0.010193668303157894, -0.008950753272763155, -0.012276084238157898, -0.013801354708684207, 0.013260181611973685, 0.005137841782236843, -0.005623419413947369, 0.002380635332763157, 0.020261579571842093, 0.0025086264638157895, 23285078407894738e-20, -0.013896984565526316, -0.002813308350394737, 0.006464827561842104, -0.0017387912031578952, -0.009293710947368423, -0.002234433483973683, 0.0029236971019736837, -7009606947368418e-19, 0.004321338025526315, 0.011410774383157896, 0.0019641712277631575, -0.0032173488855263156, -9017514617105258e-19, 0.02536431413421052, -0.0036204208476315796, -0.0045066121440394714, 0.007895695332842106, 0.01375771906894737, 0.0016665629351973685, -0.009256044322434214, -0.010135795456671053, 0.008737079069078947, 0.0034428967317105263, -0.010638219975263161, -0.004573688986184211, -0.008506904400102367, 0.0025543856753947364, 0.004874314954210525, 0.010396809270921051, -0.0018452750817105265, 0.01090056822052632, 0.02098761590078947, 0.009814058689144733, -0.0029276505494736844, -0.010893099969697373, 0.01975842706710526, -0.010948870352592106, 0.0058412445308815815, 0.015515693848684214, 0.0020952677422368424, 0.008907295886842106, 0.00873527318223684, -0.006631097216973685, -0.01977647116223684, 0.010740387438947363, 0.008736050202499998, -6532119030263152e-19, -8522597289473685e-19, 0.007881729391184214, 0.007262564786315789, 0.009642556828684206, 0.009887033669644734, -0.00506204858236842, 0.00914667588671053, -0.005646160281184208, 0.0015682480643947365, 0.007187644667573682, -6413499337828947e-19, 0.0014132899411842103, 0.0017755321165263149, -0.007160940067000004, 0.012367878591973682, 22851084263157844e-20, -0.006308410619078947, -0.0015791580263157898, 0.00442315712593421, -0.006452675031118422, -0.009020969568421053, -0.011030041889539469, -8780194159210523e-19, 9627984798684214e-19, 0.00363151196994737, 0.02183342311710526, 0.02024013596973684, -0.012353824388684213, -764319970657895e-18, 0.002105059234210527, -0.0014566305570592104, 0.002706323287631579, 0.00607090862407895, -0.009545597578157896, -0.004247753485894737, -0.0176261248381579, -0.0031491103884210524, -0.003108941359539473, 0.015593445543815788, -0.04427306710881578, -0.0020792380994736847, 0.011489951907105264, 0.006966976375342106, 0.0015082572486578947, 0.007737702031710525, -0.00655683788473684, 0.007863643000657894, 0.002917634675013158, -0.004152638770789473, 0.005619210159473683, 0.005586618189342104, 0.010026886728421051, -0.004179918709473686, -0.005501686800131579, -0.00604261921421053, -0.0071300491338157895, 0.014459129589473686, -0.0037379425788157897, -0.0020940462386842117, -0.00957774127394737, -0.03357854765131578, 0.025668219275000004, 0.022622876078947373, 0.0022629713582894718, -0.0026858775323684216, -0.0017051095038157894, 0.003815842962894737, -3828872972368422e-19, 0.0026066615468157894, 0.012387053006578948, -0.006318214374868418, -0.007521578666315793, -0.01284997625631579, 0.012826012949078947, 0.0010223195625, -0.011615881295131579, 0.0022139161670263153, -0.002016348744078947, -0.0028064120447368417, -0.015572008834210525, -0.0019618904405263164, 0.00544554776289474, 0.009761993845921054, -0.012984902144736842, -0.014145811457894734, -0.008978529723144736, 0.004056017691315789, -0.011844596710394733, -0.0059587758225, 0.007508870492105264, -0.005443937433289474, 0.002935879441578947, 0.01486225123960526, -0.005532202826052629, 0.005462015192631581, -0.02565744589868421, -0.008383098813815791, 0.003647495577368422, 5357671111842098e-19, 0.01166961910486842, -0.006377186925131579, 0.0127008994825, -0.009436918356578944, 0.0020323967420921053, -0.008456428355526319, -2027747211842104e-19, -0.0030937144914473694, -0.011085721413078948, -0.009645654179210527, -0.014846991478947372, -0.0035684288476315797, -0.011654160063684214, -0.01581150187026316, -0.016840036789473687, 0.013057866414473684, -0.008234539141578947, 0.0053163960105263195, 0.020490004785526317, -0.00960410656486842, -0.006657243668236841, 0.010736420357105264, -0.01748494961973684, 0.0011016242359736844, 0.005718755139868422, 0.006338006613157893, 0.0038684128078947367, 0.005595157857631579, 0.017694987824210535, 0.017391755352355258, -0.003702699658552634, -0.005022188236513158, 0.01342638474771316, -0.0043205563098684206, -0.0028454328957894745, 2592531746052632e-19, -0.004767219290789473, 0.013560908384539477, 0.005906873550263159, -0.009617733145394736, 0.003591151950263157, 0.005010814367368423, 0.0012510964286842107, 0.0028993149072368417, -0.0051906266312368434, 0.00729437020368421, -0.012531499855657886, 0.020476676778750005, -0.009869155927894734, 0.0025973456112368416, -0.021903372915789476, 0.008153542140921052, -0.006835870289605262, -0.010486773017592106, 0.017626112727631586, -0.004606312977368421, -0.014957404596052633, 0.0020897874979618424, -0.004724369788980265, 0.021548606073684213, -0.0019029721914473681, 0.006200722453289475, -0.003450824262276317, -0.006826156169210524, -0.010176031075657897, 0.024789349911842107, 0.003143936896315789, -0.004955119694078948, 9158874664473686e-19, 0.0052856249526315804, 0.01390172287763158, 0.004978571828947366, -0.0032051206281578947, -0.007972612475236842, -0.007769723397631579, -0.00202725623381579, -0.003416697538776315, -0.002556709217407894, 0.0184408019, -0.01105052606855263, -0.014664148855789474, 0.003882449320657895, -0.012429670850921054, 0.013084466028552635, -0.04336451231578946, 0.0074979511960526326, -0.001663643616907895, 0.008059816289473682, -0.011445970542105267, -0.004167850928697367, -0.003230411173657895, 0.02097656965710526, -0.011578596098421053, 0.012013696860657893, 0.001233423443421052, -0.002649905661144737, -0.00883562393153947, 0.0015486095338157892, -0.010413099061842105, 0.013987708639236847, -0.0038697919174999996, 0.006219689598421055, 0.006652394345230264, -0.005381284718815789, -0.0037626181478947387, 0.01059816618401315, 0.003220842913421052, 0.0035804951468421044, 0.010183990906447369, -0.009547694365789472, 7697464371184215e-19, -0.011326520949342108, 0.036538593302236834, 9323258973684188e-20, -0.008973688185921053, 0.00706366331381579, 0.001107784416394737, -4910452642105268e-19, -6440596276315794e-19, -0.0036792987653684202, 0.003713873318157893, -0.004735835042960525, -9658112065789478e-19, -0.043979574686842084, -0.0016790318328947353, 9925788503157894e-19, 0.018722528654473682, -0.0021518665293421054, 0.0035296605411842103, 1413653897368415e-19, -0.017016988203947366, 0.004561038191973685, 0.015442165966184201, -0.007485759814473685, -0.017065918415000002, 0.009342482221710524, -0.0020734458669736835, -0.002520825664789474, -0.021231756026315784, -0.010013884122368423, 0.009265903680263157, 0.008139276791052632, -5609036057894738e-19, 0.015773905215697364, -0.001884182508960525, -0.0024270794468947356, -0.00422654353631579, 0.006008762833684209, -0.003698271740263158, 0.016081907390789473, 0.030718033629736848, -0.007108369866842106, 0.00527163336881579, -9271790684210529e-19, 0.0068789392490789456, -0.013093138075605264, -0.012924308120526315, 0.00556886656968421, 0.0033076618509210527, 0.0017935490473684217, -0.008094466807394738, -0.01079597931, 0.01151358625263158, 0.00893792486236842, 0.010344446836842108, -0.00719051074644737, 0.00572758606, 0.004846286956973685, 0.00814658403092105, -0.0010492790623684207, 0.0049120969460526315, -0.01486755767197368, 0.004852195027565792, -0.007043126832710525, 0.005356651270263156, -0.0035065615885723684, -0.005829078253026317, 0.025083412392631576, 0.0015541765726315804, -0.013320558341842105, -0.027978110792105267, -0.004866113275657896, 0.009822611491184208, -0.004338714495526316, 0.028622747207894733, 0.0056140354747368434, -0.012210432556184212, 0.0033045029190263164, -19000230480263145e-20, -0.0034141616881578937, -0.004623406075394737, 0.006392982858421052, 0.01835209741710526, 0.01747985185131579, 0.004233065692460527, 0.01626176455263158, 0.0032433631718421056, -0.011749469372421053, -0.012891163621052632, -0.01571628433157894, 0.002652207523026316, 0.004507458543026318, -0.01775668739868421, -0.03493414880657894, -0.016362935907894737, 7675142188157897e-19, 0.010285956762684217, -0.0014735680384210526, 0.011252831868552636, 9547897207894737e-19, 0.006510753468289477, 0.005189211297763158, -0.013117319414473682, 0.003801194065131578, -0.008176472670263162, -0.008538372863026316, 0.02108607474342105, 0.0037161164223684204, -0.004774306337894736, -0.0077946213527631605, 0.0024585640678947366, -0.012176232483421057, -0.012235060736184205, 0.001400212257894737, 0.0027084579294736843, 0.0068722990685526324, 0.013335502111842099, -0.005830226586052632, 0.011873504235263161, -0.013693625648026312, -0.010449696567302632, 0.011044927082500003, 0.015400494224552629, -0.009381916401355262, 0.006673642672368421, -0.0018263740446052626, -0.0021770728546052624, 0.016361497218421055, -0.01863254121315789, -0.003530500149210525, -0.03730359020723685, -0.004191118148289474, -0.0045071628236842114, 0.015596569568947373, 0.004240642962276315, -0.002759536991368422, 0.005148003131355265, -0.0069468455677631595, 0.012819585946447368, -0.003170211528815789, 0.01752115107447369, 0.009766708002105265, 0.01720768516973684, -0.01617324446578948, 0.012112183639473681, -0.021386946318421057, -19106013060526326e-20, 0.006491905236710525, 0.012694083912631583, -0.012121427248552632, 0.007453259151052631, -0.005300583340657895, -0.0034357232692105253, -0.008234549374210526, -0.0049134867761842105, -0.011864055638157895, -0.00727513381118421, -0.006225588572394736, -0.014474562209210527, -1696423735526317e-19, -0.009927942404210525, 0.005164234018026316, 0.0017515462315789469, 0.0015904607235526311, 0.007963644751578946, 0.012216724002631584, -0.009501306335068424, -0.003338244066407896, -0.013702270143026316, 3177477896842107e-19, -0.004519560832171056, 0.002465137685263159, 0.0021053644855789483, 0.01910074195263158, 0.012031324014473682, -0.0018186422331578943, 0.005212327788421051, -0.004785163042710527, 0.0021153964885526322, -0.00444928972188158, -0.0035029865, 0.0075856674897368396, -0.016637170858460525, -0.0049104649688157895, 0.004211803076513158, -8546719754210526e-19, -0.005023115469473685, 0.0029476111911842105, 0.002885427894921053, 0.004207519965584211, -0.0045995042944736875, 0.003015317669210526, -0.003959649376578948, -0.001799221694921052, -0.010122554486973682, -0.004602558039210528, 0.0013513901315789464, 3764912463157896e-19, 0.008489159527105262, 0.014707852295131572, 0.002345036650789474, -0.0032689961036842102, 0.04255329955263159, -0.014716855848684204, 0.008619987162236838, 0.008365918811578948, -0.005013759794736842, 0.004195959585499997, -0.008992120611710525, -0.009782703207236846, -0.0022335605896052625, 0.01287937127763158, -0.015554637754473693, 0.008397985909605265, 0.002251561622499998, -0.010050093168815789, 0.008956767632171053, 0.013687852065394742, 0.013600534268289477, 0.004365934441315789, -0.0030305592554868413, -0.00781057913469737, -0.004966902079605262, 0.01856187427644737, -0.0025631659986842118, 0.004677612719921054, 10226186131578904e-20, -0.014421684380263157, 0.016739205349605258, 0.0050146044172894744, 0.011911084407631578, -0.002687138399210526, 0.00960758048539474, -0.002726553521315789, -2118536161842109e-19, 0.013187813793947371, 0.009969895463026316, 0.006658861126052631, -0.0018322755946052636, -0.0017487937331578944, -0.011101524417894743, -0.032939431818421065, 0.01520578899605263, 0.0015081202571052632, -0.005066026860486843, 493556515986842e-18, 0.004060829064605263, -0.005561150131894735, 0.010997560033026309, 0.004095647503947369, 0.012622729288684204, -0.004958941837157896, 0.006538527521447367, -0.0010266161943421049, -0.004851542462973687, 0.0016268616459210535, 0.008403855759605262, -0.005476859455, -0.00812804427618421, 0.007041481924657892, 8838693684210528e-20, 0.00597193902618421, -0.00842409854263158, 0.0024697172419736856, 0.005663838686578944, 0.0036075020965789487, -0.0023292463477631578, -0.0032376719465789477, 0.021101475338026313, 26567486563157904e-20, 0.016493054231184204, -0.002458445587631579, 0.0010258956694736841, 0.00225805411368421, 0.0031990768135526323, 0.006263685490526316, -0.004572679283552632, 0.009529538310526317, -0.011298854067368422, -0.010216326432368422, -0.01634466709473685, -0.014281002560460524, 2702401223684224e-20, 0.005255444044671053, -5290619164473683e-19, 0.020079138140789477, -0.0017828449621052637, -0.012192540535789468, -0.007199579816184209, -0.00116835002625, 0.00958368675736842, 0.007733851895789477, 0.007963292808289474, 0.025216065143421052, 0.004103331857894736, 0.0030591781828947368, -0.009872114714473685, -0.004663548545, 0.004991833832105262, -0.006863926871710525, 0.001242838931578947, 0.020425079027802634, 0.012370465663815786, -0.012126274007894736, 0.010670443024473687, -0.01464566428460526, -0.0038673775906710524, 41958086710526394e-21, 0.01994244099210526, 0.015357990706842106, 0.0063989385026315794, -0.018309239200000004, 0.006747877917368419, -0.017506960167236837, 0.005670401942631581, -0.010581732321578946, 0.0011620065078947373, 0.012163235759210531, 0.006399715106223681, -0.006113071873210528, -0.0028651888345789466, 0.002149627898157895, -0.012140688709210527, -0.010713522528947373, 0.02737408816710527, 0.017518066717105266, -0.005137931570986841, 0.003589904351447368, 0.0010994190049210533, -0.004798525595026317, -4554749059210497e-20, -6981043210526358e-20, 0.017134092135131583, 0.012083527265789476, -0.049615527359210515, 0.005816751165736842, 0.01857131190000001, 0.02351225466336842, 0.01219104790131579, -0.0010487995125921048, -0.0044726659714473685, -0.001028941063157895, -0.005443464117499998, -0.00634262967868421, 0.010381099005263152, 0.001703392962105263, -0.009139037917894735, 0.009512460323684208, 0.008586436496315792, -0.025455710537105262, -0.009792295319078947, -7742059002744737e-19, 0.018877256644736842, 0.038857334956578955, 0.003912381590921053, -0.008361733056842105, 0.016590833038421057, -0.005869556491710525, 0.009990736888552633, 38346460510526274e-20, -0.016626637246578948, -0.012364668933289474, 0.0018547245361842113, 0.006512999228605265, -0.001085481154868421, -0.009963445404999997, 0.004301809971973684, 3661409990131576e-19, -4224867659394737e-19, 48160601578947393e-20, -0.007223044006763162, -0.026113254673289465, -0.0013004677222368422, -0.0017831314044736836, 0.01561539529144738, -0.0066719939618421036, -0.00877529002351316, 0.006605579253289475, 0.005603149853552632, -0.007193712031578948, -0.0016247132320263158, -0.012534181940394738, 0.017229109368421053, 0.00245370861631579, -0.006031722248552632, 0.0031117475930263158, 0.0043886369376315805, -0.0024453895729249996, 0.00690473798328947, 40740072210526353e-20, -0.0031424490643421057, 0.019926203121315794, 0.012182200482894739, 0.008118145491578951, -0.005559053631315788, -27164370357368446e-20, -0.003351124758092105, 0.005957678860368421, -0.008513101869473681, 0.007304541067499999, 0.019957336234210518, -0.0030209489469736834, 0.004469626572763158, 0.012090736671578948, 0.01514115723331579, 0.0042360726635526326, -0.010162506523684207, -0.002649304801184211, -0.007750173208749997, 0.0019587431771447374, -0.027095424518421053, 0.0066075871005263145, 0.00536601891631579, -0.0010357673420394737, -0.003466868494342106, 0.014316960686578954, 0.0023369776231578956, -0.0053653818119210545, -0.007858214859999999, -0.013146294391315785, -0.0018566735342105262, -0.009514895538421051, -0.0036132000074342112, 0.0034368430490789486, -8554010195394731e-19, -0.0032387031372368437, 0.00244777456131579, -0.006286163061842106, 0.011771267721710532, 0.023035620363157896, -0.0043442739443421054, -0.009922730226315792, -0.004276738937499999, -0.0035189323507894745, 0.0039030267724473704, 0.014395429023592102, -0.0012053757906578947, -2897619489473682e-19, 0.007045867771144736, 0.007517767199210526, 0.007418771915644738, 0.010169157498289476, 0.00706302323276316, 0.013311043676250002, 0.003038169512894737, 0.0033463043809210517, 0.001753204881197368, -0.0074550630986842115, -0.03247426388684211, -0.014712809272763156, -0.01257650307744737, -0.005583758863815789, -0.010988394333684212, -0.01094829823105263, 0.014527793146184208, -0.01726736960019736, -0.0011412191313157898, -0.003875160005921052, 0.0054491025328289484, 0.00764098283223684, -0.01397128377631579, 0.020156240986078953, -0.018178711318157893, 0.007760771186842106, -0.012693300230263159, 0.0034562666953947383, 0.017623470872368423, 0.01328646389205263, 0.006033057996184212, 0.0021477171030263157, 0.004209592630394737, 0.022607883206578958, 45995770960526315e-20, 0.004256902114473686, 0.007727120836526311, -0.011495399911315795, -0.006097572578026317, -0.003288532194342106, 23524967355263143e-20, -0.01843602415421052, -0.006332212189999999, -0.007104603521578947, -0.006046406687763155, 0.0031444280434210527, 0.011026709301315791, 0.007965343235657892, -7478460321052628e-19, 0.010399411723157894, -0.003222595633552633, 0.0013722621246052631, -9306063203684211e-19, -0.008244672536447365, 0.010224801592763153, 0.011236862973157893, 0.002438936607828946, -0.0011834995152631578, -0.007761896696973684, -0.006536142010526313, -0.004305835025789474, -0.006375306423552633, 0.002894340127526317, -0.007056530478157897, -0.006344087711473684, 0.012371267300526317, -0.008661172924210528, 0.016608231906578945, 0.006209598555605264, -0.0049610081385394736, -0.006289596580421053, -0.008653004873157896, 0.006589724684342105, 0.0042221396663157905, -0.024205309596052636, -0.007927559016842107, -0.0036796517148684213, -0.010860645916842101, -0.001776141146973683, -0.0066375001164473675, 0.002395305515921052, -0.014593319744736844, 0.00733454749668421, 0.0019130213015789476, -0.02945044170131579, 0.0021041659146052625, -0.002779561371539474, -0.020078335207894735, 0.003642550809710527, 5936502644736846e-19, 0.00325616999868421, 0.017399437181578953, -0.06370752007631578, -0.003701780296631579, 0.007564594753552632, -0.00405948423839737, 0.0015840840405263162, 0.005836310675263158, -0.012381032086315788, -0.004665367583947368, -0.0010173959317894734, 0.005156387308802632, -0.0165339495006579, 734178938157895e-18, 0.024508261125789473, 0.01724277075526316, 0.008913617889078948, 0.018123411353289477, 0.019972735151315802, -0.015223236485526315, -0.011504417352105265, 0.010046699026184209, -0.009774468743421052, 0.014051472367763159, -799595632236844e-19, 0.015914003425263158, -0.010235261282894738, -0.012426796318973685, -0.00529559477105263, 0.0032275154818421047, -0.012022474961184216, 0.004842165463157897, -0.012777494966842105, 0.007940708949736842, -0.010386868507894734, -0.012277893373289472, -0.01469461501513158, 6472758955460526e-19, 0.011309826192631581, 0.0014896182946052632, -0.0018290806492105261, 0.004781091154078948, 0.009413893570921053, 0.00916419533118421, -0.002920155307368421, -0.004322433785789473, 0.010922147476842106, -9692939010657897e-19, -0.00471161965105263, 0.0022456688428947364, -0.01511019358289474, 0.01469485253026316, -0.0034939871920921027, 0.005169176186973684, -0.004767383189802632, -0.004363123971710525, 0.008160435356184211, 0.008593854647631578, -0.014373928093157892, 0.012998453866184211, 0.012818183890921054, -0.0012967544054736846, 0.018860078121447365, 0.011299536434868421, 0.010162780092499995, 0.010768595093881578, 0.006929429669736845, -0.009301306071052631, -0.001229964434210526, 0.022915811622105268, 0.005473494591263157, 0.01684595049736842, 0.0068085582832894745, -0.009735548395394736, -0.008009809031052632, 0.00818278650394737, -0.00514607482631579, -0.0017882432596052638, -0.003795041893157895, -0.0028177598829473675, -0.009401223562894738, -0.015638386469736837, -0.013144470036842108, -0.0025362829124999987, -0.015570190517552634, 0.0072135779351315795, -0.0033293784007894737, 0.0033921677573684203, 0.0171126722368421, -0.016200724738157896, 0.002023070578552632, -0.005874176478421054, -0.007982894414539473, -0.01305297109342105, 0.013835959466144737, -0.007678114530657894, 0.0016565042665789473, -0.0029898593556578947, 0.018475673282499997, -0.004774599107368421, -0.01045985660768421, 5002329298684213e-19, 455613157105266e-19, 0.012770474667763154, 0.0036531933109210527, -0.006355904673157896, -0.00323254957336842, -28950164197368423e-20, -0.0016983754679473682, -6461348456578951e-19, 0.011579839645394736, 3174967802632419e-21, -0.009248690072105265, 0.010413905775572371, 0.00742944108473684, 0.00453180122631579, 0.01615883042802631, -0.0032757992935526312, -0.0038371938214394738, -0.002908959269342105, 0.009208926093951316, -0.0014955339189473683, -0.013758465006973683, -0.0063294295475, -0.005727852496578948, -0.005272904527105263, -0.001316834533684211, -0.01645172019144737, -0.007092707085578947, -0.003522257189605263, -0.013505265605263156, -0.011881032946052632, 0.011369551982828954, 44452595263157905e-21, -0.006352405066578949, 0.0052995613325, 0.009505844287763156, -0.006053228503013156, 0.006845024962368421, -0.011510292038552633, -0.0032177408799999997, -0.004505434028289475, 0.004123595264342105, 0.006593527555000002, -0.011078657794605259, -0.014011584826078945, 0.0029858133488157895, 4344722920789474e-19, 0.008640971361973684, 0.006481291948157893, -0.005891967694342105, 0.008448872632763157, 0.016859102106052633, 0.0014603208068421055, 0.005249472965605262, -0.00686901125013158, -0.010637044371578948, 0.011924648195789474, -0.0058005032065789495, 0.015501499024999997, -0.006453810105921054, -0.002997035320473683, 0.018575800172368425, -0.008515451444736838, 0.012462028264473679, -0.003774380357539475, -0.0019450062711842105, 0.00391133496173684, 0.004730433910526316, -0.001315982468776316, 3232796018157894e-19, -0.0066704201258026286, 0.00680665693223684, -39029438710526344e-20, 0.005489703965131578, 0.008671756791842107, -0.012851425032368417, 0.003147755206052631, 0.0026194010623684216, -0.007664137591973682, -0.011883636635, 0.004133208043763159, -8303924315789413e-20, 0.003270837395131579, -0.005892774992763157, 0.012238801593815785, 0.006942355931973683, 0.02878469881921053, 9479045131578946e-19, 0.0017351399474736847, 0.008778382914078947, 0.0010939997295263163, 0.0030465893436842097, 0.014783142862368417, 0.01642540962717105, 0.0036857923714473675, -0.015363344993026315, 0.009919231350263158, -0.011551756493421059, 0.0023134715465394744, 0.011385295549473687, 0.013802586752105264, -0.01116167753921053, -0.003641126586684211, -0.013648889441184206, 0.014234762527368418, 0.002806655006105263, -0.013499138960736849, 0.005006243019473683, 0.015739427460526312, -0.0027175753445131574, -0.010932971389473686, -0.010770135974552631, 890700216526316e-18, -0.012623942286842103, 0.016124839350000003, -0.002831514939934211, 0.012697006429342104, -0.007019076696973686, -0.006475317798065787, 0.007137869946052634, 0.006031961175105265, -0.00705848445763158, 0.0033737443014210527, -2768167815789512e-20, 0.017694467707894734, 0.006258390639605262, -0.002385706069394737, 0.003583886412894737, -7993168968421051e-19, -0.01620972400113158, 0.01370171146118421, 0.00461520679318421, -7547631113157896e-19, 0.002939954357631579, -0.006845462558289473, 0.007328082212763157, 0.007676322326467105, 0.004349595261973684, 0.015829044343197374, -0.00368448221881579, 5303418106447364e-19, 0.0026827215614473685, -0.008580460431710527, 0.005024989097499999, -0.003635687485394737, 0.002272944439315789, -0.006124602738289472, -0.016172138838026325, 0.015377584130394738, 0.010782426606184206, -0.021383269930657894, 0.005706450336052631, 0.0018523320315789475, 3522892494736843e-19, 0.004350316041157894, 0.005934959479144734, 0.01708160452131579, -0.007678650551447369, -0.0033582777418421053, -0.017157569269684224, 0.007354085403947371, 8351606031578944e-19, -0.005335390844342104, -0.002535301282368421, 0.014636234615921057, 0.004858749898355263, 0.007662922150526313, -0.0016256868378026308, 0.01556731267368421, -0.005104593538289476, -0.019748377389473677, -0.013980995652631582, 0.00946453539263158, -0.008415238208421055, -0.011370187082631577, -0.024026692542368423, -0.028569824043500013, -0.004478069888947369, 0.0031515005953947363, -0.002700122834605264, 0.00815917739855658, -0.00445320840494737, 0.006830579967631578, -0.006684497927105263, 0.010432664122105263, -0.014661140320368424, -0.006587801074605265, 0.007357709939078946, -0.005931698591973684, -7732484365789474e-19, -0.002239530471052632, 0.007788843097894735, 0.0064669147390789454, -0.0030537573617631575, 0.017894125887236843, 0.014577202200000002, 0.0015132674616710532, -0.0057732834064473685, -0.0027821142750131585, -0.01908095769276315, 0.009781772397894737, 0.009500178334210524, -0.08152622444736843, 0.008212754039473679, -0.01767476994144737, 0.0026395801725000003, 0.0014657673559210526, 0.007638076904605263, 0.004058115665973685, 0.0035145148113157896, -0.011827003826315791, -0.0027065570113157895, 0.0023756798456578943, 0.008448311618421052, 0.017983404865789466, 0.016279126637631577, -0.0012591387876315795, -0.01015563660263158, -0.007210258607868422, 5225580767105262e-19, 0.008399898934210526, 0.005169876301250003, -0.0054817867677631575, 0.004851883672052633, 8781897375131572e-19, -0.004407749175657896, -0.0037234890038684225, 0.010837226267236846, -0.008299530855789473, 0.012997853572105266, -0.017374133039473685, 0.01771941214802632, -0.010850383854999996, -0.0025922976049605273, -0.005014948546052633, 0.001572493777631579, -0.009683719784736844, 0.003544048853289474, -0.005399044507894736, 0.0019298673893421046, 0.008562550747213162, 0.007685438104276315, 9653876659736838e-19, 0.006209795067934209, -0.007815720736421053, 0.01339235502684211, -0.014595927550000002, -0.001961306322894736, 0.01755357029118421, 0.009892284107105262, -0.004357266436710526, -0.024933551971052636, -0.008265622360263156, 46308488684210446e-21, 0.008073451047105263, -0.006002720232921055, 0.00960784907105263, -0.008960232250921057, 0.009452138660526316, -1669984473684197e-19, 0.006347901398026315, 0.006253983917105261, -0.001933425444473684, -0.010605378191710526, 0.0017956876511842107, 0.010316846388552634, -0.006851734682407896, 0.017523879366710526, -0.003045540768026316, 0.021021487419736837, -0.00978115143263158, 0.007848767184210523, 0.008862482220921052, -0.01242224652736842, 0.0013790572871052633, 0.014478706237421052, -0.008613721365578947, 8338612144736844e-19, 0.003780419830131578, 0.00346602358868421, 0.01269026605723684, 0.009463772316851317, 0.012594825682894736, -0.0069123792341578925, 0.0013869928297368425, -0.012008816909210525, -0.005822936399078947, -0.016418475083815786, -0.010629006791973683, 0.008168218550394738, 0.00664607999610526, -5069868140000001e-19, 0.004181848071447371, -0.0011114877839473682, 0.02246608591315789, -0.0034439313037368416, -0.004351277874210527, 0.0014461106753947362, -0.009660680614197373, -0.005408365936052628, 0.01752714284907894, 0.008516543233210525, 0.002278526259736842, -0.006875266473026315, -0.0069421802624999975, 0.013035910887894736, 0.0015391923593421058, 0.0012664572747368423, 0.0011414591399473686, -0.0037214528182894745, 0.015104741671868427, -0.013068065997078947, -9741302530000001e-19, -0.0033918721798684216, 0.005097137174605263, 0.004477671593026316, 0.006166728530789473, -4620546571052633e-19, -0.00529603509618421, 8418184122421051e-19, -0.0012031493919868418, 15712514144736853e-20, -0.0019224767417105261, 0.005464992050000003, 0.004573905729556577, -0.005107717659999997, -0.001779724216276316, 0.0062555419631578945, 0.014157424513157893, -0.002229668639710526, -0.004112240003421051, -0.008737391783947368, -0.01772272931749999, -0.011969726380789475, 3489228665526319e-19, 0.008398761923223683, 0.006083781918289473, 0.0038491992196052634, 0.006757484750263158, -0.0033988848290789457, 0.010786320785381581, 0.007709229539986843, -0.0027759906160526315, 0.01513786151671053, -33675679921052606e-20, -9034154792105268e-19, -0.006730010358421051, -0.0038794277310526316, 0.011774508437552627, 0.0075108212575000005, -5415923363157894e-19, -0.010228818563289476, -0.004567732969605264, -0.006103785833947367, -0.007408031901286839, -0.0032699436107894737, -0.007860791874210528, 0.01599756300842105, -0.016585482788684217, -0.008410989815789471, -0.0024622896271447366, -31383816486842115e-20, -0.006790721234210526, 0.0037121541342105256, -0.009942839455, -0.012361527721052628, 0.019747696744736844, -0.004605994977907893, 0.0033676318580263156, 8737887935394738e-19, 0.002211198596144737, 0.010937877776315795, -0.01129901567118421, -8168034689473677e-19, -0.009641223938421057, 0.009402437952631576, 0.0056297516052631605, -0.0010065862368421055, -0.02594543341447368, -0.0011355776477631582, -0.011891248669605264, -0.00839228417031579, 0.007896343589210524, 0.007322515729342106, 0.0033040433167105263, 0.003778204579868421, 0.011096790547631581, -0.0015593353430263153, 0.014356465188157893, -0.006630788594118421, 4828352872894737e-19, 0.0010450569010473684, -0.007027775473815791, -0.006984254253157892, -0.00792534963342105, -0.00162584528, -0.006522221855263158, 0.01805963293197369, -0.004809070690789476, -0.01814591389078947, -0.005865267296828947, 0.003988285848684209, -0.008169152964999999, -0.008437095909210527, 0.009360843043815788, 0.030021375652105258, 0.007297060365657896, -0.0023612295406578963, -0.01073050399763947, 0.0019045162401315795, 0.00651718905263158, 0.0010275199546052635, -0.006277306921263158, 0.0012021913027105262, -0.011182417592105264, -0.002024020123421053, -0.006231476668342106, 4796000135526314e-19, 0.006449109247355262, 7456603261184208e-19, -0.005144762157460526, -0.0021357675948684212, -0.01883197047171053, -0.025576503247368407, -0.013539074083421053, -0.011034470814473686, 0.0024368244498684222, -0.002245899774736842, 0.007094408709210526, 0.0012029363072368422, -0.009510369465000001, -0.012366834156578943, 22163493250000016e-20, -864950124473684e-18, -0.0054156288555263134, 0.005750937247368423, 0.003270796098421053, 0.002449161180921053, 52041173618420834e-21, 0.010704513787500002, 0.001962141009605263, 0.004546446430526313, -0.009514348226710524, 0.013900074301842112, 0.007515311701355261, 0.0035688571342105263, -0.0031417825293421063, 0.013631733623026311, 0.004473217585789474, 0.022099065907894736, -0.010242928179605263, -0.021115605811315788, -0.0020430657981592103, -0.004960829025921049, 6026669513157779e-20, -0.004585000899605264, -0.004475863079315788, -0.004507509982368421, 0.012760686508684211, 0.0035079304818421055, 0.0043142242481578955, -0.0037753994023157884, 0.009972505233289472, 0.004257388717499998, 0.0037933767182894737, -0.003782828635039474, -0.016245113222631585, -0.0067635378846052615, 0.001699853626842106, 0.0049727823532894734, -0.0026726438017763156, 35606309460526324e-20, 0.0014221154155263163, -0.006753894785657897, -0.0021303370428947363, 0.0020290390381578942, 0.0065541381115789485, 0.005578077509210527, 0.00597834956631579, -0.015656070957894737, -0.005700937814868422, -0.003300278165210526, 0.0010437032015789478, -0.006081244438026316, -0.012030119331578949, 0.008609655173684212, -0.012421846317171054, 0.0038849181815789487, -0.003441401350921053, 0.005337632936842106, -0.00501430082631579, 0.007684295191355262, -0.018589622549210528, 0.0020294963380921055, -0.01736990133552631, -12342767794736842e-20, 0.013101640196631579, -19718100105263185e-20, 0.00191136175070921, 0.002991744120394736, 0.005360340401578948, -0.002541910205657895, -0.011420830478947371, 0.0025571802081578946, -0.007654641906842104, 1324760923026315e-19, 0.009839589908289474, 0.014137809323684214, 0.005973617257894737, 0.0044086344710526325, -0.007683909966710525, -0.014283573396973682, -0.015558832550000004, 0.006422352959605265, 0.0015610042364473677, 0.005954876463289471, 0.01747821746710526, 0.012649821948026316, -0.00588777466013158, 0.00278459120360921, -0.0027093084425131573, 0.00528561605, -0.0013567440365789465, -0.0036329947868421046, -0.027717547824078946, -0.009446810628947372, 0.0016673699111842107, 0.01964425766578947, -0.00695099289526316, 0.01540288453881579, -0.0017949823404736845, -0.0017532934771052637, 0.011818318206578948, 0.0014771281863157897, 0.010423521287236842, 7254289103947369e-19, -0.004566167288026315, -0.003529428743197369, 0.0011952240294736843, -0.003898400712605264, -0.010473680018684213, 0.00285922366139474, -0.006599853688026317, -0.02107415088815789, 0.0052880693118421045, 0.006744707181578948, -0.00798451460657895, -0.004557204219868423, -0.01156681187255263, 0.0076239759752631635, 0.0035902046968684207, -0.012573743979605262, -0.003764909397236842, 6335979498684211e-19, -0.003016045632947368, 0.0018927498906578949, 0.007497210715789474, -0.005934193091907899, 0.0035080823515789466, -0.0018217714548684216, -5523007649828952e-19, -7058270163815789e-19, 0.012370342157368423, -15139791644736762e-21, -0.013432961709210524, -4939559349999998e-19, 0.010054779912499996, -0.001919280470486842, -0.0013844150172368421, 0.007696783919605264, 0.008991117240473684, -0.007747281024078945, -0.004739962277894735, 0.007187543989473684, 0.003015955778815791, -0.001928289877644735, 0.004620562280552632, -0.0014514659089473684, -0.020361874824473686, 0.010851485952894735, -0.0048367870628947375, 7418370901184215e-19, 0.003954019490328949, -0.0036905010957894754, 0.005135467446315788, -7641653630263166e-19, 0.002803192092157894, 9011874512236843e-19, -0.006852827178236843, -0.009182144093157896, 6662634763552632e-19, 0.003859204278289474, 0.002627766069263158, 16687577934210564e-20, -0.004155122549868421, 0.007481256317894739, 0.010201827506842105, -0.02001931662526316, 0.008597913657499998, 0.009211417565, -0.003000300423684211, 48565491249999974e-20, -0.006839893910657894, -0.0024400726705263165, 0.0018072735346052636, -0.019441373660526323, 0.008917724683289475, 0.006977527517447371, 0.0012267423015789476, 37295210526322205e-22, -0.03201578951578947, 0.0014607340267894736, 0.010337255695263156, 0.002957082175947369, 0.009742125079473684, 0.0062952107691315795, 0.010293411451381573, 0.007467224718026317, -0.01702668064539474, 0.005315579784210528, -0.03403872432368421, -0.0036593492817105257, -0.013481478045789471, -0.005543817282105263, 0.0024990400036842106, -0.005272580224539472, 0.009082922817368418, -0.001777538198289474, -0.00401194444394737, 0.00793982549736842, 23839166631578926e-20, 0.005703706245131579, 0.0032615849919210536, 5623444232236841e-19, -0.009299548110394735, 0.0010441157952631576, -0.012694072275263158, 0.004126734016842105, -0.001088491213815789, -43924066513157913e-20, -0.006497900055789475, -0.008375932914473687, 0.006604953940657895, 0.008322977985131578, 0.0014929076139473686, -0.005037357923289473, 0.001687304174736842, 0.005036407010486843, 0.002468036690526316, 0.0014052489157894733, -0.0022257209973684214, 0.005458085299473683, 0.009009774955749998, 0.0858067330657895, -0.007581642367631578, 0.01083994584868421, -0.0022605711906578943, 21345696315789494e-20, -0.005091092415263156, -0.0064649052059342115, -0.0031673467632894734, 0.007837809513026317, -0.0048379660456749985, 0.003358471353947369, -0.007209436236315789, -0.004074764670526317, -0.002432236466131579, -0.001538101053328947, -0.003958276178197368, -0.001431222515394737, -0.002890863070263158, -0.005015565842105263, 0.006637256008947367, -0.01610401879026316, 16318058486842113e-20, 0.006704906538815789, -0.00704305531026316, -0.006291144144078946, 0.00933739933177632, 0.003039505811973684, -0.002349317244736842, 6161272673684213e-19, 0.011576436187894739, 19294986634210533e-20, -5418114680263158e-19, 0.002641153911184212, -0.00675274457026316, 0.008304665786171056, 0.001867557076842105, 0.007009144105789473, 37644492855263173e-20, 0.008968001444210526, 0.0015434073640789474, 0.005244117515263159, 0.0029953329880263156, 5347106021052633e-19, 0.004156591307368421, -0.0022211070997368424, 0.0034716415264473685, -0.0065318866889473685, 977989682631579e-18, -0.0014095522748684215, -0.006451674766447366, 0.0032100871473157893, -0.005529904199539473, 0.0059584155557894725, -9850399996052639e-19, 0.006995684919078948, -0.0022856163722368393, -0.01090589053710526, 0.009130581944078944, 0.00312594295013158, 0.007374450093421053, 0.0025797777251710522, 29641350526315737e-21, 0.001176881737763158, -0.014572063391447372, -2289824355263157e-19, -0.004469249211710526, 0.007769186374868425, -0.002506505231434211, 0.006041142717631577, -0.002120238433026316, -0.009695580013552628, -0.005020087666881578, 0.005143053156315791, 0.007150294719789475, 0.0023021195396710527, 0.003707133851447368, 0.006069693725921051, -0.00467861785710526, 0.02125906401236842, 9268083446052627e-19, -0.003634692288684209, -0.003680463652815789, 0.0040336247021052615, 0.0013372253536447368, 0.0021130635865789465, -4880915286842109e-19, -0.012233446567342104, -0.004310965072894738, -0.01132869828552632, -0.006841497305263159, -0.0016422147394736845, -0.002537146005289474, 0.003615671777368422, 0.00814799093118421, -0.005056491793263158, 0.013174237758684208, 3394553878157892e-19, -0.008489372885473684, -0.0027938550723684203, 0.0030627760844078957, 9348454796052637e-19, 0.004848255386842105, -0.0117739507, -6810965494736843e-19, -0.002880153715, 0.008861613728178947, 0.0033199058337500006, -0.003612675859078948, 0.002928360304065789, 0.0039185375651315775, -7332073442631576e-19, -0.0012935513150789466, 0.004886879997894738, 0.007781129023552632, -0.004267412731052632, -0.003639562495460526, 0.00523262424868421, -0.003657068880394737, 0.005125610617552631, -0.004419953952236842, -9843244355092107e-19, -2347114171052623e-20, 0.0016072527152631584, 0.003128275799539474, 4279722777368421e-19, 0.006050774428552632, -0.004237210059210528, -0.0025468053725000005, 0.0026924242311184205, -0.02019396686092105, -0.005761839523684209, -0.009751797271973686, 0.011594078876973685, 9348787827236843e-19, 0.014106164205263163, 6055481813026316e-19, -7440742407894764e-20, -0.005227106624868422, 0.013380218100789466, 0.008165820871447366, -4882895227631577e-19, -0.0010533377903157893, -0.0016510250091447362, 0.0018723641477631577, -0.004344320649736843, 0.002451466830486842, 0.003751309517368421, -1192675066447369e-19, 5871760036842106e-19, 0.00721447406936842, 0.003513352502315789, 0.009986706387763158, -0.003577922982105263, -0.006272508934210527, 0.00939798507907895, 0.005559408675131579, -0.004530027807368421, 0.008267799573289474, 9763903811842103e-19, 6323663030263157e-19, -0.018563745183684206, 0.003477922045657895, 0.0034454675522368416, 0.0022030032148815794, 9718481634210526e-19, -0.006363050955000002, 0.009044980506973683, -0.007551598236973688, -6711054927894736e-19, -0.0013286158334210524, 0.0017464641878947365, -0.011715851191973686, -0.005520589822500002, 8535201651315791e-19, 0.010038929649605262];
7585
7592
 
7586
7593
  // src/lib/chat/preProcessor.ts
7587
- function wrapAsUserText(prefix, text12) {
7588
- if (!text12 || !text12.trim()) return [];
7594
+ function wrapAsUserText(prefix, text13) {
7595
+ if (!text13 || !text13.trim()) return [];
7589
7596
  return [{ role: "user", content: [{ type: "text", text: `${prefix}
7590
- ${text12}` }] }];
7597
+ ${text13}` }] }];
7591
7598
  }
7592
7599
 
7593
7600
  // src/lib/chat/cryptoPriceClassifier.ts
@@ -7626,6 +7633,80 @@ function createCryptoPricePreProcessor(options = {}) {
7626
7633
  };
7627
7634
  }
7628
7635
 
7636
+ // src/lib/chat/reservationReceipts.ts
7637
+ var ACTIONS = [
7638
+ {
7639
+ kind: "booking",
7640
+ tool: "anuma_book_restaurant",
7641
+ alreadyDone: /^Tool "[^"]*" failed: ALREADY_BOOKED:/
7642
+ },
7643
+ {
7644
+ kind: "cancel",
7645
+ tool: "anuma_cancel_reservation",
7646
+ alreadyDone: /^Tool "[^"]*" failed: ALREADY_CANCELLED:/
7647
+ }
7648
+ ];
7649
+ var NOT_AN_ATTEMPT = /^Tool "[^"]*" (has already been called|was already called)/;
7650
+ var BOOKING_OUTCOME_UNKNOWN = /^Tool "[^"]*" failed: BOOKING_OUTCOME_UNKNOWN:/;
7651
+ var CANCEL_OUTCOME_UNKNOWN = "CANCEL_OUTCOME_UNKNOWN";
7652
+ function extractReservationReceipts(toolCallEvents) {
7653
+ const latest = /* @__PURE__ */ new Map();
7654
+ for (const event of toolCallEvents ?? []) {
7655
+ const action = ACTIONS.find((a) => event.name?.endsWith(a.tool));
7656
+ const output = event.output ?? "";
7657
+ if (!action || !output || NOT_AN_ATTEMPT.test(output)) continue;
7658
+ const kept = latest.get(action.kind)?.status;
7659
+ if (kept === "made") continue;
7660
+ const receipt = toReceipt(action, event.arguments ?? "", output);
7661
+ if (kept === "unknown" && receipt.status !== "made") continue;
7662
+ latest.set(action.kind, receipt);
7663
+ }
7664
+ return [...latest.values()];
7665
+ }
7666
+ function toReceipt(action, argumentsJson, output) {
7667
+ const args = parseObject(argumentsJson);
7668
+ const result = parseObject(output);
7669
+ return {
7670
+ kind: action.kind,
7671
+ venueName: text(args.venue_name) ?? "",
7672
+ day: text(args.day) ?? "",
7673
+ time: text(args.time) ?? "",
7674
+ partySize: count(args.party_size),
7675
+ reservationId: text(result.reservation_id) ?? text(args.reservation_id),
7676
+ resyUrl: text(result.reservations_url),
7677
+ feeSummary: text(result.fee_summary),
7678
+ ...outcome(action, output, result)
7679
+ };
7680
+ }
7681
+ function outcome(action, output, result) {
7682
+ if (action.alreadyDone.test(output)) return { status: "already_done" };
7683
+ const reason = text(result.error);
7684
+ if (action.kind === "booking") {
7685
+ if (BOOKING_OUTCOME_UNKNOWN.test(output)) return { status: "unknown" };
7686
+ const held = result.success === true || text(result.reservation_id) !== void 0;
7687
+ return held ? { status: "made" } : { status: "not_made", reason };
7688
+ }
7689
+ if (result.error_code === CANCEL_OUTCOME_UNKNOWN) return { status: "unknown", reason };
7690
+ const cancelled = result.success === true && !result.error && !result.error_code;
7691
+ return cancelled ? { status: "made" } : { status: "not_made", reason };
7692
+ }
7693
+ function parseObject(json4) {
7694
+ try {
7695
+ const parsed = JSON.parse(json4);
7696
+ return parsed && typeof parsed === "object" ? parsed : {};
7697
+ } catch {
7698
+ return {};
7699
+ }
7700
+ }
7701
+ function text(value) {
7702
+ if (typeof value === "number") return String(value);
7703
+ return typeof value === "string" && value ? value : void 0;
7704
+ }
7705
+ function count(value) {
7706
+ const n = typeof value === "string" && value.trim() ? Number(value) : value;
7707
+ return typeof n === "number" && Number.isFinite(n) ? n : void 0;
7708
+ }
7709
+
7629
7710
  // src/lib/chat/resumeStream.ts
7630
7711
  init_clientConfig();
7631
7712
 
@@ -7634,6 +7715,46 @@ init_clientConfig();
7634
7715
 
7635
7716
  // src/tools/confirmConstants.ts
7636
7717
  var CONFIRM_TOOL_NAME = "prompt_user_confirm";
7718
+ var BOOK_RESTAURANT = {
7719
+ tool: "AnumaPaymentsMCP-anuma_book_restaurant",
7720
+ status: "confirmed_not_booked",
7721
+ fields: ["venue_id", "config_id", "party_size", "day", "venue_name", "time"]
7722
+ };
7723
+ var CANCEL_RESERVATION = {
7724
+ tool: "AnumaPaymentsMCP-anuma_cancel_reservation",
7725
+ status: "confirmed_not_cancelled",
7726
+ fields: [
7727
+ "reservation_id",
7728
+ "venue_name",
7729
+ "day",
7730
+ "time",
7731
+ "party_size",
7732
+ "fee_applies",
7733
+ "fee_amount"
7734
+ ]
7735
+ };
7736
+ var CONFIRM_REQUIRED_FIELDS = /* @__PURE__ */ new Map([
7737
+ ["book_restaurant", BOOK_RESTAURANT],
7738
+ ["anuma_book_restaurant", BOOK_RESTAURANT],
7739
+ ["anumapaymentsmcp-anuma_book_restaurant", BOOK_RESTAURANT],
7740
+ ["cancel_reservation", CANCEL_RESERVATION],
7741
+ ["anuma_cancel_reservation", CANCEL_RESERVATION],
7742
+ ["anumapaymentsmcp-anuma_cancel_reservation", CANCEL_RESERVATION]
7743
+ ]);
7744
+ function confirmRequirement(action) {
7745
+ if (typeof action !== "string") return void 0;
7746
+ return CONFIRM_REQUIRED_FIELDS.get(action.trim().toLowerCase());
7747
+ }
7748
+ function missingConfirmFields(action, parameters) {
7749
+ const requirement = confirmRequirement(action);
7750
+ if (!requirement) return [];
7751
+ const shown = /* @__PURE__ */ new Set();
7752
+ for (const parameter of Array.isArray(parameters) ? parameters : []) {
7753
+ const { name, value } = parameter ?? {};
7754
+ if (typeof name === "string" && typeof value === "string" && value.trim()) shown.add(name);
7755
+ }
7756
+ return requirement.fields.filter((field10) => !shown.has(field10));
7757
+ }
7637
7758
 
7638
7759
  // src/lib/chat/toolLoop.ts
7639
7760
  init_redactor();
@@ -10460,13 +10581,13 @@ var StreamSmoother = class {
10460
10581
  /**
10461
10582
  * Add text to the buffer. If smoothing is disabled, passes through immediately.
10462
10583
  */
10463
- push(text12) {
10464
- if (this.destroyed || !text12) return;
10584
+ push(text13) {
10585
+ if (this.destroyed || !text13) return;
10465
10586
  if (!this.enabled) {
10466
- this.callback(text12);
10587
+ this.callback(text13);
10467
10588
  return;
10468
10589
  }
10469
- this.buffer += text12;
10590
+ this.buffer += text13;
10470
10591
  this.ensureTimer();
10471
10592
  }
10472
10593
  /**
@@ -10477,9 +10598,9 @@ var StreamSmoother = class {
10477
10598
  if (this.destroyed) return;
10478
10599
  this.stopTimer();
10479
10600
  if (this.buffer.length > 0) {
10480
- const text12 = this.buffer;
10601
+ const text13 = this.buffer;
10481
10602
  this.buffer = "";
10482
- this.callback(text12);
10603
+ this.callback(text13);
10483
10604
  }
10484
10605
  this.resolveDrain();
10485
10606
  }
@@ -10546,9 +10667,9 @@ var StreamSmoother = class {
10546
10667
  const currentSpeed = this.getCurrentSpeed(elapsed);
10547
10668
  const charsThisTick = Math.max(1, Math.round(currentSpeed * (TICK_INTERVAL / 1e3)));
10548
10669
  const toRelease = Math.min(charsThisTick, this.buffer.length);
10549
- const text12 = this.buffer.slice(0, toRelease);
10670
+ const text13 = this.buffer.slice(0, toRelease);
10550
10671
  this.buffer = this.buffer.slice(toRelease);
10551
- this.callback(text12);
10672
+ this.callback(text13);
10552
10673
  if (this.buffer.length === 0) {
10553
10674
  this.stopTimer();
10554
10675
  this.resolveDrain();
@@ -10752,6 +10873,7 @@ function getToolName(tool) {
10752
10873
  }
10753
10874
  function toolsAfterConfirmation(apiTools, executionResults) {
10754
10875
  const members = /* @__PURE__ */ new Set();
10876
+ let keepConfirm = false;
10755
10877
  for (const r of executionResults) {
10756
10878
  if (r.name !== CONFIRM_TOOL_NAME) continue;
10757
10879
  const answer = r.result;
@@ -10759,11 +10881,12 @@ function toolsAfterConfirmation(apiTools, executionResults) {
10759
10881
  const setName = CONFIRMED_ACTION_TOOL_SETS.get(answer.action.trim().toLowerCase());
10760
10882
  const set = BUILT_IN_TOOL_SETS.find((s) => s.name === setName);
10761
10883
  for (const member of set?.members ?? []) members.add(member);
10884
+ if (missingConfirmFields(answer.action, answer.parameters).length > 0) keepConfirm = true;
10762
10885
  }
10763
10886
  if (!apiTools.some((t) => members.has(getToolName(t) ?? ""))) return void 0;
10764
10887
  return apiTools.filter((t) => {
10765
10888
  const name = getToolName(t) ?? "";
10766
- return members.has(name) || name === CONFIRM_TOOL_NAME || name === TOOL_SEARCH_TOOL_NAME;
10889
+ return members.has(name) || name === TOOL_SEARCH_TOOL_NAME || keepConfirm && name === CONFIRM_TOOL_NAME;
10767
10890
  });
10768
10891
  }
10769
10892
  var STREAM_RESUMABLE_HEADER = "X-Stream-Resumable";
@@ -10969,9 +11092,9 @@ async function runToolLoop(options) {
10969
11092
  messages = await redactBatch(messages);
10970
11093
  if (preProcessors?.length) {
10971
11094
  try {
10972
- const text12 = extractLastUserText(messages);
10973
- if (text12.length > 0) {
10974
- const embedding = await generateEmbedding(text12, {
11095
+ const text13 = extractLastUserText(messages);
11096
+ if (text13.length > 0) {
11097
+ const embedding = await generateEmbedding(text13, {
10975
11098
  apiKey: headers?.["X-API-Key"],
10976
11099
  getToken: token ? () => Promise.resolve(token) : void 0,
10977
11100
  baseUrl
@@ -10979,7 +11102,7 @@ async function runToolLoop(options) {
10979
11102
  const results = await Promise.all(
10980
11103
  preProcessors.map(async (p) => {
10981
11104
  try {
10982
- return await p({ prompt: text12, embedding, signal: combinedSignal });
11105
+ return await p({ prompt: text13, embedding, signal: combinedSignal });
10983
11106
  } catch (err) {
10984
11107
  console.warn("[runToolLoop] pre-processor failed:", err);
10985
11108
  return void 0;
@@ -11138,11 +11261,11 @@ async function runToolLoop(options) {
11138
11261
  }
11139
11262
  });
11140
11263
  accumulator = createStreamAccumulator(model || void 0);
11141
- contentSmoother = new StreamSmoother((text12) => {
11142
- if (emitData) emitData(text12);
11264
+ contentSmoother = new StreamSmoother((text13) => {
11265
+ if (emitData) emitData(text13);
11143
11266
  }, smoothing);
11144
- thinkingSmoother = new StreamSmoother((text12) => {
11145
- if (emitThinking) emitThinking(text12);
11267
+ thinkingSmoother = new StreamSmoother((text13) => {
11268
+ if (emitThinking) emitThinking(text13);
11146
11269
  }, smoothing);
11147
11270
  let chunksEmittedDownstream = false;
11148
11271
  try {
@@ -11647,11 +11770,11 @@ Executing tool: ${toolInfo}
11647
11770
  }
11648
11771
  });
11649
11772
  currentAccumulator = createStreamAccumulator(model || void 0);
11650
- contContentSmoother = new StreamSmoother((text12) => {
11651
- if (emitData) emitData(text12);
11773
+ contContentSmoother = new StreamSmoother((text13) => {
11774
+ if (emitData) emitData(text13);
11652
11775
  }, smoothing);
11653
- contThinkingSmoother = new StreamSmoother((text12) => {
11654
- if (emitThinking) emitThinking(text12);
11776
+ contThinkingSmoother = new StreamSmoother((text13) => {
11777
+ if (emitThinking) emitThinking(text13);
11655
11778
  }, smoothing);
11656
11779
  let chunksEmittedDownstream = false;
11657
11780
  try {
@@ -11878,11 +12001,11 @@ async function resumeStream(options) {
11878
12001
  } = options;
11879
12002
  const strategy = getStrategy(handle.apiType);
11880
12003
  const accumulator = createStreamAccumulator(handle.model || void 0);
11881
- const contentSmoother = new StreamSmoother((text12) => {
11882
- if (onData) onData(text12);
12004
+ const contentSmoother = new StreamSmoother((text13) => {
12005
+ if (onData) onData(text13);
11883
12006
  }, smoothing);
11884
- const thinkingSmoother = new StreamSmoother((text12) => {
11885
- if (onThinking) onThinking(text12);
12007
+ const thinkingSmoother = new StreamSmoother((text13) => {
12008
+ if (onThinking) onThinking(text13);
11886
12009
  }, smoothing);
11887
12010
  const idleController = new AbortController();
11888
12011
  let watchdog;
@@ -14705,8 +14828,8 @@ var WatermelonChatStorageAdapter = class {
14705
14828
  updateMessageEmbedding(uniqueId, vector, embeddingModel) {
14706
14829
  return updateMessageEmbeddingOp(this.ctx, uniqueId, vector, embeddingModel);
14707
14830
  }
14708
- updateMessageChunks(uniqueId, chunks, embeddingModel) {
14709
- return updateMessageChunksOp(this.ctx, uniqueId, chunks, embeddingModel);
14831
+ updateMessageChunks(uniqueId, chunks2, embeddingModel) {
14832
+ return updateMessageChunksOp(this.ctx, uniqueId, chunks2, embeddingModel);
14710
14833
  }
14711
14834
  updateMessageError(uniqueId, error) {
14712
14835
  return updateMessageErrorOp(this.ctx, uniqueId, error);
@@ -18002,7 +18125,7 @@ Which item numbers should be flagged?`,
18002
18125
  if (parsed === null) return empty;
18003
18126
  return { flagged: parseFlagged(parsed, scope.length) };
18004
18127
  }
18005
- function parseFlagged(parsed, count) {
18128
+ function parseFlagged(parsed, count2) {
18006
18129
  const out = /* @__PURE__ */ new Set();
18007
18130
  if (typeof parsed !== "object" || parsed === null) return out;
18008
18131
  const list = parsed.poisoned;
@@ -18010,7 +18133,7 @@ function parseFlagged(parsed, count) {
18010
18133
  for (const raw of list) {
18011
18134
  const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
18012
18135
  if (!Number.isInteger(n)) continue;
18013
- if (n >= 1 && n <= count) out.add(n - 1);
18136
+ if (n >= 1 && n <= count2) out.add(n - 1);
18014
18137
  }
18015
18138
  return out;
18016
18139
  }
@@ -18507,8 +18630,8 @@ var STOPWORDS = /* @__PURE__ */ new Set([
18507
18630
  "user",
18508
18631
  "users"
18509
18632
  ]);
18510
- function tokenize(text12) {
18511
- const m = text12.toLowerCase().match(TOKEN_RE);
18633
+ function tokenize(text13) {
18634
+ const m = text13.toLowerCase().match(TOKEN_RE);
18512
18635
  if (!m) return [];
18513
18636
  return m.filter((t) => !STOPWORDS.has(t));
18514
18637
  }
@@ -20035,14 +20158,14 @@ async function retainWithPersistence(content, ctx, options = {}) {
20035
20158
  );
20036
20159
  }
20037
20160
  if (options.consolidateOptions) {
20038
- const outcome = await tryConsolidate(trimmed, ctx, options, prepared);
20039
- if (outcome) {
20040
- if ("done" in outcome) return outcome.done;
20041
- if ("create" in outcome) {
20161
+ const outcome2 = await tryConsolidate(trimmed, ctx, options, prepared);
20162
+ if (outcome2) {
20163
+ if ("done" in outcome2) return outcome2.done;
20164
+ if ("create" in outcome2) {
20042
20165
  consolidationDecidedCreate = true;
20043
20166
  } else {
20044
- supersedeTargetIds = outcome.supersede;
20045
- supersedeContent = outcome.content;
20167
+ supersedeTargetIds = outcome2.supersede;
20168
+ supersedeContent = outcome2.content;
20046
20169
  }
20047
20170
  }
20048
20171
  }
@@ -20708,12 +20831,12 @@ async function extractAndRetain(messages, retainCtx, options) {
20708
20831
  if (failedWrites > 0) {
20709
20832
  log.warn(`[memory/extract] ${failedWrites} of ${filtered.length} candidates failed to retain`);
20710
20833
  }
20711
- const outcome = exhaustedEmpty ? "empty-after-retry" : filtered.length > 0 ? "extracted" : droppedAfterRedaction ? "dropped-after-redaction" : "no-facts";
20834
+ const outcome2 = exhaustedEmpty ? "empty-after-retry" : filtered.length > 0 ? "extracted" : droppedAfterRedaction ? "dropped-after-redaction" : "no-facts";
20712
20835
  return {
20713
20836
  candidates: succeededCandidates,
20714
20837
  results,
20715
20838
  failedCount: failedWrites,
20716
- outcome,
20839
+ outcome: outcome2,
20717
20840
  quarantined: quarantinedInfo,
20718
20841
  funnel: {
20719
20842
  rawCandidateCount,
@@ -20945,7 +21068,7 @@ function createAutoExtractor(options) {
20945
21068
  ...options.retainCtx,
20946
21069
  embeddingOptions: {
20947
21070
  ...options.retainCtx.embeddingOptions,
20948
- maskInput: (text12) => piiRedactor.maskText(text12)
21071
+ maskInput: (text13) => piiRedactor.maskText(text13)
20949
21072
  }
20950
21073
  } : options.retainCtx;
20951
21074
  function processTurn(messages, conversationId) {
@@ -20978,7 +21101,7 @@ function createAutoExtractor(options) {
20978
21101
  const t0 = Date.now();
20979
21102
  void (async () => {
20980
21103
  try {
20981
- const { candidates, results, failedCount, outcome, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
21104
+ const { candidates, results, failedCount, outcome: outcome2, failure, funnel, timings, model } = await extractAndRetain(window2, retainCtx, {
20982
21105
  extract,
20983
21106
  ...options.minConfidence !== void 0 && { minConfidence: options.minConfidence },
20984
21107
  ...options.entityCtx !== void 0 && { entityCtx: options.entityCtx },
@@ -20995,7 +21118,7 @@ function createAutoExtractor(options) {
20995
21118
  onQuarantined: (info) => options.onMemoryQuarantined?.({ ...info, conversationId })
20996
21119
  }
20997
21120
  });
20998
- if (outcome !== "empty-after-retry" && failedCount === 0) {
21121
+ if (outcome2 !== "empty-after-retry" && failedCount === 0) {
20999
21122
  const advancedTo = window2[window2.length - 1].id;
21000
21123
  stateFor(conversationId).watermark = advancedTo;
21001
21124
  persistCursor(conversationId, messages, advancedTo, contiguous);
@@ -21014,7 +21137,7 @@ function createAutoExtractor(options) {
21014
21137
  failedCount,
21015
21138
  durationMs: Date.now() - t0,
21016
21139
  conversationId,
21017
- outcome,
21140
+ outcome: outcome2,
21018
21141
  funnel,
21019
21142
  timings,
21020
21143
  model,
@@ -22691,12 +22814,12 @@ ${JSON.stringify(
22691
22814
  function parseAnswer(body, base, parseSchema) {
22692
22815
  if (typeof body !== "object" || body === null) return base;
22693
22816
  const obj = body;
22694
- const text12 = extractCompletionContent(obj) ?? "";
22817
+ const text13 = extractCompletionContent(obj) ?? "";
22695
22818
  const usage = obj.usage;
22696
22819
  let structuredOutput;
22697
- if (parseSchema && text12) {
22820
+ if (parseSchema && text13) {
22698
22821
  try {
22699
- structuredOutput = JSON.parse(extractJsonCandidate(text12));
22822
+ structuredOutput = JSON.parse(extractJsonCandidate(text13));
22700
22823
  } catch (err) {
22701
22824
  getLogger().warn("[memory/reflect] structured output was not valid JSON", {
22702
22825
  err: err instanceof Error ? err.message : String(err)
@@ -22706,7 +22829,7 @@ function parseAnswer(body, base, parseSchema) {
22706
22829
  const promptTokens = usage?.prompt_tokens ?? usage?.input_tokens ?? 0;
22707
22830
  const completionTokens = usage?.completion_tokens ?? usage?.output_tokens ?? 0;
22708
22831
  return {
22709
- text: text12,
22832
+ text: text13,
22710
22833
  ...structuredOutput !== void 0 && { structuredOutput },
22711
22834
  basedOn: base.basedOn,
22712
22835
  usage: {
@@ -23062,6 +23185,65 @@ function createLocalMemoryStore(options) {
23062
23185
  };
23063
23186
  }
23064
23187
 
23188
+ // src/lib/memory/store/memoryKeys.ts
23189
+ var KEY_ID_DOMAIN = "anuma-private-memory-key-id-v1";
23190
+ var MemoryKeyError = class extends Error {
23191
+ constructor(message) {
23192
+ super(message);
23193
+ this.name = "MemoryKeyError";
23194
+ }
23195
+ };
23196
+ async function importAesKey(hex) {
23197
+ return crypto.subtle.importKey(
23198
+ "raw",
23199
+ hexToBytes(hex).buffer,
23200
+ { name: "AES-GCM" },
23201
+ false,
23202
+ ["encrypt", "decrypt"]
23203
+ );
23204
+ }
23205
+ async function deriveMemoryKeyRing(signatureHex) {
23206
+ const v3Hex = await deriveKeyFromSignatureV3(signatureHex);
23207
+ const digest = await crypto.subtle.digest(
23208
+ "SHA-256",
23209
+ new TextEncoder().encode(`${KEY_ID_DOMAIN}:${v3Hex}`)
23210
+ );
23211
+ const keyId = "v3:" + Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
23212
+ return {
23213
+ keyId,
23214
+ v3: await importAesKey(v3Hex),
23215
+ v2: await importAesKey(await deriveKeyFromSignature(signatureHex))
23216
+ };
23217
+ }
23218
+ async function decryptWith(value, rings) {
23219
+ const version = value.startsWith("enc:v3:") ? "v3" : "v2";
23220
+ for (const ring of rings) {
23221
+ try {
23222
+ return await decryptDataWithKey(value.slice(`enc:${version}:`.length), ring[version]);
23223
+ } catch {
23224
+ continue;
23225
+ }
23226
+ }
23227
+ throw new MemoryKeyError(`No supplied key decrypts this enc:${version} field`);
23228
+ }
23229
+ function memoryCipher(canonical) {
23230
+ return {
23231
+ encrypt: async (plaintext) => `enc:v3:${await encryptDataWithKey(plaintext, canonical.v3)}`,
23232
+ decrypt: async (ciphertext) => {
23233
+ if (!ciphertext.startsWith("enc:v3:") || !isEncrypted(ciphertext))
23234
+ throw new MemoryKeyError("Remote memory content must be enc:v3 ciphertext");
23235
+ return decryptWith(ciphertext, [canonical]);
23236
+ }
23237
+ };
23238
+ }
23239
+ async function reencryptMemoryField(value, canonical, fallbacks = []) {
23240
+ const { encrypt } = memoryCipher(canonical);
23241
+ if (!value.startsWith("enc:")) return encrypt(value);
23242
+ if (!isEncrypted(value))
23243
+ throw new MemoryKeyError("Field has an encryption prefix but an invalid payload");
23244
+ return encrypt(await decryptWith(value, [canonical, ...fallbacks]));
23245
+ }
23246
+
23065
23247
  // src/lib/memory/store/remotePersistence.ts
23066
23248
  var RemoteMemoryError = class extends Error {
23067
23249
  constructor(message, status, code) {
@@ -23114,6 +23296,30 @@ var candidateListLimits = [
23114
23296
  ["memory_ids", 1e3],
23115
23297
  ["force_ids", 100]
23116
23298
  ];
23299
+ var queryListLimits = [
23300
+ ["scopes", 20],
23301
+ ["fact_types", 20],
23302
+ ["visibility", 20],
23303
+ ["memory_ids", 1e3],
23304
+ ["topics", 100]
23305
+ ];
23306
+ var queryFields = [
23307
+ "include_deleted",
23308
+ "include_archived",
23309
+ "include_quarantined",
23310
+ "include_superseded",
23311
+ "archived_only",
23312
+ "scopes",
23313
+ "fact_types",
23314
+ "visibility",
23315
+ "memory_ids",
23316
+ "topics",
23317
+ "updated_after",
23318
+ "order",
23319
+ "cursor",
23320
+ "limit",
23321
+ "include_embeddings"
23322
+ ];
23117
23323
  function record(value) {
23118
23324
  return typeof value === "object" && value !== null && !Array.isArray(value);
23119
23325
  }
@@ -23448,6 +23654,35 @@ async function createRemoteMemoryPersistence(options) {
23448
23654
  throw new Error("Invalid nearby batch response");
23449
23655
  return Promise.all(result.items.map((item, i) => decodeCommitted(item, prepared[i])));
23450
23656
  },
23657
+ query: async (queryOptions = {}) => {
23658
+ const { signal, ...query } = queryOptions;
23659
+ if (query.limit !== void 0 && (!Number.isInteger(query.limit) || query.limit < 1 || query.limit > 200))
23660
+ throw new Error("Page limit must be 1\u2013200");
23661
+ for (const [key, max] of queryListLimits) {
23662
+ const values = query[key];
23663
+ if (values && values.length > max)
23664
+ throw new Error(`Query ${key} accepts at most ${max} entries (got ${values.length})`);
23665
+ }
23666
+ const page = await request(
23667
+ "/memories/query",
23668
+ {
23669
+ method: "POST",
23670
+ body: JSON.stringify(
23671
+ Object.fromEntries(
23672
+ queryFields.filter((key) => query[key] !== void 0).map((key) => [key, query[key]])
23673
+ )
23674
+ )
23675
+ },
23676
+ signal
23677
+ );
23678
+ if (!record(page) || !Array.isArray(page.items) || page.next_cursor !== void 0 && typeof page.next_cursor !== "string" || page.changes_cursor !== void 0 && typeof page.changes_cursor !== "string")
23679
+ throw new Error("Invalid nearby private-memory page");
23680
+ return {
23681
+ ...await decodeAll(page.items),
23682
+ ...page.next_cursor !== void 0 && { next_cursor: page.next_cursor },
23683
+ ...page.changes_cursor !== void 0 && { changes_cursor: page.changes_cursor }
23684
+ };
23685
+ },
23451
23686
  candidateSet,
23452
23687
  candidates: async (embedding, candidateOptions = {}) => decodeAll((await fetchCandidates(embedding, candidateOptions, false)).items)
23453
23688
  };
@@ -23799,10 +24034,10 @@ function createRemoteMemoryPipeline(options) {
23799
24034
  factSource: {
23800
24035
  graphRanking: options.graphRanking,
23801
24036
  temporalRanking: options.temporalRanking,
23802
- search: async (text12, searchOptions) => {
23803
- const prepared = await prepare(text12, searchOptions);
24037
+ search: async (text13, searchOptions) => {
24038
+ const prepared = await prepare(text13, searchOptions);
23804
24039
  const ranked = await rankPreparedVaultCandidates(
23805
- text12,
24040
+ text13,
23806
24041
  prepared,
23807
24042
  embeddingOptions,
23808
24043
  searchOptions
@@ -23837,6 +24072,490 @@ function createRemoteMemoryPipeline(options) {
23837
24072
  };
23838
24073
  }
23839
24074
 
24075
+ // src/lib/memory/store/remoteStore.ts
24076
+ var import_uuid6 = require("uuid");
24077
+ init_logger();
24078
+ function relevant(change, options) {
24079
+ return options.includeDeleted ? change === "membership" : change !== "embedding" || !!options.embeddings;
24080
+ }
24081
+ function safely(onChange) {
24082
+ try {
24083
+ onChange();
24084
+ } catch (error) {
24085
+ getLogger().warn("[memory/remote-store] Subscriber threw:", error);
24086
+ }
24087
+ }
24088
+ var MAX_BATCH = 50;
24089
+ var MAX_QUERY_IDS = 1e3;
24090
+ var MAX_QUERY_TOPICS = 100;
24091
+ var MAX_QUERY_FILTER = 20;
24092
+ var RemoteMemoryPartialCreateError = class extends Error {
24093
+ constructor(created, cause) {
24094
+ super(`createMany stored ${created.length} memories before a batch failed`);
24095
+ this.created = created;
24096
+ this.cause = cause;
24097
+ this.name = "RemoteMemoryPartialCreateError";
24098
+ }
24099
+ };
24100
+ function warnFailed(failed) {
24101
+ if (failed.length)
24102
+ getLogger().warn(
24103
+ `[memory/remote-store] Skipping ${failed.length} undecryptable row(s)`,
24104
+ failed.map((failure) => failure.memory_id)
24105
+ );
24106
+ }
24107
+ function bounded(filters, key) {
24108
+ const values = filters[key];
24109
+ if (!values || values.length <= MAX_QUERY_FILTER) return [filters];
24110
+ return chunks(values, MAX_QUERY_FILTER).map((chunk) => ({ ...filters, [key]: chunk }));
24111
+ }
24112
+ function chunks(values, size) {
24113
+ const out = [];
24114
+ for (let i = 0; i < values.length; i += size) out.push(values.slice(i, i + size));
24115
+ return out;
24116
+ }
24117
+ function stateFilters(options) {
24118
+ return {
24119
+ include_deleted: options.includeDeleted,
24120
+ include_archived: options.includeArchived,
24121
+ include_quarantined: options.includeQuarantined,
24122
+ include_superseded: options.includeSuperseded
24123
+ };
24124
+ }
24125
+ function hidden(memory, options) {
24126
+ if (memory.trust_tier === "quarantined") return true;
24127
+ if (options.includeDeleted) return false;
24128
+ return !!memory.is_deleted || memory.archived_at !== void 0 && memory.archived_at !== null || !!memory.superseded_by;
24129
+ }
24130
+ function subscriptionKey({ memory, version }, options) {
24131
+ if (hidden(memory, options)) return void 0;
24132
+ if (options.includeDeleted) return String(!!memory.is_deleted);
24133
+ return JSON.stringify([
24134
+ options.embeddings ? version : null,
24135
+ memory.content,
24136
+ memory.scope,
24137
+ memory.updated_at,
24138
+ memory.fact_type,
24139
+ memory.event_time_start,
24140
+ memory.event_time_end,
24141
+ memory.event_time_kind,
24142
+ memory.trust_tier,
24143
+ memory.visibility,
24144
+ memory.published_at,
24145
+ memory.geohash,
24146
+ memory.topics,
24147
+ memory.topics_user_managed,
24148
+ memory.media,
24149
+ memory.source
24150
+ ]);
24151
+ }
24152
+ function topicInputs(topics, source) {
24153
+ return topics.flatMap((topic) => {
24154
+ const name = (typeof topic === "string" ? topic : topic.name).trim();
24155
+ const kind = typeof topic === "string" ? void 0 : topic.kind;
24156
+ return name ? [{ name, ...kind && { kind }, source }] : [];
24157
+ });
24158
+ }
24159
+ function mergeTopics(existing, added) {
24160
+ const byName = /* @__PURE__ */ new Map();
24161
+ for (const topic of [...existing, ...added]) {
24162
+ const key = normalizeEntityName(topic.name);
24163
+ if (!byName.has(key)) byName.set(key, topic);
24164
+ }
24165
+ return [...byName.values()];
24166
+ }
24167
+ function canonicalTopics(row) {
24168
+ return new Set((parseTopics(row.topics) ?? []).map((topic) => normalizeEntityName(topic.name)));
24169
+ }
24170
+ function createRemoteMemoryStore(options) {
24171
+ const { persistence, embeddingOptions } = options;
24172
+ const model = embeddingOptions.model ?? DEFAULT_API_EMBEDDING_MODEL;
24173
+ const pollIntervalMs = options.pollIntervalMs ?? 6e4;
24174
+ const pipeline = createRemoteMemoryPipeline(options);
24175
+ const subscribers = /* @__PURE__ */ new Set();
24176
+ const seen = /* @__PURE__ */ new Map();
24177
+ let timer;
24178
+ const notify = (change, records = []) => {
24179
+ if (timer) for (const record2 of records) seen.set(record2.memory.memory_id, record2);
24180
+ for (const subscriber of [...subscribers])
24181
+ if (relevant(change, subscriber.options)) safely(subscriber.onChange);
24182
+ };
24183
+ const enumerate = async (filters, max = Infinity) => {
24184
+ const records = [];
24185
+ let cursor2;
24186
+ do {
24187
+ const page = await persistence.query({
24188
+ ...filters,
24189
+ limit: Math.min(200, Math.max(1, max - records.length)),
24190
+ ...cursor2 && { cursor: cursor2 }
24191
+ });
24192
+ warnFailed(page.failed);
24193
+ records.push(...page.items);
24194
+ cursor2 = page.next_cursor;
24195
+ } while (cursor2 && records.length < max);
24196
+ return records.slice(0, max);
24197
+ };
24198
+ const enumerateIds = async (ids, filters) => (await Promise.all(
24199
+ chunks([...new Set(ids)], MAX_QUERY_IDS).map(
24200
+ (memory_ids) => enumerate({ ...filters, memory_ids })
24201
+ )
24202
+ )).flat();
24203
+ const queues = /* @__PURE__ */ new Map();
24204
+ const serialized = (id, task) => {
24205
+ const run = (queues.get(id) ?? Promise.resolve()).then(task, task);
24206
+ const settled = run.catch(() => void 0);
24207
+ queues.set(id, settled);
24208
+ void settled.then(() => {
24209
+ if (queues.get(id) === settled) queues.delete(id);
24210
+ });
24211
+ return run;
24212
+ };
24213
+ const live = async (id) => {
24214
+ const record2 = await persistence.get(id);
24215
+ return record2 && !record2.memory.is_deleted ? record2 : null;
24216
+ };
24217
+ const mutate = async (id, change, edit) => serialized(id, async () => {
24218
+ const record2 = await live(id);
24219
+ if (!record2) return null;
24220
+ const next = edit(structuredClone(record2.memory));
24221
+ if (!next) return null;
24222
+ const saved = await persistence.put(next, record2);
24223
+ notify(change, [saved]);
24224
+ return saved;
24225
+ });
24226
+ const embedInBackground = ({ memory: { memory_id: id, content } }) => {
24227
+ generateEmbedding(content, embeddingOptions).then(
24228
+ (vector) => serialized(id, async () => {
24229
+ const current = await live(id);
24230
+ if (!current || current.memory.content !== content || current.memory.embedding?.length)
24231
+ return;
24232
+ const saved = await persistence.put(
24233
+ { ...current.memory, embedding: storedVector(vector), embedding_model: model },
24234
+ current
24235
+ );
24236
+ notify("embedding", [saved]);
24237
+ })
24238
+ ).catch((error) => {
24239
+ getLogger().warn("[memory/remote-store] Failed to embed memory:", error);
24240
+ });
24241
+ };
24242
+ const newRow = (input) => {
24243
+ const now = Date.now();
24244
+ const scope = input.scope ?? "private";
24245
+ return {
24246
+ memory_id: (0, import_uuid6.v7)(),
24247
+ content: input.content,
24248
+ scope,
24249
+ level: levelFromScope(scope),
24250
+ created_at: now,
24251
+ updated_at: now,
24252
+ is_deleted: false,
24253
+ ...input.embedding !== void 0 && {
24254
+ embedding: storedVector(JSON.parse(input.embedding)),
24255
+ embedding_model: input.embeddingModel ?? model
24256
+ },
24257
+ proof_count: 1,
24258
+ source: "manual",
24259
+ ...input.eventTime && {
24260
+ event_time_start: input.eventTime.start ?? void 0,
24261
+ event_time_end: input.eventTime.end ?? void 0,
24262
+ event_time_kind: input.eventTime.kind ?? void 0
24263
+ },
24264
+ fact_type: input.factType,
24265
+ geohash: input.geohash,
24266
+ visibility: "private",
24267
+ twin_opt_in: false
24268
+ };
24269
+ };
24270
+ const created = (records, inputs) => {
24271
+ records.forEach((record2, i) => {
24272
+ if (inputs[i].embedding === void 0) embedInBackground(record2);
24273
+ });
24274
+ notify("membership", records);
24275
+ return records.map((record2) => stored(record2.memory));
24276
+ };
24277
+ const asStored = (record2) => record2 ? stored(record2.memory) : null;
24278
+ const everyState = {
24279
+ include_deleted: true,
24280
+ include_archived: true,
24281
+ include_quarantined: true,
24282
+ include_superseded: true
24283
+ };
24284
+ const changesSince = async (cursor2, pending2) => {
24285
+ const records = [];
24286
+ const failed = /* @__PURE__ */ new Set();
24287
+ const collect = (page) => {
24288
+ warnFailed(page.failed);
24289
+ records.push(...page.items);
24290
+ for (const failure of page.failed) failed.add(failure.memory_id);
24291
+ };
24292
+ let resume = cursor2;
24293
+ let next;
24294
+ do {
24295
+ const page = await persistence.query({
24296
+ ...everyState,
24297
+ order: "changed",
24298
+ limit: 200,
24299
+ ...(next ?? resume) && { cursor: next ?? resume }
24300
+ });
24301
+ collect(page);
24302
+ resume = page.changes_cursor ?? resume;
24303
+ next = page.next_cursor;
24304
+ } while (next);
24305
+ for (const memory_ids of chunks([...pending2], MAX_QUERY_IDS)) {
24306
+ let retry;
24307
+ do {
24308
+ const page = await persistence.query({
24309
+ ...everyState,
24310
+ memory_ids,
24311
+ limit: 200,
24312
+ ...retry && { cursor: retry }
24313
+ });
24314
+ collect(page);
24315
+ retry = page.next_cursor;
24316
+ } while (retry);
24317
+ }
24318
+ return { records, resume, failed };
24319
+ };
24320
+ let generation = 0;
24321
+ let ready = false;
24322
+ let cursor;
24323
+ let pending = /* @__PURE__ */ new Set();
24324
+ let polling = false;
24325
+ const poll = () => {
24326
+ if (polling) return;
24327
+ polling = true;
24328
+ const current = generation;
24329
+ changesSince(cursor, pending).then(({ records, resume, failed }) => {
24330
+ if (current !== generation) return;
24331
+ const changed = /* @__PURE__ */ new Set();
24332
+ for (const record2 of records) {
24333
+ const id = record2.memory.memory_id;
24334
+ const previous = seen.get(id);
24335
+ seen.set(id, record2);
24336
+ if (!ready) continue;
24337
+ for (const subscriber of subscribers) {
24338
+ const before = previous && subscriptionKey(previous, subscriber.options);
24339
+ if (before !== subscriptionKey(record2, subscriber.options)) changed.add(subscriber);
24340
+ }
24341
+ }
24342
+ ready = true;
24343
+ cursor = resume;
24344
+ pending = failed;
24345
+ for (const subscriber of changed)
24346
+ if (subscribers.has(subscriber)) safely(subscriber.onChange);
24347
+ }).catch((error) => {
24348
+ getLogger().warn("[memory/remote-store] Subscription poll failed:", error);
24349
+ }).finally(() => {
24350
+ polling = false;
24351
+ });
24352
+ };
24353
+ return {
24354
+ list: async (listOptions = {}) => {
24355
+ const order = listOptions.since ? "updated" : "created";
24356
+ const filters = {
24357
+ ...stateFilters(listOptions),
24358
+ include_embeddings: true,
24359
+ order,
24360
+ ...listOptions.scopes?.length && { scopes: listOptions.scopes },
24361
+ ...listOptions.factTypes?.length && { fact_types: listOptions.factTypes },
24362
+ ...listOptions.visibility?.length && { visibility: listOptions.visibility },
24363
+ ...listOptions.since && { updated_after: listOptions.since.getTime() }
24364
+ };
24365
+ const max = listOptions.limit && listOptions.limit > 0 ? listOptions.limit : Infinity;
24366
+ const variants = bounded(filters, "scopes").flatMap((f) => bounded(f, "fact_types"));
24367
+ if (!listOptions.memoryIds && variants.length === 1)
24368
+ return (await enumerate(filters, max)).map((r) => stored(r.memory));
24369
+ const fetched = await Promise.all(
24370
+ variants.map(
24371
+ (variant) => listOptions.memoryIds ? enumerateIds(listOptions.memoryIds, variant) : enumerate(variant, max)
24372
+ )
24373
+ );
24374
+ const rows = [...new Map(fetched.flat().map((r) => [r.memory.memory_id, r])).values()].map((record2) => stored(record2.memory)).sort(
24375
+ (a, b) => order === "updated" ? b.updatedAt.getTime() - a.updatedAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1) : b.createdAt.getTime() - a.createdAt.getTime() || (a.uniqueId < b.uniqueId ? 1 : -1)
24376
+ );
24377
+ return rows.slice(0, max);
24378
+ },
24379
+ get: async (id) => asStored(await live(id)),
24380
+ listArchived: async () => (await enumerate({ archived_only: true, order: "archived", include_embeddings: true })).map(
24381
+ (record2) => stored(record2.memory)
24382
+ ),
24383
+ memoriesByTopics: async (names) => {
24384
+ const wanted = new Set(names.map(normalizeEntityName).filter(Boolean));
24385
+ const out = /* @__PURE__ */ new Map();
24386
+ const pages = await Promise.all(
24387
+ chunks([...wanted], MAX_QUERY_TOPICS).map((topics) => enumerate({ topics }))
24388
+ );
24389
+ for (const { memory } of pages.flat()) {
24390
+ const matched = [...canonicalTopics(memory)].filter((name) => wanted.has(name));
24391
+ if (matched.length) out.set(memory.memory_id, new Set(matched));
24392
+ }
24393
+ return out;
24394
+ },
24395
+ topicsByMemories: async (memoryIds) => {
24396
+ const out = /* @__PURE__ */ new Map();
24397
+ for (const { memory } of await enumerateIds(memoryIds, {
24398
+ include_archived: true,
24399
+ include_superseded: true,
24400
+ include_quarantined: true
24401
+ })) {
24402
+ const topics = canonicalTopics(memory);
24403
+ if (topics.size) out.set(memory.memory_id, topics);
24404
+ }
24405
+ return out;
24406
+ },
24407
+ create: async (input) => {
24408
+ const record2 = await persistence.put(newRow(input), 0);
24409
+ return created([record2], [input])[0];
24410
+ },
24411
+ createMany: async (inputs) => {
24412
+ const out = [];
24413
+ for (const batch of chunks(inputs, MAX_BATCH)) {
24414
+ let records;
24415
+ try {
24416
+ records = await persistence.putMany(
24417
+ batch.map((input) => ({ memory: newRow(input), expectedVersion: 0 }))
24418
+ );
24419
+ } catch (error) {
24420
+ if (out.length === 0) throw error;
24421
+ throw new RemoteMemoryPartialCreateError(out, error);
24422
+ }
24423
+ out.push(...created(records, batch));
24424
+ }
24425
+ return out;
24426
+ },
24427
+ update: async (id, patch) => {
24428
+ const saved = await mutate(id, "edit", (memory) => {
24429
+ if (memory.superseded_by) return null;
24430
+ memory.content = patch.content;
24431
+ memory.updated_at = Date.now();
24432
+ if (patch.scope !== void 0) {
24433
+ memory.level = levelForScopeChange(
24434
+ { level: memory.level, scope: memory.scope },
24435
+ patch.scope
24436
+ );
24437
+ memory.scope = patch.scope;
24438
+ }
24439
+ if (patch.factType !== void 0) memory.fact_type = patch.factType ?? void 0;
24440
+ if (patch.eventTime !== void 0) {
24441
+ memory.event_time_start = patch.eventTime?.start ?? void 0;
24442
+ memory.event_time_end = patch.eventTime?.end ?? void 0;
24443
+ memory.event_time_kind = patch.eventTime?.kind ?? void 0;
24444
+ }
24445
+ if (patch.embedding === void 0 || patch.embedding === null) {
24446
+ memory.embedding = [];
24447
+ delete memory.embedding_model;
24448
+ } else {
24449
+ memory.embedding = storedVector(JSON.parse(patch.embedding));
24450
+ memory.embedding_model = patch.embeddingModel ?? model;
24451
+ }
24452
+ return memory;
24453
+ });
24454
+ if (saved && patch.embedding === void 0) embedInBackground(saved);
24455
+ return asStored(saved);
24456
+ },
24457
+ delete: async (id) => !!await mutate(id, "membership", (memory) => ({ ...memory, is_deleted: true })),
24458
+ supersede: async (id, supersededById) => {
24459
+ if (id === supersededById) return false;
24460
+ const [first, second] = [id, supersededById].sort();
24461
+ return serialized(
24462
+ first,
24463
+ () => serialized(second, async () => {
24464
+ const [old, next] = await Promise.all([live(id), live(supersededById)]);
24465
+ if (!old || !next || old.memory.superseded_by || next.memory.superseded_by) return false;
24466
+ if (old.memory.kind !== void 0 && old.memory.kind !== null) return false;
24467
+ const saved = await persistence.putMany([
24468
+ {
24469
+ memory: { ...old.memory, superseded_by: supersededById, superseded_at: Date.now() },
24470
+ expectedVersion: old
24471
+ },
24472
+ { memory: next.memory, expectedVersion: next }
24473
+ ]);
24474
+ notify("membership", saved);
24475
+ return true;
24476
+ })
24477
+ );
24478
+ },
24479
+ archive: async (id) => !!await mutate(
24480
+ id,
24481
+ "edit",
24482
+ (memory) => memory.archived_at === void 0 || memory.archived_at === null ? { ...memory, archived_at: Date.now() } : null
24483
+ ),
24484
+ restore: (id) => serialized(id, async () => {
24485
+ const record2 = await live(id);
24486
+ if (!record2) return false;
24487
+ if (record2.memory.archived_at === void 0 || record2.memory.archived_at === null)
24488
+ return true;
24489
+ const { archived_at: _archivedAt, ...memory } = record2.memory;
24490
+ notify("edit", [await persistence.put(memory, record2)]);
24491
+ return true;
24492
+ }),
24493
+ setTopics: async (memoryId, topics) => asStored(
24494
+ await mutate(memoryId, "edit", (memory) => ({
24495
+ ...memory,
24496
+ topics: serializeTopics(mergeTopics([], topicInputs(topics, "user"))),
24497
+ topics_user_managed: true,
24498
+ topics_updated_at: Date.now()
24499
+ }))
24500
+ ),
24501
+ addTopics: async (memoryId, topics) => {
24502
+ const added = topicInputs(topics, "auto");
24503
+ const saved = await mutate(memoryId, "edit", (memory) => ({
24504
+ ...memory,
24505
+ topics: serializeTopics(mergeTopics(parseTopics(memory.topics) ?? [], added)),
24506
+ topics_updated_at: Date.now()
24507
+ }));
24508
+ if (!saved) return [];
24509
+ const now = /* @__PURE__ */ new Date();
24510
+ return mergeTopics([], added).map(
24511
+ (topic) => ({
24512
+ uniqueId: normalizeEntityName(topic.name),
24513
+ canonicalName: normalizeEntityName(topic.name),
24514
+ kind: topic.kind ?? null,
24515
+ createdAt: now,
24516
+ updatedAt: now
24517
+ })
24518
+ );
24519
+ },
24520
+ setVisibility: async (id, visibility, visibilityOptions) => asStored(
24521
+ await mutate(id, "edit", (memory) => {
24522
+ memory.visibility = visibility;
24523
+ if (visibility === "private") delete memory.published_at;
24524
+ else memory.published_at ?? (memory.published_at = Date.now());
24525
+ if (visibilityOptions?.twinOptIn !== void 0)
24526
+ memory.twin_opt_in = visibilityOptions.twinOptIn;
24527
+ return memory;
24528
+ })
24529
+ ),
24530
+ recall: (query, recallOptions) => pipeline.recall(query, recallOptions),
24531
+ retain: async (content, retainOptions) => {
24532
+ const result = await pipeline.retain(content, retainOptions);
24533
+ if (result.action === "create" || result.action === "supersede") notify("membership");
24534
+ else if (result.action === "update" || result.action === "merge") notify("edit");
24535
+ return result;
24536
+ },
24537
+ subscribe: (onChange, subscribeOptions = {}) => {
24538
+ const subscriber = { onChange, options: subscribeOptions };
24539
+ subscribers.add(subscriber);
24540
+ if (pollIntervalMs > 0 && !timer) {
24541
+ timer = setInterval(poll, pollIntervalMs);
24542
+ poll();
24543
+ }
24544
+ return () => {
24545
+ subscribers.delete(subscriber);
24546
+ if (subscribers.size || !timer) return;
24547
+ clearInterval(timer);
24548
+ timer = void 0;
24549
+ generation++;
24550
+ seen.clear();
24551
+ ready = false;
24552
+ cursor = void 0;
24553
+ pending = /* @__PURE__ */ new Set();
24554
+ };
24555
+ }
24556
+ };
24557
+ }
24558
+
23840
24559
  // src/lib/memory/synthesizeProfile.ts
23841
24560
  init_internalFlowMarker();
23842
24561
  init_logger();
@@ -24209,8 +24928,8 @@ async function synthesizeFacet(facet, ctx, options, prior) {
24209
24928
  memories
24210
24929
  });
24211
24930
  const noEvidence = result.basedOn.memoryIds.length === 0;
24212
- const { text: text12, legitimateEmpty } = extractFacetText(result.structuredOutput);
24213
- if (!text12 && !legitimateEmpty && !noEvidence) {
24931
+ const { text: text13, legitimateEmpty } = extractFacetText(result.structuredOutput);
24932
+ if (!text13 && !legitimateEmpty && !noEvidence) {
24214
24933
  getLogger().warn(
24215
24934
  "[memory/synthesizeProfile] facet synthesis returned degraded-empty; using fallback section",
24216
24935
  { facet: facet.key, recalledCount: result.basedOn.memoryIds.length }
@@ -24220,12 +24939,12 @@ async function synthesizeFacet(facet, ctx, options, prior) {
24220
24939
  const section = {
24221
24940
  key: facet.key,
24222
24941
  label: facet.label,
24223
- text: text12,
24942
+ text: text13,
24224
24943
  sourceMemoryIds: result.basedOn.memoryIds,
24225
24944
  generatedAt: Date.now()
24226
24945
  };
24227
- if (options.redactor && text12) {
24228
- const redacted = await options.redactor.redactTextAsync(text12);
24946
+ if (options.redactor && text13) {
24947
+ const redacted = await options.redactor.redactTextAsync(text13);
24229
24948
  section.text = redacted.text;
24230
24949
  }
24231
24950
  if (!legitimateEmpty && !noEvidence) {
@@ -24738,10 +25457,10 @@ function createDurableAutoExtractor(options) {
24738
25457
  const counted = error instanceof BatchFailureError || error instanceof LockedSourcesError && error.persistentIds.length > 0;
24739
25458
  if (!counted) return false;
24740
25459
  const prior = sessionFailures.get(job.id);
24741
- const count = prior?.head === head ? prior.count + 1 : 1;
24742
- sessionFailures.set(job.id, { head, count });
25460
+ const count2 = prior?.head === head ? prior.count + 1 : 1;
25461
+ sessionFailures.set(job.id, { head, count: count2 });
24743
25462
  const terminal = error instanceof BatchFailureError && error.terminal;
24744
- if (!terminal && count < MAX_ATTEMPTS) return false;
25463
+ if (!terminal && count2 < MAX_ATTEMPTS) return false;
24745
25464
  skippedThisSession.add(job.id);
24746
25465
  const now = clock();
24747
25466
  const lastCounted = failedAtOf(job, head);
@@ -25048,7 +25767,7 @@ async function verifyFactSupport(items, options) {
25048
25767
  }
25049
25768
  const maxEvidenceChars = Math.max(1, options.maxEvidenceChars ?? DEFAULT_MAX_EVIDENCE_CHARS);
25050
25769
  const redactor = resolvePiiRedactor(options.piiRedaction ?? true);
25051
- const safe = async (text12) => redactor ? (await redactor.redactTextAsync(text12)).text : text12;
25770
+ const safe = async (text13) => redactor ? (await redactor.redactTextAsync(text13)).text : text13;
25052
25771
  let truncatedCount = 0;
25053
25772
  const parts = [];
25054
25773
  for (const [i, item] of items.entries()) {
@@ -25105,7 +25824,7 @@ Which item numbers are supported?`,
25105
25824
  }
25106
25825
  return supported;
25107
25826
  }
25108
- function parseSupported(parsed, count) {
25827
+ function parseSupported(parsed, count2) {
25109
25828
  if (typeof parsed !== "object" || parsed === null) return null;
25110
25829
  const list = parsed.supported;
25111
25830
  if (!Array.isArray(list)) return null;
@@ -25113,7 +25832,7 @@ function parseSupported(parsed, count) {
25113
25832
  for (const raw of list) {
25114
25833
  const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
25115
25834
  if (!Number.isInteger(n)) continue;
25116
- if (n >= 1 && n <= count) out.add(n - 1);
25835
+ if (n >= 1 && n <= count2) out.add(n - 1);
25117
25836
  }
25118
25837
  return out;
25119
25838
  }
@@ -25164,7 +25883,7 @@ async function verifyMemoriesForPublish(memories, sources, options) {
25164
25883
  );
25165
25884
  const pending = [];
25166
25885
  for (const { index, uniqueId, content, ids } of withinBudget) {
25167
- const evidence = ids.map((id) => resolved.get(id) ?? null).filter((text12) => text12 !== null);
25886
+ const evidence = ids.map((id) => resolved.get(id) ?? null).filter((text13) => text13 !== null);
25168
25887
  const dropped = ids.length - evidence.length;
25169
25888
  if (ids.some((id) => unreadable.has(id))) {
25170
25889
  results[index] = {
@@ -25667,22 +26386,22 @@ function normalizeManualFactType(value) {
25667
26386
  function isSharedScope(scope) {
25668
26387
  return scope === "shared";
25669
26388
  }
25670
- async function notifyWritten(options, input, outcome) {
26389
+ async function notifyWritten(options, input, outcome2) {
25671
26390
  try {
25672
- await options?.onWritten?.({ input, outcome });
26391
+ await options?.onWritten?.({ input, outcome: outcome2 });
25673
26392
  } catch {
25674
26393
  }
25675
26394
  }
25676
- function describeWriteOutcome(outcome) {
25677
- switch (outcome.action) {
26395
+ function describeWriteOutcome(outcome2) {
26396
+ switch (outcome2.action) {
25678
26397
  case "create":
25679
- return `Memory saved successfully (ID: ${outcome.memoryId}).`;
26398
+ return `Memory saved successfully (ID: ${outcome2.memoryId}).`;
25680
26399
  case "update":
25681
26400
  case "supersede":
25682
- return `Memory saved successfully (ID: ${outcome.memoryId}); it replaces an earlier version of this fact.`;
26401
+ return `Memory saved successfully (ID: ${outcome2.memoryId}); it replaces an earlier version of this fact.`;
25683
26402
  case "merge":
25684
26403
  case "skip":
25685
- return `The vault already holds this fact (ID: ${outcome.memoryId}); it was noted as re-observed. Nothing new was created \u2014 do not save it again.`;
26404
+ return `The vault already holds this fact (ID: ${outcome2.memoryId}); it was noted as re-observed. Nothing new was created \u2014 do not save it again.`;
25686
26405
  case "suppressed":
25687
26406
  return "Not saved: this matches a memory the user previously deleted. Do not re-save it.";
25688
26407
  }
@@ -25788,9 +26507,9 @@ function createMemoryVaultTool(vaultCtx, options, embeddingOptions, cache) {
25788
26507
  ...folderId !== void 0 && { folderId },
25789
26508
  ...factType !== void 0 && { factType }
25790
26509
  };
25791
- const outcome = await options.write(input);
25792
- await notifyWritten(options, input, outcome);
25793
- return describeWriteOutcome(outcome);
26510
+ const outcome2 = await options.write(input);
26511
+ await notifyWritten(options, input, outcome2);
26512
+ return describeWriteOutcome(outcome2);
25794
26513
  }
25795
26514
  const created = await createVaultMemoryOp(vaultCtx, {
25796
26515
  content,
@@ -26079,10 +26798,10 @@ async function exportMarkdownToPdf(markdown, options) {
26079
26798
  function lineHeightMm(fontSizePt) {
26080
26799
  return ptToMm(fontSizePt) * lineHeight;
26081
26800
  }
26082
- function renderWrappedText(text12, x, maxW, fontSizePt, fontStyle = "normal", fontFamily = "Helvetica") {
26801
+ function renderWrappedText(text13, x, maxW, fontSizePt, fontStyle = "normal", fontFamily = "Helvetica") {
26083
26802
  doc.setFont(fontFamily, fontStyle);
26084
26803
  doc.setFontSize(fontSizePt);
26085
- const lines = doc.splitTextToSize(text12, maxW);
26804
+ const lines = doc.splitTextToSize(text13, maxW);
26086
26805
  const lh = lineHeightMm(fontSizePt);
26087
26806
  for (const line of lines) {
26088
26807
  ensureSpace(lh);
@@ -26164,10 +26883,10 @@ async function exportMarkdownToPdf(markdown, options) {
26164
26883
  const lh = lineHeightMm(opts.fontSize);
26165
26884
  for (let i = 0; i < items.length; i++) {
26166
26885
  const prefix = ordered ? `${(listToken.start || 1) + i}. ` : "\u2022 ";
26167
- const text12 = tokensToPlainText(items[i].tokens);
26886
+ const text13 = tokensToPlainText(items[i].tokens);
26168
26887
  ensureSpace(lh);
26169
26888
  doc.text(prefix, opts.margins.left, cursorY);
26170
- const listLines = doc.splitTextToSize(text12, itemW);
26889
+ const listLines = doc.splitTextToSize(text13, itemW);
26171
26890
  for (const line of listLines) {
26172
26891
  ensureSpace(lh);
26173
26892
  doc.text(line, indentX, cursorY);
@@ -26179,12 +26898,12 @@ async function exportMarkdownToPdf(markdown, options) {
26179
26898
  }
26180
26899
  case "blockquote": {
26181
26900
  const bqToken = token;
26182
- const text12 = tokensToPlainText(bqToken.tokens ?? []);
26901
+ const text13 = tokensToPlainText(bqToken.tokens ?? []);
26183
26902
  const indentX = opts.margins.left + SPACING.QUOTE_INDENT;
26184
26903
  const quoteW = cw - SPACING.QUOTE_INSET;
26185
26904
  doc.setFont("Helvetica", "italic");
26186
26905
  doc.setFontSize(opts.fontSize);
26187
- const bqLines = doc.splitTextToSize(text12, quoteW);
26906
+ const bqLines = doc.splitTextToSize(text13, quoteW);
26188
26907
  const lh = lineHeightMm(opts.fontSize);
26189
26908
  const blockH = bqLines.length * lh;
26190
26909
  ensureSpace(Math.min(blockH, 20));
@@ -26220,8 +26939,8 @@ async function exportMarkdownToPdf(markdown, options) {
26220
26939
  doc.setFont("Helvetica", fontStyle);
26221
26940
  doc.setFontSize(tableFontSize);
26222
26941
  const cellLines = cells.map((cell) => {
26223
- const text12 = tokensToPlainText(cell.tokens);
26224
- return doc.splitTextToSize(text12, cellContentW);
26942
+ const text13 = tokensToPlainText(cell.tokens);
26943
+ return doc.splitTextToSize(text13, cellContentW);
26225
26944
  });
26226
26945
  const maxLines = Math.max(1, ...cellLines.map((l) => l.length));
26227
26946
  ensureSpace(maxLines * lh + SPACING.SM);
@@ -26452,13 +27171,13 @@ async function withPdfDocument(pdfDataUrl, fn) {
26452
27171
  }
26453
27172
  }
26454
27173
  function joinPdfTextItems(items) {
26455
- let text12 = "";
27174
+ let text13 = "";
26456
27175
  for (const item of items) {
26457
27176
  if (!("str" in item)) continue;
26458
27177
  const { str, hasEOL } = item;
26459
- text12 += str + (hasEOL ? "\n" : " ");
27178
+ text13 += str + (hasEOL ? "\n" : " ");
26460
27179
  }
26461
- return text12.replace(/[ \t]+\n/g, "\n").trim();
27180
+ return text13.replace(/[ \t]+\n/g, "\n").trim();
26462
27181
  }
26463
27182
  function computeRenderScale(width, height) {
26464
27183
  const longest = Math.max(width, height);
@@ -26478,7 +27197,7 @@ async function extractPdfPageTexts(pdfDataUrl) {
26478
27197
  }
26479
27198
  async function extractTextFromPdf(pdfDataUrl) {
26480
27199
  const pageTexts = await extractPdfPageTexts(pdfDataUrl);
26481
- return pageTexts.filter((text12) => text12.trim()).join("\n\n");
27200
+ return pageTexts.filter((text13) => text13.trim()).join("\n\n");
26482
27201
  }
26483
27202
  async function renderPdfPages(pdfDataUrl, maxPages, pageNumbers) {
26484
27203
  return withPdfDocument(pdfDataUrl, async (pdf) => {
@@ -26520,8 +27239,8 @@ var MAX_IMAGE_PAGES = 20;
26520
27239
  var MIN_PAGE_TEXT_CHARS = 20;
26521
27240
  function selectPdfImagePages(pageTexts, maxImagePages = MAX_IMAGE_PAGES) {
26522
27241
  const needImage = [];
26523
- pageTexts.forEach((text12, index) => {
26524
- if (text12.trim().length < MIN_PAGE_TEXT_CHARS) needImage.push(index + 1);
27242
+ pageTexts.forEach((text13, index) => {
27243
+ if (text13.trim().length < MIN_PAGE_TEXT_CHARS) needImage.push(index + 1);
26525
27244
  });
26526
27245
  const limit = Math.max(0, maxImagePages);
26527
27246
  return { rendered: needImage.slice(0, limit), omitted: needImage.slice(limit) };
@@ -26580,10 +27299,10 @@ var PdfProcessor = class {
26580
27299
  textError
26581
27300
  );
26582
27301
  }
26583
- const text12 = (pageTexts ?? []).filter((t) => t.trim()).join("\n\n");
27302
+ const text13 = (pageTexts ?? []).filter((t) => t.trim()).join("\n\n");
26584
27303
  const { rendered, omitted } = pageTexts ? selectPdfImagePages(pageTexts) : { rendered: [], omitted: [] };
26585
27304
  if (pageTexts && rendered.length === 0 && omitted.length === 0) {
26586
- return text12.trim() ? { extractedText: text12, format: "plain" } : null;
27305
+ return text13.trim() ? { extractedText: text13, format: "plain" } : null;
26587
27306
  }
26588
27307
  let renderedPages;
26589
27308
  let pageCount = pageTexts?.length;
@@ -26596,7 +27315,7 @@ var PdfProcessor = class {
26596
27315
  pageCount = result.pageCount;
26597
27316
  }
26598
27317
  } catch (imageError) {
26599
- if (!text12.trim()) {
27318
+ if (!text13.trim()) {
26600
27319
  logger.error("[PdfProcessor] Image conversion also failed:", imageError);
26601
27320
  throw imageError;
26602
27321
  }
@@ -26608,7 +27327,7 @@ var PdfProcessor = class {
26608
27327
  const included = new Set(imagePages);
26609
27328
  const needImage = pageTexts ? [...rendered, ...omitted] : Array.from({ length: pageCount ?? 0 }, (_, i) => i + 1);
26610
27329
  const omittedPages = needImage.filter((n) => !included.has(n)).sort((a, b) => a - b);
26611
- if (images.length === 0 && !text12.trim()) {
27330
+ if (images.length === 0 && !text13.trim()) {
26612
27331
  logger.warn("[PdfProcessor] Image conversion also returned empty");
26613
27332
  return null;
26614
27333
  }
@@ -26617,9 +27336,9 @@ var PdfProcessor = class {
26617
27336
  );
26618
27337
  const imageNote = buildPdfImageNote(file.name, imagePages, omittedPages, pageCount);
26619
27338
  return {
26620
- extractedText: text12.trim() ? `${imageNote}
27339
+ extractedText: text13.trim() ? `${imageNote}
26621
27340
 
26622
- ${text12}` : imageNote,
27341
+ ${text13}` : imageNote,
26623
27342
  format: "plain",
26624
27343
  imageDataUrls: images.length > 0 ? images : void 0,
26625
27344
  metadata: {
@@ -26785,16 +27504,16 @@ var TextProcessor = class {
26785
27504
  async process(file) {
26786
27505
  try {
26787
27506
  const arrayBuffer = await dataUrlToArrayBuffer(file.dataUrl);
26788
- const text12 = decodeText(new Uint8Array(arrayBuffer));
26789
- if (!text12.trim()) {
27507
+ const text13 = decodeText(new Uint8Array(arrayBuffer));
27508
+ if (!text13.trim()) {
26790
27509
  return null;
26791
27510
  }
26792
27511
  return {
26793
- extractedText: text12,
27512
+ extractedText: text13,
26794
27513
  format: this.resolveFormat(file),
26795
27514
  metadata: {
26796
27515
  byteLength: arrayBuffer.byteLength,
26797
- characterCount: text12.length
27516
+ characterCount: text13.length
26798
27517
  }
26799
27518
  };
26800
27519
  } catch (error) {
@@ -26856,8 +27575,8 @@ var WordProcessor = class {
26856
27575
  /**
26857
27576
  * Count words in text
26858
27577
  */
26859
- countWords(text12) {
26860
- return text12.split(/\s+/).filter((w) => w.length > 0).length;
27578
+ countWords(text13) {
27579
+ return text13.split(/\s+/).filter((w) => w.length > 0).length;
26861
27580
  }
26862
27581
  };
26863
27582
 
@@ -27095,13 +27814,13 @@ function truncationMarker2(kept, total, fileName) {
27095
27814
  return `
27096
27815
  [truncated: showing the first ${kept} of ${total} characters of ${fileName}]`;
27097
27816
  }
27098
- function truncateText(text12, limit, fileName) {
27099
- if (text12.length <= limit) return { text: text12, truncated: false };
27817
+ function truncateText(text13, limit, fileName) {
27818
+ if (text13.length <= limit) return { text: text13, truncated: false };
27100
27819
  let end = Math.max(0, limit);
27101
- const code = text12.charCodeAt(end - 1);
27820
+ const code = text13.charCodeAt(end - 1);
27102
27821
  if (end > 0 && code >= 55296 && code <= 56319) end--;
27103
27822
  return {
27104
- text: `${text12.slice(0, end)}${truncationMarker2(end, text12.length, fileName)}`,
27823
+ text: `${text13.slice(0, end)}${truncationMarker2(end, text13.length, fileName)}`,
27105
27824
  truncated: true
27106
27825
  };
27107
27826
  }
@@ -27265,13 +27984,13 @@ async function preprocessFiles(files, options = {}) {
27265
27984
  Math.max(0, MAX_TOTAL_IMAGES - allImageUrls.length)
27266
27985
  );
27267
27986
  allImageUrls.push(...images.slice(0, keptImages));
27268
- const text12 = rewriteImageNote(result, file.name, keptImages);
27269
- const fitsWhole = text12.length <= Math.min(maxExtractedCharsPerFile, remaining);
27270
- const limit = fitsWhole ? text12.length : Math.min(
27987
+ const text13 = rewriteImageNote(result, file.name, keptImages);
27988
+ const fitsWhole = text13.length <= Math.min(maxExtractedCharsPerFile, remaining);
27989
+ const limit = fitsWhole ? text13.length : Math.min(
27271
27990
  maxExtractedCharsPerFile,
27272
- remaining - truncationMarker2(text12.length, text12.length, file.name).length
27991
+ remaining - truncationMarker2(text13.length, text13.length, file.name).length
27273
27992
  );
27274
- const capped = truncateText(text12, Math.max(0, limit), file.name);
27993
+ const capped = truncateText(text13, Math.max(0, limit), file.name);
27275
27994
  const formattedContent = formatExtractedContent(file.name, capped.text, result.format);
27276
27995
  totalChars += separatorLength + formattedContent.length;
27277
27996
  extractedTexts.push(formattedContent);
@@ -27514,11 +28233,11 @@ function createGetAuthenticatedUserTool(getAccessToken, requestAccess) {
27514
28233
  };
27515
28234
  }
27516
28235
  var MAX_RESPONSE_SIZE = 1e5;
27517
- function truncate(text12, maxLen) {
27518
- if (text12.length <= maxLen) return text12;
27519
- return text12.slice(0, maxLen) + `
28236
+ function truncate(text13, maxLen) {
28237
+ if (text13.length <= maxLen) return text13;
28238
+ return text13.slice(0, maxLen) + `
27520
28239
 
27521
- ... (truncated, ${text12.length - maxLen} characters omitted)`;
28240
+ ... (truncated, ${text13.length - maxLen} characters omitted)`;
27522
28241
  }
27523
28242
  function createGitHubApiTool(getAccessToken, requestAccess) {
27524
28243
  return {
@@ -27566,16 +28285,16 @@ IMPORTANT: For write operations (POST, PUT, PATCH, DELETE), always confirm with
27566
28285
  method,
27567
28286
  body: body ? JSON.stringify(body) : void 0
27568
28287
  });
27569
- const text12 = await resp.text();
28288
+ const text13 = await resp.text();
27570
28289
  if (!resp.ok) {
27571
- return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(text12, 500)}`;
28290
+ return `Error: GitHub API ${method} ${path} returned ${resp.status}: ${truncate(text13, 500)}`;
27572
28291
  }
27573
28292
  try {
27574
- const data = JSON.parse(text12);
28293
+ const data = JSON.parse(text13);
27575
28294
  const json4 = JSON.stringify(data);
27576
28295
  return truncate(json4, MAX_RESPONSE_SIZE);
27577
28296
  } catch {
27578
- return truncate(text12, MAX_RESPONSE_SIZE);
28297
+ return truncate(text13, MAX_RESPONSE_SIZE);
27579
28298
  }
27580
28299
  } catch (err) {
27581
28300
  if (err instanceof DOMException && err.name === "AbortError") {
@@ -28237,10 +28956,10 @@ function formatObjectAttr(obj) {
28237
28956
  });
28238
28957
  return `{ ${entries.join(", ")} }`;
28239
28958
  }
28240
- function isSafeJsxText(text12) {
28241
- if (/[<>{}&]/.test(text12)) return false;
28242
- if (/\n/.test(text12)) return false;
28243
- if (/^\s|\s$/.test(text12)) return false;
28959
+ function isSafeJsxText(text13) {
28960
+ if (/[<>{}&]/.test(text13)) return false;
28961
+ if (/\n/.test(text13)) return false;
28962
+ if (/^\s|\s$/.test(text13)) return false;
28244
28963
  return true;
28245
28964
  }
28246
28965
  function getId(node) {
@@ -31820,9 +32539,9 @@ New lines of conversation:
31820
32539
  {new_lines}
31821
32540
 
31822
32541
  New summary:`;
31823
- function estimateTokens(text12) {
31824
- if (!text12) return 0;
31825
- return Math.ceil(text12.length / 4);
32542
+ function estimateTokens(text13) {
32543
+ if (!text13) return 0;
32544
+ return Math.ceil(text13.length / 4);
31826
32545
  }
31827
32546
  var PER_MESSAGE_OVERHEAD_TOKENS = 4;
31828
32547
  var MAX_MESSAGES_PER_SUMMARIZATION = 20;
@@ -31882,14 +32601,14 @@ function splitMessagesAtThreshold(messages, tokenThreshold, minWindowMessages) {
31882
32601
  }
31883
32602
  async function redactSummaryPrompt(prompt, redactor, onPiiRedacted) {
31884
32603
  if (!redactor) return prompt;
31885
- const { text: text12, matches } = await redactor.redactTextAsync(prompt);
32604
+ const { text: text13, matches } = await redactor.redactTextAsync(prompt);
31886
32605
  if (matches.length > 0 && onPiiRedacted) {
31887
32606
  try {
31888
32607
  onPiiRedacted(matches);
31889
32608
  } catch {
31890
32609
  }
31891
32610
  }
31892
- return text12;
32611
+ return text13;
31893
32612
  }
31894
32613
  async function progressiveSummarize(options) {
31895
32614
  const {
@@ -32202,14 +32921,14 @@ var MaskScopedEmbeddingCache = class extends Map {
32202
32921
  this.inner = inner;
32203
32922
  this.masked = masked;
32204
32923
  }
32205
- key(text12) {
32206
- return `${this.masked ? "m" : "r"}:${text12}`;
32924
+ key(text13) {
32925
+ return `${this.masked ? "m" : "r"}:${text13}`;
32207
32926
  }
32208
- get(text12) {
32209
- return this.inner.get(this.key(text12));
32927
+ get(text13) {
32928
+ return this.inner.get(this.key(text13));
32210
32929
  }
32211
- set(text12, value) {
32212
- this.inner.set(this.key(text12), value);
32930
+ set(text13, value) {
32931
+ this.inner.set(this.key(text13), value);
32213
32932
  return this;
32214
32933
  }
32215
32934
  };
@@ -32864,11 +33583,11 @@ function useChatStorage(options) {
32864
33583
  [piiRedaction, currentConversationId]
32865
33584
  );
32866
33585
  const maskForEmbedding = (0, import_react6.useCallback)(
32867
- (text12) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text12) : text12,
33586
+ (text13) => isPiiRedactor(resolvedPiiRedaction) ? resolvedPiiRedaction.maskText(text13) : text13,
32868
33587
  [resolvedPiiRedaction]
32869
33588
  );
32870
33589
  const maskEmbeddingInput = (0, import_react6.useMemo)(
32871
- () => isPiiRedactor(resolvedPiiRedaction) ? (text12) => resolvedPiiRedaction.maskText(text12) : void 0,
33590
+ () => isPiiRedactor(resolvedPiiRedaction) ? (text13) => resolvedPiiRedaction.maskText(text13) : void 0,
32872
33591
  [resolvedPiiRedaction]
32873
33592
  );
32874
33593
  const vaultEmbeddingOptions = (0, import_react6.useMemo)(
@@ -33599,7 +34318,7 @@ function useChatStorage(options) {
33599
34318
  return {
33600
34319
  callRedactor: redactor,
33601
34320
  callPiiRedaction: forInnerSend,
33602
- maskForCall: (text12) => redactor ? redactor.maskText(text12) : text12
34321
+ maskForCall: (text13) => redactor ? redactor.maskText(text13) : text13
33603
34322
  };
33604
34323
  };
33605
34324
  const resolveThoughtProcess = () => finalizeThoughtProcess(getThoughtProcess?.() || thoughtProcess);
@@ -35925,13 +36644,13 @@ function useOCR() {
35925
36644
  const result = await import_tesseract.default.recognize(image, language);
35926
36645
  pageTexts.push(result.data.text);
35927
36646
  }
35928
- const text12 = pageTexts.join("\n\n");
35929
- if (!text12.trim()) {
36647
+ const text13 = pageTexts.join("\n\n");
36648
+ if (!text13.trim()) {
35930
36649
  getLogger().warn(`No text found in OCR source ${filename || "unknown"}`);
35931
36650
  return null;
35932
36651
  }
35933
36652
  return `[Context from OCR attachment ${filename || "unknown"}]:
35934
- ${text12}`;
36653
+ ${text13}`;
35935
36654
  } catch (err) {
35936
36655
  getLogger().error(`Failed to process OCR for ${file.filename || "unknown"}:`, err);
35937
36656
  return null;
@@ -35975,13 +36694,13 @@ function usePdf() {
35975
36694
  const contexts = await Promise.all(
35976
36695
  pdfFiles.map(async (file) => {
35977
36696
  try {
35978
- const text12 = await extractTextFromPdf(file.url);
35979
- if (!text12.trim()) {
36697
+ const text13 = await extractTextFromPdf(file.url);
36698
+ if (!text13.trim()) {
35980
36699
  getLogger().warn(`No text found in PDF ${file.filename}`);
35981
36700
  return null;
35982
36701
  }
35983
36702
  return `[Context from PDF attachment ${file.filename}]:
35984
- ${text12}`;
36703
+ ${text13}`;
35985
36704
  } catch (err) {
35986
36705
  getLogger().error(`Failed to process PDF ${file.filename}:`, err);
35987
36706
  return null;
@@ -37507,14 +38226,14 @@ function useVoice(options) {
37507
38226
  recognition.interimResults = false;
37508
38227
  recognition.lang = options?.language ?? "";
37509
38228
  recognition.onresult = (event) => {
37510
- let text12 = "";
38229
+ let text13 = "";
37511
38230
  for (let i = 0; i < event.results.length; i++) {
37512
38231
  const result = event.results[i];
37513
38232
  if (result && result.isFinal && result[0]) {
37514
- text12 += result[0].transcript + " ";
38233
+ text13 += result[0].transcript + " ";
37515
38234
  }
37516
38235
  }
37517
- nativeTextRef.current = text12.trim();
38236
+ nativeTextRef.current = text13.trim();
37518
38237
  };
37519
38238
  recognition.onerror = (event) => {
37520
38239
  if (event.error !== "aborted" && event.error !== "no-speech") {
@@ -37819,6 +38538,7 @@ function useWalletBinding(options = {}) {
37819
38538
  MEMORY_KINDS,
37820
38539
  MEMORY_LEVELS,
37821
38540
  MemoryEntityModel,
38541
+ MemoryKeyError,
37822
38542
  MemoryLevelError,
37823
38543
  NEVER_TTL_MS,
37824
38544
  NODE_BUDGET,
@@ -37833,6 +38553,7 @@ function useWalletBinding(options = {}) {
37833
38553
  RECALL_MAX_LIMIT,
37834
38554
  RECALL_TOOL_NAME,
37835
38555
  RemoteMemoryError,
38556
+ RemoteMemoryPartialCreateError,
37836
38557
  RerankerUnavailableError,
37837
38558
  SDK_SCHEMA_VERSION,
37838
38559
  SERVER_TOOL_DEPENDENCY_SETS,
@@ -37926,6 +38647,7 @@ function useWalletBinding(options = {}) {
37926
38647
  createRecallTool,
37927
38648
  createRemoteMemoryPersistence,
37928
38649
  createRemoteMemoryPipeline,
38650
+ createRemoteMemoryStore,
37929
38651
  createSavedToolOp,
37930
38652
  createServerToolsFilter,
37931
38653
  createStockPricePreProcessor,
@@ -37957,6 +38679,7 @@ function useWalletBinding(options = {}) {
37957
38679
  deleteVaultMemoryOp,
37958
38680
  dequantizeEmbedding,
37959
38681
  deriveKeyFromSignatureBytes,
38682
+ deriveMemoryKeyRing,
37960
38683
  eagerEmbedContent,
37961
38684
  embedAllMessages,
37962
38685
  embedMessage,
@@ -37976,6 +38699,7 @@ function useWalletBinding(options = {}) {
37976
38699
  extractFacts,
37977
38700
  extractFileIds,
37978
38701
  extractMCPImageUrls,
38702
+ extractReservationReceipts,
37979
38703
  fileExists,
37980
38704
  findById,
37981
38705
  findMatchingTools,
@@ -38096,6 +38820,7 @@ function useWalletBinding(options = {}) {
38096
38820
  linkMemoryEntitiesOp,
38097
38821
  maskScopedEmbeddingCache,
38098
38822
  mediaToStored,
38823
+ memoryCipher,
38099
38824
  migrateCalendarToken,
38100
38825
  migrateDisplayResult,
38101
38826
  migrateDriveToken,
@@ -38117,6 +38842,7 @@ function useWalletBinding(options = {}) {
38117
38842
  rankProfileCandidates,
38118
38843
  readEncryptedFile,
38119
38844
  recall,
38845
+ reencryptMemoryField,
38120
38846
  reflect,
38121
38847
  refreshCalendarToken,
38122
38848
  refreshDriveToken,