Menyediakan memori jangka panjang yang persisten dan terkelola serta kontinuitas sesi untuk AI agent di berbagai tool dan sesi yang berbeda.
Juga dikenal sebagai yonro/memory-os-cli, memory-os-cli, @xmemo/client
- Stars
- 13
- Tools
- —
- Unduhan, 30 hari
- —
- Versi terbaru
- 0.4.346
- Commit terakhir
- 9 Nov 2026
- Lisensi
- MIT
Apa itu XMemo MCP?
XMemo adalah MCP server. Menyediakan memori jangka panjang yang persisten dan terkelola serta kontinuitas sesi untuk AI agent di berbagai tool dan sesi yang berbeda.
Ringkasan dibuat dari README proyek
Tentang XMemo MCP server
XMemo bertindak sebagai lapisan operasi memori yang dirancang untuk memberikan pengetahuan persisten dan kontinuitas sesi kepada AI agent. Ini memungkinkan pengguna untuk menyimpan, mencari, dan mengelola fakta yang tahan lama, preferensi, serta keputusan spesifik proyek di berbagai tool dan sesi. Dengan menjaga working state, XMemo memungkinkan agent untuk melanjutkan konteks bahkan setelah proses restart, memastikan bahwa identitas dan provenance terlacak untuk setiap catatan memori.
Developer dapat mengakses kemampuan ini melalui beberapa interface, termasuk local stdio server via command xmemo-mcp, konfigurasi hosted Streamable HTTP, atau public REST API. Sistem ini dikelola melalui @xmemo/client CLI, yang menangani setup, diagnostik, dan profil perilaku. Pengguna dapat menghubungkan berbagai client seperti Cursor, Codex, atau Copilot CLI menggunakan scoped token atau OAuth. Setup ini memastikan bahwa memori tetap dimiliki dan dikelola oleh pengguna sambil tetap bisa dibagikan di berbagai lingkungan AI yang berbeda.
Apa yang bisa Anda lakukan dengannya
- 1Mempertahankan memori agent jangka panjangInstruksikan AI untuk menyimpan dan mengambil fakta yang tahan lama serta pengetahuan operasional di berbagai sesi yang berbeda.
- 2Melanjutkan workflow agent yang terputusMinta agent untuk memulihkan previous working state agar dapat melanjutkan tugas setelah terjadi restart.
Ditulis berdasarkan README proyek. Setiap use case diperiksa terhadap kutipan dari README tersebut.
Cara menginstal XMemo MCP
Format diverifikasi 10 Nov 2026Instal XMemo MCP di Claude Code
$ claude mcp add --env XMEMO_KEY=<YOUR_XMEMO_KEY> memory-os-cli -- npx -y @xmemo/clientInstal XMemo MCP di Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"memory-os-cli": {
"command": "npx",
"args": [
"-y",
"@xmemo/client"
],
"env": {
"XMEMO_KEY": "<YOUR_XMEMO_KEY>"
}
}
}
}Instal XMemo MCP di VS Code
.vscode/mcp.json
{
"servers": {
"memory-os-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@xmemo/client"
],
"env": {
"XMEMO_KEY": "<YOUR_XMEMO_KEY>"
}
}
}
}Instal XMemo MCP di Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"memory-os-cli": {
"command": "npx",
"args": [
"-y",
"@xmemo/client"
],
"env": {
"XMEMO_KEY": "<YOUR_XMEMO_KEY>"
}
}
}
}Instal XMemo MCP di Codex
~/.codex/config.toml
[mcp_servers.memory-os-cli] command = "npx" args = ["-y", "@xmemo/client"] [mcp_servers.memory-os-cli.env] XMEMO_KEY = "<YOUR_XMEMO_KEY>"
Instal XMemo MCP di Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"memory-os-cli": {
"command": "npx",
"args": [
"-y",
"@xmemo/client"
],
"env": {
"XMEMO_KEY": "<YOUR_XMEMO_KEY>"
}
}
}
}Konfigurasi
XMEMO_KEYRahasiaBearer token issued by XMemo for the stdio proxy. Optional for discovery; required for tool execution.
XMEMO_URLOptional XMemo service base URL. Defaults to https://xmemo.dev.
| Nama | Deskripsi | Tipe |
|---|---|---|
| XMEMO_KEY | Bearer token issued by XMemo for the stdio proxy. Optional for discovery; required for tool execution. | Rahasia |
| XMEMO_URL | Optional XMemo service base URL. Defaults to https://xmemo.dev. |
Pengecekan otomatis
Berjalan 12 Nov 2026Laporan lengkap →Lolos checks otomatis kami. Ini bukan audit keamanan: baca kodenya dan berikan server akses paling terbatas yang dibutuhkannya. Cara kerja checks
- Source repository terhubung dan dapat dijangkauLolos
- Lisensi open source (OSI)Lolos
- Ada commit atau release dalam satu tahun terakhirLolos
- Nama package tidak mirip dengan package populerLolos
- Remote endpoint menggunakan HTTPSLolos
- Tools yang bersifat destruktif telah diberi labelTidak diperiksa
- Tidak ada instruksi tersembunyi untuk modelLolos
- Tidak ada advisory kritis di paket maupun dependensinyaLolos
README
Lihat di GitHubXMemo: Memory OS for AI Agents
XMemo is a user-owned Memory OS for AI agents: persistent memory, project context and session continuity with agent identity, provenance and governed access, shared across AI clients through MCP, the CLI and a public REST API surface.
English · 简体中文 | Documentation · Hosted MCP
Quick start · What this repo contains · Beyond MCP · Integrations · Connection modes · Plugins · Commands · Versioning · Security
What this repository contains
@xmemo/client: the officialxmemoCLI for setup, diagnostics, behavior profiles, and memory commands.- MCP distribution: hosted Streamable HTTP configuration (
https://xmemo.dev/mcp) and the localxmemo-mcpstdio server. - XMemo Skill & native integrations:
skills/xmemofor agent platforms and the native plugin index (src/plugins/index.json). - Marketplace and registry metadata: canonical descriptors for MCP Registry (
server.json), LobeHub (lhm.plugin.json), and AI agents (context7.json).
The hosted service implementation is private.
Beyond MCP
MCP is one access surface of XMemo, not the product boundary. XMemo provides a persistent, governed memory operating layer across AI tools and agents:
- Persistent Memory: store, search, list, and soft-delete durable facts, preferences, and operational knowledge across sessions.
- Context Recall: retrieve focused, relevant context on demand with token-budget controls and document expansions.
- Session Continuity & Working State: restart snapshots and state save/restore so agents resume context across process restarts.
- Project Context & Decisions: track project-scoped facts, TODOs, and durable decisions across agent workflows.
- Agent Identity & Provenance: track authorship and origin per memory record via agent instance attribution without conflating credentials.
- Governed Access: scoped tokens, OAuth where the client supports it, soft/hard deletion and sensitive-memory handling (governance details).
- Native Integrations & Skill: dedicated integration for OpenClaw, Hermes, XMemo Skill (ClawHub), and DeepSeek DSH (available, released and pilot-tested; integration maturity Preview).
- Access Surfaces: unified via Model Context Protocol, the local CLI (
xmemo), and the public REST API.
Preview: Cloud Skills; Dream (off by default); Teams (Business plan not yet available). Knowledge Bases are available where enabled for the account.
XMemo CLI
@xmemo/client is the official control plane for connecting AI tools to XMemo. It makes setup repeatable, keeps credentials out of project files, and gives every supported client a consistent path to durable, user-owned memory.
The package is deliberately small: the CLI runtime, safe client configuration, behavior profiles, XMemo skills, and marketplace metadata. Server code, databases, deployment files, logs, and internal operations remain outside the npm distribution.
Architecture
| Package | @xmemo/client |
| Primary command | xmemo (alias: client) |
| Local MCP command | xmemo-mcp |
| Hosted MCP | https://xmemo.dev/mcp |
| Runtime | Node.js 20 or later |
| License | MIT |
Why XMemo CLI
- One control plane — login, diagnostics, configuration, profiles, updates, and smoke checks share one predictable interface.
- Private by design — generated project configuration references a credential; it never embeds the credential value.
- Native where it matters — OpenClaw and Hermes use dedicated memory integrations instead of duplicating the same capability through MCP.
- Portable everywhere else — hosted Streamable HTTP MCP and local stdio cover modern editors, terminals, and agent runtimes.
- Safe automation — supported setup and removal paths offer preview, dry-run, or explicit confirmation before making changes.
- Small supply-chain surface — the npm package is governed by an explicit file allowlist and release provenance.
Quick start
Guided onboarding (xmemo init)
For an interactive first-run experience across account authentication, detected clients, agent behavior instructions, MCP server setup, skills, and plugins, run:
npm install -g @xmemo/client
xmemo init
Flags and options:
xmemo init --dry-run: View the full onboarding plan without performing network calls or disk writes.xmemo init --yes: Automatically accept and apply all onboarding steps without interactive prompts.xmemo init --json: Emit structured JSON for the plan or result envelope.xmemo init --client <id>...: Restrict onboarding to specific clients (e.g.,cursor,codex,claude-code).xmemo start: Alias forxmemo initwith quick-start walkthrough steps.
Global installation exposes xmemo as the primary command, and also provides client and memory-os as aliases.
Manual step-by-step setup
xmemo account login
xmemo doctor
xmemo setup codex
xmemo status
Replace codex with your client. Preview a configuration before writing it:
xmemo setup cursor --dry-run
Running with npx
You can also run any CLI command directly without a global install via npx @xmemo/client <command>:
# Check version or health
npx @xmemo/client --version
npx @xmemo/client doctor
# Guided onboarding without global install
npx @xmemo/client init
# Install skill or run MCP stdio server
npx @xmemo/client skill install
npx @xmemo/client mcp serve
[!TIP] Start with
xmemo init(orxmemo account login,xmemo doctor, andxmemo setup <client>). Hand-edit MCP configuration only when a client has no verified setup path.
How the commands fit together
The XMemo CLI architecture is built on four core design principles:
1. Unified Resource Grammar (xmemo <resource> <action>)
Every integration component is a first-class resource with predictable lifecycle actions:
| Resource | Scope | Actions | Examples |
|---|---|---|---|
mcp |
MCP server connection configuration | install, remove, status |
xmemo mcp install codex, xmemo mcp status |
plugin |
Host-native extension packages | install, remove, status, list, info |
xmemo plugin install gemini-cli, xmemo plugin list |
skill |
Agent skill scripts & documentation | install, remove, status, update |
xmemo skill install --client openclaw |
profile |
Markdown behavior steering instructions | install, remove, status, show |
xmemo profile install cursor |
- Composite commands:
xmemo setup [<client>...],xmemo uninstall [<client>...], andxmemo status [<client>]orchestrate these resources in a single step according to the client's declarative profile. - Backward-compatible aliases: Familiar commands such as
xmemo mcp add(alias formcp install),xmemo profile uninstall(alias forprofile remove), andxmemo skill uninstall(alias forskill remove) remain fully functional and print a helpful one-line hint in interactive terminals.
2. Unified Target Resolver
When no client is explicitly passed, the CLI uses a deterministic three-tier precedence resolution model:
- Explicit flag or argument:
--client <id>, positional client argument, or--all. - Calling agent environment: Automatically identifies the calling agent runtime when running inside an agent session (e.g.,
CLAUDECODE/CLAUDE_CODE_ENTRYPOINTmaps toclaude-code, andCODEX_THREAD_ID/CODEX_SESSION_IDmaps tocodex). - Detected installed clients: Inspects local configuration paths and markers. If exactly one matching client is found, it is automatically selected; if multiple clients are found in interactive mode, an interactive picker is presented. The CLI never silently writes configuration to arbitrary unverified paths.
3. Plan, Confirm Once, Apply (PlanRunner)
Mutating commands follow a strict, atomic execution pattern:
- Build Plan: Assemble an ordered sequence of actions across resources (e.g. plugin install followed by skill configuration).
- Preview: Print the entire plan (including modified paths, commands, and unified diffs) to the terminal.
- Confirm Once: Prompt
[y/N]exactly once for the entire sequence. Re-running with--yesor-ybypasses the prompt;--dry-rundisplays the preview without mutation. - Apply Sequentially: Steps run in dependency order, stopping immediately upon first failure. Re-running an already configured client detects that all components are up to date and reports
Nothing to do.
4. Declarative Client Registry
All client configurations, recipes, and capabilities are declared centrally in src/clients/registry.js. Command implementations are purely generic orchestrators with zero hardcoded client ID strings. Platforms can also be added dynamically at runtime via registerClient().
Supported integrations
| Client | Recommended command | Connection |
|---|---|---|
| Codex | xmemo setup codex |
Hosted MCP + behavior profile |
| Cursor | xmemo setup cursor |
Hosted MCP + Bearer Token + behavior profile |
| Copilot CLI | xmemo setup copilot |
Local authenticated proxy |
| Gemini CLI | xmemo setup gemini |
Hosted MCP + OAuth |
| Antigravity | xmemo setup antigravity |
Hosted MCP + OAuth |
| OpenClaw | xmemo setup openclaw |
Native memory plugin + Skill |
| Hermes | xmemo setup hermes |
Native memory provider |
| Kiro | xmemo setup kiro |
Native HTTP OAuth; --auth key for API Key |
| Grok | xmemo setup grok |
Hosted MCP |
| Other MCP clients | xmemo mcp config --client generic |
Generated template |
The client registry also covers Devin Desktop (formerly Windsurf), Cline, Continue, Claude Desktop,
Claude Code, Kimi Code, Muse Code, Zed, JetBrains, OpenCode, Qwen, Trae, and compatible
MCP hosts. Run xmemo mcp list for the current machine-readable catalog.
For VS Code users looking for the dedicated editor extension, see the yonro/xmemo-vscode repository. For Cursor users looking for the dedicated plugin, see the yonro/xmemo-cursor-plugin repository. For Claude users looking for the dedicated plugin, see the yonro/xmemo-claude-plugin repository.
Connection modes
Hosted MCP
The recommended universal path is the XMemo Streamable HTTP endpoint:
https://xmemo.dev/mcp
OAuth-capable clients complete authentication in the browser. Other clients
reference XMEMO_KEY without copying its value into repository files.
Generic configuration shape:
{
"mcpServers": {
"XMemo": {
"type": "streamable-http",
"url": "https://xmemo.dev/mcp",
"headers": {
"Authorization": "Bearer ${XMEMO_KEY}"
}
}
}
}
Client configuration keys differ; prefer xmemo setup <client> over copying
this generic example directly.
Local stdio MCP
xmemo-mcp is the dedicated stdio entry point for marketplaces and clients
that launch a local process. Safe discovery exposes 20 tools, three prompts,
and two documentation resources without a token. Tool execution still requires
authentication.
After a global installation:
xmemo-mcp
Install-free MCP configuration:
{
"mcpServers": {
"XMemo": {
"command": "npx",
"args": [
"-y",
"--package",
"@xmemo/client@latest",
"xmemo-mcp"
]
}
}
}
xmemo mcp serve is equivalent when the CLI is already installed.
Native integrations
OpenClaw and Hermes have dedicated memory providers. Their default setup avoids installing a second, duplicate XMemo tool surface:
- OpenClaw: installs the pinned plugin
clawhub:@xmemo/openclaw-memory@1.0.18without--forceby default. Re-running setup gracefully detects existing installations; use--forceto reinstall or overwrite. - Hermes: installs the pinned provider package
hermes-xmemo==1.1.3viapip installwithout-U. - Every install command prints the exact command before executing. Use
--dry-runto preview actions without installing.
# Native OpenClaw plugin (clawhub:@xmemo/openclaw-memory@1.0.18) + XMemo Skill
xmemo setup openclaw
# Native Hermes memory provider (hermes-xmemo==1.1.3)
xmemo setup hermes
Add hosted MCP only when an explicit fallback is desired:
xmemo setup openclaw --with-mcp
xmemo setup hermes --with-mcp
Use --mcp-only to skip the native integration and install only the hosted MCP
fallback.
XMemo Skill install
The CLI installs the verified XMemo Skill locally into agent skill folders or a target directory:
- Installs into client skill directories:
- Claude Code:
~/.claude/skills/xmemo-memory(global) or.claude/skills/xmemo-memory(project with--project) - Codex:
~/.codex/skills/xmemo-memory - OpenClaw:
~/.openclaw/skills/xmemo-memory - All other 21 clients remain
nulluntil officially documented.
- Claude Code:
- Defaults to the pinned
@xmemo/skill@1.1.48release from npm and verifies tarball integrity (sha512 SRI) before extraction. - Override version with
--version <semver>or explicitly opt into the latest release via--version latest. - For air-gapped or offline installations, install from a local directory or packed tarball with
--from <dir|tgz>(optional--integrity <sha512>). - Manage client skills with
skill status,skill update, andskill remove. - Preview actions without writing files using
--dry-run. - Safety & Consent:
- Interactive install prompts
[y/N]before writing (Enter, EOF, or empty input cancels) unless--yesis specified. - Existing installs refuse overwrite without
--force; when--forceis used, a backup is created in~/.xmemo/backups/skills/<client>/(outside the agent skills directory). skill removeonly removes verified XMemo skill directories, refusing foreign folders, and reports the preserved backup location.
- Interactive install prompts
# Install to agent skill folder (Claude Code global, Codex, or OpenClaw)
xmemo skill install --client claude-code
xmemo skill install --client codex
xmemo skill install --client openclaw
# Install OpenClaw skill globally (shared ~/.openclaw/skills)
xmemo skill install --client openclaw --global
# Install to project-level skill folder (Claude Code project: .claude/skills/xmemo-memory)
xmemo skill install --client claude-code --project
# Install for all detected supported clients
xmemo skill install --all
# Automatically resolve detected client(s) (or specify --client <id>)
xmemo skill install
# Install into a custom directory path
xmemo skill install --dir ./custom-skill-dir
# Non-interactive install (skips [y/N] prompt)
xmemo skill install --client codex --yes
# Replace existing installation (creates backup in ~/.xmemo/backups/skills/<client>/)
xmemo skill install --client codex --force --yes
# Update alias (equivalent to skill install --force)
xmemo skill update --client codex --yes
# Inspect installation status across clients
xmemo skill status
xmemo skill status --client codex
xmemo skill status --all --json
# Remove installed skill from an agent folder (refuses non-XMemo folders)
xmemo skill remove --client codex --yes
xmemo skill remove --client claude-code --project --yes
# Dry run preview
xmemo skill install --client codex --dry-run
Standalone curl & PowerShell installers
For environments without Node.js or @xmemo/client, XMemo provides standalone HTTPS installers at https://xmemo.dev/skill/install (POSIX sh) and https://xmemo.dev/skill/install.ps1 (PowerShell).
The installer is agent-aware and automatically resolves the correct target directory for your active agent:
# Claude Code: installs to ~/.claude/skills/xmemo-memory
curl -fsSL https://xmemo.dev/skill/install | XMEMO_SKILL_AGENT=claude-code sh
# Codex: installs to ${CODEX_HOME:-$HOME/.codex}/skills/xmemo-memory
curl -fsSL https://xmemo.dev/skill/install | XMEMO_SKILL_AGENT=codex sh
# OpenClaw: install via OpenClaw CLI
openclaw skills install @xmemo/xmemo --version 1.1.48
# Windows (PowerShell):
# $env:XMEMO_SKILL_AGENT="claude-code"; irm https://xmemo.dev/skill/install.ps1 | iex
# $env:XMEMO_SKILL_AGENT="codex"; irm https://xmemo.dev/skill/install.ps1 | iex
[!TIP] Prompt for your AI Agent (copy and paste directly into Claude Code, Codex, or another agent):
Install the standalone XMemo Skill into your skills directory: run the installer from https://xmemo.dev/skill/install (on Windows, https://xmemo.dev/skill/install.ps1) with XMEMO_SKILL_DIR set to your skills directory plus /xmemo-memory. Run the doctor command it prints to verify the installation, then reload your skills and follow the Skill's first-run steps. Follow your normal safety checks and do not use elevated privileges.
Target resolution precedence (first match wins):
XMEMO_SKILL_DIR: Installs to the specified directory.XMEMO_SKILL_AGENT=claude-code|codex: Installs to the explicit agent's skills directory (openclawredirects toopenclaw skills install xmemo).- Auto-detection: Automatically detects Claude Code (
CLAUDECODE=1) or Codex (CODEX_THREAD_ID,CODEX_SESSION_ID, orCODEX_HOME). - Home directory discovery: If only
~/.claudeor only~/.codexexists in HOME, selects that agent. - Fallback: Installs to
./xmemo-skillwith a warning on stderr explaining that AI agents will not automatically load the skill from this directory.
Safety & Replacement:
- Refuses to overwrite existing installations unless
XMEMO_SKILL_FORCE=1is provided. - When replacing, moves the previous installation to
~/.xmemo/backups/skills/<agent>/<name>-<timestamp>(safely outside agent skill search paths). - After installation, prints the absolute install path, the verification doctor command (
node <path>/scripts/xmemo-skill.mjs doctor --anonymous), and a prompt to reload your agent.
Agent plugins
The CLI provides a curated, static index of verified agent plugins shipped directly in @xmemo/client. Each entry contains a pinned version, release tag, and exact Git commit SHA resolved at release time.
ℹ️ Strict Separation Rule:
xmemo plugininstalls agent plugins only (e.g.@xmemo/openclaw-memory). Skills are installed exclusively viaxmemo skill install(e.g.@xmemo/xmemo).
| Plugin ID | Platform / Agent | Kind | Status | Integration |
|---|---|---|---|---|
openclaw |
OpenClaw | native-cli |
Stable | openclaw plugins install clawhub:@xmemo/openclaw-memory@1.0.18 (auto-prompts update if already installed) |
hermes |
Hermes Agent | native-cli |
Stable | hermes plugins install xmemo (fallback: python -m pip install hermes-xmemo==1.1.3) |
claude-code |
Claude Code | git-dir |
Preview | Pinned Git clone verified against commit 5d0d280 (defaults to ~/.xmemo/plugins/claude-code) |
cursor |
Cursor | marketplace |
Preview | Cursor Marketplace plugin |
gemini-cli |
Gemini CLI | native-cli |
Preview | gemini extensions install https://github.com/yonro/xmemo-gemini-cli --ref 39e25b185b5157490d1683e4ca8c5c5fb1312a88 |
kiro |
Kiro | manual |
Preview | Steering rules & Power integration |
vscode |
VS Code | manual |
Preview | VS Code extension manual steps (pending marketplace publication) |
deepseek-dsh |
DeepSeek DSH | native-cli |
Preview | dsh plugin --profile <name> add dsh-xmemo (requires --profile) |
chatgpt-codex |
ChatGPT / Codex | marketplace |
Preview | ChatGPT & Codex extension |
cindy |
Cindy | manual |
Preview | Native agent memory integration |
codex |
Codex | mcp |
Preview | Dedicated MCP configuration (xmemo setup codex) |
Commands:
# List available plugins (excluding legacy entries)
xmemo plugin list
# Include legacy plugins
xmemo plugin list --all
# View plugin details and verification metadata
xmemo plugin info <id>
# Preview install plan without executing
xmemo plugin install <id> --dry-run
# Install with explicit confirmation (prompts [y/N] by default)
xmemo plugin install <id>
# Non-interactive install
xmemo plugin install <id> --yes
# Specify profile for deepseek-dsh
xmemo plugin install deepseek-dsh --profile default --yes
# Specify custom target directory for git-dir plugins
xmemo plugin install claude-code --yes --dir ~/.custom-plugins/claude-code
# Open plugin documentation or marketplace in browser
xmemo plugin install <id> --open
Pertanyaan tentang XMemo MCP
Bagaimana cara menambahkan XMemo MCP ke Claude Code?
Jalankan claude mcp add --env XMEMO_KEY=<YOUR_XMEMO_KEY> memory-os-cli -- npx -y @xmemo/client di terminal Anda. Tambahkan --scope user agar tersedia di semua proyek.
Bagaimana cara menambahkan XMemo MCP ke Cursor?
Buka ~/.cursor/mcp.json dan tambahkan server di bawah mcpServers, menggunakan config Cursor yang ditunjukkan di bagian instalasi di atas.
Apa itu XMemo?
XMemo adalah Memory OS milik pengguna untuk AI agent yang menyediakan memori persisten, konteks proyek, dan kontinuitas sesi.
Bagaimana cara mulai menggunakan XMemo?
Anda dapat melakukan onboarding terpandu dengan menginstal client melalui npm dan menjalankan command init.
Apakah XMemo mendukung mode koneksi yang berbeda?
Ya, XMemo mendukung hosted Streamable HTTP MCP dan local stdio server untuk editor modern dan agent runtime.
