{"version":3,"file":"cleaker.cjs","sources":["../src/protocol/errors.ts","../src/parse/grammar.ts","../src/parse/parseMeTarget.ts","../src/parse/parseTarget.ts","../src/constants.ts","../src/pointer/remotePointer.ts","../src/namespace/expression.ts","../src/binder.ts","../src/cleaker.ts"],"sourcesContent":["export class CleakerError extends Error {\n  readonly code: string;\n  readonly details?: Record<string, unknown>;\n\n  constructor(code: string, message: string, details?: Record<string, unknown>) {\n    super(message);\n    this.name = 'CleakerError';\n    this.code = code;\n    this.details = details;\n  }\n}\n\nexport class CleakerParseError extends CleakerError {\n  constructor(message: string, details?: Record<string, unknown>) {\n    super('PARSE_TARGET_FAILED', message, details);\n    this.name = 'CleakerParseError';\n  }\n}\n","export const ME_SCHEME = 'me://';\nexport const CONTEXT_OPEN = '[';\nexport const CONTEXT_CLOSE = ']';\nexport const CONTEXT_BRANCH_SEPARATOR = '|';\nexport const CONTEXT_AND_SEPARATOR = ';';\nexport const CONTEXT_VALUE_SEPARATOR = ',';\n","import { CleakerParseError } from '../protocol/errors';\nimport {\n  CONTEXT_AND_SEPARATOR,\n  CONTEXT_BRANCH_SEPARATOR,\n  CONTEXT_OPEN,\n  CONTEXT_CLOSE,\n  CONTEXT_VALUE_SEPARATOR,\n  ME_SCHEME,\n} from './grammar';\nimport type {\n  MeTargetContextAtom,\n  MeTargetContextClause,\n  MeTargetContextSet,\n  ParseTargetOptions,\n  ParsedTarget,\n} from '../types/target';\n\nfunction normalizeInput(input: string): string {\n  const raw = String(input ?? '').trim();\n  if (!raw) throw new CleakerParseError('Target cannot be empty');\n  return raw;\n}\n\nfunction stripScheme(raw: string): string {\n  if (raw.startsWith(ME_SCHEME)) return raw.slice(ME_SCHEME.length);\n  return raw;\n}\n\nfunction findTokenOutsideContext(input: string, token: string, start = 0): number {\n  let depth = 0;\n  for (let index = start; index < input.length; index += 1) {\n    const char = input[index];\n    if (char === CONTEXT_OPEN) {\n      depth += 1;\n      continue;\n    }\n    if (char === CONTEXT_CLOSE) {\n      depth = Math.max(0, depth - 1);\n      continue;\n    }\n    if (depth === 0 && char === token) return index;\n  }\n  return -1;\n}\n\nfunction ensureBalancedContext(input: string): void {\n  let depth = 0;\n  for (const char of input) {\n    if (char === CONTEXT_OPEN) depth += 1;\n    if (char === CONTEXT_CLOSE) depth -= 1;\n    if (depth < 0) {\n      throw new CleakerParseError('Target has an unexpected closing context bracket', { raw: input });\n    }\n  }\n  if (depth !== 0) {\n    throw new CleakerParseError('Target has an unclosed context bracket', { raw: input });\n  }\n}\n\nfunction expandClauseWithAtom(\n  clauses: MeTargetContextClause[],\n  atomKey: string,\n  values: string[],\n): MeTargetContextClause[] {\n  const next: MeTargetContextClause[] = [];\n  for (const clause of clauses) {\n    for (const value of values) {\n      next.push([\n        ...clause,\n        {\n          key: atomKey,\n          value,\n          raw: `${atomKey}:${value}`,\n        },\n      ]);\n    }\n  }\n  return next;\n}\n\nfunction parseContext(raw: string | null): MeTargetContextSet {\n  const value = String(raw ?? '').trim();\n  if (!value) return [];\n\n  const groups = value\n    .split(CONTEXT_BRANCH_SEPARATOR)\n    .map((group) => group.trim())\n    .filter(Boolean);\n\n  const clauses: MeTargetContextSet = [];\n  for (const group of groups) {\n    const parts = group\n      .split(CONTEXT_AND_SEPARATOR)\n      .map((part) => part.trim())\n      .filter(Boolean);\n\n    let expanded: MeTargetContextClause[] = [[]];\n    for (const part of parts) {\n      const colon = part.indexOf(':');\n      if (colon < 0) {\n        throw new CleakerParseError('Context atoms must match key:value', { raw: part });\n      }\n\n      const key = part.slice(0, colon).trim().toLowerCase();\n      const rest = part.slice(colon + 1).trim();\n      if (!key || !rest) {\n        throw new CleakerParseError('Context atoms must match key:value', { raw: part });\n      }\n\n      const values = rest\n        .split(CONTEXT_VALUE_SEPARATOR)\n        .map((item) => item.trim())\n        .filter(Boolean);\n\n      if (values.length === 0) {\n        throw new CleakerParseError('Context atoms must include at least one value', { raw: part });\n      }\n\n      expanded = expandClauseWithAtom(expanded, key, values);\n    }\n\n    clauses.push(...expanded);\n  }\n\n  return clauses;\n}\n\nfunction extractNamespaceParts(namespaceToken: string): {\n  base: string;\n  contextRaw: string | null;\n  context: MeTargetContextSet;\n} {\n  const trimmed = String(namespaceToken || '').trim();\n  if (!trimmed) {\n    throw new CleakerParseError('Namespace cannot be empty', { raw: namespaceToken });\n  }\n\n  const openIndex = trimmed.indexOf(CONTEXT_OPEN);\n  if (openIndex < 0) {\n    return {\n      base: trimmed,\n      contextRaw: null,\n      context: [],\n    };\n  }\n\n  const closeIndex = trimmed.lastIndexOf(CONTEXT_CLOSE);\n  if (closeIndex !== trimmed.length - 1 || closeIndex < openIndex) {\n    throw new CleakerParseError('Namespace context must appear at the end of the namespace', {\n      raw: namespaceToken,\n    });\n  }\n\n  const base = trimmed.slice(0, openIndex).trim();\n  const contextRaw = trimmed.slice(openIndex + 1, closeIndex).trim();\n  if (!base) {\n    throw new CleakerParseError('Namespace cannot be empty', { raw: namespaceToken });\n  }\n\n  return {\n    base,\n    contextRaw,\n    context: parseContext(contextRaw),\n  };\n}\n\nfunction deriveCompatibilityNamespace(base: string) {\n  const segments = base\n    .split('/')\n    .map((segment) => segment.trim())\n    .filter(Boolean);\n  const head = segments[0] || base;\n  const labels = head.split('.').filter(Boolean);\n\n  if (labels.length === 0) {\n    throw new CleakerParseError('Namespace is missing constant', { raw: base });\n  }\n\n  const constant = labels[labels.length - 1];\n  const prefix = labels.length > 1 ? labels.slice(0, -1).join('.') : null;\n\n  return {\n    segments,\n    constant,\n    prefix,\n  };\n}\n\nfunction stringifyContext(context: MeTargetContextSet): string | null {\n  if (!Array.isArray(context) || context.length === 0) return null;\n  return context\n    .map((clause) => clause.map((atom) => `${atom.key}:${atom.value}`).join(CONTEXT_AND_SEPARATOR))\n    .join(CONTEXT_BRANCH_SEPARATOR);\n}\n\nexport function stringifyMeTarget(target: Pick<ParsedTarget, 'namespace' | 'operation' | 'path'>): string {\n  const namespace = String(target.namespace.fqdn || '').trim();\n  if (!namespace) throw new CleakerParseError('Namespace cannot be empty');\n\n  const operation = String(target.operation || '').trim();\n  if (!operation) throw new CleakerParseError('Operation cannot be empty');\n\n  const path = String(target.path || '').trim().replace(/^\\/+/, '');\n  if (!path) throw new CleakerParseError('Path cannot be empty');\n\n  const context = stringifyContext(target.namespace.context);\n  const namespaceToken = context ? `${namespace}[${context}]` : namespace;\n\n  return `${ME_SCHEME}${namespaceToken}:${operation}/${path}`;\n}\n\n/**\n * @deprecated Compatibility parser for the older `me://namespace:operation/path`\n * target grammar. New namespace/context work should use\n * `parseNamespaceExpression()` from `src/namespace/expression.ts`.\n */\nexport function parseMeTarget(input: string, options: ParseTargetOptions = {}): ParsedTarget {\n  const raw = normalizeInput(input);\n  ensureBalancedContext(raw);\n\n  const body = stripScheme(raw).replace(/^\\/+/, '').trim();\n  if (!body) throw new CleakerParseError('Target cannot be empty');\n\n  const operationSeparator = findTokenOutsideContext(body, ':');\n  const operationMissing = operationSeparator < 0;\n  if (operationMissing && !options.allowShorthandRead) {\n    throw new CleakerParseError('Target must match namespace[context]:operation/path', { raw });\n  }\n\n  const pathSeparator = operationMissing\n    ? findTokenOutsideContext(body, '/')\n    : findTokenOutsideContext(body, '/', operationSeparator + 1);\n\n  if (pathSeparator < 0) {\n    throw new CleakerParseError('Path cannot be empty', { raw });\n  }\n\n  const namespaceToken = body.slice(0, operationMissing ? pathSeparator : operationSeparator).trim();\n  const operationToken = operationMissing\n    ? 'read'\n    : body.slice(operationSeparator + 1, pathSeparator).trim();\n  const path = body.slice(pathSeparator + 1).trim().replace(/^\\/+/, '');\n\n  if (!namespaceToken) throw new CleakerParseError('Namespace cannot be empty', { raw });\n  if (!operationToken) throw new CleakerParseError('Operation cannot be empty', { raw });\n  if (!path) throw new CleakerParseError('Path cannot be empty', { raw });\n\n  const namespace = extractNamespaceParts(namespaceToken);\n  const compatibility = deriveCompatibilityNamespace(namespace.base.toLowerCase());\n\n  const parsed: ParsedTarget = {\n    scheme: 'me',\n    raw: '',\n    namespace: {\n      prefix: compatibility.prefix,\n      constant: compatibility.constant,\n      fqdn: namespace.base,\n      segments: compatibility.segments,\n      contextRaw: namespace.contextRaw,\n      context: namespace.context,\n    },\n    intent: {\n      selector: operationToken,\n      path,\n      mode: options.defaultMode ?? 'reactive',\n    },\n    operation: operationToken,\n    path,\n  };\n\n  parsed.raw = stringifyMeTarget(parsed);\n  return parsed;\n}\n","import type { ParseTargetOptions, ParsedTarget } from '../types/target';\nimport { parseMeTarget } from './parseMeTarget';\n\n/**\n * Compatibility wrapper for remote pointer targets.\n *\n * The contextual namespace grammar lives in `parseNamespaceExpression()`;\n * this parser remains for `cleaker(\"me://...\")` remote pointer support.\n */\nexport function parseTarget(input: string, options: ParseTargetOptions = {}): ParsedTarget {\n  return parseMeTarget(input, options);\n}\n","export const DEFAULT_CLEAKER_NAMESPACE_SURFACE_ORIGIN = 'https://cleaker.me';\nexport const DEFAULT_CLEAKER_LOCAL_SURFACE_ORIGIN = 'http://localhost';\nexport const DEFAULT_CLEAKER_LAN_PORT = 8161;\n\n// Backward-compatible aliases. These now represent host-level default surfaces,\n// not port-pinned daemon channels.\nexport const DEFAULT_CLEAKER_NAMESPACE_ORIGIN = DEFAULT_CLEAKER_NAMESPACE_SURFACE_ORIGIN;\nexport const DEFAULT_CLEAKER_DEVELOPMENT_ORIGIN = DEFAULT_CLEAKER_LOCAL_SURFACE_ORIGIN;\n","import type { ParsedTarget } from '../types/target';\nimport { DEFAULT_CLEAKER_NAMESPACE_ORIGIN } from '../constants';\nimport type {\n  RemotePointerDefinition,\n  RemotePointerPayload,\n  ResolvePointerOptions,\n  ResolvePointerResult,\n} from '../types/pointer';\n\nexport interface CreateRemotePointerOptions {\n  preferredTransport?: string[];\n  cacheTtl?: number;\n  resolveLocalTarget?: (target: ParsedTarget) => unknown | Promise<unknown>;\n}\n\nexport function createRemotePointer(\n  target: ParsedTarget,\n  options: CreateRemotePointerOptions = {},\n): RemotePointerDefinition {\n  const payload: RemotePointerPayload = {\n    kind: 'remote',\n    target,\n    identity: {\n      constant: target.namespace.constant,\n      prefix: target.namespace.prefix,\n    },\n    intent: {\n      selector: target.intent.selector,\n      path: target.intent.path,\n      mode: target.intent.mode,\n    },\n    resolution: {\n      status: 'unresolved',\n      namespaceRecordVerified: false,\n      sessionToken: null,\n      lastError: null,\n    },\n    operationalState: {\n      latencyMs: null,\n      lastSync: null,\n      cacheTtl: options.cacheTtl ?? 300,\n      stale: false,\n    },\n    transport: {\n      preferred: options.preferredTransport ?? ['quic', 'https'],\n      protocol: null,\n      resolvedEndpoint: null,\n    },\n  };\n\n  async function resolve(resolveOptions: ResolvePointerOptions = {}): Promise<ResolvePointerResult> {\n    const isSovereignTarget =\n      target.namespace.prefix === null &&\n      (target.namespace.constant === 'local' || target.namespace.constant === 'self');\n    const origin = String(resolveOptions.origin || DEFAULT_CLEAKER_NAMESPACE_ORIGIN).replace(/\\/+$/, '');\n    const dotPath = String(target.intent.path || '').trim().replace(/^\\/+/, '');\n    const endpoint = `${origin}/${dotPath}`;\n    const startedAt = Date.now();\n\n    payload.resolution.status = 'resolving';\n    payload.resolution.lastError = null;\n    payload.transport.protocol = isSovereignTarget ? 'local' : origin.startsWith('https://') ? 'https' : 'http';\n    payload.transport.resolvedEndpoint = isSovereignTarget ? target.raw : endpoint;\n\n    if (isSovereignTarget && options.resolveLocalTarget) {\n      try {\n        const value = await options.resolveLocalTarget(target);\n        const elapsedMs = Date.now() - startedAt;\n        payload.operationalState.latencyMs = elapsedMs;\n        payload.operationalState.lastSync = Date.now();\n        payload.resolution.status = 'connected';\n        payload.resolution.namespaceRecordVerified = true;\n        payload.operationalState.stale = false;\n\n        return {\n          ok: true,\n          status: 200,\n          endpoint: target.raw,\n          elapsedMs,\n          data: {\n            ok: true,\n            namespace: target.namespace.constant,\n            path: target.intent.path,\n            value,\n          },\n        };\n      } catch (error) {\n        const elapsedMs = Date.now() - startedAt;\n        payload.operationalState.latencyMs = elapsedMs;\n        payload.operationalState.lastSync = Date.now();\n        payload.resolution.status = 'error';\n        payload.resolution.lastError = error instanceof Error ? error.message : String(error);\n        payload.operationalState.stale = false;\n\n        return {\n          ok: false,\n          status: 500,\n          endpoint: target.raw,\n          elapsedMs,\n          data: {\n            ok: false,\n            error: payload.resolution.lastError,\n          },\n        };\n      }\n    }\n\n    const fetcher = resolveOptions.fetcher || fetch;\n    const host = String(resolveOptions.host || target.namespace.fqdn || '').trim();\n    const headers: Record<string, string> = {\n      ...(resolveOptions.headers || {}),\n    };\n    if (host && !headers.host && !headers.Host) {\n      headers.host = host;\n    }\n\n    try {\n      const response = await fetcher(endpoint, {\n        method: 'GET',\n        headers,\n      });\n\n      let data: unknown = null;\n      try {\n        data = await response.json();\n      } catch {\n        data = await response.text();\n      }\n\n      const elapsedMs = Date.now() - startedAt;\n      payload.operationalState.latencyMs = elapsedMs;\n      payload.operationalState.lastSync = Date.now();\n\n      if (response.ok) {\n        payload.resolution.status = 'connected';\n        payload.resolution.namespaceRecordVerified = true;\n        payload.operationalState.stale = false;\n      } else {\n        payload.resolution.status = response.status === 401 || response.status === 403\n          ? 'unauthorized'\n          : 'error';\n        payload.resolution.lastError = `HTTP_${response.status}`;\n      }\n\n      return {\n        ok: response.ok,\n        status: response.status,\n        endpoint,\n        elapsedMs,\n        data,\n      };\n    } catch (error) {\n      const elapsedMs = Date.now() - startedAt;\n      payload.operationalState.latencyMs = elapsedMs;\n      payload.operationalState.lastSync = Date.now();\n      payload.resolution.status = 'timeout';\n      payload.resolution.lastError = error instanceof Error ? error.message : String(error);\n      payload.operationalState.stale = true;\n\n      return {\n        ok: false,\n        status: 0,\n        endpoint,\n        elapsedMs,\n        data: {\n          ok: false,\n          error: payload.resolution.lastError,\n        },\n      };\n    }\n  }\n\n  return { __ptr: payload, resolve };\n}\n","import { CleakerParseError } from '../protocol/errors';\nimport {\n  CONTEXT_AND_SEPARATOR,\n  CONTEXT_BRANCH_SEPARATOR,\n  CONTEXT_CLOSE,\n  CONTEXT_OPEN,\n  CONTEXT_VALUE_SEPARATOR,\n  ME_SCHEME,\n} from '../parse/grammar';\nimport type {\n  NamespaceSelectorAtom,\n  NamespaceSelectorClause,\n  NamespaceSelectorSet,\n  ParsedNamespaceExpression,\n} from '../types/namespace';\n\nfunction normalizeInput(input: string): string {\n  const raw = String(input ?? '').trim();\n  if (!raw) throw new CleakerParseError('Namespace cannot be empty');\n  return raw;\n}\n\nfunction stripScheme(raw: string): string {\n  if (raw.startsWith(ME_SCHEME)) return raw.slice(ME_SCHEME.length);\n  return raw;\n}\n\nfunction ensureBalancedContext(input: string): void {\n  let depth = 0;\n  for (const char of input) {\n    if (char === CONTEXT_OPEN) depth += 1;\n    if (char === CONTEXT_CLOSE) depth -= 1;\n    if (depth < 0) {\n      throw new CleakerParseError('Namespace has an unexpected closing context bracket', { raw: input });\n    }\n  }\n  if (depth !== 0) {\n    throw new CleakerParseError('Namespace has an unclosed context bracket', { raw: input });\n  }\n}\n\nfunction findTokenOutsideContext(input: string, token: string, start = 0): number {\n  let depth = 0;\n  for (let index = start; index < input.length; index += 1) {\n    const char = input[index];\n    if (char === CONTEXT_OPEN) {\n      depth += 1;\n      continue;\n    }\n    if (char === CONTEXT_CLOSE) {\n      depth = Math.max(0, depth - 1);\n      continue;\n    }\n    if (depth === 0 && char === token) return index;\n  }\n  return -1;\n}\n\nfunction expandClauseWithAtom(\n  clauses: NamespaceSelectorClause[],\n  atomKey: string,\n  values: string[],\n): NamespaceSelectorClause[] {\n  const next: NamespaceSelectorClause[] = [];\n  for (const clause of clauses) {\n    for (const value of values) {\n      next.push([\n        ...clause,\n        {\n          key: atomKey,\n          value,\n          raw: `${atomKey}:${value}`,\n        },\n      ]);\n    }\n  }\n  return next;\n}\n\nfunction parseContext(raw: string | null): NamespaceSelectorSet {\n  const value = String(raw ?? '').trim();\n  if (!value) return [];\n\n  const groups = value\n    .split(CONTEXT_BRANCH_SEPARATOR)\n    .map((group) => group.trim())\n    .filter(Boolean);\n\n  const clauses: NamespaceSelectorSet = [];\n  for (const group of groups) {\n    const parts = group\n      .split(CONTEXT_AND_SEPARATOR)\n      .map((part) => part.trim())\n      .filter(Boolean);\n\n    let expanded: NamespaceSelectorClause[] = [[]];\n    for (const part of parts) {\n      const colon = part.indexOf(':');\n      if (colon < 0) {\n        throw new CleakerParseError('Namespace selectors must match key:value', { raw: part });\n      }\n\n      const key = part.slice(0, colon).trim().toLowerCase();\n      const rest = part.slice(colon + 1).trim();\n      if (!key || !rest) {\n        throw new CleakerParseError('Namespace selectors must match key:value', { raw: part });\n      }\n\n      const values = rest\n        .split(CONTEXT_VALUE_SEPARATOR)\n        .map((item) => item.trim())\n        .filter(Boolean);\n\n      if (values.length === 0) {\n        throw new CleakerParseError('Namespace selectors must include at least one value', { raw: part });\n      }\n\n      expanded = expandClauseWithAtom(expanded, key, values);\n    }\n\n    clauses.push(...expanded);\n  }\n\n  return clauses;\n}\n\nfunction extractNamespaceParts(namespaceToken: string): {\n  base: string;\n  contextRaw: string | null;\n  context: NamespaceSelectorSet;\n} {\n  const trimmed = String(namespaceToken || '').trim();\n  if (!trimmed) {\n    throw new CleakerParseError('Namespace cannot be empty', { raw: namespaceToken });\n  }\n\n  const openIndex = trimmed.indexOf(CONTEXT_OPEN);\n  if (openIndex < 0) {\n    return {\n      base: trimmed,\n      contextRaw: null,\n      context: [],\n    };\n  }\n\n  const closeIndex = trimmed.lastIndexOf(CONTEXT_CLOSE);\n  if (closeIndex !== trimmed.length - 1 || closeIndex < openIndex) {\n    throw new CleakerParseError('Namespace context must appear at the end of the namespace', {\n      raw: namespaceToken,\n    });\n  }\n\n  const base = trimmed.slice(0, openIndex).trim();\n  const contextRaw = trimmed.slice(openIndex + 1, closeIndex).trim();\n  if (!base) {\n    throw new CleakerParseError('Namespace cannot be empty', { raw: namespaceToken });\n  }\n\n  return {\n    base,\n    contextRaw,\n    context: parseContext(contextRaw),\n  };\n}\n\nfunction normalizeBaseToken(raw: string): { host: string; labels: string[]; port: number | null } {\n  const candidate = String(raw || '').trim().replace(/^https?:\\/\\//i, '');\n  if (!candidate) throw new CleakerParseError('Namespace base cannot be empty', { raw });\n\n  const slash = candidate.indexOf('/');\n  const hostToken = (slash >= 0 ? candidate.slice(0, slash) : candidate).trim().toLowerCase();\n  const portMatch = hostToken.match(/:(\\d+)$/);\n  const port = portMatch ? Number(portMatch[1]) : null;\n  const host = portMatch ? hostToken.slice(0, -portMatch[0].length) : hostToken;\n  const labels = host.split('.').map((label) => label.trim()).filter(Boolean);\n\n  if (!host || labels.length === 0) {\n    throw new CleakerParseError('Namespace base cannot be empty', { raw });\n  }\n\n  return { host, labels, port };\n}\n\nfunction deriveConstantAndPrefix(base: string): {\n  fqdn: string;\n  prefix: string | null;\n  constant: string;\n  labels: string[];\n  port: number | null;\n} {\n  const normalized = normalizeBaseToken(base);\n  const portSuffix = normalized.port == null ? '' : `:${normalized.port}`;\n\n  if (normalized.labels.length === 2 && normalized.labels[1] === 'localhost') {\n    return {\n      fqdn: `${normalized.host}${portSuffix}`,\n      prefix: normalized.labels[0] || null,\n      constant: `localhost${portSuffix}`,\n      labels: normalized.labels,\n      port: normalized.port,\n    };\n  }\n\n  if (normalized.labels.length <= 2) {\n    return {\n      fqdn: `${normalized.host}${portSuffix}`,\n      prefix: null,\n      constant: `${normalized.host}${portSuffix}`,\n      labels: normalized.labels,\n      port: normalized.port,\n    };\n  }\n\n  return {\n    fqdn: `${normalized.host}${portSuffix}`,\n    prefix: normalized.labels[0] || null,\n    constant: `${normalized.labels.slice(1).join('.')}${portSuffix}`,\n    labels: normalized.labels,\n    port: normalized.port,\n  };\n}\n\nfunction isLocalishHost(host: string): boolean {\n  const normalized = String(host || '').trim().toLowerCase();\n  return /^(localhost|127(?:\\.\\d{1,3}){3}|0\\.0\\.0\\.0)$/.test(normalized) || /\\.local$/.test(normalized);\n}\n\nfunction findSelectorValue(context: NamespaceSelectorSet, selectorType: string): string | null {\n  const key = String(selectorType || '').trim().toLowerCase();\n  if (!key) return null;\n\n  for (const clause of context) {\n    for (const atom of clause) {\n      if (atom.key === key) return atom.value;\n    }\n  }\n\n  return null;\n}\n\nfunction resolveTransport(base: string, context: NamespaceSelectorSet): ParsedNamespaceExpression['transport'] {\n  const normalized = normalizeBaseToken(base);\n  const overrideHost =\n    findSelectorValue(context, 'host') ||\n    findSelectorValue(context, 'hostname') ||\n    findSelectorValue(context, 'device');\n  const overrideProtocol = findSelectorValue(context, 'protocol');\n  const overridePort = findSelectorValue(context, 'port');\n\n  const hostToken = String(overrideHost || normalized.host).trim().toLowerCase();\n  const hostHasPort = /:\\d+$/.test(hostToken);\n  const hostBase = hostHasPort ? hostToken.replace(/:\\d+$/, '') : hostToken;\n  const portFromHost = hostHasPort ? Number(hostToken.match(/:(\\d+)$/)?.[1] || 0) || null : null;\n  const port =\n    portFromHost ??\n    (overridePort && /^\\d+$/.test(overridePort) ? Number(overridePort) : normalized.port);\n  const protocol = (overrideProtocol || (isLocalishHost(hostBase) ? 'http' : 'https')).toLowerCase() === 'http'\n    ? 'http'\n    : 'https';\n  const host = port == null ? hostBase : `${hostBase}:${port}`;\n  const origin = `${protocol}://${host}`;\n\n  return {\n    protocol,\n    host: hostBase,\n    port,\n    origin,\n  };\n}\n\nfunction splitHeadAndPath(body: string): { head: string; path: string } {\n  const slashIndex = findTokenOutsideContext(body, '/');\n  if (slashIndex < 0) {\n    return {\n      head: body.trim(),\n      path: '',\n    };\n  }\n\n  return {\n    head: body.slice(0, slashIndex).trim(),\n    path: body.slice(slashIndex + 1).trim().replace(/^\\/+/, ''),\n  };\n}\n\nfunction splitNamespaceAndOperation(head: string): { namespaceToken: string; operation: string | null } {\n  const colonIndex = findTokenOutsideContext(head, ':');\n  if (colonIndex < 0) {\n    return {\n      namespaceToken: head.trim(),\n      operation: null,\n    };\n  }\n\n  const suffix = head.slice(colonIndex + 1).trim();\n  if (!suffix || /^\\d+$/.test(suffix)) {\n    return {\n      namespaceToken: head.trim(),\n      operation: null,\n    };\n  }\n\n  return {\n    namespaceToken: head.slice(0, colonIndex).trim(),\n    operation: suffix,\n  };\n}\n\nexport function composeNamespace(prefix: string | null | undefined, constant: string): string {\n  const normalizedConstant = String(constant || '').trim().toLowerCase();\n  if (!normalizedConstant) throw new CleakerParseError('Namespace constant cannot be empty', { constant });\n\n  const normalizedPrefix = String(prefix || '').trim().toLowerCase().replace(/\\.+$/, '');\n  if (!normalizedPrefix) return normalizedConstant;\n  return `${normalizedPrefix}.${normalizedConstant}`;\n}\n\nexport function stringifyNamespaceExpression(\n  input: Pick<ParsedNamespaceExpression, 'fqdn' | 'contextRaw' | 'operation' | 'path'>,\n): string {\n  const base = String(input.fqdn || '').trim().toLowerCase();\n  if (!base) throw new CleakerParseError('Namespace base cannot be empty', { input });\n\n  const contextRaw = String(input.contextRaw || '').trim();\n  const operation = String(input.operation || '').trim();\n  const path = String(input.path || '').trim().replace(/^\\/+/, '');\n  const namespaceToken = contextRaw ? `${base}[${contextRaw}]` : base;\n  const operationToken = operation ? `:${operation}` : '';\n  const pathToken = path ? `/${path}` : '';\n  return `${namespaceToken}${operationToken}${pathToken}`;\n}\n\nexport function parseNamespaceExpression(input: string): ParsedNamespaceExpression {\n  const raw = normalizeInput(input);\n  ensureBalancedContext(raw);\n\n  const body = stripScheme(raw).replace(/^\\/+/, '').trim();\n  if (!body) throw new CleakerParseError('Namespace cannot be empty', { raw });\n\n  const parts = splitHeadAndPath(body);\n  const head = splitNamespaceAndOperation(parts.head);\n  const namespace = extractNamespaceParts(head.namespaceToken);\n  const derived = deriveConstantAndPrefix(namespace.base);\n  const transport = resolveTransport(namespace.base, namespace.context);\n\n  const expression = stringifyNamespaceExpression({\n    fqdn: derived.fqdn,\n    contextRaw: namespace.contextRaw,\n    operation: head.operation,\n    path: parts.path,\n  });\n\n  return {\n    raw,\n    expression,\n    base: namespace.base,\n    fqdn: derived.fqdn,\n    prefix: derived.prefix,\n    constant: derived.constant,\n    labels: derived.labels,\n    contextRaw: namespace.contextRaw,\n    context: namespace.context,\n    operation: head.operation,\n    path: parts.path,\n    transport,\n  };\n}\n","import { parseTarget } from './parse/parseTarget';\nimport { createRemotePointer } from './pointer/remotePointer';\nimport {\n  DEFAULT_CLEAKER_DEVELOPMENT_ORIGIN,\n  DEFAULT_CLEAKER_LAN_PORT,\n  DEFAULT_CLEAKER_NAMESPACE_ORIGIN,\n} from './constants';\nimport { composeNamespace, parseNamespaceExpression } from './namespace/expression';\nimport type { CreateRemotePointerOptions } from './pointer/remotePointer';\nimport type {\n  CleakerErrorPayload,\n  CleakerEvents,\n  CleakerHostRecord,\n  CleakerNode,\n  CleakerReadyPayload,\n  CleakerState,\n  CleakerStatus,\n  KernelPendingResolution,\n  MeKernel,\n  OpenNodeInput,\n  OpenNodeResult,\n  ValidateHostsOptions,\n} from './types/kernel';\nimport type { RemotePointerDefinition, ResolvePointerResult } from './types/pointer';\nimport type { ResolvePointerOptions } from './types/pointer';\n\nconst ME_EXPRESSION_SYMBOL = Symbol.for('me.expression');\nconst ME_IDENTITY_SYMBOL = Symbol.for('me.identity');\n\ntype SignInResponse = {\n  ok: boolean;\n  error?: string;\n  namespace?: string;\n  identityHash?: string;\n  noise?: string;\n  memories?: unknown[];\n  openedAt?: number;\n  target?: {\n    namespace?: string | { me?: string; host?: string };\n  };\n};\n\ntype ClaimProof = {\n  identityHash: string;\n  expression: string;\n  namespace: string;\n  rootNamespace: string;\n  publicKey: string;\n  message: string;\n  signature: string;\n  timestamp: number;\n};\n\ntype ClaimResponse = {\n  ok: boolean;\n  error?: string;\n  namespace?: string | { me?: string; host?: string };\n  identityHash?: string;\n  publicKey?: string;\n  createdAt?: number;\n  persistentClaim?: unknown;\n  target?: {\n    namespace?: string | { me?: string; host?: string };\n  };\n};\n\nexport interface BindKernelOptions extends CreateRemotePointerOptions {\n  namespace?: string;\n  secret?: string;\n  identityHash?: string;\n  space?: string;\n  bootstrap?: string[];\n  fetcher?: typeof fetch;\n}\n\ntype RemoteSlot = {\n  key: string;\n  path: string[];\n  expression: string;\n  pointer: RemotePointerDefinition;\n  promise: Promise<ResolvePointerResult>;\n  lastResult?: ResolvePointerResult;\n};\n\ntype LearnedMemory = {\n  path: string;\n  operator: string | null;\n  expression: unknown;\n  value: unknown;\n};\n\nfunction normalizeReplayMemory(memory: unknown): unknown {\n  if (!memory || typeof memory !== 'object') return memory;\n\n  const record = memory as Record<string, unknown>;\n  const payload = record.payload;\n  const source = payload && typeof payload === 'object'\n    ? payload as Record<string, unknown>\n    : record;\n  const merged: Record<string, unknown> = {\n    ...source,\n  };\n\n  // Server write payloads use `expression` as the written dot-path.\n  // `.me` replay expects semantic memories shaped as `{ path, operator, expression, value }`.\n  if (!Object.prototype.hasOwnProperty.call(merged, 'path')) {\n    const rawExpression = String(merged.expression || '').trim();\n    if (rawExpression) {\n      merged.path = rawExpression;\n    }\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(merged, 'operator')) {\n    merged.operator = null;\n  }\n\n  if (Object.prototype.hasOwnProperty.call(merged, 'value')) {\n    merged.expression = merged.value;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(merged, 'timestamp') && record.timestamp !== undefined) {\n    merged.timestamp = record.timestamp;\n  }\n\n  if (!Object.prototype.hasOwnProperty.call(merged, 'identityHash') && record.identityHash !== undefined) {\n    merged.identityHash = record.identityHash;\n  }\n\n  return merged;\n}\n\nfunction stableStringify(value: unknown): string {\n  if (value === null || typeof value !== 'object') return JSON.stringify(value);\n  if (Array.isArray(value)) return `[${value.map((v) => stableStringify(v)).join(',')}]`;\n  const obj = value as Record<string, unknown>;\n  const keys = Object.keys(obj).sort();\n  return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(obj[k])}`).join(',')}}`;\n}\n\nfunction stripPort(raw: string): string {\n  return String(raw || '').trim().toLowerCase().replace(/:\\d+$/i, '');\n}\n\nfunction normalizeSurfaceOrigin(input: string): string {\n  const raw = String(input || '').trim();\n  if (!raw) return '';\n\n  const candidate = raw.includes('://')\n    ? raw\n    : `${isLoopbackishHost(raw) ? 'http' : 'https'}://${raw}`;\n\n  try {\n    const parsed = new URL(candidate.endsWith('/') ? candidate : `${candidate}/`);\n    const protocol = parsed.protocol.toLowerCase();\n    const hostname = String(parsed.hostname || '').trim().toLowerCase();\n    if (!protocol || !hostname) return '';\n    return `${protocol}//${hostname}`;\n  } catch {\n    const host = stripPort(raw.replace(/^https?:\\/\\//i, '').split('/')[0] || '');\n    if (!host) return '';\n    return `${isLoopbackishHost(host) ? 'http' : 'https'}://${host}`;\n  }\n}\n\nfunction isIpAddress(host: string): boolean {\n  return /^\\d{1,3}(\\.\\d{1,3}){3}$/.test(host);\n}\n\nfunction isBareHostname(host: string): boolean {\n  return !host.includes('.') && !isIpAddress(host);\n}\n\nfunction parseSpaceHostPort(raw: string): { host: string; port: number | null } {\n  const colonIdx = raw.lastIndexOf(':');\n  if (colonIdx > 0) {\n    const portStr = raw.slice(colonIdx + 1);\n    const portNum = parseInt(portStr, 10);\n    if (String(portNum) === portStr && portNum > 0) {\n      return { host: raw.slice(0, colonIdx), port: portNum };\n    }\n  }\n  return { host: raw, port: null };\n}\n\n// Resolves a user-supplied space string to a normalized origin URL per spec:\n// - IP address (with optional port) → http://{ip}:{port|8161}\n// - Bare hostname (no dot)          → http://{host}.local:{port|8161}\n// - Domain (has dot)                → https://{domain}:{port?}\n// - Already has ://                 → normalize as-is\nfunction normalizeSpaceOrigin(space: string): string {\n  const raw = String(space || '').trim();\n  if (!raw) return '';\n\n  if (raw.includes('://')) {\n    return normalizeOrigin(raw);\n  }\n\n  const { host, port } = parseSpaceHostPort(raw);\n  const lowerHost = host.toLowerCase();\n\n  if (isIpAddress(lowerHost)) {\n    return `http://${lowerHost}:${port ?? DEFAULT_CLEAKER_LAN_PORT}`;\n  }\n\n  if (isBareHostname(lowerHost)) {\n    return `http://${lowerHost}.local:${port ?? DEFAULT_CLEAKER_LAN_PORT}`;\n  }\n\n  // Public domain (has dot)\n  const portSuffix = port ? `:${port}` : '';\n  return `https://${lowerHost}${portSuffix}`;\n}\n\n// Returns the namespace constant (no port) for a user-supplied space string.\nfunction deriveSpaceNamespaceConstant(space: string): string {\n  const raw = String(space || '').trim();\n  if (!raw) return '';\n\n  if (raw.includes('://')) {\n    try {\n      return new URL(raw).hostname.toLowerCase();\n    } catch {\n      return '';\n    }\n  }\n\n  const { host } = parseSpaceHostPort(raw);\n  const lowerHost = host.toLowerCase();\n\n  if (isIpAddress(lowerHost)) return lowerHost;\n  if (isBareHostname(lowerHost)) return `${lowerHost}.local`;\n  return lowerHost;\n}\n\nfunction hashMemory(memory: unknown): string {\n  const m = (memory ?? {}) as Record<string, unknown>;\n  const explicit = String(m.hash || '').trim();\n  if (explicit) return `h:${explicit}`;\n  const ts = Number(m.timestamp || 0);\n  return `v:${ts}:${stableStringify(memory)}`;\n}\n\nfunction normalizeOrigin(origin: string): string {\n  const raw = String(origin || '').trim();\n  if (!raw) return '';\n  const withScheme = raw.includes('://') ? raw : `http://${raw}`;\n  try {\n    const url = new URL(withScheme.endsWith('/') ? withScheme : `${withScheme}/`);\n    return url.origin.toLowerCase();\n  } catch {\n    return raw.replace(/\\/+$/, '').toLowerCase();\n  }\n}\n\nfunction normalizeExpression(value: unknown): string | null {\n  const normalized = typeof value === 'string' ? value.trim() : '';\n  return normalized || null;\n}\n\nfunction normalizeIdentityHash(value: unknown): string | null {\n  const normalized = typeof value === 'string' ? value.trim() : '';\n  return normalized || null;\n}\n\nfunction normalizeNamespaceValue(value: unknown, fallback = ''): string {\n  if (typeof value === 'string') {\n    const normalized = value.trim();\n    if (normalized) return normalized;\n  }\n\n  if (value && typeof value === 'object') {\n    const record = value as Record<string, unknown>;\n    const me = typeof record.me === 'string' ? record.me.trim() : '';\n    if (me) return me;\n    const host = typeof record.host === 'string' ? record.host.trim() : '';\n    if (host) return host;\n  }\n\n  return fallback;\n}\n\nfunction resolveEnvelopeNamespace(data: unknown, fallback = ''): string {\n  if (!data || typeof data !== 'object') return fallback;\n  const record = data as Record<string, unknown>;\n  const direct = normalizeNamespaceValue(record.namespace, '');\n  if (direct) return direct;\n  const target = record.target;\n  if (target && typeof target === 'object') {\n    return normalizeNamespaceValue((target as Record<string, unknown>).namespace, fallback);\n  }\n  return fallback;\n}\n\nfunction readKernelExpression(me: MeKernel): string | null {\n  try {\n    const viaSymbol = normalizeExpression((me as any)[ME_EXPRESSION_SYMBOL]);\n    if (viaSymbol) return viaSymbol;\n  } catch {\n    // Ignore and fall through to the reflective plane.\n  }\n\n  try {\n    const runtime = (me as any)['!'];\n    const currentExpression = runtime?.currentExpression;\n    if (typeof currentExpression === 'function') {\n      const value = normalizeExpression(currentExpression());\n      if (value) return value;\n    }\n    if (\n      currentExpression &&\n      typeof currentExpression === 'object' &&\n      typeof (currentExpression as { call?: () => unknown }).call === 'function'\n    ) {\n      const value = normalizeExpression((currentExpression as { call: () => unknown }).call());\n      if (value) return value;\n    }\n  } catch {\n    // Kernels may omit the escape plane entirely.\n  }\n\n  return null;\n}\n\nfunction readKernelIdentityHash(me: MeKernel): string | null {\n  try {\n    const viaSymbol = (me as any)[ME_IDENTITY_SYMBOL];\n    if (viaSymbol && typeof viaSymbol === 'object') {\n      const value = normalizeIdentityHash((viaSymbol as { hash?: unknown }).hash);\n      if (value) return value;\n    }\n    const direct = normalizeIdentityHash(viaSymbol);\n    if (direct) return direct;\n  } catch {\n    // Ignore and fall through to the reflective plane.\n  }\n\n  try {\n    const runtime = (me as any)['!'];\n    const identity = runtime?.identity;\n    if (typeof identity === 'function') {\n      const value = identity();\n      if (value && typeof value === 'object') {\n        const hash = normalizeIdentityHash((value as { hash?: unknown }).hash);\n        if (hash) return hash;\n      }\n      const direct = normalizeIdentityHash(value);\n      if (direct) return direct;\n    }\n    if (\n      identity &&\n      typeof identity === 'object' &&\n      typeof (identity as { call?: () => unknown }).call === 'function'\n    ) {\n      const value = (identity as { call: () => unknown }).call();\n      if (value && typeof value === 'object') {\n        const hash = normalizeIdentityHash((value as { hash?: unknown }).hash);\n        if (hash) return hash;\n      }\n      const direct = normalizeIdentityHash(value);\n      if (direct) return direct;\n    }\n  } catch {\n    // Kernels may omit the escape plane entirely.\n  }\n\n  return null;\n}\n\nfunction readKernelRuntimeMethod<T extends (...args: any[]) => unknown>(\n  me: MeKernel,\n  methodName: string,\n): T | null {\n  try {\n    const runtime = (me as any)['!'];\n    const method = runtime?.[methodName];\n    if (typeof method === 'function') return method as T;\n    if (method && typeof method === 'object' && typeof method.call === 'function') {\n      return ((...args: unknown[]) => method.call(...args)) as T;\n    }\n  } catch {\n    // Ignore and fall back.\n  }\n\n  try {\n    const direct = (me as any)[methodName];\n    if (typeof direct === 'function') return direct.bind(me) as T;\n  } catch {\n    // Ignore and report unsupported below.\n  }\n\n  return null;\n}\n\nfunction resolveProofRootNamespace(namespace: string): string {\n  const raw = String(namespace || '').trim();\n  if (!raw) return '';\n  try {\n    return parseNamespaceExpression(raw).constant;\n  } catch {\n    const parts = raw.split('.').map((part) => part.trim()).filter(Boolean);\n    if (parts.length > 1) return parts.slice(1).join('.');\n    return raw;\n  }\n}\n\nasync function proveKernelNamespace(me: MeKernel, namespace: string): Promise<ClaimProof> {\n  const prove = readKernelRuntimeMethod<(input: { rootNamespace: string; challenge?: string | null }) => Promise<unknown>>(\n    me,\n    'prove',\n  );\n  if (!prove) {\n    throw new Error('PROVE_UNSUPPORTED');\n  }\n\n  const rootNamespace = resolveProofRootNamespace(namespace);\n  if (!rootNamespace) {\n    throw new Error('ROOT_NAMESPACE_REQUIRED');\n  }\n\n  const proof = await prove({ rootNamespace, challenge: null });\n  if (!proof || typeof proof !== 'object') {\n    throw new Error('PROOF_INVALID');\n  }\n\n  const claimedNamespace = String((proof as Record<string, unknown>).namespace || '').trim();\n  if (!claimedNamespace) {\n    throw new Error('PROOF_INVALID');\n  }\n  if (claimedNamespace !== namespace) {\n    throw new Error('PROOF_NAMESPACE_MISMATCH');\n  }\n\n  return proof as ClaimProof;\n}\n\nfunction isLoopbackishHost(raw: string): boolean {\n  const host = stripPort(raw);\n  return /^(localhost|127(?:\\.\\d{1,3}){3}|0\\.0\\.0\\.0)$/.test(host);\n}\n\n/** Returns true when an origin resolves to a local/LAN surface (loopback, .local, private IP). */\nfunction isLocalSurface(origin: string): boolean {\n  try {\n    const hostname = new URL(origin).hostname.toLowerCase();\n    return (\n      isLoopbackishHost(hostname) ||\n      hostname.endsWith('.local') ||\n      /^192\\.168\\./.test(hostname) ||\n      /^10\\./.test(hostname) ||\n      /^172\\.(1[6-9]|2\\d|3[01])\\./.test(hostname)\n    );\n  } catch {\n    return false;\n  }\n}\n\nfunction readLocationHost(): string {\n  if (typeof globalThis === 'undefined') return '';\n\n  const locationLike = (globalThis as { location?: unknown }).location;\n  if (!locationLike) return '';\n\n  if (typeof locationLike === 'string') {\n    try {\n      const parsedHost = new URL(locationLike.includes('://') ? locationLike : `https://${locationLike}`).hostname.toLowerCase();\n      return isLoopbackishHost(parsedHost) ? '' : parsedHost;\n    } catch {\n      const fallbackHost = stripPort(String(locationLike).trim().toLowerCase());\n      return isLoopbackishHost(fallbackHost) ? '' : fallbackHost;\n    }\n  }\n\n  const record = locationLike as Record<string, unknown>;\n  const host = stripPort(String(record.hostname || record.host || '').trim().toLowerCase());\n  if (isLoopbackishHost(host)) return '';\n  if (host) return host;\n\n  const origin = String(record.origin || record.href || '').trim();\n  if (!origin) return '';\n\n  try {\n    const parsedHost = new URL(origin.includes('://') ? origin : `https://${origin}`).hostname.toLowerCase();\n    return isLoopbackishHost(parsedHost) ? '' : parsedHost;\n  } catch {\n    return '';\n  }\n}\n\nfunction readLocationSurfaceOrigin(): string {\n  if (typeof globalThis === 'undefined') return '';\n\n  const locationLike = (globalThis as { location?: unknown }).location;\n  if (!locationLike) return '';\n\n  if (typeof locationLike === 'string') {\n    return normalizeSurfaceOrigin(locationLike);\n  }\n\n  const record = locationLike as Record<string, unknown>;\n  const origin = normalizeSurfaceOrigin(String(record.origin || ''));\n  if (origin) return origin;\n\n  const href = String(record.href || '').trim();\n  if (href) return normalizeSurfaceOrigin(href);\n\n  const host = String(record.hostname || record.host || '').trim().toLowerCase();\n  if (!host) return '';\n  return normalizeSurfaceOrigin(host);\n}\n\nfunction readConfiguredSurfaceOrigin(input: string): string {\n  const constant = deriveNamespaceConstant(input);\n  if (!constant) return '';\n  return normalizeSurfaceOrigin(constant);\n}\n\ntype BuiltinOsLike = {\n  hostname?: () => string;\n};\n\nfunction readRuntimeHostSurfaceOrigin(): string {\n  if (typeof process === 'undefined') return '';\n\n  const envCandidate = String(\n    process.env.CLEAKER_SURFACE_HOST\n      || process.env.MONAD_SELF_IDENTITY\n      || process.env.CLEAKER_NAMESPACE_ROOT\n      || process.env.CLEAKER_NAMESPACE_HOST\n      || process.env.HOSTNAME\n      || process.env.COMPUTERNAME\n      || '',\n  ).trim();\n  const envSurface = readConfiguredSurfaceOrigin(envCandidate);\n  if (envSurface) return envSurface;\n\n  const runtime = process as typeof process & {\n    getBuiltinModule?: (name: string) => unknown;\n  };\n  if (typeof runtime.getBuiltinModule !== 'function') return '';\n\n  try {\n    const os = runtime.getBuiltinModule('node:os') as BuiltinOsLike | undefined;\n    const hostname = String(os?.hostname?.() || '').trim();\n    if (!hostname) return '';\n    return normalizeSurfaceOrigin(hostname);\n  } catch {\n    return '';\n  }\n}\n\nfunction deriveNamespaceConstant(input: string): string {\n  const raw = String(input || '').trim();\n  if (!raw) return '';\n\n  if (/^https?:\\/\\//i.test(raw)) {\n    try {\n      return parseNamespaceExpression(new URL(raw).hostname).constant;\n    } catch {\n      return '';\n    }\n  }\n\n  try {\n    return parseNamespaceExpression(raw).constant;\n  } catch {\n    try {\n      const url = new URL(raw.includes('://') ? raw : `https://${raw}`);\n      return parseNamespaceExpression(url.hostname).constant;\n    } catch {\n      return '';\n    }\n  }\n}\n\nfunction uniqueOrigins(origins: Array<string | null | undefined>): string[] {\n  const seen = new Set<string>();\n  const output: string[] = [];\n\n  for (const origin of origins) {\n    const normalized = normalizeOrigin(String(origin || ''));\n    if (!normalized || seen.has(normalized)) continue;\n    seen.add(normalized);\n    output.push(normalized);\n  }\n\n  return output;\n}\n\nfunction hashFn(input: string): string {\n  let h = 0x811c9dc5;\n  for (let i = 0; i < input.length; i += 1) {\n    h ^= input.charCodeAt(i);\n    h = Math.imul(h, 0x01000193);\n  }\n  return ('00000000' + (h >>> 0).toString(16)).slice(-8);\n}\n\nfunction computeHostId(origin: string): string {\n  return hashFn(normalizeOrigin(origin));\n}\n\nfunction readKernelPath(me: MeKernel, segments: string[]): unknown {\n  if (!segments.length) return undefined;\n  try {\n    let ref: any = me;\n    for (let i = 0; i < segments.length; i += 1) {\n      ref = ref?.[segments[i]];\n      if (ref == null) return undefined;\n    }\n    if (typeof ref === 'function') {\n      try {\n        return ref();\n      } catch {\n        return undefined;\n      }\n    }\n    return ref;\n  } catch {\n    return undefined;\n  }\n}\n\nfunction writeKernelPath(me: MeKernel, segments: string[], value: unknown): boolean {\n  if (!segments.length) return false;\n  try {\n    let ref: any = me;\n    for (let i = 0; i < segments.length; i += 1) {\n      ref = ref?.[segments[i]];\n      if (ref == null) return false;\n    }\n    if (typeof ref === 'function') {\n      ref(value);\n      return true;\n    }\n  } catch {\n    return false;\n  }\n  return false;\n}\n\nfunction toHostRecord(input: Partial<CleakerHostRecord>, namespace: string): CleakerHostRecord | null {\n  const origin = normalizeOrigin(String(input.space || ''));\n  if (!origin) return null;\n  const id = String(input.id || '').trim() || computeHostId(origin);\n  const baseStatus = input.status || {\n    transport: 'unknown',\n    triad: 'unverified',\n    latencyMs: 0,\n    lastSeen: 0,\n  };\n  const baseCapabilities = input.capabilities || {\n    canClaim: false,\n    canOpen: true,\n    canRelay: false,\n  };\n  return {\n    id,\n    alias: input.alias ? String(input.alias) : undefined,\n    space: origin,\n    namespace,\n    status: {\n      transport: baseStatus.transport || 'unknown',\n      triad: baseStatus.triad || 'unverified',\n      latencyMs: Number(baseStatus.latencyMs || 0),\n      lastSeen: Number(baseStatus.lastSeen || 0),\n    },\n    capabilities: {\n      canClaim: !!baseCapabilities.canClaim,\n      canOpen: baseCapabilities.canOpen !== false,\n      canRelay: !!baseCapabilities.canRelay,\n    },\n    error: input.error ? String(input.error) : undefined,\n  };\n}\n\nfunction defaultDetectRemote(path: string[]): boolean {\n  const joined = path.join('.').trim();\n  if (joined.includes('.cleaker:') || joined.includes(':')) return true;\n\n  return path.some((segment, index) => {\n    const normalized = segment.toLowerCase();\n    return (\n      normalized.includes('cleaker:') ||\n      normalized.includes(':') ||\n      (normalized === 'cleaker' && index < path.length - 1)\n    );\n  });\n}\n\nfunction defaultMapToExpression(inputPath: string[]): string | null {\n  const path = inputPath.map((x) => String(x || '').trim()).filter(Boolean);\n  if (path.length === 0) return null;\n\n  const joined = path.join('.');\n  if (joined.includes(':')) return joined;\n\n  const cleakerIx = path.findIndex((segment) => segment.toLowerCase() === 'cleaker');\n  if (cleakerIx > 0 && cleakerIx < path.length - 1) {\n    const prefix = path[cleakerIx - 1];\n    const rest = path.slice(cleakerIx + 1).join('.');\n    return `${prefix}.cleaker:read/${rest || 'profile'}`;\n  }\n\n  return null;\n}\n\nfunction unwrapResolvedValue(data: unknown): unknown {\n  if (!data || typeof data !== 'object') return data;\n  const record = data as Record<string, unknown>;\n  if (Object.prototype.hasOwnProperty.call(record, 'value')) return record.value;\n  return data;\n}\n\nfunction tryReadLocal(me: MeKernel, path: string[]): unknown {\n  if (path.length === 0 || typeof me !== 'function') return undefined;\n  try {\n    return (me as any)(path.join('.'));\n  } catch {\n    return undefined;\n  }\n}\n\nfunction tryInvokeKernelPath(me: MeKernel, path: string[], args: unknown[]): unknown {\n  if (typeof me !== 'function') return undefined;\n\n  try {\n    if (path.length === 0) {\n      return (me as any)(...args);\n    }\n\n    let ref: any = me;\n    for (const part of path) {\n      ref = ref?.[part];\n    }\n    if (typeof ref === 'function') {\n      return ref(...args);\n    }\n  } catch {\n    return undefined;\n  }\n\n  return undefined;\n}\n\nexport function bindKernel(me: MeKernel, options: BindKernelOptions = {}): CleakerNode {\n  const hydratedMemoryHashes = new Set<string>();\n  const hydratedMemories: unknown[] = [];\n  const remoteOverlay = new Map<string, unknown>();\n  const remoteSlots = new Map<string, RemoteSlot>();\n  const listeners = new Map<keyof CleakerEvents, Set<(...args: unknown[]) => void>>();\n  const explicitNamespace = String(options.namespace || '').trim();\n  const defaultSecret = String(options.secret || '');\n  const explicitIdentityHash = normalizeIdentityHash(options.identityHash);\n  const bootstrapOrigins = Array.isArray(options.bootstrap)\n    ? options.bootstrap.map((origin) => normalizeOrigin(origin)).filter(Boolean)\n    : [];\n  const resolvedSpaceOrigin = options.space ? normalizeSpaceOrigin(options.space) : '';\n  const pointerResolveOptions: ResolvePointerOptions = {\n    ...(resolvedSpaceOrigin ? { origin: resolvedSpaceOrigin } : {}),\n    ...(options.fetcher ? { fetcher: options.fetcher } : {}),\n    headers: {\n      accept: 'application/json',\n    },\n  };\n\n  let currentState: CleakerState = 'idle';\n  let currentCycleId = 0;\n  let lastStatus: CleakerStatus = {\n    cycleId: 0,\n    state: 'idle',\n    overall: bootstrapOrigins.length ? 'degraded' : 'offline',\n    activeNamespace: resolveNamespace(),\n    totalHosts: 0,\n    verifiedHosts: 0,\n    hosts: [],\n  };\n  let lastReadyPayload: CleakerReadyPayload | null = null;\n\n  // Triad auto-open: if namespace + secret are provided at bind time, open immediately in the background.\n  let _ready: Promise<OpenNodeResult | null> = Promise.resolve(null);\n\n  function resolveSurfaceNamespaceConstant(): string {\n    if (options.space) {\n      const spaceConstant = deriveSpaceNamespaceConstant(options.space);\n      if (spaceConstant) return spaceConstant;\n    }\n\n    const locationHost = readLocationHost();\n    if (locationHost) return deriveNamespaceConstant(locationHost);\n\n    const envNamespaceRoot = typeof process !== 'undefined'\n      ? String(process.env.CLEAKER_NAMESPACE_ROOT || process.env.CLEAKER_NAMESPACE_HOST || '')\n      : '';\n    if (envNamespaceRoot) return deriveNamespaceConstant(envNamespaceRoot);\n\n    return deriveNamespaceConstant(DEFAULT_CLEAKER_NAMESPACE_ORIGIN);\n  }\n\n  function resolveNamespace(inputNamespace?: string): string {\n    const explicit = String(inputNamespace || explicitNamespace || '').trim();\n    if (explicit) return explicit;\n\n    const expression = readKernelExpression(me);\n    if (!expression) return '';\n\n    // If the expression already contains a dot, try to interpret it as a full fqdn\n    // (e.g. \"suiGn.neurons.me\" should not get another constant appended).\n    if (expression.includes('.')) {\n      try {\n        const parsed = parseNamespaceExpression(expression);\n        if (parsed.prefix && parsed.constant) {\n          return composeNamespace(parsed.prefix, parsed.constant);\n        }\n      } catch {\n        // Not a valid namespace expression — fall through to normal path.\n      }\n    }\n\n    const constant = resolveSurfaceNamespaceConstant();\n    if (!constant) return '';\n\n    return composeNamespace(expression, constant);\n  }\n\n  function resolveSurfaceOrigins(runtimeBootstrap: string[] = [], preferredOrigin = ''): string[] {\n    const spaceOrigin = options.space ? normalizeSpaceOrigin(options.space) : '';\n    const locationSurfaceOrigin = readLocationSurfaceOrigin();\n    const envNamespaceSurface = typeof process !== 'undefined'\n      ? String(process.env.CLEAKER_NAMESPACE_ROOT || process.env.CLEAKER_NAMESPACE_HOST || '')\n      : '';\n    const configuredSurfaceOrigin = readConfiguredSurfaceOrigin(envNamespaceSurface || '');\n    const runtimeHostSurfaceOrigin = readRuntimeHostSurfaceOrigin();\n\n    return uniqueOrigins([\n      preferredOrigin,\n      spaceOrigin,\n      ...bootstrapOrigins,\n      ...runtimeBootstrap,\n      locationSurfaceOrigin,\n      configuredSurfaceOrigin,\n      runtimeHostSurfaceOrigin,\n      DEFAULT_CLEAKER_NAMESPACE_ORIGIN,\n      DEFAULT_CLEAKER_DEVELOPMENT_ORIGIN,\n    ]);\n  }\n\n  function resolveIdentityHash(inputIdentityHash?: string): string {\n    return normalizeIdentityHash(inputIdentityHash)\n      || explicitIdentityHash\n      || readKernelIdentityHash(me)\n      || '';\n  }\n\n  function resolveBoundKernelTarget(path: string): unknown {\n    const normalized = String(path || '').trim().replace(/^\\/+/, '').replace(/\\//g, '.');\n    if (!normalized) return undefined;\n    return tryReadLocal(me, normalized.split('.').filter(Boolean));\n  }\n\n  function isRemoteTargetExpression(raw: string): boolean {\n    const trimmed = String(raw || '').trim();\n    if (!trimmed) return false;\n    return trimmed.startsWith('me://') || trimmed.includes(':');\n  }\n\n  function parseRemoteTargetPath(raw: string): string[] | null {\n    if (!isRemoteTargetExpression(raw)) return null;\n    try {\n      const parsed = parseTarget(raw, {\n        defaultMode: 'reactive',\n        allowShorthandRead: true,\n      });\n      return String(parsed.path || '')\n        .trim()\n        .replace(/^\\/+/, '')\n        .split('/')\n        .map((segment) => segment.trim())\n        .filter(Boolean);\n    } catch {\n      return null;\n    }\n  }\n\n  function emit<E extends keyof CleakerEvents>(eventName: E, ...args: Parameters<CleakerEvents[E]>) {\n    const handlers = listeners.get(eventName);\n    if (!handlers || handlers.size === 0) return;\n    handlers.forEach((handler) => {\n      try {\n        (handler as (...input: unknown[]) => void)(...args);\n      } catch {\n        // Never let observers break runtime lifecycle.\n      }\n    });\n  }\n\n  function on<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): () => void {\n    const set = listeners.get(eventName) || new Set<(...args: unknown[]) => void>();\n    set.add(handler as (...args: unknown[]) => void);\n    listeners.set(eventName, set);\n    return () => off(eventName, handler);\n  }\n\n  function off<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): void {\n    const set = listeners.get(eventName);\n    if (!set) return;\n    set.delete(handler as (...args: unknown[]) => void);\n    if (set.size === 0) listeners.delete(eventName);\n  }\n\n  function once<E extends keyof CleakerEvents>(eventName: E, handler: CleakerEvents[E]): () => void {\n    const unsubscribe = on(eventName, ((...args: Parameters<CleakerEvents[E]>) => {\n      unsubscribe();\n      (handler as (...input: unknown[]) => void)(...(args as unknown[]));\n    }) as CleakerEvents[E]);\n    return unsubscribe;\n  }\n\n  function transition(nextState: CleakerState, cycleId: number): void {\n    currentState = nextState;\n    lastStatus = {\n      ...lastStatus,\n      cycleId,\n      state: nextState,\n    };\n    emit('status:change', getStatus());\n  }\n\n  function persistHostRecord(namespace: string, host: CleakerHostRecord): void {\n    const base = ['namespaces', namespace, 'registry', 'hosts', host.id];\n    writeKernelPath(me, [...base, 'id'], host.id);\n    writeKernelPath(me, [...base, 'alias'], host.alias || '');\n    writeKernelPath(me, [...base, 'space'], host.space);\n    writeKernelPath(me, [...base, 'namespace'], host.namespace);\n    writeKernelPath(me, [...base, 'status', 'transport'], host.status.transport);\n    writeKernelPath(me, [...base, 'status', 'triad'], host.status.triad);\n    writeKernelPath(me, [...base, 'status', 'latencyMs'], host.status.latencyMs);\n    writeKernelPath(me, [...base, 'status', 'lastSeen'], host.status.lastSeen);\n    writeKernelPath(me, [...base, 'capabilities', 'canClaim'], host.capabilities.canClaim);\n    writeKernelPath(me, [...base, 'capabilities', 'canOpen'], host.capabilities.canOpen);\n    writeKernelPath(me, [...base, 'capabilities', 'canRelay'], host.capabilities.canRelay);\n    writeKernelPath(me, [...base, 'error'], host.error || '');\n  }\n\n  function discoverHosts(input: { namespace?: string; bootstrap?: string[] } = {}): CleakerHostRecord[] {\n    const namespace = resolveNamespace(input.namespace);\n    if (!namespace) return [];\n\n    const hostMap = new Map<string, CleakerHostRecord>();\n    const rawRegistry = readKernelPath(me, ['namespaces', namespace, 'registry', 'hosts']);\n    if (rawRegistry && typeof rawRegistry === 'object' && !Array.isArray(rawRegistry)) {\n      const registry = rawRegistry as Record<string, unknown>;\n      Object.keys(registry).forEach((key) => {\n        const candidate = registry[key] as Partial<CleakerHostRecord>;\n        const parsed = toHostRecord({\n          ...candidate,\n          id: candidate?.id || key,\n        }, namespace);\n        if (parsed) hostMap.set(parsed.id, parsed);\n      });\n    }\n\n    if (hostMap.size === 0) {\n      const runtimeBootstrap = Array.isArray(input.bootstrap)\n        ? input.bootstrap.map((origin) => normalizeOrigin(origin)).filter(Boolean)\n        : [];\n      const fallbackOrigins = resolveSurfaceOrigins(runtimeBootstrap);\n      fallbackOrigins.forEach((origin) => {\n        const host = toHostRecord({ space: origin }, namespace);\n        if (!host) return;\n        hostMap.set(host.id, host);\n        persistHostRecord(namespace, host);\n      });\n    }\n\n    return Array.from(hostMap.values());\n  }\n\n  async function ping(origin: string, timeoutMs: number, fetcher: typeof fetch): Promise<boolean> {\n    const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n    const timeoutId = controller ? setTimeout(() => controller.abort(), timeoutMs) : null;\n    try {\n      const response = await fetcher(`${normalizeOrigin(origin)}/__bootstrap`, {\n        method: 'GET',\n        cache: 'no-store',\n        signal: controller?.signal,\n      });\n      return response.ok;\n    } catch {\n      return false;\n    } finally {\n      if (timeoutId) clearTimeout(timeoutId);\n    }\n  }\n\n  async function postJson(\n    endpoint: string,\n    body: Record<string, unknown>,\n    timeoutMs: number,\n    fetcher: typeof fetch,\n    headers: Record<string, string> = {},\n  ): Promise<{\n    ok: boolean;\n    status: number;\n    data: Record<string, unknown> | null;\n    error?: string;\n  }> {\n    const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n    const timeoutId = controller ? setTimeout(() => controller.abort(), timeoutMs) : null;\n    try {\n      const response = await fetcher(endpoint, {\n        method: 'POST',\n        headers: {\n          'content-type': 'application/json',\n          ...headers,\n        },\n        body: JSON.stringify(body),\n        signal: controller?.signal,\n      });\n\n      let data: Record<string, unknown> | null = null;\n      try {\n        data = (await response.json()) as Record<string, unknown>;\n      } catch {\n        data = null;\n      }\n\n      if (!response.ok || !data?.ok) {\n        return {\n          ok: false,\n          status: response.status,\n          data,\n          error: String(data?.error || `REQUEST_FAILED_${response.status}`),\n        };\n      }\n\n      return {\n        ok: true,\n        status: response.status,\n        data,\n      };\n    } catch (error) {\n      const message = error instanceof Error ? error.name : String(error);\n      return {\n        ok: false,\n        status: 0,\n        data: null,\n        error: message === 'AbortError' ? 'TIMEOUT' : 'NETWORK_ERROR',\n      };\n    } finally {\n      if (timeoutId) clearTimeout(timeoutId);\n    }\n  }\n\n  function normalizeSignInResponse(\n    data: Record<string, unknown>,\n    namespace: string,\n    identityHash: string,\n  ): SignInResponse {\n    return {\n      ok: true,\n      namespace: resolveEnvelopeNamespace(data, namespace),\n      identityHash: normalizeIdentityHash(data.identityHash) || identityHash,\n      noise: String(data.noise || ''),\n      memories: Array.isArray(data.memories) ? data.memories : [],\n      openedAt: Number(data.openedAt || Date.now()),\n      target: data.target && typeof data.target === 'object'\n        ? (data.target as { namespace?: string | { me?: string; host?: string } })\n        : undefined,\n    };\n  }\n\n  function normalizeClaimResponse(\n    data: Record<string, unknown>,\n    namespace: string,\n    identityHash: string,\n  ): ClaimResponse {\n    return {\n      ok: true,\n      namespace: resolveEnvelopeNamespace(data, namespace),\n      identityHash: normalizeIdentityHash(data.identityHash) || identityHash,\n      publicKey: typeof data.publicKey === 'string' ? data.publicKey : undefined,\n      createdAt: Number(data.createdAt || Date.now()),\n      persistentClaim: data.persistentClaim,\n      target: data.target && typeof data.target === 'object'\n        ? (data.target as { namespace?: string | { me?: string; host?: string } })\n        : undefined,\n    };\n  }\n\n  async function signInRemote(\n    origin: string,\n    namespace: string,\n    secret: string,\n    identityHash: string,\n    timeoutMs: number,\n    fetcher: typeof fetch,\n    headers: Record<string, string> = {},\n  ): Promise<SignInResponse | { ok: false; error: string }> {\n    const body = { namespace, secret, ...(identityHash ? { identityHash } : {}) };\n\n    // Primary: POST /claims/signIn\n    const primary = await postJson(`${normalizeOrigin(origin)}/claims/signIn`, body, timeoutMs, fetcher, headers);\n    if (primary.ok && primary.data) return normalizeSignInResponse(primary.data, namespace, identityHash);\n\n    const primaryError = String(primary.error || 'OPEN_FAILED');\n    if (primaryError === 'CLAIM_NOT_FOUND') return { ok: false, error: primaryError };\n\n    // Fallback: legacy POST / with operation:\"open\" (pre-Fase3 nodes)\n    if (primary.status === 404) {\n      const legacy = await postJson(\n        `${normalizeOrigin(origin)}/`,\n        { operation: 'open', ...body },\n        timeoutMs,\n        fetcher,\n        { 'x-forwarded-host': namespace, ...headers },\n      );\n      if (legacy.ok && legacy.data) return normalizeSignInResponse(legacy.data, namespace, identityHash);\n      return { ok: false, error: String(legacy.error || primaryError) };\n    }\n\n    return { ok: false, error: primaryError };\n  }\n\n  async function claimRemote(\n    origin: string,\n    namespace: string,\n    secret: string,\n    timeoutMs: number,\n    fetcher: typeof fetch,\n    headers: Record<string, string> = {},\n  ): Promise<ClaimResponse | { ok: false; error: string }> {\n    let proof: ClaimProof;\n    try {\n      proof = await proveKernelNamespace(me, namespace);\n    } catch (error) {\n      return {\n        ok: false,\n        error: error instanceof Error ? error.message : 'PROOF_INVALID',\n      };\n    }\n\n    // Primary: POST /me/kernel:claim/<namespace>\n    const claimed = await postJson(\n      `${normalizeOrigin(origin)}/me/kernel:claim/${encodeURIComponent(namespace)}`,\n      { namespace, secret, proof },\n      timeoutMs,\n      fetcher,\n      headers,\n    );\n\n    if (claimed.ok && claimed.data) {\n      return normalizeClaimResponse(claimed.data, namespace, proof.identityHash);\n    }\n\n    // Fallback: legacy POST / with operation:\"claim\" (older nodes without /me/kernel:claim/*)\n    if (claimed.status === 404 || claimed.status === 405) {\n      const legacy = await postJson(\n        `${normalizeOrigin(origin)}/`,\n        { operation: 'claim', namespace, secret, proof },\n        timeoutMs,\n        fetcher,\n        { 'x-forwarded-host': namespace, ...headers },\n      );\n\n      if (legacy.ok && legacy.data) {\n        return normalizeClaimResponse(legacy.data, namespace, proof.identityHash);\n      }\n\n      return { ok: false, error: String(legacy.error || claimed.error || 'CLAIM_FAILED') };\n    }\n\n    return { ok: false, error: String(claimed.error || 'CLAIM_FAILED') };\n  }\n\n  async function bindRemoteLifecycle(\n    origin: string,\n    namespace: string,\n    secret: string,\n    identityHash: string,\n    timeoutMs: number,\n    fetcher: typeof fetch,\n    headers: Record<string, string> = {},\n  ): Promise<SignInResponse | { ok: false; error: string }> {\n    const opened = await signInRemote(origin, namespace, secret, identityHash, timeoutMs, fetcher, headers);\n    if (opened.ok || opened.error !== 'CLAIM_NOT_FOUND') {\n      return opened;\n    }\n\n    const claimed = await claimRemote(origin, namespace, secret, timeoutMs, fetcher, headers);\n    if (!claimed.ok) {\n      return {\n        ok: false,\n        error: String(claimed.error || 'CLAIM_FAILED'),\n      };\n    }\n\n    const reopenedIdentityHash = normalizeIdentityHash(claimed.identityHash) || identityHash;\n    return signInRemote(\n      origin,\n      resolveEnvelopeNamespace(claimed, namespace),\n      secret,\n      reopenedIdentityHash,\n      timeoutMs,\n      fetcher,\n      headers,\n    );\n  }\n\n  function getStatus(): CleakerStatus {\n    return {\n      ...lastStatus,\n      hosts: lastStatus.hosts.map((host) => ({\n        ...host,\n        status: { ...host.status },\n        capabilities: { ...host.capabilities },\n      })),\n    };\n  }\n\n  async function waitUntilReady(timeoutMs = 10000): Promise<CleakerReadyPayload> {\n    if (currentState === 'ready' && lastReadyPayload) return lastReadyPayload;\n    return await new Promise<CleakerReadyPayload>((resolve, reject) => {\n      const timeoutId = setTimeout(() => {\n        unsub();\n        reject(new Error('TIMEOUT_WAITING_FOR_READY'));\n      }, timeoutMs);\n      const unsub = once('ready', (payload) => {\n        clearTimeout(timeoutId);\n        resolve(payload);\n      });\n    });\n  }\n\n  async function validateHosts(input: ValidateHostsOptions = {}): Promise<CleakerStatus> {\n    const namespace = resolveNamespace(input.namespace);\n    const secret = String(input.secret !== undefined ? input.secret : defaultSecret);\n    const identityHash = resolveIdentityHash(input.identityHash);\n    const strategy = input.triadStrategy || 'first-success';\n    const timeoutMs = Number(input.timeoutMs || 5000);\n    const fetcher = options.fetcher || fetch;\n    const cycleId = ++currentCycleId;\n\n    if (!namespace) {\n      const error: CleakerErrorPayload = {\n        code: 'NAMESPACE_REQUIRED',\n        message: 'Cannot validate hosts without namespace.',\n      };\n      emit('error', error);\n      transition('offline', cycleId);\n      lastStatus = {\n        ...lastStatus,\n        cycleId,\n        state: 'offline',\n        overall: 'offline',\n        activeNamespace: namespace,\n        totalHosts: 0,\n        verifiedHosts: 0,\n        hosts: [],\n      };\n      emit('status:change', getStatus());\n      return getStatus();\n    }\n\n    transition('discovering', cycleId);\n    const hosts = discoverHosts({\n      namespace,\n      bootstrap: input.bootstrap,\n    });\n    if (!hosts.length) {\n      transition('offline', cycleId);\n      lastStatus = {\n        ...lastStatus,\n        cycleId,\n        state: 'offline',\n        overall: 'offline',\n        activeNamespace: namespace,\n        totalHosts: 0,\n        verifiedHosts: 0,\n        hosts: [],\n      };\n      emit('status:change', getStatus());\n      return getStatus();\n    }\n\n    transition('probing', cycleId);\n    let verifiedHost: CleakerHostRecord | null = null;\n    let hydratedFromHostId = '';\n    let hydratedIdentityHash = '';\n    let hydratedMemoriesCount = 0;\n    const triedOrigins: Array<{ origin: string; reason: string }> = [];\n\n    for (let i = 0; i < hosts.length; i += 1) {\n      const host = hosts[i];\n      const start = Date.now();\n      const reachable = await ping(host.space, timeoutMs, fetcher);\n      host.status.transport = reachable ? 'up' : 'down';\n      host.status.latencyMs = Date.now() - start;\n      host.status.lastSeen = Date.now();\n\n      if (!reachable) {\n        host.status.triad = 'unverified';\n        host.error = 'NETWORK_ERROR';\n        persistHostRecord(namespace, host);\n        triedOrigins.push({ origin: host.space, reason: 'NETWORK_ERROR' });\n        // Emit fallback notification when a remote surface fails and a local one is next.\n        const nextHost = hosts[i + 1];\n        if (nextHost && !isLocalSurface(host.space) && isLocalSurface(nextHost.space)) {\n          emit('namespace:fallback', {\n            namespace,\n            failedOrigin: host.space,\n            failedReason: 'NETWORK_ERROR',\n            fallbackOrigin: nextHost.space,\n          });\n        }\n        continue;\n      }\n\n      if (!secret) {\n        host.status.triad = 'unverified';\n        host.error = 'SECRET_REQUIRED';\n        persistHostRecord(namespace, host);\n        triedOrigins.push({ origin: host.space, reason: 'SECRET_REQUIRED' });\n        continue;\n      }\n\n      transition('opening', cycleId);\n      const opened = await bindRemoteLifecycle(host.space, namespace, secret, identityHash, timeoutMs, fetcher);\n      if (!opened.ok) {\n        const errorCode = String(opened.error || 'OPEN_FAILED');\n        host.status.triad = errorCode === 'CLAIM_NOT_FOUND' ? 'unverified' : 'failed';\n        host.error = errorCode;\n        emit('error', {\n          code: errorCode,\n          message: `Triad open failed on ${host.space}`,\n          hostId: host.id,\n        });\n        persistHostRecord(namespace, host);\n        triedOrigins.push({ origin: host.space, reason: errorCode });\n        // Emit fallback notification when a remote surface fails and a local one is next.\n        const nextHost = hosts[i + 1];\n        if (nextHost && !isLocalSurface(host.space) && isLocalSurface(nextHost.space)) {\n          emit('namespace:fallback', {\n            namespace,\n            failedOrigin: host.space,\n            failedReason: errorCode,\n            fallbackOrigin: nextHost.space,\n          });\n        }\n        continue;\n      }\n\n      host.status.triad = 'verified';\n      host.error = undefined;\n      persistHostRecord(namespace, host);\n      emit('host:triad:success', host.id);\n\n      if (!verifiedHost) verifiedHost = host;\n\n      transition('hydrating', cycleId);\n      const allMemories = Array.isArray(opened.memories) ? opened.memories : [];\n      const learnedCountBefore = hydratedMemoryHashes.size;\n      allMemories.forEach((memory) => {\n        hydrateMemory(memory);\n      });\n      hydratedMemoriesCount += Math.max(0, hydratedMemoryHashes.size - learnedCountBefore);\n\n      if (opened.noise !== undefined) {\n        me.noise = String(opened.noise || '');\n      }\n\n      hydratedFromHostId = host.id;\n      hydratedIdentityHash = String(opened.identityHash || '');\n\n      if (strategy === 'first-success') {\n        for (let j = i + 1; j < hosts.length; j += 1) {\n          hosts[j].status.triad = 'skipped';\n        }\n        break;\n      }\n    }\n\n    if (cycleId !== currentCycleId) {\n      return getStatus();\n    }\n\n    const verifiedHosts = hosts.filter((host) => host.status.triad === 'verified').length;\n    const overall = verifiedHosts > 0 ? 'healthy' : 'degraded';\n\n    // If nothing resolved, emit a single structured failure event with full explain.\n    if (verifiedHosts === 0 && triedOrigins.length > 0) {\n      const lines = triedOrigins.map(\n        (t, idx) => `  [${idx + 1}] ${t.origin} → ${t.reason}`,\n      );\n      const explain =\n        `namespace '${namespace}' failed to resolve. tried ${triedOrigins.length} surface${triedOrigins.length === 1 ? '' : 's'}:\\n` +\n        lines.join('\\n');\n      emit('namespace:failed', { namespace, tried: triedOrigins, explain });\n    }\n    const state: CleakerState = verifiedHosts > 0 ? 'ready' : 'degraded';\n\n    transition(state, cycleId);\n    lastStatus = {\n      cycleId,\n      state,\n      overall,\n      activeNamespace: namespace,\n      totalHosts: hosts.length,\n      verifiedHosts,\n      hosts,\n    };\n    emit('status:change', getStatus());\n\n    if (verifiedHost) {\n      const payload: CleakerReadyPayload = {\n        namespace,\n        cycleId,\n        sourceHostId: hydratedFromHostId || verifiedHost.id,\n        sourceOrigin: verifiedHost.space,\n        identityHash: hydratedIdentityHash,\n        timestamp: Date.now(),\n        hydratedMemories: hydratedMemoriesCount,\n        summary: {\n          verifiedHosts,\n          totalHosts: hosts.length,\n          overall,\n        },\n      };\n      lastReadyPayload = payload;\n      emit('ready', payload);\n    }\n\n    return getStatus();\n  }\n\n  function pointer(expression: string, resolveOptions: ResolvePointerOptions = {}) {\n    const target = parseTarget(expression, { defaultMode: 'reactive' });\n    const remotePointer = createRemotePointer(target, {\n      ...options,\n      resolveLocalTarget: (localTarget) => {\n        if (localTarget.namespace.prefix !== null) {\n          throw new Error('LOCAL_TARGET_PREFIX_NOT_ALLOWED');\n        }\n\n        if (localTarget.namespace.constant !== 'local' && localTarget.namespace.constant !== 'self') {\n          throw new Error('LOCAL_TARGET_REQUIRED');\n        }\n\n        return resolveBoundKernelTarget(localTarget.intent.path);\n      },\n    });\n\n    if (!Object.keys(resolveOptions).length) return remotePointer;\n\n    return {\n      ...remotePointer,\n      resolve(input: ResolvePointerOptions = {}) {\n        return remotePointer.resolve({\n          ...resolveOptions,\n          ...input,\n        });\n      },\n    };\n  }\n\n  function hydrateMemory(memory: unknown): boolean {\n    const normalizedMemory = normalizeReplayMemory(memory);\n    const key = hashMemory(normalizedMemory);\n    if (hydratedMemoryHashes.has(key)) return false;\n\n    hydratedMemoryHashes.add(key);\n    hydratedMemories.push(normalizedMemory);\n\n    if (typeof me.learn === 'function') {\n      me.learn(normalizedMemory);\n      return true;\n    }\n\n    if (typeof me.replayMemories === 'function') {\n      me.replayMemories(hydratedMemories.slice());\n      return true;\n    }\n\n    return true;\n  }\n\n  function createLearnedMemory(path: string[], value: unknown): LearnedMemory | null {\n    const normalizedPath = path.map((part) => String(part || '').trim()).filter(Boolean);\n    if (normalizedPath.length === 0) return null;\n\n    return {\n      path: normalizedPath.join('.'),\n      operator: null,\n      expression: value,\n      value,\n    };\n  }\n\n  async function signIn(input: OpenNodeInput): Promise<OpenNodeResult> {\n    const namespace = resolveNamespace(input.namespace);\n    const secret = String(input.secret || '');\n    const identityHash = resolveIdentityHash(input.identityHash);\n\n    if (!namespace) throw new Error('NAMESPACE_REQUIRED');\n    if (!secret) throw new Error('SECRET_REQUIRED');\n\n    const fetcher = input.fetcher || options.fetcher || fetch;\n    const origins = resolveSurfaceOrigins([], input.space ? normalizeSpaceOrigin(input.space) : '');\n    let lastError = 'SIGNIN_FAILED';\n\n    for (const origin of origins) {\n      const opened = await bindRemoteLifecycle(\n        origin,\n        namespace,\n        secret,\n        identityHash,\n        5000,\n        fetcher,\n        input.headers || {},\n      );\n\n      if (!opened.ok) {\n        lastError = String(opened.error || 'SIGNIN_FAILED');\n        continue;\n      }\n\n      const allMemories = Array.isArray(opened.memories) ? opened.memories : [];\n      const memories = allMemories.filter((memory) => hydrateMemory(memory));\n\n      me.noise = String(opened.noise || '');\n\n      return {\n        status: 'verified',\n        namespace: String(opened.namespace || namespace),\n        identityHash: String(opened.identityHash || identityHash || ''),\n        noise: String(opened.noise || ''),\n        openedAt: Number(opened.openedAt || Date.now()),\n        memoriesCount: memories.length,\n      };\n    }\n\n    throw new Error(lastError);\n  }\n\n  async function claim(input: OpenNodeInput): Promise<OpenNodeResult> {\n    const namespace = resolveNamespace(input.namespace);\n    const secret = String(input.secret || '');\n\n    if (!namespace) throw new Error('NAMESPACE_REQUIRED');\n    if (!secret) throw new Error('SECRET_REQUIRED');\n\n    const fetcher = input.fetcher || options.fetcher || fetch;\n    const origins = resolveSurfaceOrigins([], input.space ? normalizeSpaceOrigin(input.space) : '');\n    let lastError = 'CLAIM_FAILED';\n\n    for (const origin of origins) {\n      const result = await claimRemote(origin, namespace, secret, 5000, fetcher, input.headers || {});\n\n      if (!result.ok) {\n        lastError = String(result.error || 'CLAIM_FAILED');\n        continue;\n      }\n\n      return {\n        status: 'verified',\n        namespace: String(resolveEnvelopeNamespace(result, namespace)),\n        identityHash: String(result.identityHash || ''),\n        noise: '',\n        openedAt: Number(result.createdAt || Date.now()),\n        memoriesCount: 0,\n      };\n    }\n\n    throw new Error(lastError);\n  }\n\n  if (resolveNamespace()) {\n    discoverHosts({ namespace: explicitNamespace });\n  }\n\n  // Triad: auto-signIn if secret is provided and namespace can be resolved from context.\n  if (options.secret) {\n    _ready = signIn({\n      namespace: explicitNamespace,\n      secret: options.secret,\n      identityHash: options.identityHash,\n      space: options.space,\n      fetcher: options.fetcher,\n    }).catch(() => null);\n  }\n\n  function getOrCreateRemoteSlot(path: string[]): RemoteSlot | undefined {\n    if (!defaultDetectRemote(path)) return undefined;\n\n    const key = path.join('.');\n    const existing = remoteSlots.get(key);\n    if (existing) return existing;\n\n    const expression = defaultMapToExpression(path);\n    if (!expression) return undefined;\n\n    const remotePointer = pointer(expression);\n    const slot: RemoteSlot = {\n      key,\n      path: path.slice(),\n      expression,\n      pointer: remotePointer,\n      promise: Promise.resolve({\n        ok: false,\n        status: 0,\n        endpoint: '',\n        elapsedMs: 0,\n        data: null,\n      } as ResolvePointerResult),\n    };\n\n    slot.promise = remotePointer.resolve(pointerResolveOptions).then((resolved) => {\n      slot.lastResult = resolved;\n      if (resolved.ok) {\n        const learnedValue = unwrapResolvedValue(resolved.data);\n        remoteOverlay.set(key, learnedValue);\n\n        const learnedMemory = createLearnedMemory(path, learnedValue);\n        if (learnedMemory) hydrateMemory(learnedMemory);\n      }\n      return resolved;\n    });\n\n    remoteSlots.set(key, slot);\n    return slot;\n  }\n\n  function getOrCreateDirectRemoteSlot(raw: string): RemoteSlot | undefined {\n    const path = parseRemoteTargetPath(raw);\n    if (!path || path.length === 0) return undefined;\n    const key = `target:${raw}`;\n    const existing = remoteSlots.get(key);\n    if (existing) return existing;\n\n    const remotePointer = pointer(raw);\n    const slot: RemoteSlot = {\n      key,\n      path: path.slice(),\n      expression: raw,\n      pointer: remotePointer,\n      promise: Promise.resolve({\n        ok: false,\n        status: 0,\n        endpoint: '',\n        elapsedMs: 0,\n        data: null,\n      } as ResolvePointerResult),\n    };\n\n    slot.promise = remotePointer.resolve(pointerResolveOptions).then((resolved) => {\n      slot.lastResult = resolved;\n      if (resolved.ok) {\n        const learnedValue = unwrapResolvedValue(resolved.data);\n        remoteOverlay.set(key, learnedValue);\n        const learnedMemory = createLearnedMemory(path, learnedValue);\n        if (learnedMemory) hydrateMemory(learnedMemory);\n      }\n      return resolved;\n    });\n\n    remoteSlots.set(key, slot);\n    return slot;\n  }\n\n  function createPendingToken(slot: RemoteSlot): KernelPendingResolution {\n    return {\n      status: 'pending',\n      path: slot.key,\n      pointer: slot.pointer,\n      promise: slot.promise,\n    };\n  }\n\n  function exposeKernelProperty(prop: string): unknown {\n    if (!(prop in (me as any))) return undefined;\n    const value = (me as any)[prop];\n    return typeof value === 'function' ? value.bind(me) : value;\n  }\n\n  function createFacade(path: string[] = []): any {\n    const fn = (...args: unknown[]) => {\n      if (path.length === 0) {\n        if (typeof me === 'function') {\n          if (args.length === 1 && typeof args[0] === 'string') {\n            const raw = String(args[0] || '').trim();\n            const remoteTargetPath = parseRemoteTargetPath(raw);\n            if (remoteTargetPath) {\n              const localRemote = tryReadLocal(me, remoteTargetPath);\n              if (localRemote !== undefined) return localRemote;\n              const directSlot = getOrCreateDirectRemoteSlot(raw);\n              return directSlot ? createPendingToken(directSlot) : undefined;\n            }\n\n            const local = tryReadLocal(me, raw.split('.').filter(Boolean));\n            if (local !== undefined) return local;\n            if (isRemoteTargetExpression(raw)) {\n              const slot = getOrCreateDirectRemoteSlot(raw);\n              return slot ? createPendingToken(slot) : undefined;\n            }\n          }\n          return (me as any)(...args);\n        }\n        return undefined;\n      }\n\n      const invoked = tryInvokeKernelPath(me, path, args);\n      if (invoked !== undefined) return invoked;\n      return createFacade(path);\n    };\n\n    return new Proxy(fn, {\n      get(_target, prop) {\n        if (typeof prop === 'symbol') return (fn as any)[prop];\n\n        const key = String(prop);\n\n        if (path.length === 0) {\n          if (key === 'kernel') return me;\n          if (key === 'claim') return claim;\n          if (key === 'signIn') return signIn;\n          if (key === 'ready') return _ready;\n          if (key === 'pointer') return pointer;\n          if (key === 'discoverHosts') return discoverHosts;\n          if (key === 'validateHosts') return validateHosts;\n          if (key === 'getStatus') return getStatus;\n          if (key === 'waitUntilReady') return waitUntilReady;\n          if (key === 'on') return on;\n          if (key === 'once') return once;\n          if (key === 'off') return off;\n          if (key === 'state') return currentState;\n          if (key === 'currentCycleId') return currentCycleId;\n\n          const kernelProperty = exposeKernelProperty(key);\n          if (kernelProperty !== undefined) return kernelProperty;\n        }\n\n        const currentKey = path.join('.');\n        const cachedCurrent = remoteOverlay.get(currentKey);\n        if (\n          cachedCurrent &&\n          typeof cachedCurrent === 'object' &&\n          !Array.isArray(cachedCurrent) &&\n          Object.prototype.hasOwnProperty.call(cachedCurrent, key)\n        ) {\n          return (cachedCurrent as Record<string, unknown>)[key];\n        }\n\n        const currentSlot = getOrCreateRemoteSlot(path);\n        if (currentSlot) {\n          if (key === 'status') {\n            return currentSlot.lastResult\n              ? currentSlot.pointer.__ptr.resolution.status\n              : 'pending';\n          }\n          if (key === 'pointer') return currentSlot.pointer;\n          if (key === 'promise') return currentSlot.promise;\n          if (key === 'result') return currentSlot.lastResult;\n          if (key === 'then') return currentSlot.promise.then.bind(currentSlot.promise);\n        }\n\n        const nextPath = [...path, key];\n        const nextKey = nextPath.join('.');\n        if (remoteOverlay.has(nextKey)) return remoteOverlay.get(nextKey);\n\n        const local = tryReadLocal(me, nextPath);\n        if (local !== undefined) return local;\n\n        getOrCreateRemoteSlot(nextPath);\n        return createFacade(nextPath);\n      },\n      apply(_target, _thisArg, args) {\n        return fn(...args);\n      },\n    });\n  }\n\n  return createFacade([]) as CleakerNode;\n}\n","import { parseTarget } from './parse/parseTarget';\nimport { createRemotePointer } from './pointer/remotePointer';\nimport {\n  DEFAULT_CLEAKER_DEVELOPMENT_ORIGIN,\n  DEFAULT_CLEAKER_NAMESPACE_ORIGIN,\n} from './constants';\nimport { bindKernel } from './binder';\nimport type { BindKernelOptions } from './binder';\nimport type { CreateRemotePointerOptions } from './pointer/remotePointer';\nimport type { RemotePointerDefinition } from './types/pointer';\nimport type { CleakerNode, MeKernel } from './types/kernel';\nexport interface CleakerOptions\n  extends CreateRemotePointerOptions,\n    Pick<\n      BindKernelOptions,\n      | 'namespace'\n      | 'secret'\n      | 'identityHash'\n      | 'space'\n      | 'bootstrap'\n      | 'fetcher'\n    > {}\n\nexport function cleaker(target: string, options?: CleakerOptions): RemotePointerDefinition;\nexport function cleaker(kernel: MeKernel, space: string, options?: CleakerOptions): CleakerNode;\nexport function cleaker(kernel: MeKernel, options?: CleakerOptions): CleakerNode;\nexport function cleaker(\n  input: string | MeKernel,\n  spaceOrOptions?: string | CleakerOptions,\n  extraOptions?: CleakerOptions,\n): RemotePointerDefinition | CleakerNode {\n  if (typeof input === 'string') {\n    const parsed = parseTarget(input, { defaultMode: 'reactive' });\n    return createRemotePointer(parsed, (spaceOrOptions as CleakerOptions) ?? {});\n  }\n\n  let space: string | undefined;\n  let options: CleakerOptions;\n\n  if (typeof spaceOrOptions === 'string') {\n    space = spaceOrOptions;\n    options = extraOptions ?? {};\n  } else {\n    options = spaceOrOptions ?? {};\n  }\n\n  return bindKernel(input, { ...options, ...(space ? { space } : {}) });\n}\n\nexport default cleaker;\n"],"names":["CleakerError","code","message","details","CleakerParseError","ME_SCHEME","CONTEXT_OPEN","CONTEXT_CLOSE","CONTEXT_BRANCH_SEPARATOR","CONTEXT_AND_SEPARATOR","CONTEXT_VALUE_SEPARATOR","normalizeInput","input","raw","stripScheme","findTokenOutsideContext","token","start","depth","index","char","ensureBalancedContext","expandClauseWithAtom","clauses","atomKey","values","next","clause","value","parseContext","groups","group","parts","part","expanded","colon","key","rest","item","extractNamespaceParts","namespaceToken","trimmed","openIndex","closeIndex","base","contextRaw","deriveCompatibilityNamespace","segments","segment","labels","constant","prefix","stringifyContext","context","atom","stringifyMeTarget","target","namespace","operation","path","parseMeTarget","options","body","operationSeparator","operationMissing","pathSeparator","operationToken","compatibility","parsed","parseTarget","DEFAULT_CLEAKER_NAMESPACE_SURFACE_ORIGIN","DEFAULT_CLEAKER_LOCAL_SURFACE_ORIGIN","DEFAULT_CLEAKER_LAN_PORT","DEFAULT_CLEAKER_NAMESPACE_ORIGIN","DEFAULT_CLEAKER_DEVELOPMENT_ORIGIN","createRemotePointer","payload","resolve","resolveOptions","isSovereignTarget","origin","dotPath","endpoint","startedAt","elapsedMs","error","fetcher","host","headers","response","data","normalizeBaseToken","candidate","slash","hostToken","portMatch","port","label","deriveConstantAndPrefix","normalized","portSuffix","isLocalishHost","findSelectorValue","selectorType","resolveTransport","overrideHost","overrideProtocol","overridePort","hostHasPort","hostBase","protocol","splitHeadAndPath","slashIndex","splitNamespaceAndOperation","head","colonIndex","suffix","composeNamespace","normalizedConstant","normalizedPrefix","stringifyNamespaceExpression","pathToken","parseNamespaceExpression","derived","transport","expression","ME_EXPRESSION_SYMBOL","ME_IDENTITY_SYMBOL","normalizeReplayMemory","memory","record","merged","rawExpression","stableStringify","v","obj","k","stripPort","normalizeSurfaceOrigin","isLoopbackishHost","hostname","isIpAddress","isBareHostname","parseSpaceHostPort","colonIdx","portStr","portNum","normalizeSpaceOrigin","space","normalizeOrigin","lowerHost","deriveSpaceNamespaceConstant","hashMemory","m","explicit","withScheme","normalizeExpression","normalizeIdentityHash","normalizeNamespaceValue","fallback","me","resolveEnvelopeNamespace","direct","readKernelExpression","viaSymbol","currentExpression","readKernelIdentityHash","identity","hash","readKernelRuntimeMethod","methodName","method","args","resolveProofRootNamespace","proveKernelNamespace","prove","rootNamespace","proof","claimedNamespace","isLocalSurface","readLocationHost","locationLike","parsedHost","fallbackHost","readLocationSurfaceOrigin","href","readConfiguredSurfaceOrigin","deriveNamespaceConstant","readRuntimeHostSurfaceOrigin","envCandidate","envSurface","runtime","os","url","uniqueOrigins","origins","seen","output","hashFn","h","i","computeHostId","readKernelPath","ref","writeKernelPath","toHostRecord","id","baseStatus","baseCapabilities","defaultDetectRemote","joined","defaultMapToExpression","inputPath","x","cleakerIx","unwrapResolvedValue","tryReadLocal","tryInvokeKernelPath","bindKernel","hydratedMemoryHashes","hydratedMemories","remoteOverlay","remoteSlots","listeners","explicitNamespace","defaultSecret","explicitIdentityHash","bootstrapOrigins","resolvedSpaceOrigin","pointerResolveOptions","currentState","currentCycleId","lastStatus","resolveNamespace","lastReadyPayload","_ready","resolveSurfaceNamespaceConstant","spaceConstant","locationHost","envNamespaceRoot","inputNamespace","resolveSurfaceOrigins","runtimeBootstrap","preferredOrigin","spaceOrigin","locationSurfaceOrigin","envNamespaceSurface","configuredSurfaceOrigin","runtimeHostSurfaceOrigin","resolveIdentityHash","inputIdentityHash","resolveBoundKernelTarget","isRemoteTargetExpression","parseRemoteTargetPath","emit","eventName","handlers","handler","on","set","off","once","unsubscribe","transition","nextState","cycleId","getStatus","persistHostRecord","discoverHosts","hostMap","rawRegistry","registry","ping","timeoutMs","controller","timeoutId","postJson","normalizeSignInResponse","identityHash","normalizeClaimResponse","signInRemote","secret","primary","primaryError","legacy","claimRemote","claimed","bindRemoteLifecycle","opened","reopenedIdentityHash","waitUntilReady","reject","unsub","validateHosts","strategy","hosts","verifiedHost","hydratedFromHostId","hydratedIdentityHash","hydratedMemoriesCount","triedOrigins","reachable","nextHost","errorCode","allMemories","learnedCountBefore","hydrateMemory","j","verifiedHosts","overall","lines","t","idx","explain","state","pointer","remotePointer","localTarget","normalizedMemory","createLearnedMemory","normalizedPath","signIn","lastError","memories","claim","result","getOrCreateRemoteSlot","existing","slot","resolved","learnedValue","learnedMemory","getOrCreateDirectRemoteSlot","createPendingToken","exposeKernelProperty","prop","createFacade","fn","remoteTargetPath","localRemote","directSlot","local","invoked","_target","kernelProperty","currentKey","cachedCurrent","currentSlot","nextPath","nextKey","_thisArg","cleaker","spaceOrOptions","extraOptions"],"mappings":"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"}