diff --git a/.env.example b/.env.example
index 185568e..6f71255 100644
--- a/.env.example
+++ b/.env.example
@@ -1,20 +1,41 @@
+# XMTP CLI Configuration
+# Copy this file to .env and fill in your values
-XMTP_ENV=
+# =============================================================================
+# XMTP Client Configuration
+# =============================================================================
-# public key is 0x3de2787073732369f2e984ca5b981feCbF0f7FC5
-ANTHROPIC_API_KEY=
+# Your wallet private key (with 0x prefix)
+# If not provided, a random key will be generated each time
+# XMTP_CLIENT_WALLET_KEY=0x...
+# Database encryption key (32-byte hex string)
+# If not provided, a random key will be generated each time
+# XMTP_CLIENT_DB_ENCRYPTION_KEY=...
-# Pinata API Key
-PINATA_API_KEY=
-PINATA_SECRET_KEY=
-# keys for xmtp-attachments
+# =============================================================================
+# XMTP Network Configuration
+# =============================================================================
-# keys for xmtp-code
-XMTP_WALLET_KEY=
-XMTP_DB_ENCRYPTION_KEY=
-# public key is 0x3FaA46B76dBD83117d17c190e69a9147F98edB3D
+# XMTP environment (dev or production)
+# Default: production
+XMTP_ENV=production
-SLACK_BOT_TOKEN=
-SLACK_APP_TOKEN=
-SLACK_SIGNING_SECRET=
+# =============================================================================
+# Auto-Connect Configuration (Optional)
+# =============================================================================
+
+# If you want to auto-connect to a specific wallet on startup
+# Provide the target wallet's private key here
+# The CLI will derive the address and connect automatically
+# XMTP_WALLET_KEY=0x...
+
+# =============================================================================
+# Notes
+# =============================================================================
+
+# - Keys are optional - the CLI will auto-generate them if not provided
+# - For persistent identity, save your generated keys to this file
+# - Use 'dev' environment for testing, 'production' for real usage
+# - Keep your private keys secure and never commit them to git
+# - The .gitignore file already excludes .env for safety
diff --git a/CLAUDE.md b/CLAUDE.md
index 662d661..a9bd01a 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,155 +1,531 @@
-# XMTP Copilot
+# XMTP CLI Chat v2.0 - Architecture Documentation
-You are aa helpful assistant that can help me with XMTP tasks. You can be asked to reply directly in chat via Slack or Xmtp.
+## 🏗️ System Architecture
-## RULES
+This document provides a technical overview of the XMTP CLI Chat application architecture for AI assistants and developers.
-- You are a helpful assistant that can help me with XMTP tasks.
-- You can also answer questions based on the Docs in the .claude/docs folder.
-- If the user poses a question, probably is looking for a Docs answer.
-- Don't send "Note:...". Only answer when the user asks for it.
-- Your address is `0x3FaA46B76dBD83117d17c190e69a9147F98edB3D`
-- Your inboxid is `743f3805fa9daaf879103bc26a2e79bb53db688088259c23cf18dcf1ea2aee64`
-- If a user asks you in first person, like "send me" , his address or slack becomes the target of the commands (ask it if you're not sure)
+## Overview
+The application is built using a modern React-based CLI framework (Ink) with clean separation of concerns following component-based architecture patterns. The codebase is fully typed with TypeScript and uses Zustand for state management.
-## Available commands
+## Directory Structure
-```bash
-# Groups
+```
+src/
+├── cli.tsx # Main entry point
+├── components/ # React UI components
+│ ├── Layout.tsx # Main layout orchestrator
+│ ├── Sidebar.tsx # Conversation list sidebar
+│ ├── ChatView.tsx # Message display area
+│ ├── StatusBar.tsx # Bottom status bar
+│ ├── Input.tsx # Message input field
+│ └── CommandPalette.tsx # Quick action picker
+├── hooks/ # Custom React hooks
+│ ├── useXMTP.ts # XMTP protocol integration
+│ └── useKeyboard.ts # Keyboard event handling
+├── store/ # State management
+│ └── state.ts # Zustand store
+├── types/ # TypeScript definitions
+│ └── index.ts # Shared types
+└── utils/ # Utility functions
+ ├── formatters.ts # Data formatting
+ └── helpers.ts # Helper functions
+```
-## Create a DM (default behavior)
-yarn groups
+## Component Architecture
-## Create a DM with custom name
-yarn groups --name "My DM"
+### Layout Component (`components/Layout.tsx`)
-## Create a group with multiple members
-yarn groups --members 5 --name "My Group"
+The root layout component that orchestrates the entire UI:
-## Use repeat tasks for multiple DMs
-yarn groups --repeat 3
-yarn groups create
+```typescript
+
+ {showSidebar && }
+
+ {showCommandPalette && }
+
+
+
+```
-## Create group by inbox ID
-yarn groups create --name "My Group" --members 5
+**Props:**
+- Conversation state (list, current, messages)
+- UI state (sidebar, command palette visibility)
+- Input handlers
+- Status information
-## Create group by Ethereum addresses
-yarn groups create-by-address --name "Address Group" --member-addresses "0x123...,0x456..."
+**Responsibilities:**
+- Layout composition
+- Responsive pane sizing
+- Conditional rendering of UI elements
-## Update group metadata
-yarn groups metadata --group-id --name "New Name" --description "New description"
+### Sidebar Component (`components/Sidebar.tsx`)
-## Get group messages
-yarn groups get-messages --group-id
+Displays the conversation list with navigation indicators:
-## Get group members
-yarn groups get-members --group-id
+**Features:**
+- Conversation type badges ([D] for DM, [G] for Group)
+- Selection indicator (▶)
+- Active conversation indicator (●)
+- Unread count badges
+- Navigation hints
-## List group members and permissions
-yarn permissions list --group-id
+**Visual States:**
+- Selected (highlighted)
+- Current conversation (marked)
+- Unread messages (bold + count)
-## Get detailed group information
-yarn permissions info --group-id
+### ChatView Component (`components/ChatView.tsx`)
+Renders messages for the active conversation:
-# Update group permissions
+**Features:**
+- Message list with timestamps
+- Sender identification
+- Multi-line message support
+- Empty state placeholder
+- Message scrolling
-yarn permissions update-permissions --group-id --features add-member,remove-member --permissions admin-only
+**Message Format:**
+```
+[HH:MM] Sender: Message content
+```
-## Send single message to target
-yarn send --target 0x1234... --message "Hello!"
+### Input Component (`components/Input.tsx`)
-## Send multiple messages for testing
-yarn send --target 0x1234... --users 10
+Handles user text input:
-## Send message to group
-yarn send --group-id abc123... --message "Hello group!" --sender 0x1234...
+**Features:**
+- Command mode indicator (/)
+- Placeholder text
+- Real-time input
+- Submit handling
-## Performance testing with multiple attempts
-yarn send --target 0x1234... --users 500 --attempts 10
+### CommandPalette Component (`components/CommandPalette.tsx`)
-## Wait for responses
-yarn send --target 0x1234... --users 100 --wait
+Quick action selector:
-## Custom message with repeat execution
-yarn send --target 0x1234... --custom-message "Test message" --repeat 3 --delay 1000
+**Features:**
+- Fuzzy search
+- Keyboard navigation
+- Shortcut display
+- Command execution
-## Advanced testing with error handling
-yarn send --target 0x1234... --users 1 --repeat 5 --continue-on-error --verbose
+### StatusBar Component (`components/StatusBar.tsx`)
+Displays connection and app status:
-# List Operations
+**Features:**
+- Connection status indicator
+- Wallet address (shortened)
+- Conversation count
+- Keybinding hints
+- Error display
+
+## Hook Architecture
+
+### useXMTP Hook (`hooks/useXMTP.ts`)
+
+Encapsulates all XMTP protocol logic:
+
+**Responsibilities:**
+1. Agent initialization
+2. Conversation management
+3. Message handling
+4. Real-time streaming
+5. Error handling
+
+**Key Methods:**
+- `setCurrentConversationById(id)` - Switch conversations
+- `sendMessage(content)` - Send message
+- `findOrCreateConversation(identifiers)` - Create/find conversation
+
+**State Exposed:**
+- `agent` - XMTP agent instance
+- `conversations` - List of conversations
+- `currentConversation` - Active conversation
+- `messages` - Current conversation messages
+- `isLoading` - Loading state
+- `error` - Error messages
+
+**Implementation Details:**
+- Uses `useEffect` for initialization
+- Manages WebSocket stream with refs
+- Handles Ethereum address resolution
+- Converts XMTP types to app types
+
+### useKeyboard Hook (`hooks/useKeyboard.ts`)
+
+Handles keyboard navigation and shortcuts:
+
+**Keybindings:**
+- `Ctrl+B` - Toggle sidebar
+- `Ctrl+K` - Toggle command palette
+- `Ctrl+N/P` - Next/previous conversation
+- `↑/↓` - Navigate conversation list
+- `Enter` - Select/submit
+- `Esc` - Cancel/b
+
+**Features:**
+- Context-aware (different modes)
+- Callback system
+- Integration with Zustand store
+
+## State Management
+
+### Zustand Store (`store/state.ts`)
+
+Global application state:
+
+**State Categories:**
+
+1. **Agent State**
+ - `agent` - XMTP agent instance
+ - `address` - Wallet address
+ - `inboxId` - XMTP inbox ID
+ - `url` - Network URL
+ - `installations` - Installation count
+ - `env` - Environment (dev/production)
+
+2. **Conversation State**
+ - `conversations` - Conversation list
+ - `currentConversation` - Active conversation
+ - `messages` - Message list
+
+3. **UI State**
+ - `showSidebar` - Sidebar visibility
+ - `showCommandPalette` - Command palette visibility
+ - `selectedConversationIndex` - Navigation index
+ - `inputValue` - Input field value
+ - `commandMode` - Command mode flag
+
+4. **Status State**
+ - `isLoading` - Loading flag
+ - `loadingStatus` - Status message
+ - `error` - Error message
+ - `connectionStatus` - Connection state
+
+**Actions:**
+- State setters
+- UI toggles
+- Navigation methods (next/prev conversation)
+- Selection methods
+
+## Type System
+
+### Core Types (`types/index.ts`)
+
+**FormattedMessage:**
+```typescript
+{
+ id: string;
+ timestamp: string;
+ sender: string;
+ content: string;
+ isFromSelf: boolean;
+ sentAt: Date;
+}
+```
-## List all conversations
-yarn list conversations
+**ConversationInfo:**
+```typescript
+{
+ id: string;
+ conversation: Conversation;
+ name: string;
+ type: "dm" | "group";
+ peerAddress?: string;
+ peerInboxId?: string;
+ unreadCount: number;
+ lastMessageAt?: Date;
+ lastMessage?: string;
+}
+```
-## List conversations with pagination
-yarn list conversations --limit 20
+**AppState:**
+- See Zustand Store section for complete structure
-## List conversations with custom offset
-yarn list conversations --limit 10 --offset 20
+## Data Flow
-## List members from a conversation
-yarn list members --conversation-id
+### Message Reception Flow
-## List messages from a conversation
-yarn list messages --conversation-id
+```
+XMTP Network
+ ↓
+WebSocket Stream (useXMTP)
+ ↓
+formatMessage() (formatters.ts)
+ ↓
+setMessages() / addMessage() (store)
+ ↓
+ChatView Component
+ ↓
+Terminal Display
+```
+
+### Message Send Flow
+
+```
+User Input
+ ↓
+handleInputSubmit() (cli.tsx)
+ ↓
+sendMessage() (useXMTP)
+ ↓
+conversation.send() (XMTP SDK)
+ ↓
+XMTP Network
+ ↓
+(echoed back via stream)
+```
+
+### Conversation Switch Flow
-## List messages with pagination
-yarn list messages --conversation-id --limit 10
+```
+Keyboard Input (↑/↓/Ctrl+N/P)
+ ↓
+useKeyboard Hook
+ ↓
+nextConversation() / prevConversation() (store)
+ ↓
+selectedConversationIndex updated
+ ↓
+Sidebar re-renders with new selection
+ ↓
+User presses Enter
+ ↓
+setCurrentConversationById() (useXMTP)
+ ↓
+loadMessages() + startMessageStream()
+ ↓
+ChatView updates
+```
-## List messages with custom offset
-yarn list messages --conversation-id --limit 10 --offset 5
+## Utility Functions
+### Formatters (`utils/formatters.ts`)
-# Debug & Information
+- `formatMessage()` - Convert XMTP message to display format
+- `formatAddress()` - Shorten Ethereum address
+- `formatTime()` - Relative time display
-## Get general system information
-yarn debug info
+### Helpers (`utils/helpers.ts`)
-## Get address information
-yarn debug address --address 0xe089d4e01a5cd0af7c119abce22b7828851cd387
+- `isGroup()` - Type guard for group conversations
+- `isDm()` - Type guard for DM conversations
+- `isEthAddress()` - Validate Ethereum address
+- `handleError()` - Error message formatting
-## Resolve address to inbox ID
-yarn debug resolve --address 0xe089d4e01a5cd0af7c119abce22b7828851cd387
+## Entry Point (`cli.tsx`)
-## Get inbox information
-yarn debug inbox --inbox-id 743f3805fa9daaf879103bc26a2e79bb53db688088259c23cf18dcf1ea2aee64
+### Main Flow
-## Check key package status
-yarn debug key-package --inbox-id 743f3805fa9daaf879103bc26a2e79bb53db688088259c23cf18dcf1ea2aee64
+1. **Parse Arguments**
+ - Extract CLI flags
+ - Load environment variables
+ - Auto-detect agent addresses
-## Get installation information for an inbox
-yarn debug installations --inbox-id 743f3805fa9daaf879103bc26a2e79bb53db688088259c23cf18dcf1ea2aee64
+2. **Initialize App**
+ - Render React app with Ink
+ - Initialize XMTP (via useXMTP)
+ - Set up keyboard handlers
+3. **Loading State**
+ - Display initialization progress
+ - Show agent information
-# Content Types
+4. **Main UI**
+ - Render Layout with all components
+ - Handle input and commands
+ - Process keyboard shortcuts
-## Send text message with reply and reaction
-yarn content text --target 0x1234...
+5. **Command Processing**
+ - `/chat ` - Switch conversation
+ - `/exit` - Quit application
+ - Address input - Start conversation
-## Send markdown formatted message
-yarn content markdown --target 0x1234...
+## Performance Considerations
-## Send remote attachment
-yarn content attachment --target 0x1234...
+### Optimization Strategies
-## Send transaction frame (USDC)
-yarn content transaction --target 0x1234... --amount 0.5
+1. **Message Windowing**
+ - Only render visible messages (last N)
+ - Prevents UI lag with long conversations
-## Send deeplink to create conversation
-yarn content deeplink --target 0x1234...
+2. **Lazy Loading**
+ - Conversations loaded on demand
+ - Messages loaded per conversation
-## Send mini app URL
-yarn content miniapp --target 0x1234...
+3. **Efficient Streaming**
+ - Single WebSocket connection
+ - Filter messages by conversation ID
-## Send content to a group
-yarn content text --group-id
-yarn content markdown --group-id
+4. **React Optimization**
+ - Zustand prevents unnecessary re-renders
+ - Component memoization where needed
-## Test content types with repeat
-yarn content text --target 0x1234... --repeat 3 --delay 1000
+## Error Handling
+
+### Error Display
+
+Errors are shown in the StatusBar with auto-clear:
+- 5-second timeout by default
+- Visual red indicator
+- Clear error messages
+
+### Error Sources
+
+1. **XMTP Errors**
+ - Network connection issues
+ - Authentication failures
+ - Protocol errors
+
+2. **User Input Errors**
+ - Invalid commands
+ - Invalid addresses
+ - Invalid conversation numbers
+
+3. **Application Errors**
+ - State management issues
+ - Component rendering errors
+
+## Extension Points
+
+### Adding New Commands
+
+1. Add command to `commands` array in `cli.tsx`:
+```typescript
+{
+ id: "my-command",
+ name: "My Command",
+ description: "Does something cool",
+ shortcut: "Ctrl+X",
+ action: () => { /* implementation */ }
+}
```
-Nothing else. Be helpful and friendly.
+2. Add keybinding in `useKeyboard.ts` if needed
+
+### Adding New UI Components
+
+1. Create component in `src/components/`
+2. Add to Layout if needed
+3. Wire up state/props
+4. Add TypeScript types
+
+### Adding New Features
+
+1. Define types in `types/index.ts`
+2. Add state to Zustand store if needed
+3. Implement logic in hooks
+4. Create/update UI components
+5. Wire up in main app
+
+## Testing Strategy
+
+### Manual Testing
+
+1. **Basic Flow**
+ - Start app
+ - List conversations
+ - Switch conversations
+ - Send messages
+
+2. **Keyboard Navigation**
+ - Test all keybindings
+ - Verify navigation works
+ - Check command palette
+
+3. **Error Cases**
+ - Invalid input
+ - Network disconnection
+ - Invalid addresses
+
+### Future: Automated Testing
+
+Consider adding:
+- Unit tests for utilities
+- Integration tests for hooks
+- E2E tests for user flows
+
+## Deployment
+
+### Build
+
+The app runs via `tsx` (TypeScript execution):
+```bash
+yarn dev
+```
+
+### Distribution
+
+For distribution, consider:
+- Bundle with `esbuild` or `webpack`
+- Create standalone executable with `pkg`
+- Distribute via npm
+
+## Known Limitations
+
+1. **Message History**
+ - Limited to last 50 messages per conversation
+ - No pagination yet
+
+2. **Search**
+ - No message search yet
+ - No conversation search
+
+3. **Media**
+ - Text-only messages
+ - No image/file support yet
+
+4. **Offline**
+ - Requires active connection
+ - No offline message queue
+
+## Future Enhancements
+
+See TODO in main README for planned features:
+- Message reactions
+- Thread support
+- Enhanced search
+- Configuration file
+- Themes/customization
+- Plugin system
+
+## Debugging Tips
+
+### Enable Debug Logging
+
+Add to XMTP hook:
+```typescript
+console.log("[XMTP]", ...);
+```
+
+### Inspect State
+
+Use Zustand dev tools or add:
+```typescript
+console.log(useStore.getState());
+```
+
+### Check Message Stream
+
+Add logging in `startMessageStream()`:
+```typescript
+for await (const message of streamRef.current) {
+ console.log("[Stream]", message);
+ // ...
+}
+```
+
+## Resources
+
+- [Ink Documentation](https://github.com/vadimdemedes/ink)
+- [XMTP Protocol](https://xmtp.org/docs)
+- [Zustand Guide](https://github.com/pmndrs/zustand)
+- [React Hooks](https://react.dev/reference/react)
+
+---
+
+Last Updated: 2025-10-24
+Version: 2.0.0
diff --git a/README.md b/README.md
index 310db77..3e5a44f 100644
--- a/README.md
+++ b/README.md
@@ -3,213 +3,3 @@
The coolest terminal-based chat interface for XMTP protocol! Built with React + Ink for a beautiful TUI experience.

-
-## ✨ Features
-
-### 🎨 Beautiful UI
-- **Split-pane layout** with conversation sidebar
-- **Real-time message streaming** with instant updates
-- **Color-coded messages** for easy reading
-- **Status bar** with connection info and shortcuts
-
-### ⌨️ Power User Experience
-- **Vim-inspired keybindings** for navigation
-- **Command palette** (Ctrl+K) for quick actions
-- **Keyboard-first** navigation (no mouse needed!)
-- **Smart conversation switching** (Ctrl+N/P)
-
-### 💬 Full XMTP Support
-- **Direct messages** (1-on-1 chats)
-- **Group chats** with multiple participants
-- **Real-time sync** across all your installations
-- **Ethereum address** and InboxId support
-
-## 🚀 Quick Start
-
-### Prerequisites
-- Node.js 20+
-- Yarn package manager
-
-### Installation
-
-```bash
-# Clone the repository
-git clone
-cd xmtp-node-inbox
-
-# Install dependencies
-yarn install
-
-# Set up environment variables
-cp .env.example .env
-# Edit .env with your keys (or let the CLI generate them)
-
-# Start the CLI
-yarn dev
-```
-
-### Environment Variables
-
-```bash
-# Optional - CLI will auto-generate if not provided
-XMTP_CLIENT_WALLET_KEY=your_private_key
-XMTP_CLIENT_DB_ENCRYPTION_KEY=your_32_byte_hex_key
-
-# Optional - defaults to 'production'
-XMTP_ENV=production # or 'dev'
-
-# Optional - auto-connect to this wallet on dev
-XMTP_WALLET_KEY=target_wallet_private_key
-```
-
-## 📖 Usage
-
-### Start a Conversation
-
-```bash
-# Launch CLI and select a conversation
-yarn dev
-
-# Connect directly to an address
-yarn dev --agent 0x7c40611372d354799d138542e77243c284e460b2
-
-# Create a group chat
-yarn dev --agent 0x... 0x... 0x...
-```
-
-### Keybindings
-
-| Key | Action |
-|-----|--------|
-| `Ctrl+B` | Toggle sidebar |
-| `Ctrl+K` | Open command palette |
-| `Ctrl+N` | Next conversation |
-| `Ctrl+P` | Previous conversation |
-| `↑` / `↓` | Navigate conversation list |
-| `Enter` | Select conversation / Send message |
-| `Esc` | Cancel / Close palette |
-| `Ctrl+C` | Quit application |
-
-### Commands
-
-Type these in the message input:
-
-- `/list` - Show conversation list
-- `/chat ` - Switch to conversation by number
-- `/exit` or `/quit` - Exit the application
-- Any address - Start a new conversation
-
-## 🏗️ Architecture
-
-```
-src/
-├── components/ # React components
-│ ├── Layout.tsx # Main layout with split panes
-│ ├── Sidebar.tsx # Conversation list
-│ ├── ChatView.tsx # Message display
-│ ├── StatusBar.tsx # Bottom status bar
-│ ├── Input.tsx # Message input
-│ └── CommandPalette.tsx # Command picker
-├── hooks/
-│ ├── useXMTP.ts # XMTP client logic
-│ └── useKeyboard.ts # Keyboard navigation
-├── store/
-│ └── state.ts # Zustand global state
-├── types/
-│ └── index.ts # TypeScript types
-├── utils/
-│ ├── formatters.ts # Message/date formatting
-│ └── helpers.ts # Utility functions
-└── cli.tsx # Main entry point
-```
-
-## 🎯 Design Philosophy
-
-### Clean Architecture
-- **Separation of concerns** - UI, logic, and state are cleanly separated
-- **Reusable components** - Each component has a single responsibility
-- **Type-safe** - Full TypeScript coverage for reliability
-
-### User Experience
-- **Keyboard-first** - Navigate without touching the mouse
-- **Responsive** - Adapts to terminal size
-- **Informative** - Clear status, errors, and loading states
-- **Discoverable** - Command palette and hints
-
-### Performance
-- **Efficient rendering** - Only re-render what changed
-- **Stream processing** - Handle real-time messages smoothly
-- **Lazy loading** - Load messages on demand
-
-## 🛠️ Development
-
-```bash
-# Run in development mode with hot reload
-yarn dev
-
-# Lint code
-yarn lint
-
-# Format code
-yarn format
-```
-
-## 📦 Tech Stack
-
-- **[Ink](https://github.com/vadimdemedes/ink)** - React for CLI
-- **[Zustand](https://github.com/pmndrs/zustand)** - State management
-- **[XMTP Agent SDK](https://github.com/xmtp/agent-sdk)** - XMTP protocol
-- **[TypeScript](https://www.typescriptlang.org/)** - Type safety
-- **[Viem](https://viem.sh/)** - Ethereum utilities
-
-## 🎨 Customization
-
-The UI uses a consistent color theme defined in each component:
-- **Primary**: `#fc4c34` (XMTP Red)
-- Modify colors in component files to customize
-
-## 🐛 Troubleshooting
-
-### Database Issues
-If you see database errors, delete the local DB files:
-```bash
-rm *.db3*
-```
-
-### Connection Problems
-Check your network and XMTP environment:
-- `production` - Main XMTP network
-- `dev` - Development/test network
-
-### Key Generation
-If no keys are provided, the CLI will auto-generate them. For persistent identity, save the generated keys to `.env`.
-
-## 🤝 Contributing
-
-We love contributions! Here's how:
-
-1. Fork the repository
-2. Create a feature branch (`git checkout -b feature/amazing`)
-3. Commit your changes (`git commit -m 'Add amazing feature'`)
-4. Push to the branch (`git push origin feature/amazing`)
-5. Open a Pull Request
-
-## 📄 License
-
-MIT License - see [LICENSE.md](LICENSE.md)
-
-## 🙏 Acknowledgments
-
-- XMTP team for the amazing protocol
-- Ink team for the React CLI framework
-- The open source community
-
-## 📞 Support
-
-- [XMTP Documentation](https://xmtp.org/docs)
-- [GitHub Issues](./issues)
-- [XMTP Discord](https://discord.gg/xmtp)
-
----
-
-**Built with ❤️ for the XMTP community**
diff --git a/data/inboxes.json b/data/inboxes.json
deleted file mode 100644
index cf9b23f..0000000
--- a/data/inboxes.json
+++ /dev/null
@@ -1,3502 +0,0 @@
-[
- {
- "accountAddress": "0xcd50b4aed21e3adfa411106737e97de431e2eddf",
- "inboxId": "a5402cdaea8ca241516574d4b855dbb82cfedd29e5f3ba2b997f6bee321879fe",
- "walletKey": "0x9fb73f84b3f6ac457f48ee0ea8ff1b757e00f11c60389eaf166bdcb64ce2b11f",
- "dbEncryptionKey": "0cb3fd80723858194b3767df7cb9aac300aed88cc39e0d081dc60e53af475896",
- "installations": 2
- },
- {
- "accountAddress": "0x714130af378e7b744f479789a9b2838361237436",
- "inboxId": "449c0564b394bf12313bda4f0527a5d500afb1d7802250bc382d346ced3f63eb",
- "walletKey": "0x87d299d6ba4130a2579e3eb99eb8cd5259f7453842b8d7d78e271135b3c58ff8",
- "dbEncryptionKey": "b5d153c33715ca176dd77995572a6f7d393a432d8861af2dcf4282f8a2187ec3",
- "installations": 2
- },
- {
- "accountAddress": "0xe68e95b1c6d8b333eaec27bce67e45e9eceff9b0",
- "inboxId": "cb7213baf2dc77488a597f2ad47136fe1612fb686221903d7f09f155fe1cf2f5",
- "walletKey": "0xc2363a6733eee112980ee9739c1a2259d56e600b1788ea247fc90f2ae5b39098",
- "dbEncryptionKey": "bb6827de9cd16828a072d55b05754f85dd5932f63b938086806c6bf8200b5e85",
- "installations": 2
- },
- {
- "accountAddress": "0xe8eea3d70651402f3a15e981bba25ee5a76fbf74",
- "inboxId": "b164a6401398ac50ad9c80f1530201d4dbd2b0771ea26d697c0e43a358b79f59",
- "walletKey": "0xa7b565936cf427921e2406976701240ca9f112aa3252d050aef9e5eaec5a6fda",
- "dbEncryptionKey": "5fb5beea14c91aa3def967930cae529720f4fa2b2df896adadde603c8684ec74",
- "installations": 2
- },
- {
- "accountAddress": "0x5dc8fbe0d64bab50d1a97d29b069d7203fae755b",
- "inboxId": "13ccdd297ed5e9de229e298ab35b6f3b07cc6d318850bbf5e3cd162aa8c3dc57",
- "walletKey": "0x4eae15c64207098934aae828c87f81922b0fcb7dcbaf97f5f89b513f3a3b9b68",
- "dbEncryptionKey": "e5e7272135da1dedfdffaeb6e51b166aebeecef7b176316f132848cd2c57caf0",
- "installations": 2
- },
- {
- "accountAddress": "0x995309f2ecca945e10a153fa805bee71719da794",
- "inboxId": "362e88663aab240a6c5b0c9c6b91429b520065ccc0eace63ecaf63dbda7d0fd5",
- "walletKey": "0x739f90c465447d0b73362118d8d258326b1c39c3c4f2f5fdf32a306aa0ea7530",
- "dbEncryptionKey": "d4fe33b86b1a1f45354744c384f8466e59fe61d0746298e0cc543591d2a8fa43",
- "installations": 2
- },
- {
- "accountAddress": "0xff842d5af12259c56366c18eaa3b5af7092ac519",
- "inboxId": "ad83a9c6b7dfce4d149d25e4e7a49afe3d2cdcddc39d7172ee58ef0c877d2083",
- "walletKey": "0xc45234a1341f8deb948985d16aa4d23badc379bb8e65401b181d4b3b29cbc124",
- "dbEncryptionKey": "fe51075973a08511f1e4b98f729e92444bf8ce9b6e32050fcb8c6c57187f0cf5",
- "installations": 2
- },
- {
- "accountAddress": "0xfc98996526ecb0a3b74f0dbe410ba98264024c4c",
- "inboxId": "3ced945619024e549d8f68013b52beb3025a46258d4db0366e33c6dfd988d648",
- "walletKey": "0x2f8d625fb23e548d9686f4f9afaf4c496aabf8e1dc7cb7573702148f7a0eda62",
- "dbEncryptionKey": "e7f9d2dd153c6de82f05ec4834c5ee5dd75fa8891be7c648b13d9066f5cec16d",
- "installations": 2
- },
- {
- "accountAddress": "0xfe5dea04136988288869f504c9ae745bfdabc478",
- "inboxId": "bdc8cbca0e1cc7e5061786b5b9ea08ba4162176bfb57f3352871858b49d9944b",
- "walletKey": "0xfecfbf6a6e4ef841ec1ea265c5b06a4e5f0a79dc5d35992aa8a59d055df3721a",
- "dbEncryptionKey": "b9bafda0e0727b54e3f4d0d31ae5adebc055d30dd5f742046a3079015f7391e6",
- "installations": 2
- },
- {
- "accountAddress": "0x3d0d9dcfc2cd8dd490129a5c1eb989be25a11ca5",
- "inboxId": "ae2dc1e82588406e94a8a3e6305348a792dd9e1da380e55f3eca4ca1d4d6eca7",
- "walletKey": "0x42d9e663c5022d15989a5fa4fd353ff21a6b11ffba756430016aab5db46074a7",
- "dbEncryptionKey": "4c327386c066b4717135cff2a0befdf736540971fc4ba2aa8fb5f295f20951ec",
- "installations": 2
- },
- {
- "accountAddress": "0x2daf0a0f3a88f24c842e969e379d7d394a04f8f3",
- "inboxId": "d2d09efdbb9745055e674d7342206064bd26ed005f63e703c8e7fd32d85056b7",
- "walletKey": "0xf276e7ddb103baf09235253283c3121f9dfa379cb8d88a96802c8431ab839748",
- "dbEncryptionKey": "83a3ca3a82ec19e988de80debfe4646ea2ec506daf652e602968369da6259866",
- "installations": 2
- },
- {
- "accountAddress": "0x0627917c3190c6d17ec230088a7ad77a01ac17f4",
- "inboxId": "9318e4dbfe3cedee8ef30846fc7139db9f07cce98133e99e09bba9ce62100598",
- "walletKey": "0xe8f632fcdc822c13c792f74499d110291a6b7f537c9f40972b8c1849b1cd6577",
- "dbEncryptionKey": "5d5ffba5b709c491802ab5de35c8abfb01647fa9f7a1da3c02c501fc9b85479c",
- "installations": 2
- },
- {
- "accountAddress": "0x96290668941e16c5447efaaafb02b48554d79e3c",
- "inboxId": "52e3a85bfa32eef5241791fae8d063bab87d6cb00f56e8aa8b12bf39fe134cc3",
- "walletKey": "0x2be4030d8be1789d77b2cc436cf55caf7822e3418d75e392a28fa325c27d1a32",
- "dbEncryptionKey": "91f48aa8963f79a4727f643a112f28a33672e8dd758306a298af4c9a50a562cf",
- "installations": 2
- },
- {
- "accountAddress": "0x566b7fb144760f52d7221352fb4d3fd1c931da75",
- "inboxId": "ff799dac7b3ff81eeea68c70fb4b5a1b983dc00d4d2166e316564c535846127c",
- "walletKey": "0x174ba773ee7a49dce30affe33d8822bb45b85cdc8ef45ca6c06ca2e6145c314d",
- "dbEncryptionKey": "4d0fafa15f73929e6e3a2edeb6bfe9324a430f332772a1e0766ef1061f36615b",
- "installations": 2
- },
- {
- "accountAddress": "0x3efcd752d3d4cc6cde5523a7e7bfa5c405b0e1a6",
- "inboxId": "745a6f4594e2e9ab330413c348bb575dd7a3f218106aae904dd9e28052a7c54c",
- "walletKey": "0x69bdfd2790a71debb26af821b49004b241fc0da4515e6f7ed50737d3aac0f20d",
- "dbEncryptionKey": "5f77af73c894d3db1fd49b3c7edf62e44a9fc073e1cc6e8ac06d38d9e62ac195",
- "installations": 2
- },
- {
- "accountAddress": "0x57aec5c6458b4b636b01075050231d9db2cce578",
- "inboxId": "05c27875753e186806d3cb81887c61e738553212747afd662d1976482f97918c",
- "walletKey": "0x7d7349a91c60525086054f6b04704220bb010d6185a4b3a1bc45cc3a27aa77ba",
- "dbEncryptionKey": "1153a7960cfeb6fb16b61c8f0930ec6a4c75f07e1d892b3866a4f4e4e625d695",
- "installations": 2
- },
- {
- "accountAddress": "0x68fa3afe2c99ed5042ccf456bd34cb42835dfd28",
- "inboxId": "c5685a3c02632f997726d85a638603f0a14df8cdf92dd54b236286e082fe47e8",
- "walletKey": "0x73f917c51492e484b7e30e29b5765650032f446ca0f27ea96bb5d86047cdc740",
- "dbEncryptionKey": "a66223bbfedbfa767861883896142638d0e5fa63e4ea5c11bd007982fc80acc0",
- "installations": 2
- },
- {
- "accountAddress": "0x0b201e5a7b01c6da0b5bc24ee383411d8aca9597",
- "inboxId": "fd8099ee99ded1d9d7a0cd616777ca2d659ae61254a9c461cb10e7c95c5c648b",
- "walletKey": "0x6adb40f270d5a522265e2f66db1610a3974eef67497274bd1db6bf41b3260fb3",
- "dbEncryptionKey": "eda1dae1ff55c4abdb9104cf33aa9b445634fcac93d4323a0aed1917d39f5146",
- "installations": 2
- },
- {
- "accountAddress": "0x8f4108e80f7c9fdb9819c322ffe9f18651b46ec1",
- "inboxId": "d9d57ad4f250fbc0643be31ba73871a8dd8e1907b7444c1a0c782fdebdcc85e6",
- "walletKey": "0x6f77f8d54b943834474f531c4b9f97cceb934b127a4c9dc985183db4a808e062",
- "dbEncryptionKey": "2759743f5651857e7fdcb9f2fce6246c9a7b54b8a60f0396e4654ef6ae392125",
- "installations": 2
- },
- {
- "accountAddress": "0x2605caf873075d1e39a063a6f9665bcbcf146649",
- "inboxId": "f3fab3ade9dc20c0c40e698d2186df3a97fbcfdf366667368d9efd4989e021e1",
- "walletKey": "0xc44e68ff89602c68157768b821fb8de74738d900ce06371a4f0f565f46d3183c",
- "dbEncryptionKey": "7b19beea08f7f98c88ef7c1f39a9b13fb9b0706341d9199c62e46b80d7fb5094",
- "installations": 2
- },
- {
- "accountAddress": "0x8bfe20a3e73425cd4a9e70b08413911c6ff0ed91",
- "inboxId": "45ed19f2d73c2ae97e05855a6b66ae9ad85949bca8bbde45e58cbb9c196bc34d",
- "walletKey": "0x523eb046ad8a72a4c66f7c2cf4fcf52cc2dfcb19eb60ad7e459fd9b164dbb17c",
- "dbEncryptionKey": "4964854952c2ab6dba5df549599d899d1e69c7c0f013eb6f2e5372f2b1802f43",
- "installations": 2
- },
- {
- "accountAddress": "0x710145d6d80b201df63295884133e0c9c3108630",
- "inboxId": "17dcbd10cfcb031ec9c9234da7031cc47ebc1654bcd04c695d4aadc78cc9970f",
- "walletKey": "0x68814261c607997ecf2d96bb82396f5f29d3cd644f46ebacfbc4dc48c11399ac",
- "dbEncryptionKey": "b91a76f4310454772a83626a01a480b41724d4627ba27feecdd76e924c1addea",
- "installations": 2
- },
- {
- "accountAddress": "0x79949651ffe5d237964b587706e7d9cdd4658ada",
- "inboxId": "de53ae7fd35d14f0003573e5c81e3c4fba68cae6fd7213b14ff3b22f1cdbdeeb",
- "walletKey": "0x0210d71f6a30fd08b37bf1eaf328c92c37c7d3406a93303d10738798115aa277",
- "dbEncryptionKey": "cc95faee86823011cf8d1116d37dd2b0948f20de19836cd5c9ed0a6aa9f2dc17",
- "installations": 2
- },
- {
- "accountAddress": "0x549342734cbb2a9014ca7d6a519b44570b223802",
- "inboxId": "ee9da51dc15f2583ca8da4bb5e3ec94062ac8c4bd4cbce75dcc7543fc05a1201",
- "walletKey": "0x67e1e62d042fdf91d4215340e228bb2d604a64619e355b34612341eec78985c5",
- "dbEncryptionKey": "e67bc46e3289c50994e93be77709db79407cb163800268938b31edbfbedeb758",
- "installations": 2
- },
- {
- "accountAddress": "0x15b2ac075e3d26b4fcd10bc6b9772e2fd761448b",
- "inboxId": "50b78ee7af7d0fbea662195801e7938720ad77ec45a16b2c689589625ee9f99e",
- "walletKey": "0xb3539133dfcfe6a9ea422137277a001116af3f644a81e60667c62abf2d21858f",
- "dbEncryptionKey": "892367836d671e43aea0992ef16d6fc84329a8817d0ba16f2b176ec47e81892c",
- "installations": 2
- },
- {
- "accountAddress": "0xef66307e98cd0112e959ef333fc7b8e1395626af",
- "inboxId": "2ecb781a8a1d40f79f572cd641af2dc628be65d4716cf944756080de659b274c",
- "walletKey": "0xb2d3324a4dbb442889711450ba0c6797b314bb718c0340e2009ffffed115039a",
- "dbEncryptionKey": "baa7b2b134bf30a91b3a309f4f321587821dac59f46bd9ea4fe974917d249bb4",
- "installations": 2
- },
- {
- "accountAddress": "0x7b65e0ce9b2f5222302b68281adfb336a518c610",
- "inboxId": "e4a64fa1526733738acbee231694413b873607b4f6c1fb93948ecca8aceb3169",
- "walletKey": "0x34d6a35d4bc61e49aaa367d9be140fb6b7cb530bec5eeffe2d50787d0e496124",
- "dbEncryptionKey": "331e1dc941c7e7ed1c06ffc90fc1f9ea730351c5892f2f35c2da3f63717c2d1c",
- "installations": 2
- },
- {
- "accountAddress": "0xbe16ec0880a9266c6538c23feed0e000ef953b72",
- "inboxId": "7965768326ea73f4c9f39518973e6a6a52e40ef222c7a8cfdaedb580d1ac248a",
- "walletKey": "0xc4ae17847b6ee323bb23fbb55a50a5f6643d28070cc5c40be18ab598ccdb9579",
- "dbEncryptionKey": "e05b766221c872117a4c60de62b50b1a5bf12901a029a08388864fa1ffdf4803",
- "installations": 2
- },
- {
- "accountAddress": "0x855fd98893fab5bdcd4b346cf2895e1b8913a91a",
- "inboxId": "d10120164994364d1ff550c207ef6932d11413098d87197e7068b1bf6ef0ea2a",
- "walletKey": "0x144157e4f1ee9e4b88411f0044c218908798a6821e9dd5159720ce8e20fe3619",
- "dbEncryptionKey": "3a812352497ba173c14d23e14a8179ef37bd3e27e0dd46be7e26b8c6ecf4dd68",
- "installations": 2
- },
- {
- "accountAddress": "0x84c8a525d848eb096bfa2f6d0e631bdac495eeaf",
- "inboxId": "72e82033f2680118eaef87d71985e03313bc4f87bf78215fcd6209234ac9d30b",
- "walletKey": "0x4bf770d7c835ef2e41d6bc4aa1b861afc345bed36a7aa38a77d49409b8f67031",
- "dbEncryptionKey": "1362be39d969597e26e584fbc86f6aa5325052e4b2d0eca3958ed4c4f2034912",
- "installations": 2
- },
- {
- "accountAddress": "0xf078bfc3eb2f9f29cc57bda57dfeae07bf8b5830",
- "inboxId": "447fc8b4ddcb2ccade18c7eec11fe7c35fbebfa9b8b50d53bf8399fb164ced08",
- "walletKey": "0x6eb7dc1a2aa6be32876399417a08398383d2ec554ba7e3ff9057b5468dd952e3",
- "dbEncryptionKey": "bf3802491b1d87120179ca6810f225f4fc8d6bb34fbda3ea3227e2734d76594f",
- "installations": 2
- },
- {
- "accountAddress": "0x131591d66527d9586b1349b74e6f65615b6e5357",
- "inboxId": "704db06e0c9737f03ad4dc5e43964fc0b1e9f1f7854ddacc51157939c9f11acc",
- "walletKey": "0xd5d7ec8b77ba571aca9ef0e73a902b1b824cf8a3c045f10f884f6d9611904966",
- "dbEncryptionKey": "7b1acacee44fc29a9be080142ad6cdc5935061ce9369035147ea98f8f7366747",
- "installations": 2
- },
- {
- "accountAddress": "0xa68dad6c4f1c44a06137b71235b257b0cccb0c4b",
- "inboxId": "c629f1a95b6dba1c1560cb25ebff516d7af88c9110428dc127fdda648f7f2d03",
- "walletKey": "0x1e895fc4fdd0cfe17b12b5a2897b6d9ceb874e1aaba457f15953947daac6bfb7",
- "dbEncryptionKey": "a5056485721f84b312be0166ae105ed4ddddc1d88eabdffaa953d4f41be8201e",
- "installations": 2
- },
- {
- "accountAddress": "0xcf7a5a823f4d29aab2135efc0d48db893079bd13",
- "inboxId": "7b981d61e81257e41bb3621805cc6093b285015be3328e8e55655438baff7f86",
- "walletKey": "0x8254ae0bde26133a5e5143e2e0ef4623c3bf6abfbe7433ba5c16c3ac72754a72",
- "dbEncryptionKey": "d5e288d43a05ebf5b4ead8d17bd81195cc7a1cda68cc4ad5c3e2267d5d1dc0a1",
- "installations": 2
- },
- {
- "accountAddress": "0x211ffd38136f21a600f583f5082f9a871d7134da",
- "inboxId": "c7bec585096130789929134f0e61350c7c2e67813d53b043b6e47f6fd632a323",
- "walletKey": "0xf3e10573d2e78f7a8e267750dbe4215b95f4d30bfd8f5ce5f3fe8ab36b9d0b58",
- "dbEncryptionKey": "69c1dfce6ef6e25129ae2d9deb40c0c01e0866f3c334c97cf40398a1b153d37c",
- "installations": 2
- },
- {
- "accountAddress": "0x9807fcf5ea4de486f8a0f3b50cf4e6c4db327ed4",
- "inboxId": "8cc567d47183bdb434a31128c4f596d0d53f3b989e89043f9e7f5e50869b29c5",
- "walletKey": "0xa6276564f9d4c05debff3cac6d87ac385535c5bff4e9de547cc45a5b82d1d951",
- "dbEncryptionKey": "71764ac5891c0a6889056e666bf748a882f7cb6d89c6a3a32ec949aba3db16fe",
- "installations": 2
- },
- {
- "accountAddress": "0x3ff70a8c190486b3b5da25b1c73682dd8aae1bf6",
- "inboxId": "9df13ae3a3ee78a3bfe6180878f3b71ad33be0b1e7ca5e5e70a9a62d3e654aca",
- "walletKey": "0xefbbe8342d3d7d1ce1ac7b776158359071787833687d8bb5cb4293d9e4b539e7",
- "dbEncryptionKey": "43eb2e907d95b0038662b64734c0666bca84df06383fde1c0f600c15b40de69b",
- "installations": 2
- },
- {
- "accountAddress": "0xac0aa78d859b67ef858cde9187fd075b9d1544db",
- "inboxId": "69d9a01fd0644334e351c7cb3e478b158bfc0fd5b5ff4f312fe3c9a76b56b6b9",
- "walletKey": "0x6f2ee1ecd7afc47c40854fe5aece763fbb42ec462118dab077849fe15c691994",
- "dbEncryptionKey": "1012a7e950deafdc2ecd5417c194d7ac70c5b80c8069ca4a666290de9f69f42f",
- "installations": 2
- },
- {
- "accountAddress": "0x46557c57480585e6423f39567a0159d50bbb6723",
- "inboxId": "329f0d5ebf19f091fb021a691cc46cd90c662c3709c842dfee09c1c6c79be534",
- "walletKey": "0xca4f10d1023efd2a53397359a0338726cc57ec0bf55306ecb78ebdb827067931",
- "dbEncryptionKey": "ff0706ffd48b474fbcb78c1cd5f44f75a8f5b1b52fe653bfe7d7ce28e4f59120",
- "installations": 2
- },
- {
- "accountAddress": "0x9fd904cebac33bf1eee256e0ddcfd06c6326e61f",
- "inboxId": "45952bdd7823e1848caf3f0ca4eba3b8f2257c643d83deda000ccebae6e09072",
- "walletKey": "0x7060a11fa17b24de5f923fa9da68f857c5cdef1e219e0612164751d1919f1459",
- "dbEncryptionKey": "1db4d5c45848d4daa0e8d201842d9303f443ca6e672cbf816d5e7c0dd22ada3f",
- "installations": 2
- },
- {
- "accountAddress": "0x3638285cc0a8e5756e9819b5c4d856f896fa7714",
- "inboxId": "92f8cfa1945dbacef811df12ba9ce9a8ed760465a2c86d5f2ab181272ecde427",
- "walletKey": "0x73eeb9018776bb50ea61fb6976da7300a0d8c7d007a389ab2bca8ca1fe8d267f",
- "dbEncryptionKey": "9f34eb7165a23bbbf58403b65e7666d6702c2b9d77c4b2a5f7227cb327abb27a",
- "installations": 2
- },
- {
- "accountAddress": "0x2df2d10a81e7ff00c84ffd3a170c25d694d4b9c1",
- "inboxId": "3cf48c2a821fe510e7cfd8fb7182c0f9d948aeca9528ebe55204f84ee70fc4c3",
- "walletKey": "0x8a23543fd1a502a42f717d9a9781ccab43daf672d22d0e5b76c3044f88658248",
- "dbEncryptionKey": "e8e4a0b8a5da253987f8d6b006131ffece6d47292e098a93043ce47243ce4bc0",
- "installations": 2
- },
- {
- "accountAddress": "0x23be49b7402d107291aa6690f025b5f1952d7875",
- "inboxId": "6ba9d2b4fa96b31fb3c6c758f6954820a51ad13f27991c3fe0305c57d413c0d7",
- "walletKey": "0xa61e92bb5d5006df50e1eded9da5f8aaf2c697bafd052e758ac9f835ea92bab3",
- "dbEncryptionKey": "f87808d9f011e49d6417482a075d852c0990faf54e57e2a79e66fe5c619a623a",
- "installations": 2
- },
- {
- "accountAddress": "0xbbb59b83635a082ccbb5cd0a9a33eb4228feabde",
- "inboxId": "d861bf75c33750dc36fdb7c5807f6ed32fb5f06cb55b8bf8d4f36289cdef8c1b",
- "walletKey": "0xb776eb45c1f3f0e4a12d071590dd3b896d5a0795cd1edf5695639113aca86852",
- "dbEncryptionKey": "8ee8827bf8fc945ecbcfe50f94b1882b2a30377601fdb590bb229a64fa008ba1",
- "installations": 2
- },
- {
- "accountAddress": "0x0bac44c8830b9a48a5f9546d06bf921f600ccb06",
- "inboxId": "632bb2ba56a9bf81a958d3c8d1a2887985be5c36e4d59664bbbc31846249c752",
- "walletKey": "0xbd2712827d01de56675a83de674d860bb083ecc534afe26495e8fd67203f41b8",
- "dbEncryptionKey": "dfba64fbbe89ae13440c25a3d57116c4bcd8f9cb44fc93528ec4e6f8de390339",
- "installations": 2
- },
- {
- "accountAddress": "0x6cec14a664073999cd715c1d575f536421c042b8",
- "inboxId": "93c43d86a296fe059c649a12a5ff23e35b8c1164cebbae6bfd719654dac749ca",
- "walletKey": "0x98c9e42a294edfd61765f4375f0ee1a17cfea1713fec3064fa723978414bca81",
- "dbEncryptionKey": "21aefa6007629f611c8a37b5de6ac0eb6a509f7997f949993eb61fe6f8c6f462",
- "installations": 2
- },
- {
- "accountAddress": "0x1981c63998f992a59fbfb28fbb93bf38fdd35795",
- "inboxId": "20f7d2f52711b38fa7b1e9b6384ed60ca7b54f571757f57997f1a1137e932daa",
- "walletKey": "0x4dfd4f3bb285f74d80cc0aa821ba1358783cd55842ace2346c4dc7c003af6d91",
- "dbEncryptionKey": "4035ab6ffe0f10aa165e5d085660cce01f64182ade24400e6f19e1f401b80133",
- "installations": 2
- },
- {
- "accountAddress": "0x89acb84f0021ae4632ee14d8767d504c9efd5c45",
- "inboxId": "1380dbd62c0d71467c5aa26a729c4bb992ba4cc609732356230ab3b83270034b",
- "walletKey": "0x2594e56989bd659309fd13376260c7a6d816208878e6f1c6cf41155e74b037e8",
- "dbEncryptionKey": "87dfff5792f274038e546b68122df970a62e9f059b6e8348b084feda1f90dba6",
- "installations": 2
- },
- {
- "accountAddress": "0x3c61a77eafb9074f483ea018516e5e6eea00dd6e",
- "inboxId": "6c4329f7433fa1d6151857a2554299eda8b8e5eef2cb852de498eb833f458484",
- "walletKey": "0xebdfd58946fe2827c1b2656267b67901d9afe5fba71c6f5b95487945a63cf531",
- "dbEncryptionKey": "43ae7c87d09b55222862219c79b13b6aabf650512590604951e75edd97eb0c50",
- "installations": 2
- },
- {
- "accountAddress": "0xdad17b901bbb8ea8a1fd5744f64bf649280b0f5c",
- "inboxId": "2e30172482bdd19d0de2294add0a5f08ad20b1ca92d325bcba766cf95d9b80b0",
- "walletKey": "0xfeee08c992d82cb57a349ae6fac2daf90ea5249be737b3bf49fa173b1bff4b0c",
- "dbEncryptionKey": "d2445d130f055e3b621b5428c890abdd4e0de11f8d09ee07e1fbe65bc782662b",
- "installations": 2
- },
- {
- "accountAddress": "0x164261aba35323c413302c39f896ec7187d71484",
- "inboxId": "6657fbd29163412678f5ebf95e104702081da36d14b7ba0384445366686874ff",
- "walletKey": "0xbb65e8bacd9e5e0695933224c83b36b39cdadc02716cd64c6b4de3592235715a",
- "dbEncryptionKey": "c3f5f1ea884bc9a36886526636e4a5063c21267871299b3d1fcfa24b71ee9d00",
- "installations": 2
- },
- {
- "accountAddress": "0xa85b7773dd417f10b9f36611422dc423db41b9f3",
- "inboxId": "abdc994e308d6275edaedbc2d3a73f6dc73805f67290342dd4b5bee63d2b554a",
- "walletKey": "0x74fb5dd192f724e8a99a57a01319126b46ccabc4557e9a0be35088bb089af8af",
- "dbEncryptionKey": "56e7bb58acd53aafee02196cb03d43d610132a0aa51188b3a4196880f0b4f705",
- "installations": 2
- },
- {
- "accountAddress": "0x3bc19cdaf457a6afd2aa694d7cb3a0b5c2d9d5a7",
- "inboxId": "9dced083b0ad5cc0632c5d1aa73c7843b18cadfed834ccc57272472f9f1a38f0",
- "walletKey": "0x343c477a57d429790d40a777c7b8676f51365d399eb44da1567226a9e16b95c1",
- "dbEncryptionKey": "1900cb0c6c509c0dd1851dbaf41106a3d3b1cb1393321df7dbda35247781c779",
- "installations": 2
- },
- {
- "accountAddress": "0x16370647d6bedd0926b94a0ea013143fe6ec615b",
- "inboxId": "43d134bedc4926944bab919448b6b0eefafd8ed1512d737f8d0d7d5200efbf08",
- "walletKey": "0x483571bcf8a86632429c1e5e2763ddc6b15284fded8b6face7bbacc084ad05b8",
- "dbEncryptionKey": "ca091ff91f30c9b035b4447e888b985373ec643660763e725ffa5561a7a281fe",
- "installations": 2
- },
- {
- "accountAddress": "0x48d4858167560453112dfbaa972315539c397e18",
- "inboxId": "c27b2fd327de00c06b0f4660e801d30259b7587f7924b7b0284bcfb2a3ecc226",
- "walletKey": "0xf7ff474374e47f08d013a513be10f0a97a13947866f8af84969d2e12689c8f24",
- "dbEncryptionKey": "1ef9fbebd113e355028ed2b6705056d5d4b40a4909338d15ad72cf5db423fa5f",
- "installations": 2
- },
- {
- "accountAddress": "0x0f4a3a7a131e5214110348421f22b1ec5cea24cc",
- "inboxId": "b449da4e9b99a56998207836e0bfa41fe674831afb8d81c666e58a20dff78dba",
- "walletKey": "0x2cb0a907b45de415df859159fa895836eb05e10a407d9813aa227c86f0d2e514",
- "dbEncryptionKey": "5f1bc20dafff9da3b8c33e439f8f4ed37aad4b1695cd625dc5dc7e3ba1b16225",
- "installations": 2
- },
- {
- "accountAddress": "0xb857315c68b3902073a545a1a5aa441685ecfe93",
- "inboxId": "11b7edac0f0d15e3abb401f1b9cc8ab19962c08847c8ad87be8218a38f85aad2",
- "walletKey": "0xe1d4f317d0c02ba3e7faefc3a20bc2272af1929576068e842c2928ebad6c7209",
- "dbEncryptionKey": "4599bbc29092834426e31c0c71466c505385f51b8b2d66c1fe398f46766ad921",
- "installations": 2
- },
- {
- "accountAddress": "0x6c567b415ea1fb42ac7dd70e9435d340bddd0e85",
- "inboxId": "c1d8e412a545808b919275de225048c0cfa1a348f512a9c8b437f11c3338aff6",
- "walletKey": "0x4ad6197bc60f363617803b9b32f0b4fa73438fe4379de9672c41856e230e0773",
- "dbEncryptionKey": "6162c2e5c7592210bc4988dbfcd9f9ce0d42b4524dc4982af767349cdf079808",
- "installations": 2
- },
- {
- "accountAddress": "0x9aeec1f82f807d79107380ef8c84c76f547164c7",
- "inboxId": "7b81382be474999dc39ad4454e95964205efff51c22df9c42edc7809cac2ca47",
- "walletKey": "0x17f5b413c38e9813d7431b2b9a132af77614a6d9b35b62c330e3a7ee046ad63a",
- "dbEncryptionKey": "246348f7adc8fefff955dca9d79b9208fa3275a2df790f34552338b2301e117e",
- "installations": 2
- },
- {
- "accountAddress": "0x66b4544be038a26ae4b6140c2c64aee18ce403c2",
- "inboxId": "3283670a95a1be33daa2c2de2a4464bb4aeda6445047d5daf8fe1e5dd1124221",
- "walletKey": "0x5efab8522f9c897143ff465d8a3148627aac2d7ba13d805329b97531ce3dfccd",
- "dbEncryptionKey": "d0725944f8fae3eddcd354f21d019c71ba2308ce5def7af7690aec1111c27b3a",
- "installations": 2
- },
- {
- "accountAddress": "0x312e3b80403b9eb902615290caab6df4f04c8a5f",
- "inboxId": "8615b67271c122768ae9e36ca3e16ba396d9098c757559b54d52fca66c943b6f",
- "walletKey": "0x9117bca66957fec2848903dd71ef3de4207644d3c3e59ec841959728fe0d15e5",
- "dbEncryptionKey": "e0fb9d95f03be9a571d6c7e070e042610f6dbd19b9066fd59e8e2b81d4b4e805",
- "installations": 2
- },
- {
- "accountAddress": "0x6ae598b3c911d41cd50cdfd4d6edbc0f9de345ef",
- "inboxId": "ca687fef8d62419452ac2ce3777069e1b51f48216932cf58862b4270272a8ec9",
- "walletKey": "0x71d8c301fb6a528cb4c956e2d4e3b529f28ec356c78fe28d1ae745a25c154abd",
- "dbEncryptionKey": "b318c6febfa1dbc3216f0a8b134408edb877947e48cd678853a269c90706e861",
- "installations": 2
- },
- {
- "accountAddress": "0x4b4c72ca75c69123478b2b1ea14f407b1edb12c1",
- "inboxId": "d80b283013e7d0690ff5584f88793a23961a6f8ddf866f6c0265e4c8a10ee8cc",
- "walletKey": "0x855777c4ce4696798a2a7c146a74f8aae4551671fc470dc527f1ddbdd3014e63",
- "dbEncryptionKey": "7f3b3352afdca7b1e0eee40268ee4b947728bc67dd54090efcc4e2b073de8d23",
- "installations": 2
- },
- {
- "accountAddress": "0x4aea02201caec9521ded668977a1c6a64fde3a7b",
- "inboxId": "626f0034bbedb4254cad7fd30076f51c44145f47a12326ccf9ad5d07ac57b51d",
- "walletKey": "0xeb77683d1cefad3a6bd1466ebdb67a1520eb0c2aecfeeba840c8255b9d08ebfd",
- "dbEncryptionKey": "2215f19da2d7013dd6ff24c3909cd0e8039a2ce93abe8a561b2ce92926233a65",
- "installations": 2
- },
- {
- "accountAddress": "0xaa019696b81f71006d947d13633190eac46b1449",
- "inboxId": "33100643fc9ce601575289840da42e47dba66fe81b2faf45560b6ce70e45e832",
- "walletKey": "0x1eb9e6c4c167975057398c752c10d8ef9c2377051f5274c3e67b017b6bcff32b",
- "dbEncryptionKey": "c0e8410e0f804ccfcdd57f62164ef0ac315663ab206997d42aaaeed95d68ebf6",
- "installations": 2
- },
- {
- "accountAddress": "0x80e744ce46f21d6c724a689f73192afd9d7825ea",
- "inboxId": "39e70674eced8a45713b8d079027759a9d6f594d89aa4c91aabe44d4d731fd5f",
- "walletKey": "0x8282e9d0863d4a33fbd46349719aadd3aadb9dee594d07083ab827e1775ef038",
- "dbEncryptionKey": "bed4640594e7a309badfd4fb82609c6d7e4b31a19c8028eb4522fb3e904d0be4",
- "installations": 2
- },
- {
- "accountAddress": "0xb2217ea41fa6b80e51e9fb740b14841c92e86149",
- "inboxId": "d61b4072898803204bffd12703659fa57d27cd9537df0a0f165bd9e720a69f50",
- "walletKey": "0x29c2607ba08d8e634b4786e716ff2dac23cdd30866ae422ecd19949fb82d4e24",
- "dbEncryptionKey": "c5ce7028f6ce58a60ed83dacdc59bca168f5656ede9b4fe1dd6483c01e70bec3",
- "installations": 2
- },
- {
- "accountAddress": "0xeb262cb6a6fe00c5f46725c1513686cc4815b0a3",
- "inboxId": "401660e813f6d1d0e7c33b1c63ea3670c8b5bd47d6475add336c80a79e0cf59a",
- "walletKey": "0x341fd6c45caa6e9481901d985c2b8d23ff28d57bba0b5af5bb29c42b7dc66fb7",
- "dbEncryptionKey": "b23f449d87455a997560891eae78bb0af816e5695830bb14d399b1eee162b976",
- "installations": 2
- },
- {
- "accountAddress": "0x520e613f7c0f4d8b883146b2c041a910c908cc74",
- "inboxId": "3e12e72ab71eae02d7b78aee62bf58f6d84977525de42c4dd4eb5988c9c9578b",
- "walletKey": "0x1da7d2a26bbdef9e1bdce62edf21f2dd524eaf5c1a3abe23989d59593baf3cfa",
- "dbEncryptionKey": "bd08111bd6b9d2df3e76d22f962a665e5a6224ef9df7053e56cb12fb896761eb",
- "installations": 2
- },
- {
- "accountAddress": "0x0b0c8c1ef41357102c7ddc5b27a8999b1978d08a",
- "inboxId": "209e6e83fe709b5d1ded8793118bc88cb07adf9e6bb99c246d57d35fdd2b8141",
- "walletKey": "0xe4015461926ff60f83a1e0c8dec351f0298e63d6072362cb64b85a719e4c0bb2",
- "dbEncryptionKey": "e11ef9d3bcea195cd4c3efa05fccffd62457128963526375da93c8463595760d",
- "installations": 2
- },
- {
- "accountAddress": "0x9a8f6c03105ac9171d235b912e65669489ca9963",
- "inboxId": "88ada15cce3801cf485968ec50ec416a2ca25ef8ff27f81d210352e8faa47453",
- "walletKey": "0xa932745329146c36feb4a910b5ea5805f0e2ff07cd74cefb3ef10d7ecced3cf7",
- "dbEncryptionKey": "c0a3027e3761f1cbe725788e835550e5b3a90222e75c76f4958610e12737c060",
- "installations": 2
- },
- {
- "accountAddress": "0xf79b7b541dfdfceab984e5b7b2b4df7b087a92b2",
- "inboxId": "ebd4bc360d33c3b991e140e3062820197f305134ea9d96fe7b49fbed2baa8109",
- "walletKey": "0xaca96c7746a02726db196f58aa0a483fe8df46eb102578a6ebd0d4cedbe74990",
- "dbEncryptionKey": "70cf9301cb4b6eb81f462eb9cd33bb78586b884e441ef2f33e60e23f53fba12c",
- "installations": 2
- },
- {
- "accountAddress": "0x891be5f49344485522b16c83ba8dd6788bb85f50",
- "inboxId": "17d6110563fe45f60015ddc59d876bd57a667d52d535707f66393af40769f1eb",
- "walletKey": "0x32997a1848fcb7896eb198b804f7916d16164c1715831ea086381b5b58081825",
- "dbEncryptionKey": "c83904641b13db8bd1d7ed1eb160e8dd889afa36651814d2c50cd260688ce130",
- "installations": 2
- },
- {
- "accountAddress": "0x039bd7b78c1f39a6cc953ecb3a9b9380a46079cd",
- "inboxId": "bf9449f3cb45cf0d80706a795508da02ffa5fc6422a41ac87a8da6a4d281a37d",
- "walletKey": "0xff46d20bd2968e0400cddf262e9b79b11f49030bd994e02561f6489f8041d774",
- "dbEncryptionKey": "df1524bec62382eac4adcc6196654249f70455141704620d7a7569e973b48b6e",
- "installations": 2
- },
- {
- "accountAddress": "0xaf865b217f81051db4b6aa8ed697149eae42b632",
- "inboxId": "f2b60c9e056b7c075bbb118f30a427206764d0319cc56007e4b64c255aef5f98",
- "walletKey": "0xcc188547e27495d9b2b3c6a3481d036c31b3883916946c90452f46cb992eafb5",
- "dbEncryptionKey": "9c81c57504f7faf4de860d1bab8318b8daa8fde5a2238b57b4abb6ae44246cb7",
- "installations": 2
- },
- {
- "accountAddress": "0x09fda80147b5aa886892a4882d3a397777e1abde",
- "inboxId": "cfe6195db05d4bd082c205f4d5c1c99dcb8ff56982d73b3d0845a95df9fbce66",
- "walletKey": "0x2e6a070b0d06e0adb69bff81dcea6b4b0540eaecbec4d63a5d1cb3a2120d17a5",
- "dbEncryptionKey": "790da6cc0c4cade21cdc4005ae657e6d6b6ac0614ea0611d3d305c4735a68650",
- "installations": 2
- },
- {
- "accountAddress": "0x65c3bdb5556df94bf499775c7852f2fe0ac2e7f7",
- "inboxId": "9dc0108c27447db3b40fb4cf2ca1795ca94f05ff38fa1c285dad0d4425492c8e",
- "walletKey": "0x19162623ff237f8898148a5cc2245043d552a7c1b19fc13cfa986a707c41ea7c",
- "dbEncryptionKey": "4f20b7d3716da425625875cd8193208a4ce28af8256e95eed3b641a8b8ff7a52",
- "installations": 2
- },
- {
- "accountAddress": "0x0a35d6072014a0359960b403326a15dc9e457917",
- "inboxId": "8a81a4e6582073f646230ecda59122848de7189a9e3da94b2cb77bca3414073e",
- "walletKey": "0xd61b4e3a98005c4f7a843d16eedabf0b5d0c758a3fe05b99eacc49790fab1da5",
- "dbEncryptionKey": "5d15d44317b00f249bf9368d7f923fd91df0eed62d9c817cb16ca03de000d92e",
- "installations": 2
- },
- {
- "accountAddress": "0xb0ad0bc8eb4336502da36241465f98d5d7043462",
- "inboxId": "1bc8e8b1a0018fb39aac7a0a50e43b60d255e3b30569b28d0b554cc49d36c1ac",
- "walletKey": "0xeb99f688c03e1c58a744f7e29b9dca3e0d69cc6f7c551f7d4574cf40e9fdfab6",
- "dbEncryptionKey": "d58d8e4b3edb7c78c71442e0bee23916cae837af015b5d8c8d946c73c02d5d82",
- "installations": 2
- },
- {
- "accountAddress": "0x3831ad958cac60244374ade2f0004bd4c3676ec1",
- "inboxId": "20909f862378ace5554c21c41f2740f9bc1a98900481fe80ced6a8f11e071717",
- "walletKey": "0x1eaeb427142fe8a0ea4aad26f80e2e348001d07f9e76842176fbb2f25ee08bec",
- "dbEncryptionKey": "ba31c3a4d50e2a82d78fa8fa9078759392e773c122fbfa74667bfa0e26028e76",
- "installations": 2
- },
- {
- "accountAddress": "0x614527855cdaf169e38ba5da6c60231ecbcae5ac",
- "inboxId": "e65edaf00809caa1eb88ac48bca58b3f6fb5e559b4dec44a8fa2ea31e5a4e65d",
- "walletKey": "0x8ac5033aa350591e04717409a09638e2ab8dfae7803a6c8aa50fd80eff544e19",
- "dbEncryptionKey": "b33a1094ab18b6605087b93012abfe8a072e0f2e1dc7fe6dc14eece53b524129",
- "installations": 2
- },
- {
- "accountAddress": "0xb620a3db7f1348940ae86e1c25811e50a219b6c9",
- "inboxId": "9e029f5760fc450631dfa7cbe695d57989c3a1aac073b1d3523f1c30640576bb",
- "walletKey": "0x33d894188040324abebedb959f81ad40d10da3065d4674c180a0d8cd9966bc20",
- "dbEncryptionKey": "df1ed7e74aabda39806d938a187efe3f9e7b7d38412628841f88b78d2644e2a4",
- "installations": 2
- },
- {
- "accountAddress": "0x980a344082fb4b5a7a4bcd9fbfb9e00436e92584",
- "inboxId": "9fdfe1798507c88ca0dd3be22183807782c5a7aaaf5bf73b18a824bb31a91967",
- "walletKey": "0xdc1db114aab87cb4943d864d8aaaa10040a54dc85b1184082584752cb93050ab",
- "dbEncryptionKey": "c08c8ef52db797e6a33057990ea69458ad8bbbf7976b5d8fde6cbfda7ccca487",
- "installations": 2
- },
- {
- "accountAddress": "0x2fb4e049b7cf25e5e7a7139122f6e9ec380c1c49",
- "inboxId": "5aa51a78a62cdfbc34a54fb0ffbd92bce2e9e53c51d47f5b6d6c261e54a4aeb1",
- "walletKey": "0x7d60b43db02ebfbdf6f4b9ed215c67755073f418f0f4d8474fca80852cd02ad3",
- "dbEncryptionKey": "7efa30e167aa83ad74548409c9b9e15bda1f1f868fa1803ec2ec9199c5c73887",
- "installations": 2
- },
- {
- "accountAddress": "0x5c557d2249d7d42bcfeddf7872024508399c90bc",
- "inboxId": "e2de8cadf8ce5638c81c0ec6bcc22490f25d341c82e9e849773a42ed08b08451",
- "walletKey": "0xcc0670c3aa3fe79735d6884faf6f7889b27bcb3f013497f0d39d168a6b133a8f",
- "dbEncryptionKey": "a3c492945333f776eaa3391bd2d3d69e5beb08ee3b49aff05696a7acb38903b9",
- "installations": 2
- },
- {
- "accountAddress": "0x43673532fab93333f793bfd72c71226f0f2e7a8f",
- "inboxId": "3d289370f899e8bb663d5b3c5bf125c4391c6e9cc0a98afa75eb5a4e4061a071",
- "walletKey": "0x7eab0c50cd7548af94090d5f60d1b473ee9d36d10a11d6e03ed1c253f0c47226",
- "dbEncryptionKey": "d81236eab39564764affb28ac3cd44a3042658405185243e12ac5e54ccf270ed",
- "installations": 2
- },
- {
- "accountAddress": "0x4e1da18604113db78ab582d3a2f65bf6d8c1ce60",
- "inboxId": "dc6ece50803b3b314d1bde48774abe5d9665ab9e12047f94360429593116d068",
- "walletKey": "0x37868ed179a328efd7a7ea845ab45ada129f5cc082f88a18b8f8afbd313f21d2",
- "dbEncryptionKey": "046128742a3022498effa4dd19658e9a4c93b22ec069bebb96a5ea77a00eb93a",
- "installations": 2
- },
- {
- "accountAddress": "0x0134180a060eb0b756cdc0baf243c3b265c165cf",
- "inboxId": "ebe7a84b5818440e243afde7fa4eb80a8aee7e6c44994667216f1a4765d5993b",
- "walletKey": "0x851643caa737f94c1dd69c2e884f037e6562990e77ea4ac46d3316a001dc7be2",
- "dbEncryptionKey": "abbcca4706f99e4919ec74fe43bfa45dbbcc0ae4ca8a89b1a3940dfe378cf5ef",
- "installations": 2
- },
- {
- "accountAddress": "0x6ec3e55d9372108939519a24141e8fa27414eba0",
- "inboxId": "7e33fe6c470a645410c94ad724b359628a6c54411aa12e2c12fbe0e992c791f7",
- "walletKey": "0x5066fb27482f5d962ae6adb8d4acc51a1debd444ad8db582952c963e0fd70bce",
- "dbEncryptionKey": "99b6c1d8b5e2fde4cbb3edff161f8318a261176edf142e733d4b45ee7951f435",
- "installations": 2
- },
- {
- "accountAddress": "0x16923b821e7af2fdc3e93d380bfe0e87bbc9b994",
- "inboxId": "9aba16cf1e8b6800dd66b182927eaa801361e33e2d11a43841ece7c232cc6201",
- "walletKey": "0x54c988e1816a30bd5fe3377e31d30bd07b1c4fc28292dd661bcedd060b59238c",
- "dbEncryptionKey": "e2fbff36b66a820a8da11603588dba25e6a18713e731d17adc18333750b6f2aa",
- "installations": 2
- },
- {
- "accountAddress": "0x45492003ae73984589ef63e94be8ab230cc625f5",
- "inboxId": "e7b5513d262271b78779d201ab898bab5c6522fdee36cccef8eb0d2c6dcf70c8",
- "walletKey": "0x2969e77755b77b2a17b08cdaa62728f2492c44c58cc3cf546c917a7836e4eee0",
- "dbEncryptionKey": "7919cdd7da97a78f9e507f7a2c6cdb1be6ddd0da138c663d14898ab0073e9932",
- "installations": 2
- },
- {
- "accountAddress": "0x084af43124b5e5d8d0bc6802c62955edfdb1d662",
- "inboxId": "eb39750c9a7451d234e9c142417d2a02d55bf216ae4755715546b28e1e2be1b8",
- "walletKey": "0x709c9141971569d6438059e8ac2a59a5aab64b81164096af8f90e2e4f24a7614",
- "dbEncryptionKey": "1507aaf0b75bdcba86221c399af5caf8f74a3b591d9b36751fbaff9cfc1b2069",
- "installations": 2
- },
- {
- "accountAddress": "0x3ac7e239fa3e660ae93c960e0b67dcc608dd98df",
- "inboxId": "aa9295dffd8cca0a66c366ec4ed58b7cb4a26130b6d3530acf4f17b103f79b91",
- "walletKey": "0xaca65e2e53c756ad49947b213b34f8081e2146a7e7baaebea3f048fc2f07ba3d",
- "dbEncryptionKey": "1f77076f6ac58b3a01335ca1f0794e992c7090ec3709f0f3390dec2b5d8e4811",
- "installations": 2
- },
- {
- "accountAddress": "0x4ba3f0b2054021121c57cd2fdea0d02d5099602f",
- "inboxId": "b1516a8420138ff552aeab8158e56d21927d929ab9a6cccd37bf28f5c2dc8d47",
- "walletKey": "0x2416f083aba32d54bf578032e8cee9f29bbc2e7b0a8e894cc8ef4d09f0a25354",
- "dbEncryptionKey": "05148a715b07e50dc84bddc080217f746c92fdab41dafc81d304196126d1565b",
- "installations": 2
- },
- {
- "accountAddress": "0x4906c2db71bc2a2eac5cb03ff35b5d33ad3bcb02",
- "inboxId": "1b238d8ffc61610f13d1590aa0d8d2338cd614c10fddb26014632cab2b966415",
- "walletKey": "0x235fda26f2d8871cb9c83c12bdf94e8c94c50813c1df9f1fb9ff65565b493e92",
- "dbEncryptionKey": "5e49857a5e2a96470e3ca1cb57f9376b1d4aec5c15825a3ebabd879b1e7591f5",
- "installations": 2
- },
- {
- "accountAddress": "0x02666a89fcffd6831d3b217ef323967d0ff62132",
- "inboxId": "38830d6b7c45a2f9a6d3ded20f5bbbd23946ca41877f80a0d207637db9ae7be7",
- "walletKey": "0xed776da22f689713d2eff0361ea799bde90f22e2884c8dcd21d7dd507a3ccee7",
- "dbEncryptionKey": "acd3357d42b8492324c201d69e753c5e0c8973cb3f39a10c58bfea8925f36dfd",
- "installations": 2
- },
- {
- "accountAddress": "0x920892311f941796e35765a241f27fb6f8af0cf8",
- "inboxId": "08004d3c7c82fb48b02314b1c84d7e5688e57a75a01231ddd6c2ebf2810a5b23",
- "walletKey": "0x8c4d9001588db54beafe76514b115065171572d2210503cffb6deb03e0f20088",
- "dbEncryptionKey": "3924019ed7b9fde2a5c54a7af7fac1f5d1c162fe249bd27a8fadc4576f844115",
- "installations": 2
- },
- {
- "accountAddress": "0x5eac3cc5fca4ed090c33cdafda9f798e81028c8c",
- "inboxId": "05f91bda4a72e972a54d37459670731e84e7d8d4d7b99e100dde7894bd3228b0",
- "walletKey": "0xf05a13e85fceef1e0a3c7491e00620776c4aa53d8d82e265576ec1fe4da165b8",
- "dbEncryptionKey": "9096e4079477da4dc664e8d9201c7edfa165ef9a3febc073b4b88126e46c6ba5",
- "installations": 2
- },
- {
- "accountAddress": "0xc1c69bf53d078fc12eb82f503e1e2bf84b4960fd",
- "inboxId": "4512e2a52de3847d0e298fbb0463b16b3d080f9f4d1999a2f7bfcaf7542a8f02",
- "walletKey": "0x3ab42041abfb66808e3d75f89b08a964e215f604ac6ba2ec1501169a885468c3",
- "dbEncryptionKey": "bd6f561ea2cf74b6f296d004001b82f2f6831f917399c0f35fdbe85d20a6c8c0",
- "installations": 2
- },
- {
- "accountAddress": "0x977a29bf2fe591f9b124ccb596b4ab00bc2dc4de",
- "inboxId": "692136ce3fabf871f4bb67b704b943f3dcab6338879090cea8468ca648e8c722",
- "walletKey": "0x72dde9d3e20be8459b254dd1b84dd50db3c254675f7e6010551e0245c47290e2",
- "dbEncryptionKey": "056ce62fcc0b2f9b08a2ed687a662ecea7ea89d5eaa67f8cb1df3de6c40da9a1",
- "installations": 2
- },
- {
- "accountAddress": "0xc59430a59bc9681428133f9e5e8ba59310d6d8fb",
- "inboxId": "c7cedc9721a73d39aacce79b11cfdc3d57299b4c9c50340f05dcdc4b8d20d5d8",
- "walletKey": "0x5adc71bc7120ec99707617923ebf7379a7b80557707696c37b87e9fd0cf157e6",
- "dbEncryptionKey": "132bf43a92696971678f1c49db7509084f7215a0e021ff39785a8d7bc5e65ccf",
- "installations": 2
- },
- {
- "accountAddress": "0xe166a99461f5cde03edc832fb841eb48f1b7c95f",
- "inboxId": "40c7bea64d4a1c55c4e78c8fb216139d4d1db0d2754029608417dfd50c34a75a",
- "walletKey": "0xe9dcb2d4a0d45fb1d8bdfe0566d02ce10e0f6809e4cc2ed46e14af5a8050c7aa",
- "dbEncryptionKey": "7ab8b8ec21c5614a9deddd180ee21089cf2df17082d148680d63a3d40f763832",
- "installations": 2
- },
- {
- "accountAddress": "0xfdb7687b3aaeaa0a92d7ccc57fd5976d20ca1e8c",
- "inboxId": "269868e4f3822ca6060a23e7753fd4fea17de026e7f1b41de6d342246062aac2",
- "walletKey": "0xec4afb755d9815e4a5b7350fe6897843c35a32923af46fbdd7e7a2acc3c40bec",
- "dbEncryptionKey": "70c31b8b8902e2f5aee84cf7415ea056b979e15b9e3b21fb42667015a9d74c21",
- "installations": 2
- },
- {
- "accountAddress": "0x2000774cebb4431251c09554d0c305bafcf371f7",
- "inboxId": "04d1111e510aa1e2adff1220f52f538a4edb4d2d555035616b34dadb3842c277",
- "walletKey": "0x79675cbaad4fce95f9be154e9e8004b7dcbc426fddcb1ae1c188022360eb5046",
- "dbEncryptionKey": "fcbe43a1e0c6bfdbbfe7b32620a73e4e1c6c3251022241b863f35e11ba67bb24",
- "installations": 2
- },
- {
- "accountAddress": "0xe35e6b0cf39aacef401547e024671595ade7e807",
- "inboxId": "40113e7ae5cc167ae29f8ae00c51f10366407ebdbd57ead8ac69592a5f5a47ab",
- "walletKey": "0x6b8acaf073ae4a943217a7f0164993dfcc11a0cc73436c1f070e14e4450461a6",
- "dbEncryptionKey": "70494be9489b4e5a10d05749573928381904fe5a3585128172000184fe21568c",
- "installations": 2
- },
- {
- "accountAddress": "0x791952d8fcd6f3b06527c289612778c812df05d4",
- "inboxId": "4959b8b51ea4777930311ae73e0aa13c87e42fc412270da5f868decb0d838c29",
- "walletKey": "0x418b3496ea4f81a0bae59106059f6e79a9b7f1d87bb6f878cc34347f02b6bc71",
- "dbEncryptionKey": "25f267909f6d165fdc59219117699507d4392da990e627098764dfc32124b3c2",
- "installations": 2
- },
- {
- "accountAddress": "0x76d8c35297ca2a3163862fbed1fb06d82af7a5fb",
- "inboxId": "fce305c744f3857be626f55402e9c776cee61bdf918f56c311512b0605b0d323",
- "walletKey": "0x6541ae27ed93266d0a65663a73d27ca655f11349d3ea36406fd799375174d00e",
- "dbEncryptionKey": "f9442451eecb7c2ef010a9627cf7d991fcd3ee357be8ae67b7f389c52a470af8",
- "installations": 2
- },
- {
- "accountAddress": "0xffad0effc475590d97b6da04df205e4c1b72cd16",
- "inboxId": "9de9250937407b1552e12c9a8259d23f1fa538a9760a93d9272cc8e0752a0150",
- "walletKey": "0xabda656e588cde166271d6c5a39de76a23807ae339bfdc3b58f984026f188877",
- "dbEncryptionKey": "eeb5ddfe308f7a0b53d3a37ce45ca09b1cff9e9762b6850e6de8c8d2b176cb4d",
- "installations": 2
- },
- {
- "accountAddress": "0x9b3ac871c910209818bf123b6cd0fa491fdb9211",
- "inboxId": "41155506348ae57f7ac9b1db5c5f8d2ed6dc64c7e579b7e4e28de504b1951c1b",
- "walletKey": "0xc0d3ac269304221cc9826f33c12c3a09ae684f43db0b6c4affb7cdc10d7166b2",
- "dbEncryptionKey": "b707135a165b08a1699c6788187c83c28baf68b65c3639855b4d7871a45abbe8",
- "installations": 2
- },
- {
- "accountAddress": "0x8bbdb33fd412513a7043e5cd78a989608046aa1a",
- "inboxId": "ab09e95b4414f7841bfef0f995c9430edeb9352425d0b148b8540e84b2c9b525",
- "walletKey": "0x6f4f8a8f83dcaae0396c14508a456e53c1ca89057ddda2b2e85a24e3e6b9023f",
- "dbEncryptionKey": "5509e460bc83ca86face0122af1b1dc96b84901a8676fac3ee8c51312e5d2a51",
- "installations": 2
- },
- {
- "accountAddress": "0x8d7dd85d6c2247d362b5fde5b483a70e088105a9",
- "inboxId": "5c6893f74e78ed544b2ea08b57a4216224a6a1f25258d8b61896fddbcbb5f9c7",
- "walletKey": "0xc04f1b3441554f886150df2344eddf1b910aaf4276a5f26ee7c8166f07188db1",
- "dbEncryptionKey": "122ae032ecdb0cbd4f8b4c0cf7f05d16f6061943dd15753706c3b7d736927f1c",
- "installations": 2
- },
- {
- "accountAddress": "0x145b2acff649dae09c7433b3af2f979c33d340c7",
- "inboxId": "7655e71f8c68dabd32d6d205412a3d6f7117744a2b2dd960138bd833ac53be25",
- "walletKey": "0xba0c33d1a71ef8a5a09e060306db7e5add96ef72a98dc05cc90e963291729d10",
- "dbEncryptionKey": "33379f1c35b4881254aed6af2e567a44c1e6810b566b9471bdd845d5ef201e3c",
- "installations": 2
- },
- {
- "accountAddress": "0x120c7433bd312e1d669fcc670bbcbb0313771439",
- "inboxId": "c1dadad97678016529dd81e28f0679a3f13f349672239c9f4aa86b7144edb0df",
- "walletKey": "0xfaf3c0116ac0ae0c695b551680e41f97206e83809d6a735baebbb2bcc58951dc",
- "dbEncryptionKey": "ff9248fd20d29637f86d96c6b1c82a9a028bd82c393a6c693a009e095224f12a",
- "installations": 2
- },
- {
- "accountAddress": "0x070a2461da48685611cf2aa14ba292f32f094d79",
- "inboxId": "7fe1058e348977897db6449df58b7efc388dfa9f088429d305535e8c974b1279",
- "walletKey": "0x6e33c32983d96a12680d7318c0e964c5558babe3a92e86b0d49442f1fa083c0a",
- "dbEncryptionKey": "ab8835acb8eb8a6d93754e304d0792ffe22ebce84110b608b6c2edaefdb097d9",
- "installations": 2
- },
- {
- "accountAddress": "0xa8d6349c58975d05384dc38fea55eaacf98df5b4",
- "inboxId": "3573eeb7840309ce095c1c0a4eb872aea443b8f30463a4e774e5b80e74e9777c",
- "walletKey": "0x498759465d44dc781e4547d36d9805dd0bb9626e3f15e92004a851adee650f54",
- "dbEncryptionKey": "8d020535d3f204690d6dd3a6ad48f709828a350b9a5389428203013b793e44f1",
- "installations": 2
- },
- {
- "accountAddress": "0xae8091566d0227a8319cb6a805eac321a2a77f21",
- "inboxId": "740511fd464273669290eedeb091450980bce2b9ea32e08f096b53fa38752a88",
- "walletKey": "0xb8678f6e0a8da1367f3da26e45fd6637d11a9eaa69124f8edadb07099abf0edf",
- "dbEncryptionKey": "33afeb188df4e940bc7ffd773bb8e91882afd840126d17628b274f4b5c074dd9",
- "installations": 2
- },
- {
- "accountAddress": "0xe30f2618b21900ff666aacfb2f9c0e2abb080e9d",
- "inboxId": "70dfd8915a68bae280920585ce0fde6dc0f6bdb0966ac642fc050ff7298cb389",
- "walletKey": "0xe4c9ba8f505ee0b6185190e2be9584af9e2699302d812ba3bccb81a8878b9ce9",
- "dbEncryptionKey": "5ba167abbc73f657da1f24e9b4f48784280cfcdec029a832cb7b954b81dfb77d",
- "installations": 2
- },
- {
- "accountAddress": "0x733023c3c9efddaa4e01a25f61bc9e90d9be8415",
- "inboxId": "640b75b40293e5b8f2a5ca534d96bb5ba6c5c131da898c35d7f4b979aa96a270",
- "walletKey": "0x67de6014f1fcd9ffd92093c27e1e6f8ee8565cd7139d26ff6751f18ebaf78d69",
- "dbEncryptionKey": "1c847b7cd1bca2736a50021c71cfb9a65b1892764151e3aada5362aac2f378a4",
- "installations": 2
- },
- {
- "accountAddress": "0xec64f8903052742a8a4bdfb92a018a9b50fc63fa",
- "inboxId": "9b4d4660ec6ca4ae32106f04bcc283260de74d25ee69747f8584b56766b660ed",
- "walletKey": "0x086912eb751a8a05f46b2643de69ec56e8cef5ea91ed28adef08bb9de1abbb45",
- "dbEncryptionKey": "37208dfbfba8812ff3d7d8296b350078bda123cfc3e987b7e7799054e4a7dc77",
- "installations": 2
- },
- {
- "accountAddress": "0xdf90aed5208037ce405beccb7ecec97288588a16",
- "inboxId": "55f49bc8268c5f59f02799d2d7c0e2e8f7dc06a5ea25b942ddbba0d11fb1b7e0",
- "walletKey": "0xa4bc19a03f3b9ac7a81a29c8f21b8fc81ef4a1a8e9f48709008d1c23de92f004",
- "dbEncryptionKey": "28d6b159b82fc9a671af30674b57bef1b47d8b906d7b2bc6914f2893d9bbe634",
- "installations": 2
- },
- {
- "accountAddress": "0xf88c630e757732c86f3c8a9e474ba99434fd4bad",
- "inboxId": "33c577257f9f05e40faccdf35756fefc4f769d1ee5b383b3c257686ceea196be",
- "walletKey": "0x3c93244af7137fb2225dbb6fb7874e0a83774c1bb81b5a759600e313ffe519a0",
- "dbEncryptionKey": "019b4faf793f1b79448754fda3db632596293cd58a2d44314c79e5d7ae44213f",
- "installations": 2
- },
- {
- "accountAddress": "0xe15b0b6bcc7f8f4d552d3b472564d6866ec0e39c",
- "inboxId": "e751aea64ef7e6137a081226c842f46e04b7cc93dc1d0d8e38e1e66fdfb8d719",
- "walletKey": "0x66677609be4a39f190f0c66e37d193a5bd35b83825a3bcfedb04c729c036a3fc",
- "dbEncryptionKey": "3b6710944099e45408df458e028890884be0a868ce3f72cd2df292725e6c8ec2",
- "installations": 2
- },
- {
- "accountAddress": "0x195cc62641c68a406027630357a02593c2bb3600",
- "inboxId": "899e4e81109b167a6bf1cc467facf2f3d131e10267fb88bdf5d495914f95b54a",
- "walletKey": "0x00885115eef5c4e6c375d531f6356e3b93c2844c5ebaf061224f9b2c0856091a",
- "dbEncryptionKey": "560f974e94469a5253a49d19f94bbbf70c788494859b6b9caf2f06e8a378f935",
- "installations": 2
- },
- {
- "accountAddress": "0xae49b5644918c93d860f9111c572ca71d14e98f6",
- "inboxId": "c0577656558de1581c9ae7241e3623ad081032e79e31ef626de451659b09384c",
- "walletKey": "0xf80864518ebeee05b6de789ef662e5139295ed1fe486d4102cbb6008b270f0df",
- "dbEncryptionKey": "be129bc956b380c060881ea08e7820086948bbce36812069d2ff01b5f947b1f2",
- "installations": 2
- },
- {
- "accountAddress": "0x8b7b353672c56a6e4418fe90e79da21112e61d64",
- "inboxId": "306ff3e3d8099392e6e87335eedc7853d2b0263a7233e1e8eb435352c5f95ffe",
- "walletKey": "0x3a1ba5b733e3252fff87ecd5a8f9708c9d34d6a9f542dfee7c448115dc120747",
- "dbEncryptionKey": "2c2c8e947cfc2f2a286335b333eab400c4ecee06ca8ab5108f89aa4399dd7e43",
- "installations": 2
- },
- {
- "accountAddress": "0xb4d30ebc3544e0ea3a05e478ace9984c100f6074",
- "inboxId": "d4b5b0547871c721ef2ffb5478732d65712a2413b1de3d41601497b72822c089",
- "walletKey": "0x55dfeeab2387939a4e1ef6a3b13d646459227af23688f2c59867c364b3ad3657",
- "dbEncryptionKey": "494bb32bf8ec37e8f0e9fe5ffd0a146dfc1c9f3069e2b8f3bd0be2fea61746fd",
- "installations": 2
- },
- {
- "accountAddress": "0xdfbbea10312b7bc7dfb7cf0121c52d68a8d67f40",
- "inboxId": "39eeab33a93eaa53cf09d1fa122fabef684310aeb1e3cde1555f71bd4d0f0f86",
- "walletKey": "0x514c49aba3632c9683a97fde77cf3f12db0f75dc377ab4fbcee7566757cc6a14",
- "dbEncryptionKey": "9b1f51f386da26d471349bc70a9f9f2957688e146046e1aa352c7391a11701a8",
- "installations": 2
- },
- {
- "accountAddress": "0xc9f2796899c48c39e0884d35c803535170e07c88",
- "inboxId": "e30c60bdf905234fca590fd6eeee78f4ae7a4dd89030262baa9b35d9a07d2117",
- "walletKey": "0x28bfa9193ad1acb9360f263d0074d3529202874f0aae56b593b14a71e7ee6c0c",
- "dbEncryptionKey": "b0e56f88859316eda9b1d83eeaf419a6513f7d886b331ff5edffe110686ed047",
- "installations": 2
- },
- {
- "accountAddress": "0x286f626ba201c3101d61ba5a06ae40a189f2c887",
- "inboxId": "449c0ab2cbc78bd859aace02ff9d5f4c108d4df7a8d10049f1db3ac70b007a55",
- "walletKey": "0x24cfaebb0fa7ae82a03adaf50d507dc1f31ac5ab15fda2cd0706196a5a630045",
- "dbEncryptionKey": "0ba0cd98a3119ae1a22eb6c0a4a1b03b082e575efc12e93b9e187effc8ad57ab",
- "installations": 2
- },
- {
- "accountAddress": "0xa399d09c939dc727741c9ec27ce27178abb414b1",
- "inboxId": "14a2796033fb380ab2c8aff05db521576a63dcebe034ba7d6f5f7cce735aaeea",
- "walletKey": "0x4478814a5eba6da6c2c57f8cfa232fde2a9162098c650a393cac9d7533721de6",
- "dbEncryptionKey": "a1f042ae822dd56fd41cbd4ef0416c2ced7cad7966f0766ecd35daecffb62791",
- "installations": 2
- },
- {
- "accountAddress": "0x8933e9f5b071f175157811f9de82ca55f2ac8848",
- "inboxId": "8c7b602a9883dec1e3782b6f48f3970825bdc775528d0b6a846009668e914ad2",
- "walletKey": "0x01a1d3d297a4ec2c4fd85fb0ff86f220dc2936f60868c6128ade4ab91b2bd53f",
- "dbEncryptionKey": "7265f969cd0fd5ea1392c1613842a0f1f4221bf179a1f71b838fb43f073e9186",
- "installations": 2
- },
- {
- "accountAddress": "0x4fcd93248a911a99d6a1d70967c113271ed1c534",
- "inboxId": "d6fc9367b68bff7baa46e0121a12778c4f9e31c80eae44da71624f8bbf1ca597",
- "walletKey": "0x542ac1116d26d0e3af6556cbe1fd6afd392dfa6ae932fa15cf2a142e6ca2276c",
- "dbEncryptionKey": "82cf76806b65d6b0935a23aaf632d5a146f2c0fd175155f4546064afffc20934",
- "installations": 2
- },
- {
- "accountAddress": "0x5a8fe953ba1f12d1110c80e7c9550a767671f36e",
- "inboxId": "5c33e1631e97986a2ddf421875ad4df6c60c901f313e81c3851da34a3ceac1d4",
- "walletKey": "0x1d54600c40ecceafd793f13e6bbde755ac4a48186dedc65c9636e887e06ebc85",
- "dbEncryptionKey": "81df74faba8324c3cea8efc9c12b772b421b0ac7319f11973f4ed946d7c70df6",
- "installations": 2
- },
- {
- "accountAddress": "0x10bc346a31bcaf76c0cddf2ad6a32589b68aa4af",
- "inboxId": "e86e80a4fd1b34eeef8487809abe66f2b2eca0211487cc257e3fb6009544766b",
- "walletKey": "0x72d22791daba5b36bc8f9752e7cd1e749d7b12730c0ecdb89e3765015e534329",
- "dbEncryptionKey": "ddd55009d41f3d784f43868794cbf09faa3eb275b63a6b92c2c769f40d2970d8",
- "installations": 2
- },
- {
- "accountAddress": "0x4edc3d65fe57aa261541f92e853c83194f3ef312",
- "inboxId": "0e95dd2c29d3ec71044aef9628ca1c55b722bdac472418121bc7d74fa9a789b7",
- "walletKey": "0x46a3f69e35ece69440c85a8321acd4003b2cda5724fd38285709c5d7688c80da",
- "dbEncryptionKey": "2e3a866973bd6cd8b35e070dfc9f908bc5d5253f7dd8e11fa59c9848ba141132",
- "installations": 2
- },
- {
- "accountAddress": "0x1b34168bab7bdf83042bdfeffeeca9333d0671bd",
- "inboxId": "a5c50050a04f85bde0252f06ea340d9d173f9d13c7384e1391959cf3923f714b",
- "walletKey": "0x68990eb61f21c3674ba0604cb31b3a82d402839cdb8ca98f8a5913245b8341e0",
- "dbEncryptionKey": "9fd546bf65a74b08d8fc2700b293d8d0fc42829242fa1660d5bab0837cb108b9",
- "installations": 2
- },
- {
- "accountAddress": "0x8247ed80285f2e6d29cc419faeba6f1b88165e4a",
- "inboxId": "8ac0b5e5bcdf10cdfa00a66756cfeb78a560422cf618946d977cd721744e0d9d",
- "walletKey": "0x240ee0577f599e539d0bdfbe2e3610fe470dc6c3d9ddb105a45dfb940f98c647",
- "dbEncryptionKey": "746c582ffd0efd9a38abbd331ea6926330c440491b08fd8cd189fcd493525da0",
- "installations": 2
- },
- {
- "accountAddress": "0x375da798278fec1bf88810639522e95ae7e06207",
- "inboxId": "9ef742ba86c55ea4bf95c7ed21dcce4bcb94a00f43690f6ffe9aeafc6a3e078d",
- "walletKey": "0x6ff889432d1ecc5c26fe0e7902969b451e6c7ce63aa12d1bef322f497bf9e8e0",
- "dbEncryptionKey": "1f5dc009ca122c25e7a0212669e80fb4c7714183a5e9b26c1cbb52bedfa1a8b7",
- "installations": 2
- },
- {
- "accountAddress": "0xfbf0aed87e23353f826b8cc6a8f4fd8bc3b66f0e",
- "inboxId": "0401a399b4db508db0a9fe09fe92ed7f5fbc1a813baad4247a14281cabb5b3d1",
- "walletKey": "0x41901de1ff12b5fc1834d57bf964c2a8b377f392d1e13c1c916a6c6bcebfc828",
- "dbEncryptionKey": "f66cd0db6e09e7c7f99cb3a4cee93767303f5ae7f6a1ffbcb4e4a99cdb84d004",
- "installations": 2
- },
- {
- "accountAddress": "0xbf93dc4a98a98ac23cdccc6ad73f90f89440cb63",
- "inboxId": "fdabc08be83c197b4f81904ff6231bb7a4f5c6c8bf4efa9733874ea6cff8b9bc",
- "walletKey": "0x701a271c62785b3e4ff96ade58e8accb80a76aefa1c5427628804889c9b8902e",
- "dbEncryptionKey": "1f27a707d8c98d1363af3c73b27be9437369adb14e969d6a59ded8e9f7603766",
- "installations": 2
- },
- {
- "accountAddress": "0x6d6dbd9d003e5625efc78d606886567db4fa8de2",
- "inboxId": "3dc9899312f47fbc6b621f375379c7ac9b89c48b61e9e7e2e40249ff658a7e0f",
- "walletKey": "0xd6737c6245e3c3f4793f68f5cf678b1e71a03677dc6baf7a126c3585bddd3559",
- "dbEncryptionKey": "6ae11f4dbea7d29878bfdd78c4ea4d87cddce1a580d80bbd769732788173f74e",
- "installations": 2
- },
- {
- "accountAddress": "0xb5614718ea2f356abab8bcdbce891e9a2203b382",
- "inboxId": "14c62dec2551f260e5a4f64bba9feab70f73e33184f93e4507c39a2514f83621",
- "walletKey": "0xf91880c047a1ef776fd2cf8e83812f6dbc6218fa522c0b19c01c4d6240ff6d68",
- "dbEncryptionKey": "f0dbb8d450db8503c859a4a70a1c65328dd94b54a331a84e00d544f245a15c9f",
- "installations": 2
- },
- {
- "accountAddress": "0x2a4754bef1e33be9f614cb506f62721d0ac59e5e",
- "inboxId": "af5f8e0be8d51259eca34c4ccac8bccf111b6b6c6a2416165c5453a702ffea80",
- "walletKey": "0x643f331f0fad07a8fb02ca08017ef3999ea2d8c0ed4cee95604f9a766a0aad4d",
- "dbEncryptionKey": "3ef92511b533b12859687daac0bee3900215d97e278951f36168dd406c7f85a9",
- "installations": 2
- },
- {
- "accountAddress": "0xc4cfae9e23e7151fe9a32fc3441e8335654f1724",
- "inboxId": "45efe6bda465476ee7d0d454406a8dec4104f806b5c4e189183cda1167218710",
- "walletKey": "0x50213de5b9383c0f57c1fb327932d105fee5175261c0ce66500250817085a8e2",
- "dbEncryptionKey": "9c7db636b6f1aa17e9e39be1f9bd77c41e1ca36842f86ddb368ddf268a1d6aea",
- "installations": 2
- },
- {
- "accountAddress": "0x0029ecef1b7b60bf0768eca8a3cd52138a911d27",
- "inboxId": "6e85355662205967ab2465c87a1288edfd05b671e77f7ac65d8a8629e0768e0e",
- "walletKey": "0x484a496a94b81ba16a829ad053a460595103eed65d3778382aef892b0f360bfb",
- "dbEncryptionKey": "47565e8e3ff11327588629202dc3870ba09bcd38d55794104f84ec41e254e4d5",
- "installations": 2
- },
- {
- "accountAddress": "0xb5c78fc3b2e238a35fffc87fa804ecc278b7e64d",
- "inboxId": "7275f907f45e22a38cc0369a4c81b3906d8c02233722c69f4cd5ee8e5512ae78",
- "walletKey": "0x5bed75c2196eb0f90913abbe07b96f8baa69a996d783ee689b74321af356421b",
- "dbEncryptionKey": "162b68fb2e06386796ccd19184dd671c9746d24fa9a2116c9329c1a7cc21cd3c",
- "installations": 2
- },
- {
- "accountAddress": "0x857378015732b13a2f01fd108b7704c709838828",
- "inboxId": "450e3f5480a1165dd49f2413f19aafeee2d412d885df7ef9ed9a411b948df9fd",
- "walletKey": "0xf948c7a2e5bd1c36ff3c0587708fa9297c0ecbed3b0bf10fb16bb67402e51481",
- "dbEncryptionKey": "2970555c6f5fcd7094d59e207e212a28923f9aff51f74aac1b312ececd2f56ae",
- "installations": 2
- },
- {
- "accountAddress": "0x1689b4a9d7065885872e73524dba52767e3251c9",
- "inboxId": "68333fe79dbfe07a68d854199c651774abbdbd5b5bddc363b79a2d4cfa2e80e9",
- "walletKey": "0x35a60ac4bc07faa12192530ddf9365c83fb9598f7118349e01d4f9aadbce421a",
- "dbEncryptionKey": "664c9f1fd2c06f3e9f0c939e3bb079aa37e8ee5d126a7e04f292609a94938a2d",
- "installations": 2
- },
- {
- "accountAddress": "0xbd1e5a1a055c08b98f630f6595fdb6b0667b2094",
- "inboxId": "97f4d51d9b55d8af652a2669ffee04e445b508077612226d53b76090858c86fa",
- "walletKey": "0xf7c7e7b06d7fc251465dd882c37f7a4c5163edeba244c600bbaf9daccbe60eb0",
- "dbEncryptionKey": "b11313f366c716125f30f5df1394d3177cebc289430d3fbd449eb68a3843fb2a",
- "installations": 2
- },
- {
- "accountAddress": "0xd4f17e3ce459a7516a5dc30e87a08f9c68aa2dda",
- "inboxId": "ace506b6c95468a8e05c822c778756c4cc157b44053d4b515d8720b54f9d8a4a",
- "walletKey": "0x7ed9550d853c4b57b9ad3408f72bc88fbf3b69df4972628e0fec6900b471d671",
- "dbEncryptionKey": "735f37ba5c991e69358403607dda2bcd34bb3761c5c5aebd9997a4e682f2b745",
- "installations": 2
- },
- {
- "accountAddress": "0x05983677f8539f8be373633c77f6a5d509da1143",
- "inboxId": "4ecdce4c704a178c9a861b1065eceaa3c522afccca7db497c22b6e293d19f9ca",
- "walletKey": "0xb3eefc5a551989a2b6e726dd05e40347db79bfab8b7dde1a6593bad3f07a87a7",
- "dbEncryptionKey": "6df9e9702cf00b233b54ffa9bb609340a8afb8d647baf2b47357cf6203816cc8",
- "installations": 2
- },
- {
- "accountAddress": "0x032fe02e9c80728b08c58f8e57f3a70d9a790521",
- "inboxId": "eedc5d524f4f861f547d9c57e0fca32bc64cc23b0237e6f9dbcbabc72cbcb33f",
- "walletKey": "0x630488c5d33178f37ee90de66658fa693156895c19fde305821f5a747620061c",
- "dbEncryptionKey": "9c087ad182fabef7a6ea571c8162da738e51b8796ce35121e473fbd3972f53e1",
- "installations": 2
- },
- {
- "accountAddress": "0x6cd2a66f2c073db73f8ed7b1a2e6e5db5fd7a403",
- "inboxId": "69d2c242c0b83cf0197b04355d2e6f26275b9b7711d8d37245e9e4b8e8f7d240",
- "walletKey": "0xd79f7db4741c98dd9d7606f5c510783636efbffec1c3b1e891bf121abd757500",
- "dbEncryptionKey": "c6ee955a4d26e0757b97e2101a902e7d00ce9cd218ed664a076d577824427ff2",
- "installations": 2
- },
- {
- "accountAddress": "0x6b2af82090e4df6afedac6b74477c1806216e98e",
- "inboxId": "21a4ea45027f2780affe9dad949c944a3561bd9aaebbdf2081970238c66403a8",
- "walletKey": "0xd8788ca7cbf48d1aca2cdac6dde5fa5fdcc21e9a9bc8759dc3c848de5a02a4f9",
- "dbEncryptionKey": "2e4cc340e13532ffad4ba09028df52a74f4720235877e0b3f6687b8499ffdb8e",
- "installations": 2
- },
- {
- "accountAddress": "0x983fc68aa8180b2ee17e2b6821c7fe7c0dc60564",
- "inboxId": "cd2d4eb0555704807defd73fde4cc5fb3a0e0f0e15c199702d6b651e13d305bb",
- "walletKey": "0xd52c56592330a68442e7d5124523b6103bd75b1db7f95b9bab4fffddb4562402",
- "dbEncryptionKey": "e72baa2c345ff4a10af689122f5fd7fc22260cf474ba323d876dc405cd0a54c6",
- "installations": 2
- },
- {
- "accountAddress": "0x19c19ffcf3501f8c4f48ee6cd52bcfce8f973cf5",
- "inboxId": "b950aeaf2f897040f53ef15391a25501b8d69bbf69f5a87af1fc0ab5f7e26602",
- "walletKey": "0x055b19abde2de5441f96bde4fe8bd162074a267ac7b7d25cb58074190ec2dbd8",
- "dbEncryptionKey": "769ead4e3c0bcd7b2a3cc4272ba850ceea1c8b1ac61684706edf1179e2922fdf",
- "installations": 2
- },
- {
- "accountAddress": "0xc7b5f8f26fe9b2a785c80844128a840a219cc6a6",
- "inboxId": "9c92d52e577f908d4e411a4d04e3230bc3ec8b06acd11c6b988497a325626e20",
- "walletKey": "0x5f481323c31f995042776a306c3eb19ef8ca6242802b4d7607e472bd751d285c",
- "dbEncryptionKey": "9f57d4e36cae3e8d63c1b2cc0be0015c776950ad902a13b63ab70a6c05568be6",
- "installations": 2
- },
- {
- "accountAddress": "0xb1741a75e57279b01322f097ff7439aa6293dae8",
- "inboxId": "9b4e0648d2603a46acbd34904b6b69bb44795a2729bdf0d2d4a6822c045a44c9",
- "walletKey": "0xee0a47a54968b96ad2b8310f38cf48c4a945d1c43bc9c2ceb92d5844974fd8b2",
- "dbEncryptionKey": "d00e6b90799c83f906b401da5ae4ba1127a1d5fa55e1640b51b9491fc209a896",
- "installations": 2
- },
- {
- "accountAddress": "0x5bcc9e7bdd9b5eb28b129255961730184e6d3f69",
- "inboxId": "e09309c64fe7914eb5a4f00b3963d4397f759d2ea6f87c18ab80254f6a4e4ec6",
- "walletKey": "0xef1fb35892a292b7f9d9f2d5cc3caa723d9f2a9dac0855456a2e63f3655e0087",
- "dbEncryptionKey": "6067e9800c4bfb8b2fef46c715c096a001f262d3f06e828daa3afa3c13f7d0a3",
- "installations": 2
- },
- {
- "accountAddress": "0x7a864a5540245c08b92e814177092ab1c24fb86e",
- "inboxId": "5774bef27710d436da5099781a69bbcef682003206479ebec045ae94a1d8685e",
- "walletKey": "0xae641918b73509e27cc5ec278149876cdb0a2f785c223a004e23f5e38e0ef529",
- "dbEncryptionKey": "881a45e6cf9581758166b8eaa1619db633e20e9b4acaa9a50a71bccc137dcb55",
- "installations": 2
- },
- {
- "accountAddress": "0x9a2cd4a7d57ce51d3f71bcc0556ecc4a2ee1fe17",
- "inboxId": "932be8eaf4bca21568cd29b59a689202f66e883a71a193590a3adfc5997cb835",
- "walletKey": "0xdb4fb03c6d87ede67927045088ed45b2b3ea269f23710c26bed512178fdbf4f2",
- "dbEncryptionKey": "c7f52178b175162c5ca450f8608e306b82ad095f1d3d76d3734f771cbf5d768b",
- "installations": 2
- },
- {
- "accountAddress": "0x6ba7a563231353f13e32c6fc240a2cbbeb12e88c",
- "inboxId": "a9d88e2ec1ac5f53de0ee1ae62b9dc37e43f0a2f72c4a2296f5957dec5a5765b",
- "walletKey": "0x58fc6f25e06903b92a8acc2cac65b8e710d25a449043feb03adeef3a0ca5a6d8",
- "dbEncryptionKey": "12c0248bf685c48ba5cfdd86da315ee9532141fee6a0fe66d3b7cf1dc6677338",
- "installations": 2
- },
- {
- "accountAddress": "0x26de466ea0649a9ca69da43f80b0d02c5af2dccd",
- "inboxId": "6218e0ecd692252f4e1b4daa54661b061a35c04d407d102f9cbf046d71973e15",
- "walletKey": "0xe81e130588dfaa0bbb28cff301b648bfaf0253c04d7553141a049056557815d9",
- "dbEncryptionKey": "24b7ce9e7cde2314ddda1b8073c5148fef0c591f869f3c8bc7cb50ca7847d083",
- "installations": 2
- },
- {
- "accountAddress": "0xe34707b08424acf6a30c14742fed4affbc770dac",
- "inboxId": "997484720d3cacd39bc50acb3081f5f6ba4e7ace0bc013236ac36b54ddf62438",
- "walletKey": "0xcc0e3e1564fb40d354c0f9c0cf36258c81a19c5f97270f67cb1d2ac5e5dc4ad3",
- "dbEncryptionKey": "be82cd62fa6ae1e754d8cd62c66bbdbe260c8592fb4002532f80a7f148063331",
- "installations": 2
- },
- {
- "accountAddress": "0xea04f03d14b98b04612ba84cc4d98be4f1cea919",
- "inboxId": "251a9feae0f1b3034cb6a3e5c0fe84ea0b88e50912e10cf51ed50befc82a51c9",
- "walletKey": "0xf7de73e64aee740bf7a1bb8df52fc4f0b7dc5837cf43408088be14535738ed4b",
- "dbEncryptionKey": "32c719469ea8331ec5b2ffe0f6060607f6faa852809a98df144b503a55617aa9",
- "installations": 2
- },
- {
- "accountAddress": "0xa45eebd3f29ee5713a318bd3ea55fab347998373",
- "inboxId": "68280285cb0f0fbc0eda0fab661593129c1b31854ad4b5938a878d51d4a14f32",
- "walletKey": "0x9c1fb31d5275d83b087d10b208733f496ac0fc7b693320fe1d036d6ce5bcf2b6",
- "dbEncryptionKey": "bdd126c1f27f34b06778d18fd0e05b65fbe5da0237c8582f4a0d76b0c8d7382f",
- "installations": 2
- },
- {
- "accountAddress": "0xdb64c0a9b58a913aeb462a720df4cb7753334e04",
- "inboxId": "6ab62a33a31924e67a0d1c94571c665fa72565a4bd3a1377e8293e9e2329703f",
- "walletKey": "0x0f6e1b92f678f0086a65bbc222a1f21d8728c8184d1e7c9666fc17c50719e470",
- "dbEncryptionKey": "b9cedf4b67029fb2e43d5206133e4919d898f5c9626db613496cf74b0fb0027a",
- "installations": 2
- },
- {
- "accountAddress": "0x784749137d6a586154b0f8222bd14437580d0d08",
- "inboxId": "ef13e23c4748d58f9af88bb60fc0d2dd32266001f28e5de26c2dcb58efc9fa0d",
- "walletKey": "0x05acbf1279c99ab702e6358926287dcb021f669a90c0774f5ea9eb2114d5972e",
- "dbEncryptionKey": "c3aaea8cfe10fec32e4e3c56ab54c71c2b04749ef0d835eb3ff6a1e0e67cbfd0",
- "installations": 2
- },
- {
- "accountAddress": "0x85aa5683b1622d720b68f41d58213b2f8f6c51e6",
- "inboxId": "d4d41f71cb51b1d87b9cdc443cb491b6b42d4961b3a70b6e166aa53509acc10e",
- "walletKey": "0xe98bd6703f4c20a19232fd707912173a44a6767113467674c62d6deccaf827ca",
- "dbEncryptionKey": "3dab3ff76865f6807e0a4e214b4683c628dde7d2a1e799f4fccd66d8a7464d49",
- "installations": 2
- },
- {
- "accountAddress": "0x303ce3351b92adf9f93b7de87f35a2ff864c0ed4",
- "inboxId": "4ba00825dde67083b7376fabd3419a1d85bd8f448a1dbdf5ec3be1b4b9302ffa",
- "walletKey": "0xc8e65b85d74e68cb12a5884564ab8dd743d70cbb85c7338b045fd87c96f8c34a",
- "dbEncryptionKey": "eb13bd6f5ab94c60293770c271dae4dd387b494d053d2f87d395f94ce1cc1239",
- "installations": 2
- },
- {
- "accountAddress": "0x66c958cdd0a0df46369b6d345f64d27964acebd9",
- "inboxId": "6aea363b6dc6323aa282d941e1d861941a17491cc86acd8b7eb7ecc06dbf7e1b",
- "walletKey": "0x0e7bc699a45dd08ce0dd9a573349e6fc8be5ccbf4a20179e06da0ecb3a8b6640",
- "dbEncryptionKey": "797917cc18316badda00687955148d21e3e5a3e383ab12ff7f787eaf85e70a7a",
- "installations": 2
- },
- {
- "accountAddress": "0x337a0506fb193e434da547b59076c85b33b58767",
- "inboxId": "6907ddbba589df3fbff13e8687a2c7f8a3969162aba2b7e13165b9673f39221c",
- "walletKey": "0xf6c7c69e853cdbd5650dd2b2dbd01c5ce0934f9e08adbbb2b83f5e8dc45b7e83",
- "dbEncryptionKey": "9ebda0b516cd90b52d7f0e84220677dfd48fbfea98b60260847cec18e062f081",
- "installations": 2
- },
- {
- "accountAddress": "0xe4b66243c9fc901a587203ef1893489581fe9c01",
- "inboxId": "a018a2d55c5f3629c593b6db345e3051a39577a8ab88df50116bfe6fd2a097cd",
- "walletKey": "0xff57e42dc8ccba7cf9b082531b06010f5cf7b77fb1875e451555839817149263",
- "dbEncryptionKey": "744f5484a41d1572692d5fd3bc81a2ab5cf8555f636d7498582bffc4527fdfd9",
- "installations": 2
- },
- {
- "accountAddress": "0xbdd1eec41e8c2355929b932ac13156ce4214bb89",
- "inboxId": "dcad0daf72f44eceb21875d5697703d0bdf12e29921f7780f66de7fb92571a73",
- "walletKey": "0x109a8ad4fb45bdbbd04cb372febd9cc9232d8a8dca2dbc0bc64565e3c15d5c78",
- "dbEncryptionKey": "0ea73190fcafd1281275c18f661d929fd090fc1484a7711affea172d96a0faf9",
- "installations": 2
- },
- {
- "accountAddress": "0x7f7883f8b5c6059275b4c2b009602739edbd466f",
- "inboxId": "8df5a1a8c13138ef56e684ae10788b35e0e11f74e183206c43ca7ffe7dbba94d",
- "walletKey": "0x4d99d0a35095f5585afe26a402ec9e61069e9360b4026b73d753e861a7f04a42",
- "dbEncryptionKey": "62584a321ad695078ef490eb417aad7cd4bf16f7c5e396344b76f1b05c5d4708",
- "installations": 2
- },
- {
- "accountAddress": "0x7cec0f8b3f54a1288dc8f6891d87a5352bcd4a6c",
- "inboxId": "5fa262b0f806ad3dbefce597e62a0b87a8ee24b519a3354e380a619f7a1a6979",
- "walletKey": "0x14594bcfa88f9b29d4ead051581c36bd43180238049b6e54533740f0c829fc52",
- "dbEncryptionKey": "7a16dcb508ba8826fa9c63f2990a8acd515100717410974e051d4f4cfb43ee72",
- "installations": 2
- },
- {
- "accountAddress": "0x3954db1d2d18d719543f4181a0504d65c3553cbe",
- "inboxId": "3baa7b65d98a0e603d05ffe6d22dc78e0ec9e6d86c4e354fcdfd9866a60aa546",
- "walletKey": "0x8a61ca95ff4488b52c86e37ba97c34d85cc275a38fcbec04dbd55daef01533af",
- "dbEncryptionKey": "9e3f091d28ce4bff35d058445232e02bdcc1be3cdf7f89541e63287f07cc5b06",
- "installations": 2
- },
- {
- "accountAddress": "0x9be996b0d4eea93c0d40f9c6ae97a2ee327bcfe8",
- "inboxId": "93ecdb07d14e31381abc6a23111aa2d4e26ae31911489d7b23d9b7e15fc5ff4b",
- "walletKey": "0xd162e66aa45eb6b5e16d9c229d4894a7d61ee508842913dc668350bd6bcb8919",
- "dbEncryptionKey": "1d26dfee19da5d28721a5b972e66366d94bdfb97dbc5d6d4a35d6a75867fee9c",
- "installations": 2
- },
- {
- "accountAddress": "0xedd2ef38fa8106bb9fe8e2844643111de55ccc20",
- "inboxId": "ed6ed52e6625d6b20cbed96de874cebd56dc119625501dafd588d2620eb71e39",
- "walletKey": "0x3029d1e474baf61a68b4094e096cb0db15b8f8c2df7523d757fca77cf9797a52",
- "dbEncryptionKey": "0c1ab7acc462801e7edf6e2836cc3725497c043e207588790ceaab37e7403c1e",
- "installations": 2
- },
- {
- "accountAddress": "0x574d1c8da9b665cae69a5206a1355ca9c4639ea9",
- "inboxId": "97fc35b01fca007bc990b9c7e5dbbf0287e86a0a9e63801dba68ba9b721a38c6",
- "walletKey": "0x224af10b861f864f1642d558c0357d63c149dc6a141f94f5c0cbdef9871a2bed",
- "dbEncryptionKey": "baffe0da71b96e9bf53d7f7cad01b3384e35427aebef41c4b91ab9c5c9ac1868",
- "installations": 2
- },
- {
- "accountAddress": "0xdf8daf3b04ff26af5bed8e7c27917c15e14e0efc",
- "inboxId": "f6bb40d6c7dc2573644941314aebf202d0cb4222afaef8ab7df09a9694e74112",
- "walletKey": "0x7ec2df5e36866141ced1a60edea49ecff13a02a375c59a923f9efc239304a541",
- "dbEncryptionKey": "3ccb155bd4c89c92b384be1bbf39fd079b5005a6e72bc7b81ad578ab722fb318",
- "installations": 2
- },
- {
- "accountAddress": "0xbe48e8e18e28eba179c1472d3ffe792fbe21c7a1",
- "inboxId": "c7d6e4bbdc4ab2e1d4c05057a4ecb30115514b2fb9d5697f09872c8784ddf8c4",
- "walletKey": "0x1121b0dbae5d6c158bb93a11a167a43b7b4a8110ea2ad9510c3f92b49e181586",
- "dbEncryptionKey": "3f094c4616214c4e4a00bc8a6c6cabaf66c766eadc448026c01ac505be41018f",
- "installations": 2
- },
- {
- "accountAddress": "0x8f4ea713f5c123aa4d640ca7ee7abe3698495425",
- "inboxId": "085a4f7f699ed7ca36b87f57039c750fecc587e4ebbc8fd573d16448fed6fc12",
- "walletKey": "0x395edbdcbbb2642061149af78ab9c0fe1eeaf666ceb34045aa1c609d6cf221ee",
- "dbEncryptionKey": "1fa5b92c79c31892cc418fbc654a0834810b70dcdd1917ac25fc8623c29cd820",
- "installations": 2
- },
- {
- "accountAddress": "0xdfabd157d6b76aa9014d13ee6da8934063e1b6d4",
- "inboxId": "ede856537732739328fe97a6d877296d45a1e893402aac170c8a247105af3757",
- "walletKey": "0xb1426c6e9c986d6ffaeb7b90b2617d66063949632b60001905409579d72afb3b",
- "dbEncryptionKey": "2c397442b0703fc513d34088c6d9c8e8c537f149a7de68a760d4df61fe7b85d1",
- "installations": 2
- },
- {
- "accountAddress": "0x1a98fa2d586b3f42e6ac2dfe4b5d9e93cef0b787",
- "inboxId": "540777029568e8162b5e18e76867aae1e18fa0584f392c2b81aa85ec6d140756",
- "walletKey": "0x30f0d5aa5b45d46cd61c5f23208b8d52fcba578bb50ba857226608eaede76f36",
- "dbEncryptionKey": "1b4083113e7f505279dc00133d817ed3ff52f2eadb9d61333272cf7a31624605",
- "installations": 2
- },
- {
- "accountAddress": "0x7b8412a4ecb49c81dd8175c5f28d135349403461",
- "inboxId": "c9aee1b7b939ca390c0e01f0e7973568ff6f51c75559e9994b299b6325189768",
- "walletKey": "0x675db993913a4ffa8dc94421ca5c89ad25d221ac0a9245b493c908e7e3809f75",
- "dbEncryptionKey": "75b3097d86bfd3076746deafc4cf5c5ac9722e5528efd830c095f1906dddf438",
- "installations": 2
- },
- {
- "accountAddress": "0x7b7fe1d18084e5ba1af610e2cf9177965376a510",
- "inboxId": "705775af9574111282f5a021e8765777a87dae13878cd0d30d2a71752b31e46c",
- "walletKey": "0x8c58acfb0e487d708fb45c636ef46b9fa00455d1fcfcd1b57b97b7cf8a70e1a0",
- "dbEncryptionKey": "a82d0b4c59888f79b09976e7e9732fd165125dfb9d4961fa87e3b89e0224e2ce",
- "installations": 2
- },
- {
- "accountAddress": "0x7a62116ca44986cb1ea9534e488e84025364e32f",
- "inboxId": "b8de3794379608cfe70961484bbbf1e08c3772caeb4410e2e422a6bfef38a295",
- "walletKey": "0x7b298920bceaa52b9d85b52a0f5c785d0a50f4923c3a7827d6529442a513f914",
- "dbEncryptionKey": "a71d6bf261e0e1e6962e21e54e50c2a62ecd1b571fd893b2e90c6ae37b81c99a",
- "installations": 2
- },
- {
- "accountAddress": "0x1218dd15fd912dc5bda11c1fe4e4d2b5621b67f1",
- "inboxId": "fd05dd1cfd5efeefb3bd22da1cc766c02794f3cddbe5a20f3f048c370754ed11",
- "walletKey": "0x1bd3fbe2b7e0c1ffea259970e52c9e35d3309310315088b417c2c10ac4916a89",
- "dbEncryptionKey": "20fa23dc3c1f490dd9165e25747adb1e2db9cec3ebe19dec58387819a07bc63f",
- "installations": 2
- },
- {
- "accountAddress": "0xd8a418ff907dd1e2cc0cdf18197ea9ecbd9e4f5b",
- "inboxId": "737ee326ac087086d43c9e522d9f55856eba2349d3dbd69ff1a5f577a3333eb9",
- "walletKey": "0x712e89a4fc83bff06467eca4640aaa339d92712bc6eb138f023c23c11cba1d37",
- "dbEncryptionKey": "725a08db4fd6da065c2c8514d294a08db26845b8742c841d59eda4156deaddfd",
- "installations": 2
- },
- {
- "accountAddress": "0x226c2b282d3f777f8f1407680ff29793b7573928",
- "inboxId": "c26cf6a259c806e1a333d2c92899703e078f19c84c294e3220324e375459a0c8",
- "walletKey": "0x7016071cd91782f35f2b872258d9f4ca5a54a920d3fa46ebd8fc9c28cd10d712",
- "dbEncryptionKey": "eef32bca8494f11fd63fe7e795d7356f2d933665a26c01ce37740a99da335e67",
- "installations": 2
- },
- {
- "accountAddress": "0x848d30494be6aece101336e78876f9fc4ae5f86e",
- "inboxId": "9d63edc53f5012d1a87a0b667bec1a4ec565d8f343c6c2ba6223d02bec75558d",
- "walletKey": "0xa191d0b71e703c9132f050f012eb59d8e226b49713eceac8d40c7492a82436c0",
- "dbEncryptionKey": "01c54b13f90b335e1bdcff8f75213fa5be733a349dd256fcf404c09a5e3f0052",
- "installations": 2
- },
- {
- "accountAddress": "0xb9d8a2541339c56c034049813bceeab3c4fd4029",
- "inboxId": "f085f1a4682e916c269be405ee61285be9e7bace5ade9108e296254ef525a3d6",
- "walletKey": "0x4e6d3387183849cf26672c8e5f77ce8d908b358dfb2a135d6076e31c8dc820d4",
- "dbEncryptionKey": "0cf3e5a1696a17e14efaae1e9042b940d74d468e6529f22b092ce6fa85e5bdbf",
- "installations": 2
- },
- {
- "accountAddress": "0x6b105c0433c807310b2ffe0fe9630d4a89e6f868",
- "inboxId": "3c22e814c8b9df23730a618be44e35e5f8df4a7daac3dbfaf4b6812b3cfef018",
- "walletKey": "0xc7720aa901626162a4c32c0d7818c563b129e30fd586a9094f06e76f39d75db1",
- "dbEncryptionKey": "66b5d7ec440fa49313ddde504d096d19c89990a6c84dfd1d98a57af4da6637be",
- "installations": 2
- },
- {
- "accountAddress": "0xbb804f984dd5b91fc5a893ae1088b7e26b040dd7",
- "inboxId": "a302c10adb94ebf001fc364a37e4446d576c8278aa2835a1258456aabe4eb83a",
- "walletKey": "0xa7afab0f82f0e631649cd50893c022c2b34c0c8306697181b02c22665c6b2d58",
- "dbEncryptionKey": "13dea76701c49b80244fcbb8af7fc60f3073814332d30bd323ddc243219f98a9",
- "installations": 2
- },
- {
- "accountAddress": "0xd618129c3a72a21cca8444f245f5faae5da399dd",
- "inboxId": "c2e16514c3231e6b3738ba0e2cfd19aae4aee036774595a9bbc27259ea1f2876",
- "walletKey": "0x5fb04e8f1ee00f50133c7cd6185b08d50c96555f81e7f9b7d26dd9593806b0fd",
- "dbEncryptionKey": "0670bda48c15b9cb1f7de91f620aaac83a36eeb45d3ce83eac97edc4ac836baf",
- "installations": 2
- },
- {
- "accountAddress": "0xd5514920fce34fbd2f16efa81d4dd4986d406df6",
- "inboxId": "c7356fc2a799df28936d8ff5fc29ee9beb94226d93ce9a6b84b792e802a6cf6d",
- "walletKey": "0x55fa68bcb1133ff479906f6546aabe9366d6cd5ee870b6a11702c94efbda7c60",
- "dbEncryptionKey": "0436bd23afdd03d14f6a77d8c23b930e90b921d316c8abc4564d785315f59581",
- "installations": 2
- },
- {
- "accountAddress": "0xccfb62411e0f87735c4b275b9e65901ff6482a06",
- "inboxId": "7d1c5e14cb1097d719a0104a74823e85b8713dc8e8f59718cd1eaa1d7ddd76a3",
- "walletKey": "0x65c45844f94e42765a8f63abf2e7d3603ccf88ca1eb82d63cbda45fb7ea14993",
- "dbEncryptionKey": "91f2d1572be2b19ad6c4484a13eb6aa1591bcbbf30f5c89d5aa23a4a7b205c32",
- "installations": 2
- },
- {
- "accountAddress": "0xb27313caaa73422460f63c26c745bdb0578d3d7d",
- "inboxId": "ba01d2d02b62990d5e72cf09c43c8b953be70cf7948a6098ce42a43a1fef73de",
- "walletKey": "0x58a1f27d156795e828b1f81d5b752dc8cbf48957ce55bfd1448e875977e9665e",
- "dbEncryptionKey": "a91a83e78f5fa5a5f2eb0cafa62b8015d465d38f83a94edf46617406136f43c1",
- "installations": 2
- },
- {
- "accountAddress": "0xf1794d29aa9ca7124ebc47cc465be3d24770d74a",
- "inboxId": "ce5069482513854fe132284c5b505724c1333f48cfc957fd6425df90f0a134ce",
- "walletKey": "0xd4aea0903cee37ab3689948acc4a639fc04235e55c0d9c00b500f210c213188d",
- "dbEncryptionKey": "8525113473c1c7ea46aed6de5bfb089860ce7a5952274e9dc7d261e2f1f3fd54",
- "installations": 2
- },
- {
- "accountAddress": "0xb137fa9614d999bc441ef3075401232a7feb9d13",
- "inboxId": "54c24530d0bb9ca3e79c842a44d1b9aa3a73c9f2fadc65b2a91c225b900b84d9",
- "walletKey": "0xac5413c83e5ea7eb1d4b716abfccebbe17c545f1165f54aeb7b4e1df785574c3",
- "dbEncryptionKey": "0fdf503236e831bcf190b9e0f6af998345eedd38fa978ec776b4e834b1356967",
- "installations": 2
- },
- {
- "accountAddress": "0xa3a8036b959781f2f9fc7794fa29acd6f3900ad5",
- "inboxId": "b29c04979a9229c908cde6a093a387d4de60b1c3d882de64057f21337463faf6",
- "walletKey": "0x082c791104e05be3b391b4fcbee19b3b80845f68a2949d05556e7e9bbb8d18a3",
- "dbEncryptionKey": "92643a4c94cea919852676eed3169d46bf81160c3be6fd353a6c3096f1d53eaf",
- "installations": 2
- },
- {
- "accountAddress": "0xc963117cac65450eef1beb786bd88c860e80ae09",
- "inboxId": "b6683d0623fd9baeb0bc9977fccd7d10fba2b4d0db3ad0fa29a5d55a1b1219d8",
- "walletKey": "0x08f50430d9adbd7810f4d2795f01c83af8f348c5b1d151170968338e5d290726",
- "dbEncryptionKey": "e3fb9b760c9a1141f75a367eb050b68be0cb2cb6b619a13fdf2d3379b91fdadb",
- "installations": 2
- },
- {
- "accountAddress": "0x2bff36554429a47bf5a3c4d3990c9404b7fe0e8d",
- "inboxId": "ded290cede00913b4c54b6fd6e61e5695a9d4df7909ea820326b85f914edfe69",
- "walletKey": "0x653a90c6fbcd3635d2918fca214b9f1ea4390e53ecb08a7d8a224d0f14a881a6",
- "dbEncryptionKey": "ef8aa1343edcf9227ae3396f23d1acb663bea7fd7ee779d9da675badd6703e1c",
- "installations": 2
- },
- {
- "accountAddress": "0x50c7dd4c44f17975532e6e1863d0a5eb962d8d5d",
- "inboxId": "a6ff1829fa3c393775d30ceef4989242f3356e0435f89394b5b31ab0097747ff",
- "walletKey": "0xfaf4cab67cd459e75a014add2b1870bc331289437a00e1d60b913e89c19f2470",
- "dbEncryptionKey": "adaa411f488ae39a39a7c49d60042049b9926877589f47b74adc7e7252e7c323",
- "installations": 2
- },
- {
- "accountAddress": "0x61d1f08d13223021ed84ec2c986242317780a7ea",
- "inboxId": "b999eb7aff4541a284fa4de9b840dd26f7f6a3c4bf48d6e6c3cd172cfd4dae05",
- "walletKey": "0xc88f52d16e0040595affc3828a5abde1af087508aeca26afbbabc9393fa703d7",
- "dbEncryptionKey": "1ba42b87a17664979bc2b88d7f448a5cfe212bfb77e106ed1b434082ff4e93b2",
- "installations": 2
- },
- {
- "accountAddress": "0xc57daf4d1f679bce5424c66a29dc9985bd72ff57",
- "inboxId": "bed862c9f02278e44b1d037d88e987ca3eb1ba62f0567b3e352edc61185f9a6a",
- "walletKey": "0x1893a34a88b4f844e2cfb876705b812b477321b1c306d1ac30f4f5fe3f848686",
- "dbEncryptionKey": "a24f616f49e0ac28fe1a627acb01bcf225b4c2764c51c5f6431143c72c737a6f",
- "installations": 2
- },
- {
- "accountAddress": "0x0793ab7226df702a9ccfd9b39ee7e78725c30b6e",
- "inboxId": "433f1752580933f2d94561191141380744831990f0cb66d8d82e5c6ab303a936",
- "walletKey": "0x11b4abf58546b39255765bb5592f4832b60966ab7d746d24a3c4f3956e091e57",
- "dbEncryptionKey": "0726fd339d1892a53a059b4797fd87c1df06cc8acffa2fb4efbd713bf6bd4fa3",
- "installations": 2
- },
- {
- "accountAddress": "0x8848d0e3609d71e219d0f1818f2a9f3eabfdc426",
- "inboxId": "b5f0d123d5953f2eb4692bb61400984006d049e76179073993a7688fdd01de1d",
- "walletKey": "0x537360bcfcbb7ce0855b5d9841eaa7867294e2bf94462049d26a418aebc43038",
- "dbEncryptionKey": "38d85bb2dd152673f1d3f24e70bd5c4502f9f76e14b5f9fd3ec8065443b67da6",
- "installations": 2
- },
- {
- "accountAddress": "0x85f8152a21da42b6e68b56657976f85a99222b80",
- "inboxId": "b2a1efe986620c8f6c499e30dacae876d334a36a4b4e34ebc85101be2ae02ec7",
- "walletKey": "0x6e27fe1185edfc2444cd295c369ac584a9f1fcbc9f62674e8d9609472de79302",
- "dbEncryptionKey": "042ef7900a43e972d825723e3976eb87be8d4140d7509dc06b3268c6a0e41a4d",
- "installations": 2
- },
- {
- "accountAddress": "0x4e7d56c7d20d92046e431e7e2655a81b5cdc2a58",
- "inboxId": "7712d099ddc3cf162e11dbe95bf3254e1ac10eccc274256da8fd43617b99b6c4",
- "walletKey": "0xfe9fbea982d1b4432a25790bc5bc21be1c0cf64e7713bd0743fa4015a73ae0e7",
- "dbEncryptionKey": "5220ddef5aeb7c553aefc48063ecd0b5c6b2fba5dd44acf1920bc695e55906cf",
- "installations": 2
- },
- {
- "accountAddress": "0xd8a4cb3680cb506d66a5b71e18f4d620e16d3655",
- "inboxId": "3dcc62df14f049016780d05d056804d13da13ce80a7856edd5f73f6b64d8b31a",
- "walletKey": "0x332f84405a9bb147d5b20fc407be5f899dc7ec0f987ab59ae023b5e94b60040b",
- "dbEncryptionKey": "a9761ee8bc7532d8d669e5a5e15ae0ce4ae394f75db8b51dc3a251e2773254b2",
- "installations": 2
- },
- {
- "accountAddress": "0x38aa941da2340c59230cd2dc30a3b6bbade72c4d",
- "inboxId": "36d5b170a8f1f3f14789a82a6a2b481269b52d9361511b5ba4b068ef61a82970",
- "walletKey": "0xac2eb6015b2fad41421352cfd1772f6ce668a1548e1588098a9fc30fbd5c3079",
- "dbEncryptionKey": "2bcf511acc0406855ff9a20752f67834fafe1c766e0ccc2e93a598977ef85f79",
- "installations": 2
- },
- {
- "accountAddress": "0xfc8a506aa2db2557125a5e38608c08b03ceada51",
- "inboxId": "fc509dccf91eb3267ee7361d262ab4b2959ecc0666a99922bcb6d600d9801526",
- "walletKey": "0x434ed834cfc4034fac8e1724ee6d487ffac45800073435a2b5f4cf21893d65d4",
- "dbEncryptionKey": "c73fb843cd336fb657c0c630f3f4e4f48e5f235657dd79e02359ae434c7c2eed",
- "installations": 2
- },
- {
- "accountAddress": "0x5e75292c3fda4df0afda514236186aab30e01cd8",
- "inboxId": "bb12b484deba2fe03a306c576547c99c5a779a5dd0fa0956f2a75a76be863d03",
- "walletKey": "0x33f3dd64110d756f6ee7e45815505d8f1a444e9b1ec0754bd6cba3a434195513",
- "dbEncryptionKey": "0e9988a131d9895c121b03f306812aa4963ceaef83269190fb9f7087a2989f01",
- "installations": 2
- },
- {
- "accountAddress": "0x93b80c4dd32f96b90c63f531bc898f2135605a9f",
- "inboxId": "44ccc4dad11d7a14d9972fe8c30c6e0807ffff83cc2457161cf637e0000541b1",
- "walletKey": "0xf4ac539f771185c7450af47fee0c13ad705d8ad47a5b49e0aa020f0fc3dd3a4d",
- "dbEncryptionKey": "0a5e2a77d8b15ea6d96db0dd5ab97f10ab1f37c9b9e187d1052c030737970537",
- "installations": 2
- },
- {
- "accountAddress": "0xbce5bb18850eea8765d864404658639545cf7b04",
- "inboxId": "6dca05532f071a151240d26b66de149b5bbd711d1e6c5c7e409a9bc8aa6dab32",
- "walletKey": "0xe35775a7cae9d9d1278d23036d49f6bf22b541ecef34ccbcfbc7243764639053",
- "dbEncryptionKey": "808a8f96e81839d8ba17e4b89dbc95eaf2026c4d9fffd0f42f05055a1c6aa9d0",
- "installations": 2
- },
- {
- "accountAddress": "0x16c938cb5d95509a74c795bc93c90bd65610d20a",
- "inboxId": "361fbcb8a105a1f16056a7d10d37def30b0e9ee09fedd3a664d5f9969838fc06",
- "walletKey": "0xea897ffdf96b697743fb50765693f81ffb97cf397e8918a1aef2e40c3c653422",
- "dbEncryptionKey": "c714cec98e8a004a0bbf3d8d771e57989816663ae51949d82a1fccc17a3aa20a",
- "installations": 2
- },
- {
- "accountAddress": "0xeebcc9af6610cbcf5696a47fd163e0161fe35999",
- "inboxId": "e3ed796a657a623757208e26f56d4eb9cd7f972ee6053336fc7d08e208a82004",
- "walletKey": "0x99b0f1924d91e1ccba653cf983b1c2dc44ad9f8a3cd4aa681088afaef24c65c9",
- "dbEncryptionKey": "cc8f08089263620c1224a41ab15cba8f823c7a4211f02bf0ffe6dd4667c96c53",
- "installations": 2
- },
- {
- "accountAddress": "0x7cc8ac688cfb4f4674ff5d342f63d8673544f00f",
- "inboxId": "5ff49f51e6a850f64375b24fcc0b7431579734e41a7925437c49ecc2655962bf",
- "walletKey": "0xced7a805ea105494de63138def25eb6f0eb61bce7224d126cedf46087ca81020",
- "dbEncryptionKey": "3c0a9c055429e18da70bca9358a7a16323776c641b076ffc12a7c4a1b6ff4360",
- "installations": 2
- },
- {
- "accountAddress": "0xab04f8d2d29f4e0967220f34dd8238d2dee5888e",
- "inboxId": "ed4a91354611accaa9bec1123f1aeb33006112ff195ac672ac2c1355f2623160",
- "walletKey": "0x462f9d6767fce562bcc0f0c8ce0f3473edc4d6c8ee2142b7d39514edd77128be",
- "dbEncryptionKey": "5fb13b3eba6281d2501218d606af7eaac682372d50ac0d4e0e0736411d0cd057",
- "installations": 2
- },
- {
- "accountAddress": "0xc40093d48792f7896eecc12aee88e6814e7b5cdb",
- "inboxId": "219cc2997c05c9901389983de16a1fc2924d9980273eb44798a23888747e0876",
- "walletKey": "0x220a847a508f9385030b3e90beaaf68131f0848d199120222c28aef41c667e44",
- "dbEncryptionKey": "1a13fa134b9f70b606f9d67b6ac0a4eb9f15a7e6c732748b0f7ac290d8686cbb",
- "installations": 2
- },
- {
- "accountAddress": "0x584ccbcb87dee0b8e6f91da1776cb507862bafd4",
- "inboxId": "4333e53e365299ea94610c45e0a127aa57ebcb572c72044234a687f049d5e9ef",
- "walletKey": "0xc9b46b01f710712125e083b28021381e5cd9f2c5b7fe092d776283d308747419",
- "dbEncryptionKey": "9d180c5b3903fc372b9586413f358a8d636595f2e277f4c37730789e4a0c7ac6",
- "installations": 2
- },
- {
- "accountAddress": "0xbce44024fc1d4b861e94cf2596eb5ea80ed0d860",
- "inboxId": "c40feb480190239c11baeadc189004356037845d5ecd839031c4af73cff29b1c",
- "walletKey": "0xd4a3330482a030fc37701c34e8d3415b22610e8e3c433eb6eef385f6942fc984",
- "dbEncryptionKey": "b41c513630a67e8cfc680c5caeb53fe5b480030b5e282ad1c1e097c75fe141ba",
- "installations": 2
- },
- {
- "accountAddress": "0x701e7d9c7e9fc44d19b76b820f270bacb39662d0",
- "inboxId": "17e6fc9245a522344fa62925e3d892c11005ba5a816c277473340ad3d473535f",
- "walletKey": "0x9c3a8493ce2e8564ccd1563f03b861d27157e46c02845e7ec791f307c3a5a221",
- "dbEncryptionKey": "5d5fbd34111a8ca53a51f4f17e4778694069ca85bf92eb5e48f6762ed2f61afe",
- "installations": 2
- },
- {
- "accountAddress": "0x6fc16eeffdabe71922317235dea2d83f6cfbd17a",
- "inboxId": "15c953543e6296fbc934e0f51db7c0b92832e10b849c52b4bd396d0a2ce71f0f",
- "walletKey": "0x2ca593ec9a802a0a27b93bbcf39105fdd9af02c502655beb2056de189c228436",
- "dbEncryptionKey": "4c3b2e0f40ceddeec10c2ea312fdc4f11625cdedda5e18d220aecc27e918da47",
- "installations": 2
- },
- {
- "accountAddress": "0x0e42204d9faa6d2fede1764ddac8c4dbad92c3fb",
- "inboxId": "69c5a2ed40c8b52a0e800e5fc21c194c2913e846eac415b8a7f6e178f9f9efab",
- "walletKey": "0x68b771dadfa446b0d56817e630a9809722bd955e38355e80050417ad56751181",
- "dbEncryptionKey": "09a23f59aeb0aec3bae8083b808fe0b1db21e4c834e49d16af7a3636972a5403",
- "installations": 2
- },
- {
- "accountAddress": "0x804b9aa2caef18f3f719a91ec5f8f17ea6a24171",
- "inboxId": "c818e1efc314cdd18f32bb61ff7356bdc65d5ba7460f9118d8dea08daa55e0a1",
- "walletKey": "0xcce49f946453aba36ca973bf78510c62656549c9571bb70afc9b99fb46ef6bbb",
- "dbEncryptionKey": "6bd9bb826146cd1b4ab0320f330b173570837195b11c186e7505e8f8bc555008",
- "installations": 2
- },
- {
- "accountAddress": "0x67baee5085a0d79ea6fb8ec6b2a232a48b2274d0",
- "inboxId": "391acd936c7cfb2e76da4b9e52294b86fb33af4639f16955802a2e500a4edd63",
- "walletKey": "0x8443087896aeb010e9b7a40ceb5b9774274d4e6eccd1b8f6367df3029f4143dc",
- "dbEncryptionKey": "f82921a3a1d9cb8f799c4eae0a0f4b024da3b3446f607487915e2307d4f60728",
- "installations": 2
- },
- {
- "accountAddress": "0x603c647329a404fa99642636ed5b8f0389e5a230",
- "inboxId": "e928468fc969c1b52a1f785d4f5a500ed308cb3fd4e2681edd8c4733a2dbb70b",
- "walletKey": "0xa2256267eaec50fcf7fc6e4422bd4072fad3268f09e9833c677198e7ddc002a6",
- "dbEncryptionKey": "8868bfe645e0da9f7356718ca74b4d0dc034600fd4638d2ce5a18e4f63d0c243",
- "installations": 2
- },
- {
- "accountAddress": "0x8eb5e58e62e336694cc0450b23641158b84ef4ee",
- "inboxId": "d766e53f79211febc1a39bc6eaaefce7d863f29ef241534da4bbf0fadd10236b",
- "walletKey": "0xf1fa8989056b55770741aec148402dcaca9df433ac640379972d7ffdb5fdaf4f",
- "dbEncryptionKey": "37606a5cf2860f68bb4ebce0b14633aa10251f05573e5c1897b771c099ccae41",
- "installations": 2
- },
- {
- "accountAddress": "0x80663269b2664cb6aa58d5d685d9a60c907d0ccb",
- "inboxId": "2a0e564e0409719eebfc27fc54bf7706b70bc911227f6a433d42b9f639b7f7c6",
- "walletKey": "0xb87190c2984bfb5eb70998b26df14517d75d017404e0334e79ea73ce93b9fe05",
- "dbEncryptionKey": "f9b005c5a1e4e338f967bf713083d27a192d236f47b87b5487c84e181f7396af",
- "installations": 2
- },
- {
- "accountAddress": "0x91a3059a8d7c913b88f72b050885e50106c44847",
- "inboxId": "544bad4facc7b53d76285d9602abcd455e1f9c93c4662a0adb76ba71b126a385",
- "walletKey": "0xadd25a4a01ef63f577ab33302f6a6f7005b697fdceaba09bd55452db19bf4cb5",
- "dbEncryptionKey": "75cf063f86c0d383ef11f83bb285ceec2cac0f6754fab66c2cf66ff21c3bfd13",
- "installations": 2
- },
- {
- "accountAddress": "0x98d7e20610c395dcdf69792f00f94ed61337a2f5",
- "inboxId": "9231e71fc97873c7a5993fdbdac413a5c23e2d7d8d24b1d4e14bd340aab87938",
- "walletKey": "0xbb09f81db8fe72decb98c3f96835a7454a2ef1b848734dceb69754f4e443b161",
- "dbEncryptionKey": "a83f79f248beff53189a7e38722074104d770f133495d6dbd348b31fb2f5a417",
- "installations": 2
- },
- {
- "accountAddress": "0x5a65d353b5041f41e009c0e4844d6d9270d38ab9",
- "inboxId": "9ad0d40cbe617b09fc80c93725e8a91c7671d8e56c5ac0fd660c01f6187346be",
- "walletKey": "0x7d93d48cb3454a91b12150bed1464b9a8ded7c026ee416c75f991e0375b721b6",
- "dbEncryptionKey": "ab34533326383b96e5e88ab1904b15fee4972cb56c1d3418b8ccf6a909e333e6",
- "installations": 2
- },
- {
- "accountAddress": "0xc75f3d5f6e99c89ce938288bc35716be5a95a10f",
- "inboxId": "9251a04a3b59960ecc6ad1ab90be5a0faf5310d007c801ea330ab7e4183d0f32",
- "walletKey": "0x511bccd935e4b3cf441f12fa2c903a78a1b6c37e2aff13dcbe457b89fa8bb7b2",
- "dbEncryptionKey": "f78a8f0999e34a6ff2117d97041b4997069cd0fe7577634432a5efd65f602a98",
- "installations": 2
- },
- {
- "accountAddress": "0x71b21608de5d08be0732fec513df6f7b5d7b9490",
- "inboxId": "f0b56dc19a5efe11c57a3ff4e41d59c9469e49f8c70f4baeba0b82f2d53e0a3c",
- "walletKey": "0xa31f19441ff3edd2babe04fa46ee4522d6b6e0f6b7388824c2d6736e796f2b60",
- "dbEncryptionKey": "8cf4fd3f6102c6efaa9f95ab61836e7b92093c488bb0110acab9ade098d580d8",
- "installations": 2
- },
- {
- "accountAddress": "0xa3b12222768f8aa34a0143f06d4250eaf5f000da",
- "inboxId": "b3f2151da1cb45efb14523692c474873a4da294ee5690e80f6d3bbd97b99773b",
- "walletKey": "0x234c6a93edb9304c5df7df2e941176db17b3bfb320928c3586d575cbf1715684",
- "dbEncryptionKey": "87f503bd1ae58e11f9ab04f4dbf5f994590a3b5ead201f43207c548354a983d9",
- "installations": 2
- },
- {
- "accountAddress": "0x4a04d82f5745dddd6e3aba09ec826095433241a9",
- "inboxId": "dbd52462e608b72c6a266bdef56583c2d38ec7facdf6685f3149f592f7f527e4",
- "walletKey": "0xa0a84a83c184a893bab6772f467b3546632305fa9c2eeeb0fceb3324c9b59da9",
- "dbEncryptionKey": "13f6a0a40ae04d39025e6a32e6154b0145242602fdeed6d8e9eaa673c7da202b",
- "installations": 2
- },
- {
- "accountAddress": "0xac0002424a665bb1c5141c46b3af7f20b72a3c23",
- "inboxId": "510a2c21b9097b87b363deb7a0b709fe7ba2af69a4f29eafcad14ff2a3a169b3",
- "walletKey": "0x18dc2f89787e3fb743cec661adb4fd54a41e9f050aecc5d51990aed4ea3b9f42",
- "dbEncryptionKey": "050915e57ebb5ed5df48d91891a88d0a09d03f82471a550d48eae73d32db8153",
- "installations": 2
- },
- {
- "accountAddress": "0xc2e9d135f889d38dde385faeb33160be204acfae",
- "inboxId": "cceb187a9a4235c1e8b718ec772391d5976c979ce27d338af5b0015b87b58de2",
- "walletKey": "0x8d4854650f1faef3dfc14ac287885d344b02bc16872cf5a76bdcc5fbff07d704",
- "dbEncryptionKey": "5635986996f278490f67b62a47e5c9f01f25ef515054de740eda4ad6401baf03",
- "installations": 2
- },
- {
- "accountAddress": "0x5baa7c9c276eb06ce9caab78be60adbe096b493d",
- "inboxId": "7d8e76c7b1aa5fd161afd5f1402dad21c028bcf6ffb6d5b62055a144739724e5",
- "walletKey": "0xa692bad678f6bdffb3f838cf1de8369d19027c05883c68b62a44ace1e59bc10a",
- "dbEncryptionKey": "2b6e6c301fa48041f3998e585f4462986b326847bde1413f4d8be22dc3400540",
- "installations": 2
- },
- {
- "accountAddress": "0x590a3d379e956d753026c3a8f90179b6e6f8f460",
- "inboxId": "61b920879de14bfc725624608a4df594a33217fc12a5d2e8c691e0ab0639fb7b",
- "walletKey": "0x48cafa0cb1f1e3c5c4e8d095c7752c86866fbe1c5544de4b0bcb5df9bf69751c",
- "dbEncryptionKey": "f7f91d4b13ca1fd7580a2b02479de9e0251e942ab641ce6bdee418474356b8a8",
- "installations": 2
- },
- {
- "accountAddress": "0x4b6a74d300be66bd4a0e0301cb18fe3a8ac0b4d8",
- "inboxId": "c36aae5b54daac912065cb6aa56c46996e2d7e38fde30f8855430768dfeebac6",
- "walletKey": "0x6b6b0d51368b4029f5f8eb109fb72f1f3f4a22bfa45717929256625aea95fe1a",
- "dbEncryptionKey": "21d4e891780369fe9488fa27f19dd7a9cec423d11e4ef01f174eeefb87012fd8",
- "installations": 2
- },
- {
- "accountAddress": "0x6c116680f805b24068106b8dbb56e73f8c23e8c0",
- "inboxId": "01f380ffc5e6c29a60456007f4b72bef84563c7d40a3d2d0ce37f13496464f60",
- "walletKey": "0x55ee2c1d07b48f3d61547182ab58f3754190cffb2ae0c8acc99b30a98d08693f",
- "dbEncryptionKey": "65346b6caf92bdad7bbc0693611840e2360bea2d1ac134fdf138c7c495c312fa",
- "installations": 2
- },
- {
- "accountAddress": "0xac0fa6319d01e9371972950774df927da4358063",
- "inboxId": "d49192e50b5422cf55788d97a68b1f55310ceb8757938ec5182226b66cabccf4",
- "walletKey": "0xd7c35f9a325b84aa67080897fd370828693317d84c31cafaeb8b2a7139780498",
- "dbEncryptionKey": "a39c87faabec2bcfacd11def32e908886f8c077aa558d06967c5984db9a5416e",
- "installations": 2
- },
- {
- "accountAddress": "0xc035d7ebda6abcf614a2bf5398bc54066240cf3d",
- "inboxId": "57b4fe0287a289ed888c83b5544f1fda48d60a18f3e983720e716034ca744ab4",
- "walletKey": "0x2b682449d59b755e7a27db1ea40d4dca8752a0b3345579e05ff6f937fb4d1589",
- "dbEncryptionKey": "7b11c48751c5658a9bb07c5937da357f82effbd904c079b0a0e468951512efca",
- "installations": 2
- },
- {
- "accountAddress": "0x082e1820e5d47aa9fdd2b4cdd897ae0643975d82",
- "inboxId": "ecd0d6ba8b09d1c18c934ef60cc62746e348384710c91a08ec5b56cf302b6353",
- "walletKey": "0x12731428175159913743d1ad9fc6a4c432e0550b3da1c149738381a88bd5bf3b",
- "dbEncryptionKey": "52a0569b277f4c9c44ed5c00b72b0388802e913483205fc525f931851651913d",
- "installations": 2
- },
- {
- "accountAddress": "0xd333409e6a066a2c816d40e13a7466af676d4e8e",
- "inboxId": "29479beee76278d993168e44cd6af6295b7fb53df9a7d66e29c01a6f2b99f5f7",
- "walletKey": "0x0652e01c30e4dfa4f402ba410c1fdbd9852e463f1097a042fc8fb5633754772d",
- "dbEncryptionKey": "5810eb071852e14760c569046d3bb0d0b46231fd1b9725b65eed0a81a60a1d76",
- "installations": 2
- },
- {
- "accountAddress": "0x1f7980214b7d4f38113175b808b44b633e13e850",
- "inboxId": "969c1bb29963d06913e91f739b9db1dcf6457893b81e96973a64090c41cf5d61",
- "walletKey": "0x9a390a3f12c951266437cc87438a7df12efd8b23509f540f2de5904d31eb874b",
- "dbEncryptionKey": "39e7a68542b7d2c544b309f7660bdc4a95b54f838fbd01e308ae53b413e375c8",
- "installations": 2
- },
- {
- "accountAddress": "0x102853c3d2962cf3fb28cbe232fc0b1e635ec428",
- "inboxId": "bab776f7a1e107fbfc46aa4fabb9434038a95a7e69569c4484bfc76926f555a8",
- "walletKey": "0x6d38362ce632cf3e9d690f748ad4419eab51867af13366859e4ac4da88984d8f",
- "dbEncryptionKey": "dfb9b68ade52eebe7194fef0d838aae5256e0c9fa7fbed2b8fa2d24926eeea5a",
- "installations": 2
- },
- {
- "accountAddress": "0xd162e0d02482b65cbfc82ddcdcb6a668707d5663",
- "inboxId": "205a71d8c11034b9f5522fbb5139ad0912e59b1dc8d7274bd2d5f44e8821cffc",
- "walletKey": "0x22c9ab66a5e122b885abd3316ef6fcc3897b50bd2035e226a3d772e56d2783ab",
- "dbEncryptionKey": "6e589cf3846fab3b62b40debf61755e1b7005d3b529491b0032a64a1ef077da6",
- "installations": 2
- },
- {
- "accountAddress": "0x54747d9ccc06af16cb621ecc3dea006630912d4e",
- "inboxId": "1810467134692954fbea7bc982d44a487607de469f83550e46cdfa246b5b86d0",
- "walletKey": "0x66a6c034a801438bfce6fb547d38126ac0152150b128facfe7b93a895067cd51",
- "dbEncryptionKey": "d34791434cccd2d3df9aa0f33a1b2abf23693ae9cc8a550473c20223f40d9254",
- "installations": 2
- },
- {
- "accountAddress": "0xd57660e3c7723ed84f12c7574c291a56a93fd454",
- "inboxId": "25eb1e486263e12c9ab44ad73a361a48371db9f280fcaee7d1d72790cf856f3a",
- "walletKey": "0x77ba88bd0c7871f78d7b62892ec76dd77f747b01142f793619b078376de0c60d",
- "dbEncryptionKey": "11e95502322ea433153a47729fc4f986c42d962674a7940a5f1b465f014f079e",
- "installations": 2
- },
- {
- "accountAddress": "0x32f78dd63d05fba533b5c97dbe885700b9a4a016",
- "inboxId": "3d7f313286a7cfe2e906db16a183b7ab08462545e52d788fc9ddc9aaa7f03408",
- "walletKey": "0x4289cd38a16f6bdb471362f7dffbff8da296b41dd40ab2fa74317733e33e89b2",
- "dbEncryptionKey": "863c2aaba98934f9bb8bbd172d85a3c0043da0fff8f725feb698110a9bb56e24",
- "installations": 2
- },
- {
- "accountAddress": "0x3f83923f3637cdbeb216102f6ab2397555ab9b55",
- "inboxId": "a36a24d34f075cd8cc2447bdfbcb6094b8dfd178391864b5f9ac9880b01d2788",
- "walletKey": "0x0656d8264e58bffdb97b1b8d6ab34982620dd8a235b27a7ff99d24bd0f077089",
- "dbEncryptionKey": "76e9ff4114497345f39e56ad824435c1a2b53a828c6220dec651232f295bd7ce",
- "installations": 2
- },
- {
- "accountAddress": "0x0c34bfa85f7e817a79cdbeff63f677394abeb0e3",
- "inboxId": "45132cd136c1a90c93af514da48c076bf51eacc3eb22a5456d867d6347d3b37f",
- "walletKey": "0x82a620c208148d7b6466206703b8c1b61bbe8b9457f6302ada5953735fa4eb5d",
- "dbEncryptionKey": "3be9af77623dd2542ec7fb853f7c299c5e5cbd73f04cfe12de8d5039211d7adb",
- "installations": 2
- },
- {
- "accountAddress": "0x6abaeeded6400e263d5690c724f9251021fcdc8c",
- "inboxId": "e14ee0bbfa785ed48c072a80934aa2b17acb84e3153199f6b65c10e745adb27a",
- "walletKey": "0x107f3ef90ce68b739cb964d106275ab2635a2fd4a486d22ab03b4bb0bfb48382",
- "dbEncryptionKey": "6a3921031deb47427cf58a17f188081aae4cff0b54028244dc86867a8adb3292",
- "installations": 2
- },
- {
- "accountAddress": "0xa01c0c09297ac2979403db5c7373f9f9ee849341",
- "inboxId": "73736d0287dc114bc1930426d9cb76b83a6586af94bf3114da31d83b4745aedb",
- "walletKey": "0xb69aeba60e9cd7fdb87b171f63177908b7121b7dcbe78949cf2a15d01ce5fe9c",
- "dbEncryptionKey": "1d9687fc30558752490413adab52abde9c1a9bdb21a2e1302eba8ed82d9546b3",
- "installations": 2
- },
- {
- "accountAddress": "0xd37ea10200eb8829cf000407c08208c88c61a4f9",
- "inboxId": "4838b32c77faa259b743d5a9e5afd249fd1c2b0e2a3a87e307394472ebf4365d",
- "walletKey": "0xc5fbbe495312c0fd0434d3f9244e035231a82383ae43d34d757be9f8f54346d5",
- "dbEncryptionKey": "e54e857c5ff893210393f23c904cd25cb3cc2651b51eb546eb0f2afea65e0c1b",
- "installations": 2
- },
- {
- "accountAddress": "0xf61a1253c1ee54e12a79af005d4b5aa10a9e2087",
- "inboxId": "d48949eb956c25562e42193d72cf2093ec623c985d468458e89369cb952864b9",
- "walletKey": "0x4723c72ceaff4b0d2a98e5f2fe207deb30032b997ca7644506cfa9260ddf0ad3",
- "dbEncryptionKey": "473ad29ac845f2d0419b18ac4a91a82204666cbf116c862e969396ff2a8e1802",
- "installations": 2
- },
- {
- "accountAddress": "0x6d92b1033b4a0bc96c68c9c53ce6900eb22debe4",
- "inboxId": "0c67d59a032d656bcd106ab0e2221e4f989b5e49b4c6e5b127079348f4720c94",
- "walletKey": "0x2dab80ca2329c063d31a0224e88ea4f79535353e4eda0f3b73c1b72081d6a5b6",
- "dbEncryptionKey": "6b4cf7ee34cf750cc69ff8304c866bb5b8490723ad2238db390b3f35165b6bbf",
- "installations": 2
- },
- {
- "accountAddress": "0xf30fb93a73694e81b5c45183aa51820392a03f8c",
- "inboxId": "acea310937b071e9ce374c486369f149b245b84fedab706effc89502d94f1e82",
- "walletKey": "0x311f7a64b6c9682b9302e5e0cfdf8de77f217f71adf7063dd26ee519cdaf1cf9",
- "dbEncryptionKey": "3e4a2bac0d12f741bb4e365f47254aea0c3529e2bbd8428de5ee20dd39309742",
- "installations": 2
- },
- {
- "accountAddress": "0x0bd01e777edc60292f0f3d4efa07ae1b1bfe4687",
- "inboxId": "b34052abcb87a00f716e3e08d54f433291e5e0cf008b6923f2213eaabd862484",
- "walletKey": "0xf97f6cbcf3da6360f36781da004339d3404f1c8e65fe1b2cce66bc479792bb46",
- "dbEncryptionKey": "4d65393efdf84761dba3419b7a6cd35c4acd8bc21e417da71b21a4aa1f75c33c",
- "installations": 2
- },
- {
- "accountAddress": "0x7b08153338996ffa0238491edf7ad1037bc03328",
- "inboxId": "311ba8e0c1a63f25eea85503da4c77eb4b1a3e77b71e4ffc34c630ee77bbde94",
- "walletKey": "0x424f65a5288d8b74f252fe8390f401c1306b3d581f0fecbec0128e4eab9bf06f",
- "dbEncryptionKey": "ebd2c16a50f9e6d31def3ee68310c019ce22d26063d79f2433cdfe436b8c0d0a",
- "installations": 2
- },
- {
- "accountAddress": "0x92c7e791a7a6d44efbc570c76ec273eb7126a959",
- "inboxId": "81ccbae8ebb9de93be94672a608d99d9ced8514f14f0cd6efb0cf16f1e62bf5d",
- "walletKey": "0x3aa59516a30ca1f38351b60cc26c40af31e0e168843bb866c9e298e9834be344",
- "dbEncryptionKey": "8b095132363025a97eed71603ac15f3eed6d136ad5385b6a97792d0d92e5b9a8",
- "installations": 2
- },
- {
- "accountAddress": "0x63341bfd122748f1888263a6474fb7ba41858404",
- "inboxId": "c5de3b19998f2fb544cb95a66c9c465d94f9f06235e0e37416b40c332167d2f5",
- "walletKey": "0xb603e7c0563f5e0ac86bd9dc2853611c8413b6af109302d68c0387ecd5ce5dc5",
- "dbEncryptionKey": "72f9f91d06eb26f5cc2cc7aaeb7e463b313cc8c9b56bbe9f9a2364d023ca10b6",
- "installations": 2
- },
- {
- "accountAddress": "0xc5c1bcdd4e0657be06a42a8f144427ce905a2d0f",
- "inboxId": "bc17854b43972742a7c854bf62313a268340e8bd7bf8acdbf492f52f7dd5fe08",
- "walletKey": "0x8bbce9afc19caba03b377a346abcb4fd4b920fa6e84e8e40751028ff01981931",
- "dbEncryptionKey": "3ca64168db505bcc5157403f96fd43c95a0a298e20a2b47f8b866b95ce5f0d25",
- "installations": 2
- },
- {
- "accountAddress": "0x3d13b6a4fdc48cc7ab485afbac89f5c94bae6cec",
- "inboxId": "5872b06bb84e9660bc0a604323534997cddad15057ec67be5595ce3f0a00d7c3",
- "walletKey": "0x2c6bff803939b4a1c1b18aedba3a5036af5a92823849aae701a092f241c6ef8a",
- "dbEncryptionKey": "d5d4c240a0da08e4268368ebf096a3c64fb74a6750db936b228f330a88a80002",
- "installations": 2
- },
- {
- "accountAddress": "0x0b1965995c344fb179eaf7e1f53787d8c1bf3267",
- "inboxId": "2c884a799bf405c970e8bedab8b18347793eb3de58bb1c2d601411fbda86153d",
- "walletKey": "0x1b7b60fe26ded33a83df685e06ad4c112e0f25da512878152371575b3610b6e4",
- "dbEncryptionKey": "d2c93be53db49586e9c06dc98316d040222bcb51ee3b589840b640d7c2e9c268",
- "installations": 2
- },
- {
- "accountAddress": "0xef8d10a18e08117512ec5452fd0d1d8000591d43",
- "inboxId": "d278806a777aef99535ae86f4df9b645d4d0c07b5d08f60aa2ae3116cf3a7eb2",
- "walletKey": "0xde8a08c76ddd42351691904a29c45d8dffe22aa3ab87b778a538d212e05dd9ed",
- "dbEncryptionKey": "e76a83a6690ad9cbdc5be6b057bb678abcd7b93ebec39f12a67f2c7e085305a0",
- "installations": 2
- },
- {
- "accountAddress": "0xb42db85a46a0ae25d24f50f6f427b9d8774f0105",
- "inboxId": "991c4937d2fc4396431c328278c26b5c64c9246576ae90075a82c5c9329f3a77",
- "walletKey": "0xc887a02cc147f7a9c670cd09a65462208bef0d8d323f656e7895e59da48be0c8",
- "dbEncryptionKey": "c0a0e9dea1fbad45d30934a8d89bf8f3638ad1aae19f31fde5513180a8f0d080",
- "installations": 2
- },
- {
- "accountAddress": "0xeebf1e8d856134d4d03921736b8c8aed132becf1",
- "inboxId": "dfcbb12934032ea57f42383be767f41d8200e36e076b6c411fa073aa77bd3934",
- "walletKey": "0xa0eb3eb1e9254b70cefc192f43d4113712945760cde2eafc6d8231d5621cc56b",
- "dbEncryptionKey": "5756eca173e8ca40e770d7ea9b850ff5a01535918a6d742dbd3ad76c9f59a569",
- "installations": 2
- },
- {
- "accountAddress": "0x60229eafdb7216dc43722fd00d4fc2323389ec7a",
- "inboxId": "14316385087573c35ef809a16bdfba0b70163f26f2abee7b0855810644500d35",
- "walletKey": "0x82ae427f10a393670a3360930aac76215a435c6a82c33efe2f48c788e5e68cf2",
- "dbEncryptionKey": "d1f4247db006da49a69ec359f15fdb8a673e2fe691a15a200c2c56f19b17d021",
- "installations": 2
- },
- {
- "accountAddress": "0x4c42f71a0fb1401061d0790b14e384f5e08f8d09",
- "inboxId": "062b653890b6ff052bed8fc7d69b9cacfbca9eebbe8f4f6631bc95a30661975c",
- "walletKey": "0x5fd917a703d0824d586171c7e5250ce07813afb129a588be10393ed5b4a75561",
- "dbEncryptionKey": "09d7db38ee003e1c147fc2322c1da90926bc5cbd5f11962c90ee548c70697cd3",
- "installations": 2
- },
- {
- "accountAddress": "0x417be8a96215369782406a2e2ad002bec6e6b30a",
- "inboxId": "11e3c792a4b444b43650827de954a0e6615a65edda1492e2e306530bb13fac96",
- "walletKey": "0xf655f891761dd61e462c87932ed68522ddcca1d83b9c313c924b0666138ffbf1",
- "dbEncryptionKey": "5930871e4cfacba536a55e3ab35bea18c9e66bd843e29c0ec8e88ee4a5943008",
- "installations": 2
- },
- {
- "accountAddress": "0x8cad58ad8ac345d7e79ab30c1d712d8544237694",
- "inboxId": "c0d87f03676ad9f91fd4c1a4162fd8c2cfa3c060314fa6bd18f1528257bd6f67",
- "walletKey": "0xc84987fb2099fd5def5f89c466e1922f50e4710c9badc884b9916679a511848c",
- "dbEncryptionKey": "425f09c5e9dfeb051ce84a660b700ea572c4892e838c2f4ba0b32d8042544b97",
- "installations": 2
- },
- {
- "accountAddress": "0x5cfc6db989ea4437693cf07b681a74b501071331",
- "inboxId": "028c38ee2692b8df0d2a19ac38fa1535135d7ca13c90705bafb8d8706f2f9669",
- "walletKey": "0x820e75e6c23eb1e48ed23e7abf056b3e8d2bf16b75736346d7faa25b5b76327f",
- "dbEncryptionKey": "76eb68d8c3fd46bc1b268c8a447fc6be465c1639641b0b5de1f8255ae99544b3",
- "installations": 2
- },
- {
- "accountAddress": "0x11f2b2a10be81e4f5776dfd7f7a5bb0d9cda5f76",
- "inboxId": "1df3fa45a3a12ba5950bb859352c121be3227eefaaacaf4cd8d228f4691a2f4c",
- "walletKey": "0xdf8956f02a2630675d67859bb39d72f69e51c9f516f8134b8e79d3332cbd6ee4",
- "dbEncryptionKey": "0cff472bf6c9734acca0ca9fd12be746e0bfca7c078438933851bcc1337c2df2",
- "installations": 2
- },
- {
- "accountAddress": "0x24db48ac1499ac8c4c12dac764bbd05c80ac4aec",
- "inboxId": "14107fc9da4a865c4113d4cda8cfd27ca96b2c897ecd5b97b55ea3288066e5bf",
- "walletKey": "0xec498a163b0f913ac30449b0467179a1ed17582136e196568ffea3e763a6d6d0",
- "dbEncryptionKey": "01726edd0c504e4b0d8601f1f6ae74343adefed7ff2a0a4f749585630ec3f036",
- "installations": 2
- },
- {
- "accountAddress": "0x3b5e59210e100448aed68ad813ab779b2d2bfc60",
- "inboxId": "9958ada11f49ae7ea3820353779740b620807e84447be69cad195ccf48f8635a",
- "walletKey": "0x1e27c8ecb3e6cc6c225e0ca54f73f9defb12d9a448025f9f92c70de02e3bf752",
- "dbEncryptionKey": "3d763ec323f89610e527b088af8c6e4d21e5b7b042dd65b55c926e449e041bb5",
- "installations": 2
- },
- {
- "accountAddress": "0xffaf5fdcfe01283d2cb166272b5ec784196a9898",
- "inboxId": "9d1bb3be3305c60b33825f790d699f1d39ce88b498dd587b9dee87ace44a6dc7",
- "walletKey": "0x7d47982651072796632b4dd61cc2b22c1e85905957b718d8db99b244c4f40b69",
- "dbEncryptionKey": "0c473f16428d079e2b1e95e42f96a90b5bfbda0c5a19556c173baa6ae0f9d34d",
- "installations": 2
- },
- {
- "accountAddress": "0x4cf06297308da7180a4a7db4de45c62050b6e8b2",
- "inboxId": "22e29942a351fc6ae89311c3584d2b878edbb7d0f8f9a6345a6a12a372a08054",
- "walletKey": "0x8942cce9176ba7c28aff72f39fc9b646b83482ef9a38a519e77757858a217f54",
- "dbEncryptionKey": "6903959caa4313ce42c5a887f6ffb390892afa91ebe0ed4af9d907b0a50e6fe1",
- "installations": 2
- },
- {
- "accountAddress": "0x42a5a5b2b0b65cd644c8a9b9232235aebcdaa847",
- "inboxId": "7e6240a67adf8f69cfbc0fbc30148b954fcf9f9423c3feadb5f39cca595b371d",
- "walletKey": "0xd494e076c28b5afce2f9d827fc7a26fda6caac01e95fcdc46a71a5c91100992b",
- "dbEncryptionKey": "8ed05b69a130020381b5b074c1482d6400f75755819be54ed4807d30080dcd6d",
- "installations": 2
- },
- {
- "accountAddress": "0x0f1b8d81a28f99a442cb9f4b280ad26b5ee72814",
- "inboxId": "be73f8e3f881ef9db5f2ad0cd46f464ab1ef55e4d6a9d1f2827a403bfa2eca6e",
- "walletKey": "0xbe013a49e6bf44db6b8d1612c3341d22c9c03c6ec5ed80255bf22a98135b7948",
- "dbEncryptionKey": "932c7296ff4a36c5fb9c339c299328905456cdbf6a46df0ad1552d36f0a03741",
- "installations": 2
- },
- {
- "accountAddress": "0x9d4ce81533ef874a76eeaa5b9e42c7c876a3df88",
- "inboxId": "9761098684a1d626009070765e129df7537ec247e9933460cbb3015df9db98c3",
- "walletKey": "0xce4149554de096456d40e0c7d3f63022d6d7722ba6e139c932bf9f63e365714a",
- "dbEncryptionKey": "029d021c4d1e0940a24267ba1472b51f24690c46c61924a65defe00bdba3c031",
- "installations": 2
- },
- {
- "accountAddress": "0x9bc6f2c7eba78d9dc01f5dd1798a5713aabdc0ce",
- "inboxId": "9e0ad51a425206feab3734d696cb626116a42dee07b06fe6c435825766a5c062",
- "walletKey": "0x6ccd85c5ef2aee474273dfff718faf1c5c9d17be535346c47fe847157f175a0b",
- "dbEncryptionKey": "fda883e8092d30cf414a76e874391fd0228dd7e26b8e9a7c48ba64f4d7fa9171",
- "installations": 2
- },
- {
- "accountAddress": "0xd9b98ee7dbef80c7a7432607e9ac818d737ff887",
- "inboxId": "3b1a75b8c149f7b7e20458f92af578a195ace27a76d77132c343d93055539a8d",
- "walletKey": "0x186402c64bd40a2ab93b820c00cb84d00bc52d9366b3f47f6f59c524861cb008",
- "dbEncryptionKey": "433e2dd15e48994f550a2297becf66a51355cfda662841b16855d3b40fe80d7d",
- "installations": 2
- },
- {
- "accountAddress": "0x1a70866545162a2cf6f680f5564a199e86532760",
- "inboxId": "3f42f83f3972ea2b988ac1f6efce83986f69dca5c347f6911dee7eb53fbf45f6",
- "walletKey": "0xfb2c4921f86f4b2641d4e8c3b866cd81d0c2011d2e171e115d279f000cbfec53",
- "dbEncryptionKey": "57c356b82c5ab4e0aa22f7bb41a5ca76c8c4ea95c8615d521fd7f7e494b2aaf5",
- "installations": 2
- },
- {
- "accountAddress": "0x4141fbcd33fb030dec49ee9c51f2e2166409dcf8",
- "inboxId": "6599ad9c1703602b62e389211e4e5e78e8d283d475c2330a9a4a9acaa979aa4f",
- "walletKey": "0x981b29082d8b20e1436523b30dbafd19d36b5a9810e23101adc636475ab0c8b6",
- "dbEncryptionKey": "da31eb67a334558e38d9b8b3d3a3700d8cb4d0a36a0c8a85033e7acc9053a40b",
- "installations": 2
- },
- {
- "accountAddress": "0x9c32dffb5632c8aa589a66b06796a281bad30b74",
- "inboxId": "92e785bda0d4aed1233af715ebe91e48719904fb445de6c31f448eda8ce43d27",
- "walletKey": "0x307c721b9a0369c9b367b039693f9773b5fa1e97a71853b4cd606d79d3839090",
- "dbEncryptionKey": "ac5ba7ba7ad9cc8386458090c4efd7d29bf8abee253100e4faa42e26dbe8bc67",
- "installations": 2
- },
- {
- "accountAddress": "0xe0bb43d91ecc5962f413e058268c9027d67f7229",
- "inboxId": "a8e0a4fbb8fe2a43a4889246c3ac4104b04ca68ac0892a59b65ecfd16878b0ac",
- "walletKey": "0x3839eec70be911ed36456b638150dad306ffaf10a6138c6c72abe113df45bc5b",
- "dbEncryptionKey": "72f83f4dd02f1ec8ca23239b8d87a17182a8ef14fed2ea45de8f6f15696a8e19",
- "installations": 2
- },
- {
- "accountAddress": "0xd35d83aa24f8bf5fb4a24c8bba36da4ef4ed5481",
- "inboxId": "190b9b8f0b2c83d298d68f821a772706681b605861401d1a59067ca3e491e2da",
- "walletKey": "0xaf52cf08c0ca3acb1874e5365809dbc0993d7130fa61207d1973ddd77db4a40d",
- "dbEncryptionKey": "bc174c08dac091a15d600ea880c3ffbba99dc5b5b647de3c048d2f0e4fed4dae",
- "installations": 2
- },
- {
- "accountAddress": "0x987cb06466ea1d52d870bc25d23ab366eadacc5b",
- "inboxId": "c28ceda90f8ddcf833e083c58db7df9480491fbc56946d0dea0a1a7f5d7539e8",
- "walletKey": "0xb2d2b0a30b1ffc1ea3e845780d81d9bc1a4350bb7a2dbd0ab170c7749474da0e",
- "dbEncryptionKey": "813a37280cb4ce7bc08b6b103bf8de0d3fc92b4cd1a19a55ceb13cff4f2293b1",
- "installations": 2
- },
- {
- "accountAddress": "0xa0edd964db167a3632be5a19063dd741106c96dd",
- "inboxId": "afe3732f0f1c19560ae02021b64b62ee49ed6bb2bb2f13bd55f9b257dd50edcf",
- "walletKey": "0x6d2a03cee8ae5e8b50bb5212951d9692d2e311ed89492d4c9cce614a8c6b403a",
- "dbEncryptionKey": "5cde942162df112705eb9cfc4bad54b0c979e2465e114bc8b55ee7d0a8437d8d",
- "installations": 2
- },
- {
- "accountAddress": "0x26409acc3c650519c8e96d6ea45e8f2ccb13d932",
- "inboxId": "26d2fee58ffa4b024312ea03d0cae32535d63cc3f43d0936dab185de57ef7fbe",
- "walletKey": "0xbbd24f2e53cad2efb5ebbf140b894e1cd6d33938cda8deb18a2d3ee0f3863cba",
- "dbEncryptionKey": "12f2a2a65864896ef868082df4bb818c7e0f97abdb9d925f6af9d85d1aa464f3",
- "installations": 2
- },
- {
- "accountAddress": "0x1cc041636820149f086f6bedcb6094f1adea0812",
- "inboxId": "15ef195749852eff5131a3e642b5e98ddc2413a77758bcbd3d14f395d22b1245",
- "walletKey": "0xf16345e5bc3b67603c1e93b6b705c84f74d2649682ffe17270ea19655d0f736b",
- "dbEncryptionKey": "d2d6589ddccd58d0e494e9ef3d01abe63ed3a9e870508f0f656f8bf75b91b303",
- "installations": 2
- },
- {
- "accountAddress": "0x6cb54c1e5fb09cc8e6dffdf893aa9cf2f161ce25",
- "inboxId": "05ba53b5e73b96962068fd920ff2a84f376c61db26f3c82af5c44a9aa0f56168",
- "walletKey": "0x2742e88b0e2fcdafe1666ca8f9f860ee7bc046b3cf2c785140abd1f0d28f01ef",
- "dbEncryptionKey": "758c2990cb40b91db2b68ac7c4ca2bd9bb1399a0eac6f04573393151fc918ad2",
- "installations": 2
- },
- {
- "accountAddress": "0x05a81999dea10599d85d26f66d9fbf8751ad1534",
- "inboxId": "f86902dfc1842e292e0d993383b92ad0308e5fd3634898d3c1b4e8baa1cac889",
- "walletKey": "0x60f2291cb05e43b35c4f26df9be1e7d6f631719578b3d195170bcb971a7de5c1",
- "dbEncryptionKey": "5de0f093f4eaa1a64bd0472c56efd80b58a6cd11626a85c7e1b0018497d25ac1",
- "installations": 2
- },
- {
- "accountAddress": "0x0b00b36d7c5ee5656fbc955cf326b09bfefed33e",
- "inboxId": "3fe2b80fa0c5e17a0a1e6f6b4d2382dcef7355a8664205a26dfc233968d90e39",
- "walletKey": "0xa7b203f02f09ca7289a5c1709c271d0bb7601218c996cd805afaf3fc0660e27f",
- "dbEncryptionKey": "1b5e93e856684c924a9e508baaff263589bdfa2b93430497aaa4936a6eeaaf79",
- "installations": 2
- },
- {
- "accountAddress": "0x696fa10a79c4f4d114617a45e7b85ca3fa356e67",
- "inboxId": "15f207e3a89dfba0ca4cc87e4d09f26caa82ddc64e6b8757a1997361b2318de5",
- "walletKey": "0x0c175f2bcd5824355b1da4bd28b451b05cc3721baa389280f18116bfb01add4b",
- "dbEncryptionKey": "51e0a85aaf03d5924ef4957106c4f0580f47985af765cddedd484a9261d4fa21",
- "installations": 2
- },
- {
- "accountAddress": "0x57a59ee8ff488a6a1d7274ba6c157ffbfc9369aa",
- "inboxId": "f3183ea29d0caa63ba08e08b7016e525c180333edb85c6f02da2a0a851e5f08f",
- "walletKey": "0x97b73b2420842d7e25cb44be8ab5c9a19a68870a752b6fd71b12b6742b9a1e31",
- "dbEncryptionKey": "1304cd746bd56be859649f564162a82e81655dcf6416a28ec8a2941514ec21dc",
- "installations": 2
- },
- {
- "accountAddress": "0x755a881679cfc9a1793a4f1058b4a203a9d41981",
- "inboxId": "4b489198d344b2cb285d8b1750a37c72a1508c2d3644fa2969dbe62f79d64d3e",
- "walletKey": "0x4a0cedcdb99aab3fefbe2f1cf4b917b5b507bbc73aec41e78b31f97cc44d7f47",
- "dbEncryptionKey": "b93d31f2e5ad2816f117497c0cf0e6b3b9c4f6f40a42f4c22132e348559a0e12",
- "installations": 2
- },
- {
- "accountAddress": "0xf08f9888b81ad8c4f048d558a5c13b70393968fc",
- "inboxId": "d8f84b9e1a6d559b1cd56a2aeea4a7cfaee893771dff2c76fd14dfbb38f724fd",
- "walletKey": "0xeb7fbae5d137f911715606cb0ac69df28ca6ca2c92decd5cada85aa3ea387268",
- "dbEncryptionKey": "88dcc2bf489c4a27a3b0258a53de82765cb8eeb67619c04b5caa5ef7d76bb681",
- "installations": 2
- },
- {
- "accountAddress": "0x2d2c6ed5d20f7b7c6532177b21924e5a071a8797",
- "inboxId": "93dab6359deaa1f33ef8b11fb3e97f6ac90c568b7ef940c125b8d5293579aa7b",
- "walletKey": "0x34a8ce2786534a945d69be71d564e4c3adff1ab1207cc92546e94258c436294f",
- "dbEncryptionKey": "2a2180ba63988ad7a4440b231334be8c23d8e5d10b6b95a88e280fda6c85f887",
- "installations": 2
- },
- {
- "accountAddress": "0xdf9a963fc64201ab1306557cc9d435856c2b8a8b",
- "inboxId": "37292c96c5089bd9abcdca2213983b95897df0711da04dfaa5686c8e2fb362d7",
- "walletKey": "0x3b620ae1a088ffe05553392605fb1a73bd26e44979260b5d06c4a692f36cb2e3",
- "dbEncryptionKey": "68de7bf55e53e0a998408f267bf38b46cc63cf27dec8e41373415e95e81d0bc8",
- "installations": 2
- },
- {
- "accountAddress": "0x1a7f4ebcd1680bedb779a984eef986a2498924bf",
- "inboxId": "4f22e347b5b269ad81ede2f5c1ad5646475fe554fc282d8464a27b0c78450000",
- "walletKey": "0xfa19d7086d901431abd6bbf0a38e997145dc06ffdba19796b2a7822a1750da7c",
- "dbEncryptionKey": "282ddf1af7b80e86af1c6c1492c44dd6150382c920c2f88ccc3540bb1c3642db",
- "installations": 2
- },
- {
- "accountAddress": "0xa650e6237318fd4d4e5253667709f3a02113a2a8",
- "inboxId": "0839b8434a4e31c4cd4f220ddc1f9e4d9ef26c28c36a077ccb19315982e6fcd2",
- "walletKey": "0x3b7ffcd801803ab85fe3e65de16a5d6cac776bffdb3d0fb9b63092b9c543a041",
- "dbEncryptionKey": "0f0a5b4d2f40a5d6b5f35d16c1974f25c66c4c3805328312aee8fa9a1ac8e9bc",
- "installations": 2
- },
- {
- "accountAddress": "0xd25ff32f7ab9501f369687e1b831a00d14e0ec42",
- "inboxId": "c855add569084ec5490fe7bccfd84119012f682e1b7d174d1d39f047554efdba",
- "walletKey": "0x14acd966769f32a0f15eca7aeb3a0bfc89238784e20ec47368dd6b3bbbc37781",
- "dbEncryptionKey": "58a0f68d988e52417bdf490ac1de7a8d71083fb7355eb19b26223406f6d00270",
- "installations": 2
- },
- {
- "accountAddress": "0xff5b1921bb1665224ae5a997098592696cfe6237",
- "inboxId": "b0811a3c9de67b10481e98e531088eae56cedf7a6a83cc6f36c8d80b3d1b19b7",
- "walletKey": "0x47e2b8b91c04490aee73a11431f3381f24876dd05f05b8170681841bdf52b039",
- "dbEncryptionKey": "25d026cab4ba0ab1af14a8a53d9db27e7c9efc67c2c99793e0434331ba18466a",
- "installations": 2
- },
- {
- "accountAddress": "0x01523cd0bd63b234267aeb24bc87eb57607f1bbc",
- "inboxId": "95b99dfa8b247dd69fdfb5c28983bcbcddbef4d66615edbc1c59a66fd4fc83c6",
- "walletKey": "0x28c53bb9fc071031287a00e5fad2bcf12c08832d6f9af9446dbf0ba4cdb9316e",
- "dbEncryptionKey": "3c13ecfcd2391f29cd46bf94e21a13e3a97a847bdc244dcec382cea387dae925",
- "installations": 2
- },
- {
- "accountAddress": "0x50d3800b1022bbe062499698be791105dea1dde1",
- "inboxId": "ad9cdaa18624a135ebadc800de90381467b2047c28fc7878c0735d69d8f98f69",
- "walletKey": "0x0b9144fe9564008d9178adeb020e6c85b2cb659c2662c3bc6851752ce8b3b05f",
- "dbEncryptionKey": "1c9f26ab71aeff4d77b89380c6d4c2e81ad8690ab9be694ce2614ca34d2651bd",
- "installations": 2
- },
- {
- "accountAddress": "0xf1e6a770aa1cad2ca82aa6c0633c6e9ac3429528",
- "inboxId": "c8cc5d8a0e6bf1fb711419cb87d024ebdee068e1ae66e0a70a06d5c31b531456",
- "walletKey": "0x99625d58ccad59a96650815b89cc55c7e9402bd76691d8a120743f77e5d6b199",
- "dbEncryptionKey": "7d820e2e2b62e9c687ecb2b8927ef8b97844699639cb1ae4238b4d5748d8feae",
- "installations": 2
- },
- {
- "accountAddress": "0x0de23940275369d1919eb53ef8cd7c02724302aa",
- "inboxId": "73748b538ad1796298be10499733d794ff22071a69ecc71f773a414b9115f84c",
- "walletKey": "0x108bd528f25653019a09e13c6976b05203f4255ea730a2ac7fcdff8dff75e64d",
- "dbEncryptionKey": "21feb9e4fc5b16e1b236fc26f1e4705849a1b0be3e8521b224bda38b4ad1361b",
- "installations": 2
- },
- {
- "accountAddress": "0x3f72e1c18e2e0fb811ff9bc53c924114bba9984b",
- "inboxId": "31c8ac8bb3962fbbb82afc845bfb5475325595cdc1bf6992c7fa8bf64f808430",
- "walletKey": "0x25a299a9d3febbeaae86ce9c46dadd798fbf07195f112131acc6ed7199437cc3",
- "dbEncryptionKey": "ea3348ec548509dc4c2b9057fd8e171ea30a3fd861aa13a8025f5acf530b5c86",
- "installations": 2
- },
- {
- "accountAddress": "0x8a5fb07d44f4fb7694144d32583043f3e8d1e678",
- "inboxId": "81d6bd909eafc5c6cd01636ff13ca3e0a2ca162581f3cbbad0b9e231898862fc",
- "walletKey": "0xaa5ff0d0e816bbf4973d6a85e0d5af0a91777f556d68a3bf8f7d6e327da31012",
- "dbEncryptionKey": "9f16acb01cd3ae6f10e1ea210b00261434efdba07cfaeffdf43f8610ffeeffea",
- "installations": 2
- },
- {
- "accountAddress": "0xb8bb50a784b5a201bba11f15405b91baaa059a99",
- "inboxId": "1da45e0f68837a9b34bc46f1c555d8e1b9e61c62cf7d39bd3678aa8c4cc3c650",
- "walletKey": "0x55f49a824a87807aee31abe6705c5fb9665b49fa2b3ea2105d2b02e08d10cb39",
- "dbEncryptionKey": "a70fdb3428a90ddc3372f102fc79a9748bd6491b823c4332e634e3de19f7d77a",
- "installations": 2
- },
- {
- "accountAddress": "0xe2c43c4272aea82a2bb078a94f6d20e52a9f447b",
- "inboxId": "a9488f3a5194c213a089a8af06365de0bf303d115673e7d04b4bdffcaa6efacb",
- "walletKey": "0xd5a3bb3fb90b9f80bc9fc58c7077229dcdbef7b4413604a57e54f64eba72b6bb",
- "dbEncryptionKey": "2d2ff863bc424e9af4221bd443ef409151a1d9674afa4b96a43afdaa2f714a52",
- "installations": 2
- },
- {
- "accountAddress": "0x1b4eec0ea2d578bf323706231c3cc79628193caf",
- "inboxId": "b1aafbe54b29d47cfbae45c990e6bb6817fb72ee934f44d36973042348198c1a",
- "walletKey": "0xc8c3bfcd970f80bf178b64cd17b093024235c1d46e9002699705b46ea6db30be",
- "dbEncryptionKey": "123f710ffa532e41598d965dc7620eee203fb495c8fa96b9466b2817c1ce4fe0",
- "installations": 2
- },
- {
- "accountAddress": "0x9111b452e77c4dc7630e28fb6337e95cfd33eff9",
- "inboxId": "a17446c704bed5fd2cf3078e33010102e6cd239926393c78a9d69dfbed64165b",
- "walletKey": "0xe754c5bb2736721e51ee46198cf004946b54281498a60b14e6259a04bc477f37",
- "dbEncryptionKey": "871cc940b56851242485403a7ae1870ba9557474f6e9d270b37779cbb3fe9b1b",
- "installations": 2
- },
- {
- "accountAddress": "0x2261aa9b4b360e2cfef95f17e2ba766a1295bd58",
- "inboxId": "6d556b0589b30b2fa4611cedcc9e179f8f97fae465791204fde117d78c37c84d",
- "walletKey": "0x53646f89533579d91ab765a475b0b9a26e2c7f2f79766e8049f76789ecb9236d",
- "dbEncryptionKey": "8252d053e1cca0d1d91c94d4cf95bd385e707b4b0d554da1537c2afae403fe9d",
- "installations": 2
- },
- {
- "accountAddress": "0x4c5ab0e6a96fd0bcf086140a8c3dfdc0e94044d0",
- "inboxId": "6a676f9aa900a5ca7708cb81efd091b45334d6397440ea3f515a32ee1303bc9b",
- "walletKey": "0xda6cea5eed75e44cf1af093457851d372d7463955158cdbc602773c0dedb9ea2",
- "dbEncryptionKey": "894c36da5e567959d92538e3bc45f2fb6ff358d3fba94d444a62dce21310c801",
- "installations": 2
- },
- {
- "accountAddress": "0xf535ff204738d8cb3d8c1f6765cc74b7c9903376",
- "inboxId": "a17f24ab754a18c4d48a70ca15271741ecdabc4517289391546ec0e4e279c7f3",
- "walletKey": "0xa5694e79a6c3a553c0b64b76b6ccc88a91880a32921be752c23f58a5604a8e5f",
- "dbEncryptionKey": "43e63334245f52bf1015ae9304aca0f88f8f1979c53f17f80632aecab3d04260",
- "installations": 2
- },
- {
- "accountAddress": "0xacfc9c6b300af15205d9adfe523ce813f8d5e451",
- "inboxId": "77ec8aa3853696d57ff65c3e9c9fe6ced2ae81448a7188353774d56e16df2022",
- "walletKey": "0xa7a8e75b0a865f659c7e978de437bddef62931da8b541184ff7d3eda0c6e9892",
- "dbEncryptionKey": "b4561715401fa6898905c7382ecd1aa5ee914a9dd48c48eb3a9667f3775a84d8",
- "installations": 2
- },
- {
- "accountAddress": "0xb6c435643ce82a8092ef57a45f66ffb9e3b1a627",
- "inboxId": "ce3da43f70fb829b15ceb5dfdb52c345de7f2a292ee565feeb6976b61a8c3bc7",
- "walletKey": "0xb742c13a723e11821ba539a29c58c698a98398d285392344e4ff425866eecd88",
- "dbEncryptionKey": "59fb646299a9dc3d443849884f392893cb78026b9463ab3f5cfcaed227825a64",
- "installations": 2
- },
- {
- "accountAddress": "0x79904e67227ad6d2046a54c1bb22ceaf33687c50",
- "inboxId": "eb7b2ca72c09f310f3d0e15cbdb5a8d3aa26761ac397a6e86b63d57728c71b27",
- "walletKey": "0xcc3b8f51c5ca21e883ba28594d364f67cbcf80d69b22f49735c9c7a4d91009b7",
- "dbEncryptionKey": "fbae833a7f29596a78516ca8af8dec838a7cb7b67bb18b6b7b9aa90585667b6e",
- "installations": 2
- },
- {
- "accountAddress": "0xefef8f169579bdad12a1eb0d9d9d814d968d4d39",
- "inboxId": "583db3f766c152e9fec756ec79988a7ea3eb436de19e07d253eaf71cd6f9383f",
- "walletKey": "0xc0da50d175484e26c92e4797e9e5ed87f5fe79e1d42138769cddc66f8d272d38",
- "dbEncryptionKey": "b7fd255df7c7fe7a5adffd6467660040c34325131af32cf7b87ba8a43a548da9",
- "installations": 2
- },
- {
- "accountAddress": "0xc019f16d10eec130fa99970f51fb8417762a44d3",
- "inboxId": "378ba1f097a0fc79c158cf65c8bcccd61f6946b1cb177747a291b5fcb46b9f1b",
- "walletKey": "0x604ab0f73fbed1e1e70b69bd72086f35a8be4df5a52c582410eaef8f77bd8311",
- "dbEncryptionKey": "3ff0751bf98dc44640ad5ccaa7e19d97e17a93efff1e7f7eb58c4713eceb617a",
- "installations": 2
- },
- {
- "accountAddress": "0xe2a83c566f31e138dd0c60abf8518fdf4615d401",
- "inboxId": "16275227c06ebd8bcdcc591f34aae8d5e85ed7c79c3253b1872bef725f39ac7b",
- "walletKey": "0x74c631f2a57ce81b2eb23e3f6c613a9fe5b17f2329b8777d561dae24fd8fe34a",
- "dbEncryptionKey": "da4120ef8e10ca6ffd585bc094b9c79151e172c158089802cfecd8f306aa9640",
- "installations": 2
- },
- {
- "accountAddress": "0x2e9395c07bc1fe94302fda71fa5d03122135125e",
- "inboxId": "c1b9cf27446331c7ee11c4f507b2835e356684db2ca05cf475b6389927c3d147",
- "walletKey": "0xd3ea27cc70ddcdea7a3b2f578de26d35529a209a02b132fc8a8a808c6618420c",
- "dbEncryptionKey": "d749a41f21a964bfafe439e59f73b8231b65d628a991afe49126be14e172ed6d",
- "installations": 2
- },
- {
- "accountAddress": "0x4f98588ddd6c3d26e1ba34b145aa81c439eaba86",
- "inboxId": "51bfe8ce608f5b5dd212c4af2ce54f69f84b1aba22d5851b7074ce43915f0045",
- "walletKey": "0xdc78a63a8c48156344d3a01a31d7e08f9ce8ce04a1887afcce95811b61b06e40",
- "dbEncryptionKey": "a765d32b0f879af4e629edc52aa539b96d663d3b0528aa9b1abf6e10e7bdb02e",
- "installations": 2
- },
- {
- "accountAddress": "0x66c14478df4f8feaeac6600cd89da90bb60b12db",
- "inboxId": "7e20be75689fe553debf4569cd2775b442ac4de0ba5777bd9a975736c83b9ae2",
- "walletKey": "0xc874a6cb673c757e7c33e4a48e510db2f5c603de708dd9c94820eed2c6c38689",
- "dbEncryptionKey": "0cb6981dd4dde5d7e30039b621ac0382e8fd09379fe468cfea60c0bafda7eef0",
- "installations": 2
- },
- {
- "accountAddress": "0x01c5bbf0ec328872f1ff5e62fcfcedad99cb5e92",
- "inboxId": "48c49138cfdf4f1743e56808326aade4e2d1ab37a9ad50b12daa7575c3d6ab14",
- "walletKey": "0xc4956a9a0bd5f3e63053f2bf879ce30eaaa18c26e93bf4a0b131439f6a5ad050",
- "dbEncryptionKey": "2bebfbc3dee21ffa46c3da73c1601bce0bb7efb79ec4eb20eba2741b83274d26",
- "installations": 2
- },
- {
- "accountAddress": "0x284711b740d8c6f0dc13b1e915079f760ae04907",
- "inboxId": "4e87d29f9adabd29fc70f0dd02113194c8de73e79a75f1251fc1fa662e52ad5e",
- "walletKey": "0x6e518d6638f7773b1e37e88b47d1a9e07cda636168f941be7b85b9c3ef34a732",
- "dbEncryptionKey": "0b61acbcfff03952e045d1f4ff18d5843d7b282a3c6c397db3e38e1cea10d60e",
- "installations": 2
- },
- {
- "accountAddress": "0x93347ef4294ecf07cccfa377c29f585737dfb82b",
- "inboxId": "aa0f3719593ada267993d7bd0ff7f0cc5c748c4a5cc8f947b2040be2d9830918",
- "walletKey": "0x1707a614413505d2133a1c9ad7ec6795af1371204687f1c521a293c6e664eb94",
- "dbEncryptionKey": "6037c162009060ecf42b8e07729c3095bb17016c5905ec0ff387048ea2471b68",
- "installations": 2
- },
- {
- "accountAddress": "0x2a09019ca69e8721ae36eb183e63e4ca644a5a88",
- "inboxId": "2d6abbcafa41e24440b079f8b008af2914c0818aed40073b98a917f7604a0412",
- "walletKey": "0xdd3b9a955884a4105ab5cf836add63b310120acdb9307bfa1491af81201ce82a",
- "dbEncryptionKey": "8f72562c5554a7239bba3e04f0b072d7d78087b6e8719cd7e67c85127484010c",
- "installations": 2
- },
- {
- "accountAddress": "0xfd14d4a067c8a6d7a7c62d9da9c07c18e792b465",
- "inboxId": "e3e23e2563b7a7ed894c36ae5afd773fe547e5411b6a4ec73431ff474d423653",
- "walletKey": "0xd61639dded785e54d5d7f38b68ca0221f3d5efb6c1b3aeb6165775b2f9658a3d",
- "dbEncryptionKey": "a013c5fcc04c336cc994d6ce2f7c26228b33fa5d31ef0898a969f9481b42967c",
- "installations": 2
- },
- {
- "accountAddress": "0xc827d25e75eeb804bdd26bde0e58f848fc000285",
- "inboxId": "6dd235438030ce2ca4b88587905b98ccd3b53fbcd38f2a2b11146546e38eaab0",
- "walletKey": "0x025ec6f49c444ea7ea558fd105237e43ef43ba2a8247fdb543445fe141b10721",
- "dbEncryptionKey": "713c666ed8396408103a390468cd53298e7967d51b9cc204628f7532bd5be986",
- "installations": 2
- },
- {
- "accountAddress": "0xd295e6633406066bb514b5c718a7cac3cb5cdba3",
- "inboxId": "77f75ba7a3fbf054d1931b951a76ffd42096620e8dfd59ef028b88b381fafb9d",
- "walletKey": "0x4623fdd35841416add305d79734a3f1cc9e382cc8cd402fe063fe1c268998f1d",
- "dbEncryptionKey": "dc8e62fdc13ceecf5eaa43519aa9fc2aebca457a13a4c02319fb5de44dea2b90",
- "installations": 2
- },
- {
- "accountAddress": "0x93f65daba98f7ef5e00b8f1e783af4a4d6a792ce",
- "inboxId": "2b6feb45ec3346cbb6006ebe806a2c3b6bb271f4eab6f5e710b19ba95af977ea",
- "walletKey": "0x903eb67535d54dbf792574b2c939ce8d00e4f7db568a574ecae0627972f75623",
- "dbEncryptionKey": "c37292d589ce22fed06aab16031c7e88129f645827f0e406cb2b92fb7007d236",
- "installations": 2
- },
- {
- "accountAddress": "0x873f3d88a57e0bc43fc00ae9a246d70970f2259d",
- "inboxId": "1632e92fc89c8d859439061bb391c773edd16624dd5257e17eb8db074887363c",
- "walletKey": "0xa22ba9027c222b66ea961e4c04a9be57d10dc579fb0479fbcbc236ffc3292c19",
- "dbEncryptionKey": "6d6e9f57eb0d301d8fa97656934dfc65534238e10eaea4a9a0aa63d77dfd5527",
- "installations": 2
- },
- {
- "accountAddress": "0x867fdc42842094045b586fd50821bdf5b6a64cae",
- "inboxId": "4681b543f7370515e584c1a6271d42e35ef34460902e812a4bbf5bf41bddb2ea",
- "walletKey": "0xcd411b5b873250c6ad27446c7b422bb19eddaf434f3e5d98ff561d88ac9a36fc",
- "dbEncryptionKey": "1959c2a61e7d57a93880c1c121be2f33e591c44a43f8c98209c6e178429eba86",
- "installations": 2
- },
- {
- "accountAddress": "0x8025f7e8b9801a991b173e398cb5da363532e2ba",
- "inboxId": "e9eb1e179e4b8f1aab311cfc615f1c5acb81cb0e5593af4ad4a5a4bd013bb340",
- "walletKey": "0x80ad27669257e35b0d508478f2767330c7298a188fae5d9197c6b74147f41fca",
- "dbEncryptionKey": "1eba8082773b22e0681acfedea989ea4b9f547dfa9e8102e047a4459301caa40",
- "installations": 2
- },
- {
- "accountAddress": "0x3621f116795e0eaa9e75e037480a45afaddf36f3",
- "inboxId": "f4ce9a458336f33ae20d614344966fca8bec60030de5cd615e2f3cfed10549fb",
- "walletKey": "0x05866cfc70a95ef46700812699ab22401b7e20c2fcea4e5f1259c7c44429baf7",
- "dbEncryptionKey": "69cd1f9b9f8d387a7c6c5bf4591d776300d22603ea810c0071a0c30f7b9bee89",
- "installations": 2
- },
- {
- "accountAddress": "0x8710ec8c5eb024e7c13aa48034bffe43338e827d",
- "inboxId": "0c41a2b1525a7a42e6f6272e1ed493cd3ab6ad1f45dc2ffd08f910b77709ee3a",
- "walletKey": "0x9aa4c404c94d99d10716c93476df8999e286856cac1ed66119ed0d0119b6e96e",
- "dbEncryptionKey": "4cdadf6f056398396c9835ee627d8325c8c1dfb38a3d8700e7f3dbf5efcf38c7",
- "installations": 2
- },
- {
- "accountAddress": "0xfa2b964f3fca3b4a29df4b0c12aaa47c860cca33",
- "inboxId": "dfe0fa04d2c2d792be88df2173655d68ac1f2f86924a3af109e316d48893cb4e",
- "walletKey": "0x60887bf0874323dcdb8400706b3acaf85ab3c38cf0110dfb0a56786f0819de8e",
- "dbEncryptionKey": "51a59a0bcfc3d29f4e6526a9f039da788bcf32f5339e13a865bea97cf739ded7",
- "installations": 2
- },
- {
- "accountAddress": "0x2fed57125ebaf38cf0cd56bece4185ba7c014f6c",
- "inboxId": "5be19391f66f0b4df210bc646cb033ef7be20b57d6b002b0dc748b261b9ddf29",
- "walletKey": "0xccf6ecb394d8e49eb55567deebbf7eab15e3fc1f0ce176f22784d1967623d3ed",
- "dbEncryptionKey": "33bdbc0c67a538c44a5aa0888333edb91e24e513ae965b702d779c8cd1225c4c",
- "installations": 2
- },
- {
- "accountAddress": "0xb37439e9c7d02c2bc27aee66d1ea3a74e53dd7c4",
- "inboxId": "36dcedfdd9f86c5c33e5d3b6dc21f3bc9d14bd9bb32be307fe692e359dcfdbc4",
- "walletKey": "0x4879e4bb94e3908ef01ec2529bed725a6bea6bc8e59e14772c2ce3f6ccbc6b9b",
- "dbEncryptionKey": "23d31b233996e758c4d05dbbc6456176bce24f8419f684eb95e4734fc92ec190",
- "installations": 2
- },
- {
- "accountAddress": "0x0b10c8597cf397e236c1394f4be58ef2c10b4fb8",
- "inboxId": "001ba805a9d904ba1b67cf681d5b02d6c7db904c1c1c343445f4cf3349a876b3",
- "walletKey": "0x5b772cc4ca4de15ebda64cc1a0f0f846abca8aef62892cd6f50c0105a8dd3b8c",
- "dbEncryptionKey": "2e816dee6615de6305980d5284a5bb5d96114769e9f48ffd4a6589147b13805e",
- "installations": 2
- },
- {
- "accountAddress": "0xfe914ca9d811645a5b8ddb60334822fb4a8b9afc",
- "inboxId": "34672f02a817ec3394f6a6c631e1aad9812149f4207b5636619a00cd4a51f2ef",
- "walletKey": "0x19e3844cc67f4f195a1e22703a570a1984bfd09f22be5264a3b59294dcfdebcf",
- "dbEncryptionKey": "1130f1ca485d3f914a88c48b790517d0a2872359b42b19055b4e575613285d1d",
- "installations": 2
- },
- {
- "accountAddress": "0xe4cb732486659ada144eae5ae7472df13f3b6c80",
- "inboxId": "c5aee18197ae2bbaa4b91745bc0fef418a54f51168c038426da94d039aac9169",
- "walletKey": "0x6113cba1bd1c5443cf297f403d2a0f4ac3c4c62227168e54464b0ec739e2c754",
- "dbEncryptionKey": "04f8f7e067022b496467af2a3ce2acedbbaccfb0a9153962e0a43eb98c578b23",
- "installations": 2
- },
- {
- "accountAddress": "0x7e497ea7d0fc895a683f6fd9b769312b1128cb9d",
- "inboxId": "bc3689d6449e2af5f3521abbeb69bac2b68e389005ac554ac6100e54b998c867",
- "walletKey": "0x9f09616da84ef8309f073d9bf88523d00d9cfa51b0375d7da14f9d7160711241",
- "dbEncryptionKey": "21a4596262c38399702a286a4cbdf083445f10fc4fdfbe951ef0dcd016288b65",
- "installations": 2
- },
- {
- "accountAddress": "0xb915887c9e0ccb2d8d47be55a6f9eb3049c4a9f5",
- "inboxId": "f345f3237c82085c13027b666960027046214456bc33d2c97ecadab9c84d94dc",
- "walletKey": "0x2c69b131b89b0599bcf8c72c980f6d1d234edf928db32a00bb193e3c4a3552ca",
- "dbEncryptionKey": "87260b4d26ac7fc148d47cb2893f058018540d2292bd9685cd1edafc168f616e",
- "installations": 2
- },
- {
- "accountAddress": "0x88ce9b5ccba770985c412b5294da6c58db9ddfdf",
- "inboxId": "4b62ec2f0b311df784dc855f1fd328cc6c8500be4191e641e8741edebd64e09e",
- "walletKey": "0xbfb1ed9a4437cf3650005e695e549a1581398329593f9ee6e27defef94112088",
- "dbEncryptionKey": "64d89c40d57a869156c8440062cb5995d1e4aed9952c910a54669547edd821a9",
- "installations": 2
- },
- {
- "accountAddress": "0xa7a9477d0a3d0cb25af2ce42948fd3e34a7a5387",
- "inboxId": "13067bf82e5d740eac45813598032ba72077afed14a42009c9e15515416d3f64",
- "walletKey": "0xfaf45a80d3cb3d9ba154cb7fb771a079734a6e9e0f91ca83b1e16f6f912953c2",
- "dbEncryptionKey": "9e7c1483fdd596f02a6cc6e1a6e78eebe07efc38c80a609cededbef6b1cad8b4",
- "installations": 2
- },
- {
- "accountAddress": "0xcaf559e0bc0f59697baf63a252c6460d084d15b4",
- "inboxId": "b8a53b5629afdeff40d0e9deb56f3204ae0ee7071f8f9642088cabf43ac2dd88",
- "walletKey": "0x1c54dde4cf563439824b644e11ad02ac01d3c40a76080ef178f68a507b4a2a01",
- "dbEncryptionKey": "f667af58963f50c8dc3612dc40d89286acd555a79d2947329026342b73f25879",
- "installations": 2
- },
- {
- "accountAddress": "0x6b18d2d6a0d5004a0faed63281c518d7ccaf3c4c",
- "inboxId": "5a83c8577981458f25dbaff10ace327fb7f23e60b7075214e4e03af974f59e05",
- "walletKey": "0xdb8fd2526eb4a4f18ef405229bd1b6fc0bff8ec3dff0d3d55f06c4323ba31379",
- "dbEncryptionKey": "a5f5fd4942addb06be13bdc6c1f039544025c2eb366db94413323390e7d7ac67",
- "installations": 2
- },
- {
- "accountAddress": "0x16c07772b720383d24ab54e97d7eb6ac85703c26",
- "inboxId": "9bff703159cd5d7b18170868bd752dfa5ca887b282b9ad6bd68fa76c4579672e",
- "walletKey": "0x005e9c0a9f0d36beecee499a07e2b5a2d70e599190084fcf65904eec7d8aaa6e",
- "dbEncryptionKey": "27d1efad75f183cad9bc24db82b41c0ef573807fa14c76974884ed11170d2327",
- "installations": 2
- },
- {
- "accountAddress": "0x520937be9f1ecc8cfcec80292b648831032f4f22",
- "inboxId": "8c870364c00d6cbe37846e9c67db9f31fd8d1f35e984b99bd4f4ced6ae027185",
- "walletKey": "0x55bc69b6b451f4590f38e3c8bfdec1d583dffabcf1b6766a66dd0613dcb41373",
- "dbEncryptionKey": "39a14558dbb8ed55b193c80101beb5fdd994ab05fbdd38cc5e1cfa1135dcb846",
- "installations": 2
- },
- {
- "accountAddress": "0x7c44d4df6f2045f9edc1d62e4b4730a8af743e22",
- "inboxId": "4559f865a1eb5bdec2d6ba8e9942f4f956bb4f6a63e20a167dcabd5181a389f0",
- "walletKey": "0x217893ddf3333e7a585b715ca27cc9593791ce2eda7f8a2be3e479c4d66a1318",
- "dbEncryptionKey": "1c59c4c363e449adbca855117b6a25fd0f5e6b199efc630d6d1118116e1a0a5c",
- "installations": 2
- },
- {
- "accountAddress": "0xf44b30cfe275f9fc586f0c6c5fd34cfeba04ded9",
- "inboxId": "597b289bbfbaa6dc6846ffdbfa30b027b15837e4308a729ba801aa2c176bc3c7",
- "walletKey": "0x9ecee412c730fd25c7017aa8d11c22b4ee85f2045ac03ce8a15f092275ebcd03",
- "dbEncryptionKey": "316ce59ab4502921d0cada230095e4d288e2a26a627bc46c726ead00973b9b52",
- "installations": 2
- },
- {
- "accountAddress": "0xded93116cc94e28d3f43a3c2f953debbedf38e3d",
- "inboxId": "3b149434eaca4570293f61f7d7df1a7afaddad2277f5bbebfdd8473763aa7889",
- "walletKey": "0x74a5d6a5dfe29692f70af94369f531a33cfeed5ecfbe5afbe8b07840cc2c7fab",
- "dbEncryptionKey": "541a5c034aeb4d2841dc4f25223a21fc6a47cd3ca6a9c6dea5deebcbddb618d6",
- "installations": 2
- },
- {
- "accountAddress": "0x4dd2c74e53d06c2147e06c9326975d8de86c1edf",
- "inboxId": "40fb0315299e6a9d7a67b366eecd868923bbd0873ce9d0e7987a730e9a464f1e",
- "walletKey": "0xfb3209a5572ea766317663cbefe18d713bf12601d60bbc9cae04311cc855549f",
- "dbEncryptionKey": "edb218ba00c02c07609dcdc84b4259325aee52cff053d1d5602369efba97f11d",
- "installations": 2
- },
- {
- "accountAddress": "0x6bffebae3aa5c57d78d12cdc340289d2c6766da0",
- "inboxId": "c3ad267b61d59f83dd9d5fe09a6666597ef782fce6ee52a11b260c2ba4885eaf",
- "walletKey": "0xc8dd8f841109959ca1f7e00d52cdfc495be67ff47dad7fdc6fa8a75af1f3be36",
- "dbEncryptionKey": "cd5734ae61cd6aa0e1bbdf0b93702642e07ed1138d663f01403ea9b5aae84eb8",
- "installations": 2
- },
- {
- "accountAddress": "0xf7f4a2e13d5840198a9953e2ec46632c249dbb7d",
- "inboxId": "a71b2008c64357e01a0fbe5f7aafd5fbc2748ae76c6c7121fcccdda2f080013e",
- "walletKey": "0x281908b2eaae7dba8361a399fc45dbe4848e8d75571614060dc119ef54aaa68f",
- "dbEncryptionKey": "e712ec5069e0f445a34bc5e28fcc8c50072f781e1c544bf56383ac5126f49a78",
- "installations": 2
- },
- {
- "accountAddress": "0x98cf42f1d06212c6c4ae3774e06c0ca46c97dd95",
- "inboxId": "1a21c4fbb9f6ffebd29d75e0214fe2c58bb4f2fcf12d68f2f8f5cdce84713729",
- "walletKey": "0x936c052e2a7d84a537ea4d868d0025c23085d1070245c341c3eac89cc8bf0261",
- "dbEncryptionKey": "c42439332a68ce404456412f9a383fcdc1762b6e9880690a3bb0225b5b6f76f1",
- "installations": 2
- },
- {
- "accountAddress": "0xf15ddbdf8190b65aaefdd4adbea77129a5bec35a",
- "inboxId": "ebb35fb8a5a3b76eb6140eebe6814ebb532b1aff5bec36be12f5fcac2a4c1d84",
- "walletKey": "0x3c724912346597e9e7b8a0f66cf174341b61516f8d5e516aa3d0d615ffc91dc7",
- "dbEncryptionKey": "e0828afe4f14b50c85386366ab454a1c384e114680bb17692a703345d313d62b",
- "installations": 2
- },
- {
- "accountAddress": "0xe1434141af96995f207e498854a84deb35b1a169",
- "inboxId": "d12d8c08061af70bb161ead41f5ab3b0fcf943432e01fda1292851f19ed4ebe0",
- "walletKey": "0x9b488de52db6444d4556d74d3fa45440eb7b2ebf11fa545bd5641fe85a96fd33",
- "dbEncryptionKey": "653e665eafd0f8ea5ea6f482b00e881b27dbdaece36eb10fb8a76132719c56d9",
- "installations": 2
- },
- {
- "accountAddress": "0x2cabfd411089e633f37eb53ab03a13f2fb2712c7",
- "inboxId": "4f55e759683c59ecfdd26aa2950665094548228fd6f31454d68d754a0e7b87be",
- "walletKey": "0x997a740376e97ec5573f5da0d2a1e7d7fd1a01437788224afbc7865e926b9055",
- "dbEncryptionKey": "b783572825346f3f289b792568034a49fc71a677d46c712d61862cf5fb5c3e0c",
- "installations": 2
- },
- {
- "accountAddress": "0xefb80f595ae6fedf371134f7062fc912347124b4",
- "inboxId": "078029b10b0a39670744f17a68c2fd541cd69217191175d94802b90e67cddb9f",
- "walletKey": "0x36d735367f5f632943b241f0ce4a5cc4ac22e508c21bbfca741b3c051883cb56",
- "dbEncryptionKey": "fa137491d633fbe0c23b784f060a379f1c659ac5aa2cd3805876593cd8b6b8ad",
- "installations": 2
- },
- {
- "accountAddress": "0x6d35c299e3e37f8fe7f0c3bb19b0ae2bb88088b0",
- "inboxId": "9dabba32ac30a08ec3071ac00cb9d05369bc0b6fc97b29e3abe5bb19a016ce82",
- "walletKey": "0x6396d28e1ca74c991da184c09141842114a2f245a6685a5df78f1d8794638d3a",
- "dbEncryptionKey": "fee9f3b51e70d484c34cce6ca91a6ea6d8798605345b962b8485bd8a4d4144c8",
- "installations": 2
- },
- {
- "accountAddress": "0xbbd5a1f73c3e861b615171de99e8669fcd3b1af6",
- "inboxId": "2c6ef09975f2b805c128b617a934269574d1368ecfc859796b2ce31dd229122a",
- "walletKey": "0x4acee6703ce37d25fc1aee5f5e86d09029cd1d16f42ace8ebe6427bbd57bc8e5",
- "dbEncryptionKey": "f358ef9e6f3880944220c70c4d21583d37dd9829163fa88ebc977dcd3547672f",
- "installations": 2
- },
- {
- "accountAddress": "0xaa3c3463e68247ca7fcd3042fa8393ffdb03b8d2",
- "inboxId": "d120cbc71923d586bb824f8d916eff013fde966de3ae0e1d18a6734843f9abd0",
- "walletKey": "0x1a1f2a331cff4d759284228040c7b7cb3795da536614cf396746a520530b8818",
- "dbEncryptionKey": "c45bc265d2f6ca359be84dce5d8d9b7b49d0354860e1180732ddcbff3caa295f",
- "installations": 2
- },
- {
- "accountAddress": "0x9bf67bd24f0b8aefd5b942f8069146667d079235",
- "inboxId": "1edab278020647d9d661aacfc5887548f57e47fa69df08605186acfd1be06cde",
- "walletKey": "0x07a75e622a4b538aed3fba7ffe93041849c78578df83bc4e51c340d46167042c",
- "dbEncryptionKey": "80b820ccd312fb97de4d6600e425604ce156ba12402f4c96b72b0033f4885748",
- "installations": 2
- },
- {
- "accountAddress": "0x7f938992bbf484002606b23290e57e8b0608dfd9",
- "walletKey": "0x8f23ed4a1cc13b00e1a8a68ad8097b6ba9e8d0a14be513eb7d404b3ff2cd6128",
- "dbEncryptionKey": "71f31846ca17a321e026d5eca40d4c68e54c7e061b8cf66292c8965929397cf8",
- "inboxId": "fe95296c5bbd9acf6bea4b178791ed825b94220dfb432044cbe6cd7f60ca328e",
- "installations": 2
- },
- {
- "accountAddress": "0x262ec3772511a7e55b882f8cdcb7cbc64e0a84aa",
- "walletKey": "0x57b9c42fee196e8136d9bc26101df8ac89944a22f31704de8b86a186450132c0",
- "dbEncryptionKey": "b4e2b7393c3658873d88c7ae33c76d2d0b8de6007abfc31e767852f8169b390a",
- "inboxId": "9a58882f6878fd0248306327fea23cd186177948e5029f584d43eb1425c50569",
- "installations": 2
- },
- {
- "accountAddress": "0x283e59c95b7dc52849f016f876d49738a729ce1c",
- "walletKey": "0x571ff0dee4a0ab124ecdc770285839724bac2976a88f782868674cf7df57d140",
- "dbEncryptionKey": "6ff9ff8a4d83918eefe42fffafeb5b819a26e482b31eae895d9525e87df2472b",
- "inboxId": "7d0e88f151780b27a793d475dda814eba830d3ff627dc95fcf381aa217ab7d7f",
- "installations": 2
- },
- {
- "accountAddress": "0x54aab157132ee9128dd90908be4f482bf4f4137b",
- "walletKey": "0x6231bfee0574f662fd468b5879eab9a898d3a42adef9ec9ef5107a431bbf61b9",
- "dbEncryptionKey": "054baacc30d252112e6f1dbe6cb55595b04ddd3e20001e69888e2663325fb4ad",
- "inboxId": "15efee8a12f534eb021bb1aad0224443d178e8941268f839fef99f0af10122e9",
- "installations": 2
- },
- {
- "accountAddress": "0x6973f0e9f58b617f2e3236a97ea9a497751f1861",
- "walletKey": "0xde53ee4c5bcb361abc4a697b6a91e9e95fb895b97e7f221156ce30a6c39e49da",
- "dbEncryptionKey": "84bfc503328782eab17d107ebbd7aa27a012972bec102267d1e4f4834b3a2fd8",
- "inboxId": "0ceb418c7632bc4eeb0421b2ba9de7f04b83a3db888df8aa8e92b89a25f0da7c",
- "installations": 2
- },
- {
- "accountAddress": "0xbb69b09972bb37ec5d20aaa44e17bcd88016cffa",
- "walletKey": "0xc246c69383da00f696845187d21fdc185914ab691867e4c28a5df12bc70b047d",
- "dbEncryptionKey": "cb71ee97d799d55b36561a6677e52425178e6579211a59af8481ea6bbe9dc7cf",
- "inboxId": "a6856b47a1a8d726c81bcc33b0eed4409a67d68a4277084ed3176bb256a273f4",
- "installations": 2
- },
- {
- "accountAddress": "0xf840516396210c856e2a15c5d97bacb7f95bffcf",
- "walletKey": "0xe918567d8d6d800899ab8aef54fb254e4ea5afe210d6614dc124106ca4c5e3ac",
- "dbEncryptionKey": "1c5412404eeb94a3e15858b1d8597f477aed075870d2fd59be69d60394676115",
- "inboxId": "98c35bd1b101e07562cb38dd07a5211ad250dd9f7e9b5fef505511ddb9aa3569",
- "installations": 2
- },
- {
- "accountAddress": "0xabbf2eabc62a18d9dc46edd755d3f1ff6a0f50a1",
- "walletKey": "0xdb8b4a5d434e499b22baedbe039c1a072566b711058d59646568dc7256e509e7",
- "dbEncryptionKey": "9f6288542c5bc2afa7a9892712b6fcba8c7da9810e2a98515912bde4ce87c407",
- "inboxId": "34ed2a995413a48e75de47f427dbd803255c31a1decf99e0d721060dc9999b42",
- "installations": 2
- },
- {
- "accountAddress": "0x900efdfb7cf9ff4521d21b9cb6829d664420d084",
- "walletKey": "0x587f2dda2d9927e4a46cbc838156a944b1710a02eb9fa722666bbc45385667c7",
- "dbEncryptionKey": "72e25994371fa44f28ebf107b2e3ebfadc397fa015975a3865d3d2e59e450aad",
- "inboxId": "787269d38bccd6890c28164c5634cf1da4f90c105a1411ec51cfd20c05302361",
- "installations": 2
- },
- {
- "accountAddress": "0x5bcf6114cdfc3694dc35445c9dcc1256577cf002",
- "walletKey": "0xa115253c19ce1930d45b311638241361364474d51a295461487d48e92a283228",
- "dbEncryptionKey": "6637dd04d9fe19eca6d9c2f37e116872cb7bb6590bd9b8e70532c431374fc78e",
- "inboxId": "ef567b49ffb9a893cc0931712b7584115d1425fb40ffa29bc663579e04d159f6",
- "installations": 2
- },
- {
- "accountAddress": "0xeac1e1772fbd20eb9acc493d78178609c9e69f28",
- "walletKey": "0xa691e41a15e1085d6897a0c51e713fe3c0c231fc15301155174d758d331f1730",
- "dbEncryptionKey": "021dffc4e546a728f93af377bd780b0360f43f9f441906ca2178bc20eb56ccc7",
- "inboxId": "08c7cd27c78616b88af95bf86a7ac8f502e7d95ddb89d8b43ec34359a4321db0",
- "installations": 2
- },
- {
- "accountAddress": "0x1d154bec9b734b7b184ef54e52cfed1443d77ecb",
- "walletKey": "0xed75df442a03b32f686005b578617450019ee123785e39b886c9c244bb9f9f29",
- "dbEncryptionKey": "5de2d4c39e89157b16d874062aa94a5747c2a282f9b817e7702a3c822dfb6b5e",
- "inboxId": "47fe6ac76b0cc5325d02ede000d2caf28c94519ba799ffe441e6df72772bf024",
- "installations": 2
- },
- {
- "accountAddress": "0x1b7448f43ec9c600ce158bbfeabef71d47c6cf98",
- "walletKey": "0x1b214564f0c1cb54cdefa2a2098e692b0b007e41a055ae0abbdfaf8cf97dc0e8",
- "dbEncryptionKey": "a76e6956c11e8ef0d8521b9e569892e5a3a3f18cbedb5d4dd28613e8494bade2",
- "inboxId": "a3a30f160b6bb1481affc3852a15110975cb5da07f165c2c97b9966877f62004",
- "installations": 2
- },
- {
- "accountAddress": "0xb45f7eb6085f79719beeb4769be0acdf3805d777",
- "walletKey": "0xce1a8e584c3608f13b4839f3e12ac46cf76b94998ac0ec05ab85e59e1eeaafad",
- "dbEncryptionKey": "492c6f34ac5bd407a37653e7a501a2b9f71c54ec28b792bfdbe71a7a0ba56983",
- "inboxId": "19296c8ed5b425fe4448a3fdac6487040e657ee3191a3099b49765cfb87e7284",
- "installations": 2
- },
- {
- "accountAddress": "0x77836ec28651dd1a5ba42836670c82dbf808fcee",
- "walletKey": "0x7265e50968d61df0aaf1d36db9873c580e5ace313c274fa8421bb2d06d326af4",
- "dbEncryptionKey": "da744bd777a031b7169dd668fb5513c08f66edf53118aa08c319400017e84e0f",
- "inboxId": "4eca9a45b23aefeac7796a30ab4552d017e65cfbff0b06341c2f061219371a59",
- "installations": 2
- },
- {
- "accountAddress": "0xa414b31c08bcd2f245b1041e7504e21b8ca2e218",
- "walletKey": "0x5aad527fd60e5149cc0b46db7502d01f0c7ba88fa46fe6989cf55edb05bda385",
- "dbEncryptionKey": "31a5f5aa18893129744054281c00a0845fd66ecdc1c498e6dcaef0559b778688",
- "inboxId": "7305438ba1986e019d77a70ed314d35efa6fc6def742327793c3b41a204b17fb",
- "installations": 2
- },
- {
- "accountAddress": "0xbf9b146ab9014606577152735a54957c6d7d1bba",
- "walletKey": "0x51a62bcd90c5f41350b57048ab894b02efa4dbe466583f619c961a6002a865c8",
- "dbEncryptionKey": "6ac784d09360beb44a9ed70b450b01991c8f267ae463a4f502d048436158a794",
- "inboxId": "9c508b2f224785014b44f5c846182e6f9d8b592b900d5b6dfc56e4cfbb33a615",
- "installations": 2
- },
- {
- "accountAddress": "0x4e479fd8a3193c65057a5527d5d8fcf1fa92722d",
- "walletKey": "0x0b24cd58055445d3984057ff214da4bcc188999146184df56c0757a0857844b7",
- "dbEncryptionKey": "1e9cb0f4f7cd9a8edafa8ae9f9e94efc78cdd9df0ce217de276e739c3f81ac0a",
- "inboxId": "7d77a6307688ea5ad9024420d4473981b28564d54c805dff784cf3ab8a2882b2",
- "installations": 2
- },
- {
- "accountAddress": "0x0a94f02ae656bbde3eb775a4c19dc764c1d65dd7",
- "walletKey": "0x9624887dbaaface96861d51955f24fbe66b5da9642eb500ba7542af2f91dd935",
- "dbEncryptionKey": "3952e714bb9837a4358da314913ee72dee63ec3954eeede9d59afcc545823d24",
- "inboxId": "927ed44a86f58b405a94629ee907ef43212907144602d35f6e0f303881c36ce0",
- "installations": 2
- },
- {
- "accountAddress": "0x46868146b0792a991b089f7098e241e0e02c21c1",
- "walletKey": "0x7a87a3380eb0c59cd483da8cf21ea74c71f5f82b8602ed5213e926e4d42da251",
- "dbEncryptionKey": "7aa9d4861834362d0f4bca10a81b5fb10182f14dcb087ad67c5bf85b2533d4b4",
- "inboxId": "006004d04fe07c9f69c5e0a81860505acbe96d8a67273fea6ecac53b8b876f64",
- "installations": 2
- },
- {
- "accountAddress": "0xf3997a36a92180a04ecebce7c19e0ca972b49290",
- "walletKey": "0xefc9c24a4b99ab96d3a327f2deda62f1afa5089fff32345802e750f6675a3df1",
- "dbEncryptionKey": "f786a5f9c87f92259f5f18a971949e98a42768178d3e077e1cfd948e57b26ee8",
- "inboxId": "b5a5256eb6549e80f0c32c0afbc20ca3efe5e0398e98e47dd0c53fc761f862b1",
- "installations": 2
- },
- {
- "accountAddress": "0x02ca7f897bdbc9ab2897013eafb802ed55e173ea",
- "walletKey": "0xa707133e4ee116abf420450f25fd1aee25af5596a022ca04623ec2d78f390966",
- "dbEncryptionKey": "cc96ad4b91efc4ab11f719343f112ac1770dab6d3d01fbad7e96a5359c3ffc96",
- "inboxId": "d5e5b51e3d384a0bb6e1140960e0bd2ee05ba71ef395f27e49c6f35bb0e45955",
- "installations": 2
- },
- {
- "accountAddress": "0xa6eb00107a0161a306414dd973dc451d32b4c8c4",
- "walletKey": "0xf2fb02c94a28cb234d2888544503ccf342f20501b43df98b9a3f689ac8ad92af",
- "dbEncryptionKey": "d3c54483030749550a272f857025d0a0e460e1a75befc8421c5479bd511870fb",
- "inboxId": "c3bdde396682f04d4ae2be821d698b5d0b5370dbd09c396170e5ab0ed3ca26cd",
- "installations": 2
- },
- {
- "accountAddress": "0x6a08a3423377bd7da6741e421502e57cec29a7ec",
- "walletKey": "0x9766a23b8451ab350251a5910753ae4632485008c89e986c21bd8ce45778c475",
- "dbEncryptionKey": "2d5397317180d256ed8d87e6e685684742d7ab6072501436b506cd88594e73f5",
- "inboxId": "3af6c02367dd66920542b0bfd181a7141768dae23810f72f1b85b3a698b2f3e6",
- "installations": 2
- },
- {
- "accountAddress": "0xebc63ea74ef1c6f1d0cb08db49c45280e327c135",
- "walletKey": "0xb7a2f8cd5236334f9c59f0cfc100c90a556ec3833c3e671f6eab33471c763243",
- "dbEncryptionKey": "a80a799ba66101064d666a3466d80e4c44809f116250141ad7ff58354b2c736a",
- "inboxId": "121c3ece42b8fcd8d70ceef876842e2d7aa78ec8fcfa70e77c2e9a56e799ed89",
- "installations": 2
- },
- {
- "accountAddress": "0xdbc5c2037c6ccd889c1c72879388e93482404091",
- "walletKey": "0x9e4c0e6529b27aebee1cb863bfa9eac433295c716f584b6c4684cc001c57dcce",
- "dbEncryptionKey": "fc3ea3ef2601326e7112a2ee65d42ad78af625755b8ca9356661e03877608303",
- "inboxId": "bb2b67f36c548358957a4183647bbc22f34fd98b0be5f817978e3f832301a20b",
- "installations": 2
- },
- {
- "accountAddress": "0xdc46d6f123b222c2bea5315e3a31072108f33f96",
- "walletKey": "0x4fb2bf653cc62cc753ae8279a1485d5199bdaeb77005759b0e5419ea3cfe8450",
- "dbEncryptionKey": "ae40b0d8f5e68558bdaa6ac2152edcc584d963547433dbe18aaf444b09891720",
- "inboxId": "cd5f586f214fa5a40da0e7ff3e6539cd93eea183b36a5b7568db8b796b8d6ba1",
- "installations": 2
- },
- {
- "accountAddress": "0xc36364a3199878f9333ff2704007ea771f5828a8",
- "walletKey": "0x75a7df8cd6e60f2f257f3626115562688f3dfb7cc83e8fdfa21f7473d6a5bac4",
- "dbEncryptionKey": "012c595899d4373ad8de3caae1e67e75407bc0c0a75752f5a665d99113d50cf4",
- "inboxId": "a6db5401bb81fd533182be052a191862288f2be70a88e79a269a38900b90aaf9",
- "installations": 2
- },
- {
- "accountAddress": "0xf9f27092e2ae2ed021fc1dedc600404aa4d92060",
- "walletKey": "0xed5fd89aeaf53b8cc99885a06670014e802fb37626c86dab41fac64c2d4df70d",
- "dbEncryptionKey": "3b5d1463ee3e74c6368ceba2b11a3f5281943317328379d1daffcad5d9c8c209",
- "inboxId": "784c689e427f96efe9b249e83e92c72b8e1a9743acc266ec34d5320139ddd888",
- "installations": 2
- },
- {
- "accountAddress": "0xd2732c2d8c1f8af413c865186d7ca6ac1aba318a",
- "walletKey": "0xce983d1d780f57269c11238223d39acc5de481a709ea586149613569d801102c",
- "dbEncryptionKey": "ecc413782704977e0f80528f96eacc2dd19706208470f4f5b6b122cccad11b3e",
- "inboxId": "9401f67c0176e64210fd02454cf4763b81b92c12dcaf493b129111d4451b5825",
- "installations": 2
- },
- {
- "accountAddress": "0x3ba655956a982650bfc7a47d415cb361da32c7a9",
- "walletKey": "0xda540c3199cac1682c3c168d604515662fd20e0a5e59d57fb0d71d527aaa09a1",
- "dbEncryptionKey": "115125db2d7f48061bd75839b5ba2232fea8343130f9326418ca0123dd236faa",
- "inboxId": "1993a4ff30528b36e917508c0a685c0ca272ece2d17c03487a6c63a49b1f6c07",
- "installations": 2
- },
- {
- "accountAddress": "0x0225b9b2037b16b860cb8c697c2734526f5ef567",
- "walletKey": "0x94dabd6e41039de75e497d6560624e466196d5112e6e79f2d4f92f679cf17c18",
- "dbEncryptionKey": "6d2933e255544b434e92d874c462697d5aae8536fd6615ae6ae3c41541e6431f",
- "inboxId": "986e72939bca755f2cd45fbdc3dc222830b743841d94e4df26376cc0d188b823",
- "installations": 2
- },
- {
- "accountAddress": "0xc03154db0d50e2904a383a664e20eac9f25a0da4",
- "walletKey": "0xc31eaca52ba117091d254db1a12ef7868717974602ba297e4f9cfc0045e5bcf3",
- "dbEncryptionKey": "66d8172ed055d48fd928ea494f63b238fe9e42a078eef6a7de6c4e90a5e1c1a3",
- "inboxId": "2a0317e07f5c0e1ed87f2d20429dda974595670fa63be56f797875de78e63c3d",
- "installations": 2
- },
- {
- "accountAddress": "0xbc3a0f6c1edf0c6cfdf3280f109191b4ed5a2834",
- "walletKey": "0x6c54c282a4ed4743db8a1e1df0ab646dc18a4d2168c010250545db8de55f2875",
- "dbEncryptionKey": "e600e7480cd3b1ce30a4d972ed99cc8efc32c2c44be13d45eb132f64d7138a44",
- "inboxId": "5a55f23d76ed2367a115b5944f8457fe54ec654987ba06596d42b013a0d499a6",
- "installations": 2
- },
- {
- "accountAddress": "0x932266e47caeb81e11d9c073d15dfff4f1f93869",
- "walletKey": "0xfabea9ebf29889c155b3c6f7d56da4778f5df39c51a853327171a9d60e632cd1",
- "dbEncryptionKey": "bc2496b6f8c7feea5a335a16ebd79ad15b15c1b5243d095a116028bec280482e",
- "inboxId": "3ee743b56ac8a80e31bf5730ff32d4e3669261075ad3f10c1600275cd971adb8",
- "installations": 2
- },
- {
- "accountAddress": "0x776d925d4d37643e0ec7e55d957f50f9644aff0f",
- "walletKey": "0xe1d279c06cbaf553df0645cb48e248792460162a5de9254d587458ef9e888ef8",
- "dbEncryptionKey": "fc9d7741733c4fff9e1fe52ba0e2082134919572da6c76854d2d36dc2d775c6c",
- "inboxId": "18ee627ae30463255dfa5d9e99176fd946e26aa6470b433067978e9ed2e694e8",
- "installations": 2
- },
- {
- "accountAddress": "0xad51cc579c561bece6627b2f266b98b0a59a984d",
- "walletKey": "0x10a0dd08dfde08da267d25d50bebceec1b25e1b17fc25e003dac50fd312a11ca",
- "dbEncryptionKey": "1131ba9fbef55ea38a0df35c1cb92442a0336eacfe1bcf323d222276bbe3ac8f",
- "inboxId": "3580c965850f88dacb0105556e488bfd4556c2d9862c74d04f15e2d9be615e8f",
- "installations": 2
- },
- {
- "accountAddress": "0xe76d4191e7e224c37e403bb9469055ff6bca067c",
- "walletKey": "0xfcaaa07d2afe4d1e424b2eb42604df027b025efb5559aadf6ecf11145ed6108a",
- "dbEncryptionKey": "b2c5cdeafd534619c03dba291a06f16b571e9fd6068c21126abe0f54c12f95ee",
- "inboxId": "3c72064f3a32f595c671fba499d74629909ed938aceb431d1ffc13afe144281f",
- "installations": 2
- },
- {
- "accountAddress": "0x6097b8920fbb52e9cb8026b61b298c9a39ce9843",
- "walletKey": "0xc3aaa75dc909438eeeb5b86ee9fccbe4f77c6112c0dc3b7f406ff3f5cd803595",
- "dbEncryptionKey": "00a9cd3099b4c12ccd69592c813237039a21fec4b063480c39c14c393fffea92",
- "inboxId": "fcb43c062d5071eec43310557e0d82a621814810b8294477b254ad23cc696de1",
- "installations": 2
- },
- {
- "accountAddress": "0x646a58c36692cab90ae928a3ed1eb4542ca31bee",
- "walletKey": "0xa274c8e2b342d3c556fad6c22da56e84f1be27fdb5a9b43b652d3bf5ca5e7587",
- "dbEncryptionKey": "f9d61be4194cfd97b7eb013c8dfe79d2d5acfa97ce240003bf9b7abec25ec59f",
- "inboxId": "4f490d4ee1f5a708894593988e725da38416dfa9688119be00ba7af3ea1dc3c5",
- "installations": 2
- },
- {
- "accountAddress": "0xfeb83783acf45367975c2f88b06b7adf4cefdd31",
- "walletKey": "0xf38e313d7003752cdb6c5fa12642db22a003be73d6afd8633033871827876aff",
- "dbEncryptionKey": "1d60ff51c24ec714b496ab032be819db1dfd7ca6fb3d167527dd517f75b09f1c",
- "inboxId": "555ebdd05ed88e8fed4cd8e85ecad13ab7f2a6d9c8a78929e9f602be31f7e950",
- "installations": 2
- },
- {
- "accountAddress": "0x13e4689338442338b896891af9a1b1ccff8a30a7",
- "walletKey": "0xc73d2a307c5b19e713dd504f07f54d2e59a1d0aeb202ec5e2589357594a2693d",
- "dbEncryptionKey": "74742f63433a89439ce35dd1e76c12fac9b358f080d65ecede88685bd2734341",
- "inboxId": "663c13068582053387a7e3730e915919c348c7495e14ee82a572bc82e70c1703",
- "installations": 2
- },
- {
- "accountAddress": "0x38698f7a43d5b762d8d930009271f9f62b3a0dac",
- "walletKey": "0x499631fa49d59a51336a81beb53829b4b5258c007174bf773410a3b9b8200047",
- "dbEncryptionKey": "6f3b92dbf3b5f7f278f3d30f1e2b30025474b190b5146f692bb81169f497d60c",
- "inboxId": "da26cffb01471cdc38de7bced9f596fa692a9e9e728dd640f222eb1c9bade909",
- "installations": 2
- },
- {
- "accountAddress": "0xe5692355b0c174e7f384628dd6d1c71e6a175065",
- "walletKey": "0xd23780f4db10b08ddd9fea900006acb73659e7cb3996f1dacfbbdb49c462c30a",
- "dbEncryptionKey": "afeabc0ce03f32e32593b95012e966c39788a567c91df144b368a5296c9ab601",
- "inboxId": "91c96243beadfb360826b72f27942599830beafa1e919add5bbae68be80cc8ae",
- "installations": 2
- },
- {
- "accountAddress": "0xa4e1751694e235aa5acc09a18777d826aa0f8122",
- "walletKey": "0xa540626753c05cfdf0335c89de3bf90a91dbed79e2e4b834e1cc8d7374722e19",
- "dbEncryptionKey": "804fa319f5f12a0d51659b6c12225c005a44794e8d54ec0c4545b64230c38e3d",
- "inboxId": "b9a1c55100507c231dd06699ea5daf7ab92bfc98b2f1a71bddd194c2b8f94208",
- "installations": 2
- },
- {
- "accountAddress": "0x0e6a1f819debc6bbb441d1b31033b26ee45a45fb",
- "walletKey": "0x6906fb819f99080085e1053e184d9a3b1f89f11a8b0cf8d38ae1d9ce344333e9",
- "dbEncryptionKey": "dceba52a01ff8ba969b52e4067408e1e1ca1319dabaa087527ccd95de93373ab",
- "inboxId": "125df7d90373691ad869a261dbe24d2b3de2af04843fd461ace8d2fc10e9df8a",
- "installations": 2
- },
- {
- "accountAddress": "0x0a9b5d9afcfd547ff66fd3bb77b1c49e46e07318",
- "walletKey": "0xc86287ddb8e44215a63e71b769b7e0733ac1be6cf2b6d1833a42e2d65896ca52",
- "dbEncryptionKey": "ab88f14b4967892e3053626cd97fd18bebb4f8bc2038c795c1578c63220b6a71",
- "inboxId": "4cb07afee33c9a31370900e9490def25541466e54c5128d9124af46c9c271140",
- "installations": 2
- },
- {
- "accountAddress": "0xddc1e8db04cf6b6c760e96ae09b5210c400a9550",
- "walletKey": "0x3daed0f041db747682b2d522c9e6a4a691ca5eeeb70119912d1ec520c14c9bfa",
- "dbEncryptionKey": "eea39e106a484e8f68755ddcbe4eabae9814dad099613afca161b7b282dd6b91",
- "inboxId": "bdb349ef8fb67839dda70ee396aee6dd987f4764e2aecbeec4f9c0bcde021ae7",
- "installations": 2
- },
- {
- "accountAddress": "0x19e4e0517ef8e8edf9956f762c871fcf90efea36",
- "walletKey": "0x2d940730a27d973187e74912835523acb70a68fc269225da8460bfaeb31767a1",
- "dbEncryptionKey": "4b71e7364823ef691e2abcae52f974ee0170644bbd7a38e042efaaa88c63ab5b",
- "inboxId": "86d2b074681fa5deaaa084d84f09b35e0ec6ff009d5283c3620ec333fad508df",
- "installations": 2
- },
- {
- "accountAddress": "0x4f50ed7e03b42398d219e1688d9ba92a9118ec49",
- "walletKey": "0x4958c0edc9dcba80d9912ec8c5f1ff66e876195f54b7c3f31f413199c306ff88",
- "dbEncryptionKey": "8e31c6921e0c299eeeb5241e615c37643a9ea327f71e62937f0b4463ef6075e7",
- "inboxId": "efb3c94ff47ad652c9068db56be9a72863fac1eed7c54fc18431baf7fab3ff5a",
- "installations": 2
- },
- {
- "accountAddress": "0x622aba51eab24bb480480a7c84e3558c3ace17a0",
- "walletKey": "0x13ea9213ed44682cf06b50f4c82c8039ea0377fb39eef29e78dc38569fbd64af",
- "dbEncryptionKey": "b72e10de29b66443d579673a792d053b25188fdcb25d8b034e7ebab3c3d53145",
- "inboxId": "b395e13a974b1cac8e7572ba12010d0972acdcdefb80e6a19d7a0ef38d0ed43a",
- "installations": 2
- },
- {
- "accountAddress": "0xa6b381b85d029e98a23ab40df5f0e7f3198008cf",
- "walletKey": "0x3f65ff902931644c1eb707ab317facbb36f514bd3b293aa0bd8c4b5834b1eff5",
- "dbEncryptionKey": "9e1fe0bac7e1828294a137816334ef09aa635b5927b590df4568191a21da70f8",
- "inboxId": "569688d2dcc728413e3cb38cbda1d708d7dda191df1f8e05413cd5018b8a3543",
- "installations": 2
- },
- {
- "accountAddress": "0x428d0942524abaf9467645b6eab8f893e1922327",
- "walletKey": "0x99c3d261d1c3b3819b89675ee72b5ca2150d704d8de9ded60963c955f354e28d",
- "dbEncryptionKey": "f006d47b7819a6d6fccea2b53dff22387d6f36ee08d59f9b9168b9f035a3a2a3",
- "inboxId": "6422a14f3afc89549c4a743f64a0420a259cf6cb9780cb85bd1dd5954ebe5313",
- "installations": 2
- },
- {
- "accountAddress": "0x8fbdd1eeef3cf4e8480e19d73c649871c6f05348",
- "walletKey": "0xdcdaf4949ec9f29885ee722e9035f3c454cd32aa28f564bb96a167a1138e3c4b",
- "dbEncryptionKey": "37f87922292c213b8ff525a052fd7eaa2fa2fd60f4565d4db9b548ba348d9d2f",
- "inboxId": "bc86b075a511368806bd67a65f68e471e3d4acd815df83034d59bf8afe5545b6",
- "installations": 2
- },
- {
- "accountAddress": "0xced7e627967ea6ac5c7a3bb231c49161173394df",
- "walletKey": "0x77ee6742ba613c911d230753b4f8f79d0111b27da5a14195b4b5cb92f340ba28",
- "dbEncryptionKey": "71d150042deae2c89b7752361a2ad93377f085e8f0f217d8fcd1ad6cefc97f3d",
- "inboxId": "acaef266e87744f882da013aff827e32defc66d9fd2af723b51f143c563d9e34",
- "installations": 2
- },
- {
- "accountAddress": "0x989560266c92f9eab4ef303b53f2d0e5e7efb89b",
- "walletKey": "0xd4c98d0b81c1639681e5a903ea7cc91d4747ff123e1ce7a35fe404c4584a11bf",
- "dbEncryptionKey": "f34d2d0b1987ca577935d9c3b49d3f0fe524062271a9cae2630f9a83a7936a69",
- "inboxId": "ea39aa86e8db053faf0ec13abe3097d7ee125f69aacbb472f8143d865300337a",
- "installations": 2
- },
- {
- "accountAddress": "0xdee22b49bc9ebde0e92c58ba9e88a14b70d6e4e1",
- "walletKey": "0xe5223fc0f05c8f507d2473400159c43d83e2c6b5ac21cbf70197c322cfe9e181",
- "dbEncryptionKey": "ed8279f43f01a4dc03f168b677363346a8b6cc115b28586ed27b8a24cee8ddfa",
- "inboxId": "5ae7e8e21d4e2f9c1701f25be1bc518c8308c461d0eab80aea795871cd3879b7",
- "installations": 2
- },
- {
- "accountAddress": "0x1b12b6621323986670a6b75db5a970bc45d902ec",
- "walletKey": "0xa0d91002412704cde5f5e40d13038a7e7e7b93c1bc525308a910249ea1688bad",
- "dbEncryptionKey": "47ec6b8377f5d0f729eac88d00297c4b9cee2e123f7203311f85c7d8227174f9",
- "inboxId": "52bad360b65753060c9b6179653cf7b33065b6d0ae608df0f66839e06fd7db97",
- "installations": 2
- },
- {
- "accountAddress": "0x8d5eabef107fef706725308d79c68e131e15f8f1",
- "walletKey": "0x590cbec748df224b08a8eceffbadb0afdb9904d9026a45846edc90114868c732",
- "dbEncryptionKey": "f571360ed82972336b41cb59e1dcb7e7805494752b5feda3c21929a162f333c0",
- "inboxId": "81b5e47443dbca2896794ddcb13030c71a7a66704c09d7fa61c64bb2ae4bec82",
- "installations": 2
- },
- {
- "accountAddress": "0xff48e377253c651d973652e99a23e48f977844be",
- "walletKey": "0xae7e49f093e3c1779e0bc07de730b0835a810c2cde83b3644f01cca2f721d04c",
- "dbEncryptionKey": "3e51401aa455191fe2ae89a0f40d37afbff5ec7a47ec092222a93f3b13b45491",
- "inboxId": "49ee759fda83d00664d4a16e279dd9ace303dce89bf0765e7ab86947978f2a9a",
- "installations": 2
- },
- {
- "accountAddress": "0xfcaa7a2d16f913eaf7f2c6dd4d4ff42b7cf3d76f",
- "walletKey": "0x0f93decafb3b9c6b7667173df1e8d6b5abe8f25455eb992126fe027d99aa49ef",
- "dbEncryptionKey": "90c3c435074a3c7e34effa5627e8d696ff685dac0c7751ccb2f8df27c8ec3d47",
- "inboxId": "02fa1e24933d8d1a0e562f1d2ba969e01b0634c6e1c5d447d84cf19fe05d1606",
- "installations": 2
- },
- {
- "accountAddress": "0x8aca2d7b80a02c2647fd4a8591063fe4e57d1cb1",
- "walletKey": "0xe47d5a73de7fd87c5bbd84acec652b245f4640b02fff3db800ab3018a1285d17",
- "dbEncryptionKey": "e7be1ccb4488647e945c1d5e0b4cccda345a1dce83cff33ca8a4a6df3032f24e",
- "inboxId": "2afcaa14d7110ce1cab5414056f6ede3c08b52dfecd13b9e2083e930cdd23b3f",
- "installations": 2
- },
- {
- "accountAddress": "0xf679c352df0d08d2853606e9ce6775073abd000b",
- "walletKey": "0x10a4fd0a5fa03909d02a369635f4bc6cf7b643f2eae75f784968ff4067ba56a6",
- "dbEncryptionKey": "d7007fbe3c95ca57bdd7cc48de5e5510da65752a9a8021ff273fcfe2007a9568",
- "inboxId": "3bdcd71172d1e70f734e5b8317e0c00c83ed1b160db9ad8eb77ba9b8644874f8",
- "installations": 2
- },
- {
- "accountAddress": "0x325b0d9d4080c26848fe8d90ca2177f89cb21130",
- "walletKey": "0xf0d0f539032a2ddcbe3d8b2bd60c7abe0f7ffb97e8cc453437d4269f83a5123a",
- "dbEncryptionKey": "6a4fa230850268f98c4a14e62b17e6797064ce9632e8d51afbed99cc8adb37a2",
- "inboxId": "0055b380be1c24bfa3184db5fa06834e5c5d4681dc0bc25f859307326b73f12c",
- "installations": 2
- },
- {
- "accountAddress": "0xbf6c4526e29b383f50fea177befe2ca3a4a7ded8",
- "walletKey": "0xb89fc6f713c43442c79bbe0d8d0a137f456f6b14bdfe4f8220cf83883f175230",
- "dbEncryptionKey": "e7f93e769da6cf6050b3fb5ceab57b1062e805f7ead889fd0489d824552d4d63",
- "inboxId": "96724ac1dad0fcf9565f8a61358911b72528cba2a9f6ec31be082034c6fa7a83",
- "installations": 2
- },
- {
- "accountAddress": "0x7bc50357d2eeeadd4c7ee37bcd85029a99713e6b",
- "walletKey": "0xcc9b1bfcffeedf745104aa6f40b30254b6c9f2027df05860fc007863e1d8c380",
- "dbEncryptionKey": "21de678814fabeec5c9e79ca9d96419612df25cd5432f3d109526ec48a1da233",
- "inboxId": "fb3178649fc459f3e9c6d01360632fe30247c923e60cf5fcc929f2698c0522d0",
- "installations": 2
- },
- {
- "accountAddress": "0x41c472c809e5ab6ea584134865b3e89e6de100d6",
- "walletKey": "0xda0119677fb1de720271d1d4a0f016228758c90513ecee50e840343fd421ed01",
- "dbEncryptionKey": "36a62516828b68313b70afebbf3744fd6a2eb54705249668eff8bad1ec3f57cf",
- "inboxId": "b8151eead3601f53f33c1efda72e27c334539125484fdbaacc040a25831da91b",
- "installations": 2
- },
- {
- "accountAddress": "0xf1b0de77a5908eab8dd3ab11b09add3914c5b5e3",
- "walletKey": "0x4c603f469ee048706fd9c80ac225610ebc03a8f23d7031df33d8c3a371a4fbbd",
- "dbEncryptionKey": "38ecca7049742fccf0c10bf0c1684da1b712008ff043079d3ad81268dc41631f",
- "inboxId": "4f0b9cfa71905e0f15286c10554e0f702258a4c4c11e49fab9742065d24547fc",
- "installations": 2
- },
- {
- "accountAddress": "0x252c464e14f747d97cd00926fcf73eed51d5a4a1",
- "walletKey": "0x2f470eee4a7f47bdfd322a46d9ecf1acaab74988e456978c03f5a9602b66644a",
- "dbEncryptionKey": "a534f3d5d2595c5c9463bdc081e2174b4c852f0e850e1e2589b6bdfaa841c73d",
- "inboxId": "38ea62780997ca6f957a9b80fc2e743616bf99e22491f7e967a174ccaed14110",
- "installations": 2
- },
- {
- "accountAddress": "0x03eb2c5443ea1d18ba4d4ad6fd14aa5f436861bf",
- "walletKey": "0x915c3bded5728a203a393888a55b3f0f33115b7c961c990eb11ef6a72545e8af",
- "dbEncryptionKey": "1eff9ab317f4aed0d49caa9d499886a6af2190e8acac4f51d08789c25199ab65",
- "inboxId": "d9a03833d897cd9ea03e942cbb8ec81e80a181a2f75112cc811fce5054c88098",
- "installations": 2
- },
- {
- "accountAddress": "0xc9bcde1019050698b526141a75861c688f6233bf",
- "walletKey": "0xbdfaa01343ae3fee7e84cd29b0683d340cd64575a79eef351d19d717311a9d06",
- "dbEncryptionKey": "37ddc60f34fa7fbb93f9a836467fb81dcc3b6e45bce28c3c2fffc8fba1b6a089",
- "inboxId": "bca2f447f0a98e2a5745b68916050824c7a6269993e4fd4a3c56f5509bbe0f01",
- "installations": 2
- },
- {
- "accountAddress": "0xc0fa7cfdfaaaf2fe5df0e7ca12b2195eabeae118",
- "walletKey": "0xae29b74f59196e295992fec553471ede84beaf1d9e0d3f1aa44ca15c3a70a2a6",
- "dbEncryptionKey": "3dc9f5b1a08e32ac92284aca89ae1890cc5c80d60ca497588606cdb25e25d2b4",
- "inboxId": "8ad12f3352e93954d68d1cd41fc5e44d20a5468280129bcb1cb0b14e21f570e1",
- "installations": 2
- },
- {
- "accountAddress": "0xdf4624e54234a4fbdec99fab6d4f2adcecd66c67",
- "walletKey": "0xaca7eaeedc4e89112b8ba29d18dcd20309a81d791f4d2f98b044f84b5514e8ac",
- "dbEncryptionKey": "a83bbf06fc6f549d2e4244a685fbdb73ed2952bca4cef4312889121b4d8b6db1",
- "inboxId": "073a8b07aae90c1e843849fe02a2800059a8c890ac04b5cb5a2cfd8d05fd465f",
- "installations": 2
- },
- {
- "accountAddress": "0x7c6ee377422739aca7d2be1f12f6e608de9294fc",
- "walletKey": "0x2cca6709d45d61c5817d515ede2eb990fbdc8275a1160e4333093e95362e825a",
- "dbEncryptionKey": "ae3db2c311f16ce44cc18456b7ebdbaa7349b0031ad64c3340f21fe33fa7cb67",
- "inboxId": "5e36c8bfc7fe69b31552c8cb9ac03ef5fe51cf356ffb7840062f3f22d0a44643",
- "installations": 2
- },
- {
- "accountAddress": "0x48a0c48f61ac70cc67d22f6ceee985c5bfd64a0d",
- "walletKey": "0x0a0b02f56191294fdf63f8b5936b50f9703c46ea89119a7e1f1d660954466dfa",
- "dbEncryptionKey": "c2eccb947f3473fec3e4650887f1d61a1a60e26160006bee62d791820f271791",
- "inboxId": "1013b66971310ce3546737a7e326a10067ef478a5ac0a32d3035a832bf384662",
- "installations": 2
- },
- {
- "accountAddress": "0xbc02bcf002339317efb06dde6dd627b2bb193c36",
- "walletKey": "0x097c7e0648caa370486f1dbc8f6525dbf8aa0de6bbacd038f662419e8f490751",
- "dbEncryptionKey": "20ab80da61e2fd9f11e2aca763cc5f0b210825e162624f36877ecc25f77eb6d3",
- "inboxId": "65936aa21d7a57eb2dc6cff0669d88ddff2aa66a3e7be84b208d574dd3b6986d",
- "installations": 2
- },
- {
- "accountAddress": "0xec0c799acc8a9571e9d1a6d8ee57010c90570749",
- "walletKey": "0x7dd9c081275f6f7bb92dd770439ed09a2ea14e619e66fdf0ebce15e37157b329",
- "dbEncryptionKey": "9d5964078a6c33fc6eebc2b21145f444f2fca6dcf92016f1e8f8a6f1d10cded7",
- "inboxId": "6858b368c22f7a2c46d574495218705a8ec161243f62455936404fa4cd8b1942",
- "installations": 2
- },
- {
- "accountAddress": "0xf93b9f37e1210ef53a0e8b5169b3e96cc61d5c74",
- "walletKey": "0xad332fe741f439b25cc5ce5c0cf8b7889a21d82f750ad52c4ddcbde87e20a586",
- "dbEncryptionKey": "2ec0b2190753973c784a95b8ecff20aa3b1597275d480885b2fe2809fea4fe76",
- "inboxId": "6d441cad176cb18554cb43b978da85b6509042c302660cad775b6065f2d14419",
- "installations": 2
- },
- {
- "accountAddress": "0xade8251873803557443adba6b50e02275974175a",
- "walletKey": "0xb400d7491a8454fbcada8656705cbfe55b550c0a35311b6d9572669f24a44d79",
- "dbEncryptionKey": "0f6bb883c345f292a15921b6e8edf504ed164645f791e6efbb0207cd8fa2d8f9",
- "inboxId": "9d16eb40ffb62a2dc8a34fa7e0c7e1653ce6fcc42a37ebb490328fe512365533",
- "installations": 2
- },
- {
- "accountAddress": "0x280275cd3ff9d6ca27abe003b09e7c90e992956d",
- "walletKey": "0xad1fed5f28a2d60fad5ecfb9f501890884ede68f6ab08d5f73ee019ffc3602ac",
- "dbEncryptionKey": "6c0292fd898d68d0cdd5982214d8a9f6b09a39964df90107cf76e2a625af9539",
- "inboxId": "38ba136b08d335882837eaaaf72db3e9d2d19bb969cf1bfef9bed91a90ec127c",
- "installations": 2
- },
- {
- "accountAddress": "0xd4d2960a5c80e883cd7bed74e004a06b6ed5d99b",
- "walletKey": "0x4371054add1d44b324cfc32bdad6e19e70e5650ce5cb0a8e1a86cdda6ddb4b5f",
- "dbEncryptionKey": "05efad24f8133df5df6540ecec7f434e46efad978430ab5f16f6c4a500117a54",
- "inboxId": "a954ac7bd9d86b081dc73f4c5e5d7476c7ba5a562a658cc263fd8c4b1615a8e1",
- "installations": 2
- },
- {
- "accountAddress": "0x473924cf3035714792be1af159265ea270ccb7a1",
- "walletKey": "0x69707d01cbf0be8613833a3b4fbae117d45af3263b0aa54deb71eb711308afd0",
- "dbEncryptionKey": "fbdb9d9897a4898a3cafb5fadd86290653643dd1ec68ba725e34289aabf08bea",
- "inboxId": "ba4f15bba5126d441f8d37f39108ef5e364f85147f67e4809ae5cdb09265445f",
- "installations": 2
- },
- {
- "accountAddress": "0x6fe848afba950fce31a59757bfd4871dcb6d9a30",
- "walletKey": "0xcf56bf86e5d42aa136337cbcc9c9f95c1c19f81cc59954fb824fe9605b04e666",
- "dbEncryptionKey": "4b2404fc5b629a110d3f28baea6267c388a13742dd9ab559cdc4026686a1915e",
- "inboxId": "8c20b945a12e63468756b98b7b46a18e024dac43f6aeb463d6136d78c525d4ea",
- "installations": 2
- },
- {
- "accountAddress": "0x16b9108288b3889934aea1421e9f55bf90c91f48",
- "walletKey": "0x4b83b29b36e251c606b366588d00e29d33b6bb3d016fca812a5529cf66a40ab6",
- "dbEncryptionKey": "9f123900b33e5d40251273008a2e9aea832e53cb6c2dfe5242f1758bec8844e0",
- "inboxId": "d6fe39ef54011d7df3cd2773ef3f5aafc416618fe5983eb2d6b2cf71b21822ab",
- "installations": 2
- },
- {
- "accountAddress": "0x6dacf3a68345df4242423f2ee69c37d1007cb833",
- "walletKey": "0xe7d8390280f2a88385ae8952c2e3b7834c71d0b2f6d82d5c3a0147cdd79613d7",
- "dbEncryptionKey": "f7da611829ed876ed7d15864e3b042c2e091efe237e20d34c4a0b095daaff555",
- "inboxId": "875d194d73bb763413dbf7cd238f3ca71f34a0e90c4a1b3957ec252fc03f8d88",
- "installations": 2
- },
- {
- "accountAddress": "0xc8246c69bcc3a8a09a29d1bd53cb8d38b273be5b",
- "walletKey": "0x7e7e7a624c579c0c014fe49f403dc0cb61a035b52cba4bc83c76bb8781f4a491",
- "dbEncryptionKey": "8fe9af7d8b9e16717aa9afa3879f7cf0ac47daa760f100783cd0afa6e4230ce4",
- "inboxId": "3abfcd978793e6d70a39c505c093b6cac135b68d5670476b178415cca408c296",
- "installations": 2
- },
- {
- "accountAddress": "0x7cc714d3b075b1eca8cc66b62716f45c67a69f23",
- "walletKey": "0x0e44b754d9b5ca9cdcc5c88c93c9732c2f1db5c6f2436ef38f8f39078fe2a421",
- "dbEncryptionKey": "2662e9319d98901edfc92d1af7336abb3470e2b90449424d3e5150f6219b890a",
- "inboxId": "8e81741f0a96f8ccd09a4a766eb0bab6a6c1b16a7b70cd23b604d891b2edac62",
- "installations": 2
- },
- {
- "accountAddress": "0x43e33cf223a487ec6291abd69e0d139d2fd7a1fe",
- "walletKey": "0x928ab30d33b173e55dbd9dbb0e181f416ecb1d72062d2800a8eee7d7abe8390d",
- "dbEncryptionKey": "a5fab71c9e3c96b6c78047f21ef1a3f36c0903ab297f613e444fdff29942219e",
- "inboxId": "df96e9319f3db406092285da6a93ad7b516270c9c8c286dffc21e0e83167a18a",
- "installations": 2
- },
- {
- "accountAddress": "0xc1e51ad2fe543ff3106cf6282df06e61fb2c8806",
- "walletKey": "0x3c8f426373cd9cfbc3c6d82aca0ada4a7f8e2d50209da4eefcfc919b58075de5",
- "dbEncryptionKey": "c1e6d48a537237d7e205d7ab609a66e59e82b8d219326f2405b0fce4ad7efc21",
- "inboxId": "0bbeffbf1ecbe4d227a00caf4588d9c6aec8e60c9cae81f4bf0b22c1bb3b57be",
- "installations": 2
- },
- {
- "accountAddress": "0x6f165c6e82381fdf597d51d5081eda4a23e69282",
- "walletKey": "0xbc67035c6abbdff3de717b4ab71940f108fb2950fcd1b11be2bcb302ed496019",
- "dbEncryptionKey": "7367692953a2a831a0759c5497714be5a4ed7e387a11a308aa32f26d3f7cf08c",
- "inboxId": "e18ffcdaff0df6983600773e5344e9ee289a0993f1a88ba79407cb008c63d9d4",
- "installations": 2
- },
- {
- "accountAddress": "0xba7df7dc1d9232777da445bbbf2081df05f719be",
- "walletKey": "0x5e67a4937ba75d37781f4417646754e1314125cde491bc754dfcfa68d5d3ea2e",
- "dbEncryptionKey": "23f2bc9193b11c5a652e4ab8d39737469070ae1622cd1faa23e9c8ecf6d33612",
- "inboxId": "665b64943c1dcf36f135577b8581952d1ccf47a4e173327e36c83d4d7c293ca5",
- "installations": 2
- },
- {
- "accountAddress": "0x2d1ee7ee349c326adfaf4cee11380ae4bff568c1",
- "walletKey": "0x046ca85903ed675309ce6f07a9a8738dd117dd1089e568d88f2c4c9f88dc629a",
- "dbEncryptionKey": "b40df87d14f7fe5f31cb98ccfca18ce5dcbbe215a1592ae5521a0f62dfa8f8cf",
- "inboxId": "a337ab144b91e2fe82dc73190a4221f601a947657fc7159118d0c3bff66bb8f6",
- "installations": 2
- },
- {
- "accountAddress": "0xc7156717e0658e0757994e1c7f0a934c755b9456",
- "walletKey": "0x2c734c6548884b005f8c2c6d682d121821b41a4439e25062ff40d83a87bb9291",
- "dbEncryptionKey": "5c75c0c27590214032a7baca25b63fc664d94aa881a36d2bbd606e9402ea6ce7",
- "inboxId": "2edc234977953ae7855e6f8dcaa960a25e26c9db4c67f8f13dfa689a1d957954",
- "installations": 2
- },
- {
- "accountAddress": "0x9c49cf24fa2202e8d158c4822d878b5298198cad",
- "walletKey": "0x359941b8b3581c0334ef873c03c1bc7c6bce4dae072b839f50febcbb2f11c476",
- "dbEncryptionKey": "0d6339fd3b9c7d5dfe4944aaa7fb0d60bb70e854f16adf9fb2c890e178538051",
- "inboxId": "cf2f0916edaf16f2cb682e16fc9c026dea14cdc1819009f5d20173d9a27f4340",
- "installations": 2
- },
- {
- "accountAddress": "0x94138cd47295a2a8226f493d74932e79bf2fb7f9",
- "walletKey": "0x540e7d308f00ff7f0f72581ff37b2fae56e22340ef9b5000fba13c4f9de74f91",
- "dbEncryptionKey": "a829318aaa1a8b2382ac1a7155e37184f8195f79e618f49bf733a8c67342c0b7",
- "inboxId": "abd306f77f0b85528abaa6c3aa5eb146a8a1d6d1eaea583c8aeb4810a425986a",
- "installations": 2
- },
- {
- "accountAddress": "0xc48994297bfd98f021e5a724eed37d98aa2efcb9",
- "walletKey": "0x60cc392d1625afed9535afbf18103a8707c0d2d2d98897d9c80ac50a958988bc",
- "dbEncryptionKey": "7f915069ec40e20f2239bf2aa5f247af6fc4017a7df13d9ac4b7fa0a3ccf9be3",
- "inboxId": "4137a40e040eb1f930729de8f2fc6251457a03dfebd6afeaf1803c6cbe16b93e",
- "installations": 2
- },
- {
- "accountAddress": "0x99512e6145e5659112bb90342771ce6f033783c4",
- "walletKey": "0x17f2244acfe2b3d0b0dcb3abfd80abd1a6171d8da7f5b5f4b4f19b6147c2c7f5",
- "dbEncryptionKey": "fd1538ef6e070ec22ba733ec173a50f9ae6872855ad832280cabe020d41a0c71",
- "inboxId": "6cdf62b5a4d6852e7e760ad601d188926fd1e86af971c466299133c6db965517",
- "installations": 2
- },
- {
- "accountAddress": "0x36ef00c1baec727b1ed1db8b3f15f556f4a366f5",
- "walletKey": "0xe2ea28bfcf4d7aa88e9b2eaae95b92751b0b6a78753537773d038a952d0c66ed",
- "dbEncryptionKey": "5f32199ab00596ba44d1e4c240cf18f552dd579eb6115938ac72c92840c1d267",
- "inboxId": "4dbf389fad487a0ed0e5f1391909d7bdb171c715b192aba3854e4975cad99225",
- "installations": 2
- },
- {
- "accountAddress": "0xaa47d5aea77366ed845ee96b5f8be6178885f930",
- "walletKey": "0x9c6e5b527ef02345c848ee3c901d86dbb5209517c22144c4a344bcd874524b26",
- "dbEncryptionKey": "c6c0b1ea0a73cede3dcaaa2c4a8f04d27da5145bbf2bb211caaf87cd6324b0c7",
- "inboxId": "bae8d99d38cb18aa1581defb3d1ac28d094a5f445a0ddc0e4dc5c95b54c2faf2",
- "installations": 2
- },
- {
- "accountAddress": "0x80951b8b05106976a92d2dfe3c57dbdc6b42d7e4",
- "walletKey": "0x528903a5a1d9b824a2e1bfecc1ce6372b2daa7f32dda26ccd1c265b9c798ef01",
- "dbEncryptionKey": "17a485d1744113d491db40c3ddae21e54b457c942a99dfed86cc9dfba58809b7",
- "inboxId": "5ed048722769477b8196bf6a1f08404488348d86096b95df6281bb5aaf3949b7",
- "installations": 2
- },
- {
- "accountAddress": "0x4772acb0af606b431a4ccd8165cc2fd519070736",
- "walletKey": "0x736015a406ff5ed5c19537f265957554eb504101620710788ac3d06fbca108fd",
- "dbEncryptionKey": "dc67f250a6eb2e9cfeb06aba27c4b3fb29900dc546e41c1b9d87f1c5cef81737",
- "inboxId": "a15ac551a580a33e1584039953dbde5cced5fb871cceb49d6aca095628cbdfd5",
- "installations": 2
- },
- {
- "accountAddress": "0xcad5a4b2d3dd2502a92c15db5cc2269fc9061b29",
- "walletKey": "0xe93f03bd5f767a104320324e8d4badd270dbfed271684ba0da0077cced945c1a",
- "dbEncryptionKey": "6405521196838d5bd2136b4f00b34a40c865921f55d6b86353e3a48ae17dccad",
- "inboxId": "d001da08330cb41afba14f7517b0c5a5ded3f0ac98dab42f9721e07499dbb2e7",
- "installations": 2
- },
- {
- "accountAddress": "0x278ed0cf41bca75c574e485689a88173cb57b14e",
- "walletKey": "0x2aa4bba2168675a7acead1e5257ddb4ced6a3aa718ac3f196df693ba8f143488",
- "dbEncryptionKey": "682285c7bf9a53f06448b13a84a02cff22aed4e05c3314d7adc5c372faa9237e",
- "inboxId": "449bc232ab73fc5214d3f329f58233aef0428c1d2cadebd379f9417c4d9bb869",
- "installations": 2
- },
- {
- "accountAddress": "0x51b2af5cea1473f075d8e27ae3a6251c2a2caf26",
- "walletKey": "0x44072337ee4dedd4ac7cf6688426b91fcb38db563b143b501d1e744c0ba765e8",
- "dbEncryptionKey": "763ff235e9212385ad580a85be3a287033581b6431d13a411ad3354b83f29f92",
- "inboxId": "538a9950408d048170b857a0eb8a5712830325279ec9886f144b6ac9fd75ff30",
- "installations": 2
- },
- {
- "accountAddress": "0x7a5a7a1dfe005ce6ee3e79c8b6acc98fe501445c",
- "walletKey": "0xb7ba585d2ed3ea00895d0259c918d93ab12e923ae08272647c47b3ecfa2f0286",
- "dbEncryptionKey": "f626f11c084324a6306179c9c4efd642fa0a18278c8c9f873a430b1fa5d3c2f9",
- "inboxId": "a89944b366dba78709fb763a3f2e032ed5c59836c5add8d7a81b566a638d89ce",
- "installations": 2
- },
- {
- "accountAddress": "0x56cefbccaf9fbd82cbe439b4a94c8436bf1a9833",
- "walletKey": "0x51af0070a065dc20f0a326f31ce7609e4a9bf4b15a22dd5383e7ba2d234329a4",
- "dbEncryptionKey": "e09e654b61bf330b1a35a3afdd9b0bbcb96aaeb9758bf45e64b4ae26aa87dda7",
- "inboxId": "99ea95f3f52bdf0daca360a7d2c83a49728239c43326103803e7bf2c412a61f6",
- "installations": 2
- },
- {
- "accountAddress": "0x37b70e0ff1ade19d664d413cd4dec343fc17b626",
- "walletKey": "0x3b281a7e3977c287cff9f6d167954b865ea69b10f8c0e3e791e0a90c05e53a5a",
- "dbEncryptionKey": "1c92af27c43534be9fecc5851e3d38a9a81ed51f6f5086c636e4576262314a5d",
- "inboxId": "3fa70de7a450bf74a9653c64780a4d118503256ce7d0d6dede928e53e54007f4",
- "installations": 2
- },
- {
- "accountAddress": "0x325387688bc4451979f1e35a55dce1f1558b4556",
- "walletKey": "0x831471ea000f50396248b30488ad6e590cc04a1ee206243f580ce760b0d93508",
- "dbEncryptionKey": "ad26d08238ef5241766dcf7c1bd96d6c35777e27f2f2fd1782a86779cef03d5c",
- "inboxId": "b1b1e777582d9ba68154ceb4f6a6a6acd1de3a1680bf4dd65ecd7bd223676cba",
- "installations": 2
- },
- {
- "accountAddress": "0xafba808beed698fd2b51538da5cb06fbd32831be",
- "walletKey": "0xb4c5e45e42e7e277660229a39d6d91c8f2f1e92aab4ce7ece828d8ca17aecd96",
- "dbEncryptionKey": "783560c6a9b65fbe72f29a8cc523749bd8b00dccb9fd0e3cab06e7fb1ad6b52b",
- "inboxId": "0cef5c60826ea53e51e728950329416ded0fb179223df360cb8f08d38bacf7a5",
- "installations": 2
- },
- {
- "accountAddress": "0x7b1f2edb93c24eade26ecca322545d4b2b197a69",
- "walletKey": "0xcc889918de7165022f8e52e44ade8ec273fb90216ce47a0237d5c82921f97396",
- "dbEncryptionKey": "972cacaf35df7d73d8d2c4714c67d66be2b926c3a794965d426c7955de30fff6",
- "inboxId": "4fd6a88ff71921883a62f8690ca4c0582f974cb9ec1a0cdf16ac0e7edd98ef27",
- "installations": 2
- },
- {
- "accountAddress": "0xe895ea8d5ff080e56ad9add481d473c6d123174a",
- "walletKey": "0x3f9917b3d912cccea8ced0503b84286b259f4caf0cc7f39af01d7b11702ea6ed",
- "dbEncryptionKey": "54df84305689cac3885e25aada36eee66a15a6cb516964eb74b905bd82495d4a",
- "inboxId": "61224b9ec156bf72225adff80512da777fed88621b48236dd3aeaf7480a126b9",
- "installations": 2
- },
- {
- "accountAddress": "0x6d1e783cdf6ace3911f0636a0da8fc754f40d2a0",
- "walletKey": "0x490532939769871708d88361a30c9692cf93d295ee4675d811c3f769dbf9f6cd",
- "dbEncryptionKey": "a2d0b53c15a0510876ad8ed7b293d27b84a1c6598089501671413422fd996ee7",
- "inboxId": "3fb2bd5eba04cca94dfca94c4808fa28c460c968f0f429239471e9ec61788bf6",
- "installations": 2
- },
- {
- "accountAddress": "0x247cb2c71fa99b83c12249c9f10e633e8061c844",
- "walletKey": "0x9769717503133efaac9490c0b224677f37416b194b05f57eaf93e9c5653662bb",
- "dbEncryptionKey": "5980672791d5fa6689a28515b4823388f72d2d2698daeba7c3683a153f98eae5",
- "inboxId": "4e408ab5d41a1e037b219f1f90d2dc7e8bb622d1c8814e0e90d9764b70a65f06",
- "installations": 2
- },
- {
- "accountAddress": "0xd3d866dfa9b042eabe4a425372f7232e34db8c2a",
- "walletKey": "0xd51bc97ba5d19c599a1b88c3776e5bd7bb7fff85393b766614673081ac6e5cc2",
- "dbEncryptionKey": "5ad31fee0b90dc1f1699875f5d2d582d1c84cc06dc7a00d112d4a4f3a5315d27",
- "inboxId": "238020693a8345d228661d75141cea79365244113b0b8d9aae7feef0b7bcf54d",
- "installations": 2
- },
- {
- "accountAddress": "0x4027436f1e51ec2137dda7dd631c9b9c668763a9",
- "walletKey": "0x1dcbcbba68daa3523badd92326791526a7cc0911a355325952ce61b5a6ed709d",
- "dbEncryptionKey": "a29d17c342ea5ac699d5b6fb7f7bcc993fc94e8bba787d1f08f1714259c7bb97",
- "inboxId": "0e1d117374db64f8a4f2d7434423252d5b0540460671ad1038c3398540f85e18",
- "installations": 2
- },
- {
- "accountAddress": "0x23770c53c591fccce46cf71980a44acb807bcad1",
- "walletKey": "0x07170158380f16675b520309cdfbf197aba1aa6772a804a2cd21f7c6ceb457d8",
- "dbEncryptionKey": "016b37ea074f3e0264bfd6ec7eef47608051b381b6474d51841c430b9a24452b",
- "inboxId": "bfaa081865c614d7a2b6d6b13138b709f008c2acf03e039964971865656daf2b",
- "installations": 2
- },
- {
- "accountAddress": "0xf1d587292f6521181fd992f6fd6739809b798967",
- "walletKey": "0x505d70385f45ebc7ae832c4710b2c90e945b20e92f7662d8d791c34f6cc63045",
- "dbEncryptionKey": "36d568ebe900d9a8566de0afa72506bedfb41227492a731c15ebf10810fcfabf",
- "inboxId": "aa7d846944dcd99f4601e6b030f33c01d35dc164f1351c06b7666d49747f5155",
- "installations": 2
- },
- {
- "accountAddress": "0x4734d6e1f22b0aff38586afebc345107b1338cf4",
- "walletKey": "0xb9f26f964fbf3653a8127a7a7fda8215da13d243451268a8b64516a915d86760",
- "dbEncryptionKey": "2ec65e8d577d93b612d691e3f56d6807b8765a18e85151f24aa1dbbcf944b5a0",
- "inboxId": "0dfe318f136158a3292cd6f34e2fd14dd1a6fe6150d9d15746c6ea4536986515",
- "installations": 2
- },
- {
- "accountAddress": "0x2272ef2761c64026ce063d4c45eb4a23cdd1f84b",
- "walletKey": "0x2468de6454890227c3441065460f296f5a93249d2424031603867c7e2ccabd60",
- "dbEncryptionKey": "d3066f8e9e54b2c0990cd83b23f1079c14c68905a43dd34e94197f10733dc1e0",
- "inboxId": "36fe01ac97428a6bc855af0b6c08430a2b56f51e47d250484cfe1bcb61612130",
- "installations": 2
- },
- {
- "accountAddress": "0x9b04edcadfc252a61edde8e426458ef52314a8df",
- "walletKey": "0x2a806f248a5021910a3d350edf15dfb4bd0783df29b61767f7e23577f9bff296",
- "dbEncryptionKey": "c5d09c243aacc575744feb8992f9ef7779951870291c8fc6807b0477509ba023",
- "inboxId": "a4bc20bed71360801de893d8b426f337afd765b1275dc53a9b3fd3f342818842",
- "installations": 2
- },
- {
- "accountAddress": "0x7df1f78e6ffac44b85ac190ea962953e51c279e6",
- "walletKey": "0xa0fc8029e0e1b8beedf07ffbcbd82d2f9f7b9be8d21a27bd7e8c4c88bcad1499",
- "dbEncryptionKey": "066ad88a53aaf59182702b06459c14b5fda2474252d41b58297c141a4e95626b",
- "inboxId": "8f79171efe2690530f17dee2be9a94f436f846a77415cf43820e7a1b1e5b4df4",
- "installations": 2
- },
- {
- "accountAddress": "0xa9ef8af50a53e33956151eaceee7b6b31188334f",
- "walletKey": "0x40e3ac8a81498ce4bd87008dde740333659f47c50ab86ee3b218d0015891786c",
- "dbEncryptionKey": "6b14b46581c8283f3108a5db0c2a1b855704b67d0f904e8a7ba797c0a67ebe46",
- "inboxId": "cfdf96b58662357595590097ca8b02be4099eec2f71b4f6a7430fa15ffdbee79",
- "installations": 2
- },
- {
- "accountAddress": "0x3ba250cac1db71ba68ae361112c2d165ca56884f",
- "walletKey": "0x01c7ce68a9dc342856d9805342cd4086d1b705adb373a65c9bede03fc1897e0f",
- "dbEncryptionKey": "e7bb11b7fe75e77914c02fcba8d64da0e24c57c49854962a9f366aab9128f415",
- "inboxId": "39c8f8af7753355607d71f4adc32560f992774b70ea98e647ee0ed84f4cacf97",
- "installations": 2
- },
- {
- "accountAddress": "0x1c102ff901e60c1201177411bac8c5a003568bf8",
- "walletKey": "0x50ea965f96c9bb668668fa8ca14968ba50620e62b66e91da5ca28738a310394b",
- "dbEncryptionKey": "9838c3b8d06d2c9b98d8ed57ac2ead37f70b8bb18fc6f15d22019442494fc188",
- "inboxId": "1dd23df66fa83a98556e2bcc0942ee1fe757d3a872b11fd6f0a984ae810f153f",
- "installations": 2
- },
- {
- "accountAddress": "0xfd1b8a0a8f3b61e47f40345c37d9cbd79cf9dccd",
- "walletKey": "0x13d0d5332a0e1a406d66b0c2556358ed15f76f8ab7b6eb61a732e8690e6ffad8",
- "dbEncryptionKey": "bfd1fed7fcce5ea2ca947d1c461f9e1f92c5e32ccebcdebace6edde9ebc9701c",
- "inboxId": "7d361d75343cb421492e939c683c9dad9921914cbf77a08eaaf263449d3dfbda",
- "installations": 2
- },
- {
- "accountAddress": "0x3e14a658461db5b77bcfd1632a4cdb00d1777624",
- "walletKey": "0x1072655b2c8a40c4a76f92b64aff37ab65634172962291edc94f391948d7a0a0",
- "dbEncryptionKey": "747ef3e4ed1df9b95bba2ca45c856ae828a3b17ef2c903ac863205d0b64a434f",
- "inboxId": "d8e582053edf2a98af37081f24d90f27e5acfa4a4eceb897b8d69e0a6d8900ea",
- "installations": 2
- }
-]
diff --git a/data/users.json b/data/users.json
deleted file mode 100644
index e47a726..0000000
--- a/data/users.json
+++ /dev/null
@@ -1,39 +0,0 @@
-[
- {
- "app": "fabri-convos-desktop",
- "inboxId": "3a54da678a547ea3012b55734d22eb5682c74da1747a31f907d36afe20e5b8f9",
- "address": "0x62bd2ac2e5a9728b764775cfc88836519efc93b7",
- "network": "production",
- "name": "prod-testing"
- },
- {
- "app": "fabri-tba",
- "inboxId": "7e5d2a57b752d7b0a29807929c09b416f64ec0878204b87ab6a32c0b47729f27",
- "network": "production",
- "name": "prod-testing"
- },
- {
- "app": "fabri-xmtpchat",
- "inboxId": "2ac60b0589a33b1ba027aebc1f3c193a61cc3f3893d31e1b3ed5c56d561c1771",
- "network": "local",
- "name": "local-testing"
- },
- {
- "app": "fabri-convos",
- "inboxId": "68afe2066b84b48e0b09c2b78be7324a4fb66a973bb0def478ea390312e759b5",
- "network": "production",
- "name": "prod-"
- },
- {
- "app": "fabri-convos-oneoff",
- "inboxId": "c2982d604ab4a3b21949893060e430388c1219f33124aa214eb44d727b4b70d6",
- "network": "production",
- "name": "prod-testing"
- },
- {
- "app": "fabri-convos-dev",
- "inboxId": "0fb3a0a9eaa2d8ef25a4b05c2154c1dbdb3324fe873c8ee25d89b7126d57e880",
- "network": "dev",
- "name": "dev-oneoff"
- }
-]
diff --git a/package.json b/package.json
index c7e086d..7a12bb5 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,13 @@
"description": "XMTP Copilot - CLI commands and Slack bot integration for XMTP protocol testing and management",
"type": "module",
"scripts": {
- "dev": "tsx src/cli.tsx"
+ "dev": "tsx src/cli.tsx",
+ "start": "tsx src/cli.tsx",
+ "chat": "tsx src/cli.tsx",
+ "build": "tsc --project config/tsconfig.json",
+ "lint": "eslint src --config config/eslint.config.js",
+ "format": "prettier --write 'src/**/*.{ts,tsx}'",
+ "type-check": "tsc --noEmit"
},
"dependencies": {
"@anthropic-ai/claude-code": "latest",
@@ -17,8 +23,10 @@
"@xmtp/content-type-wallet-send-calls": "^2.0.0",
"dotenv": "^17.2.3",
"ink": "^6.3.1",
+ "ink-box": "^2.0.0",
"ink-text-input": "^6.0.0",
- "react": "^19.2.0"
+ "react": "^19.2.0",
+ "zustand": "^5.0.8"
},
"devDependencies": {
"@eslint/compat": "^1.2.6",
diff --git a/screenshot.png b/screenshot.png
index a3f7651..43683da 100644
Binary files a/screenshot.png and b/screenshot.png differ
diff --git a/src/cli-old.tsx b/src/cli-old.tsx
new file mode 100644
index 0000000..ea119d8
--- /dev/null
+++ b/src/cli-old.tsx
@@ -0,0 +1,910 @@
+import "dotenv/config";
+import React, { useState, useEffect, useRef } from "react";
+import { render, Box, Text, useApp } from "ink";
+import TextInput from "ink-text-input";
+import {
+ Agent,
+ IdentifierKind,
+ type Conversation,
+ type DecodedMessage,
+ type XmtpEnv,
+ type Group,
+ type Dm,
+} from "@xmtp/agent-sdk";
+import { getRandomValues } from "node:crypto";
+import { Client } from "@xmtp/node-sdk";
+import { getTestUrl } from "@xmtp/agent-sdk/debug";
+import { createSigner, createUser } from "@xmtp/agent-sdk/user";
+import { generatePrivateKey, privateKeyToAddress } from "viem/accounts";
+import { fromString, toString } from "uint8arrays";
+
+function showHelp(): void {
+ console.log(`
+XMTP CLI Chat Interface
+
+Chat with your XMTP conversations directly from the terminal.
+
+USAGE:
+ yarn chat [options]
+
+OPTIONS:
+ --agent Connect to agent(s) by Ethereum address or inbox ID
+ Single address: creates/opens a DM
+ Multiple addresses: creates a group chat
+ [auto-detected in dev environment if not provided]
+ -h, --help Show this help message
+
+IN-CHAT COMMANDS:
+ /c Switch to a different conversation
+ /b Return to conversation list
+ /exit Quit the application
+
+EXAMPLES:
+ yarn chat
+ yarn chat --agent 0x7c40611372d354799d138542e77243c284e460b2
+ yarn chat --agent 0x7c40611372d354799d138542e77243c284e460b2 0x1234567890abcdef1234567890abcdef12345678
+ yarn chat --agent 1180478fde9f6dfd4559c25f99f1a3f1505e1ad36b9c3a4dd3d5afb68c419179
+
+ENVIRONMENT VARIABLES:
+ XMTP_ENV Default environment
+ XMTP_CLIENT_WALLET_KEY Wallet private key (required)
+ XMTP_CLIENT_DB_ENCRYPTION_KEY Database encryption key (required)
+`);
+}
+
+// Red color - matching the original theme (rgb: 252, 76, 52)
+const RED = "#fc4c34";
+// Standard red for errors
+const ERROR_RED = "#fc4c34";
+
+// ============================================================================
+// Types
+// ============================================================================
+interface FormattedMessage {
+ timestamp: string;
+ sender: string;
+ content: string;
+ isFromSelf: boolean;
+}
+
+// ============================================================================
+// Utility Functions
+// ============================================================================
+const isGroup = (conversation: Conversation): conversation is Group => {
+ return conversation.constructor.name === "Group";
+};
+
+const isDm = (conversation: Conversation): conversation is Dm => {
+ return conversation.constructor.name === "Dm";
+};
+
+const isEthAddress = (identifier: string): boolean => {
+ return identifier.startsWith("0x") && identifier.length === 42;
+};
+
+const handleError = (
+ error: unknown,
+ setError: (msg: string) => void,
+ context: string,
+ clearAfter?: number,
+): void => {
+ const err = error as Error;
+ setError(`${context}: ${err.message}`);
+
+ // Auto-clear error after specified time (default 5 seconds)
+ if (clearAfter) {
+ setTimeout(() => {
+ setError("");
+ }, clearAfter);
+ }
+};
+
+// ============================================================================
+// Reusable UI Components
+// ============================================================================
+interface StatusBoxProps {
+ children: React.ReactNode;
+ color?: string;
+ borderColor?: string;
+}
+
+const StatusBox: React.FC = ({
+ children,
+ color = ERROR_RED,
+ borderColor = ERROR_RED,
+}) => (
+
+
+ {children}
+
+
+);
+
+interface InfoTextProps {
+ children: React.ReactNode;
+ marginTop?: number;
+}
+
+const InfoText: React.FC = ({ children, marginTop = 1 }) => (
+
+ {children}
+
+);
+
+// ============================================================================
+// Header Component
+// ============================================================================
+interface HeaderProps {
+ conversation: Conversation | null;
+ env: XmtpEnv;
+ url: string;
+ conversations: number;
+ installations: number;
+ address: string;
+ inboxId: string;
+ peerAddress: string;
+}
+
+const Header: React.FC = ({
+ conversation,
+ conversations,
+ env,
+ url,
+ installations,
+ address,
+ inboxId,
+ peerAddress,
+}) => {
+ const logoLines = [
+ " ██╗ ██╗███╗ ███╗████████╗██████╗ ",
+ " ╚██╗██╔╝████╗ ████║╚══██╔══╝██╔══██╗",
+ " ╚███╔╝ ██╔████╔██║ ██║ ██████╔╝",
+ " ██╔██╗ ██║╚██╔╝██║ ██║ ██╔═══╝ ",
+ " ██╔╝ ██╗██║ ╚═╝ ██║ ██║ ██║ ",
+ " ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ",
+ ];
+
+ if (!conversation) {
+ // Show initialization header
+ return (
+
+
+
+ {logoLines.map((line, i) => (
+
+ {line}
+
+ ))}
+
+
+
+ InboxId: {inboxId.slice(0, 36)}...
+
+
+ Address: {address}
+
+
+ Conversations: {conversations}
+
+
+ Installations: {installations}
+
+
+ Network: {env}
+
+
+ URL: {url.slice(0, 30)}...
+
+
+
+
+ );
+ }
+
+ return (
+
+
+ {isGroup(conversation) ? (
+
+ {" "}
+ GROUP: {conversation.name || "Unnamed Group"}{" "}
+
+ ) : (
+
+ {" "}
+ DM:{" "}
+ {peerAddress ||
+ (conversation as Dm).peerInboxId.slice(0, 16) + "..."}{" "}
+
+ )}
+
+ Commands: /c <number> • /b • /exit
+
+ );
+};
+
+// ============================================================================
+// Messages Component
+// ============================================================================
+interface MessagesProps {
+ messages: FormattedMessage[];
+ height: number;
+}
+
+const Messages: React.FC = ({ messages, height }) => {
+ // Show last N messages that fit in the height
+ const visibleMessages = messages.slice(-height);
+
+ // Helper function to format long text with proper indentation
+ const formatLongText = (text: string, prefix: string) => {
+ const lines = text.split("\n");
+ if (lines.length === 1) {
+ return text;
+ }
+
+ // For multi-line content, indent continuation lines
+ return lines
+ .map((line, index) => {
+ if (index === 0) return line;
+ // Add indentation to match the prefix length
+ const indent = " ".repeat(prefix.length);
+ return `${indent}${line}`;
+ })
+ .join("\n");
+ };
+
+ return (
+
+ {visibleMessages.length === 0 ? (
+ No messages yet...
+ ) : (
+ visibleMessages.map((msg, index) => {
+ const prefix = `[${msg.timestamp}] ${msg.sender}: `;
+ const formattedContent = formatLongText(msg.content, prefix);
+
+ return (
+
+
+ [{msg.timestamp}]
+
+ {msg.sender}:
+
+ {formattedContent}
+
+
+ );
+ })
+ )}
+
+ );
+};
+
+// ============================================================================
+// Input Component
+// ============================================================================
+interface InputBoxProps {
+ value: string;
+ onChange: (value: string) => void;
+ onSubmit: (value: string) => void;
+ placeholder?: string;
+}
+
+const InputBox: React.FC = ({
+ value,
+ onChange,
+ onSubmit,
+ placeholder = "Send a message to the agent",
+}) => {
+ return (
+
+
+
+
+
+ );
+};
+
+// ============================================================================
+// Conversation List Component
+// ============================================================================
+interface ConversationListProps {
+ conversations: Conversation[];
+ currentConversationId: string | null;
+}
+const getEthereumAddress = async (
+ conversation: Conversation,
+): Promise => {
+ const members = await conversation.members();
+
+ for (const member of members) {
+ // Get Ethereum address
+ const ethIdentifier = member.accountIdentifiers.find(
+ (id) => id.identifierKind === IdentifierKind.Ethereum,
+ );
+
+ if (ethIdentifier) {
+ return ethIdentifier.identifier;
+ }
+ }
+ return null;
+};
+const ConversationList: React.FC = ({
+ conversations,
+ currentConversationId,
+}) => {
+ const [addressMap, setAddressMap] = React.useState>(
+ {},
+ );
+ const [loading, setLoading] = React.useState(true);
+
+ React.useEffect(() => {
+ const loadAddresses = async () => {
+ const newAddressMap: Record = {};
+
+ for (const conv of conversations) {
+ if (!isGroup(conv)) {
+ const address = await getEthereumAddress(conv);
+ if (address) {
+ newAddressMap[conv.id] = address;
+ }
+ }
+ }
+
+ setAddressMap(newAddressMap);
+ setLoading(false);
+ };
+
+ loadAddresses();
+ }, [conversations]);
+
+ return (
+
+ Your conversations
+
+ {conversations.length === 0 ? (
+ No conversations found
+ ) : loading ? (
+ Loading conversations...
+ ) : (
+ conversations.map((conv, index) => {
+ const isCurrent = conv.id === currentConversationId;
+ const label = isCurrent ? "●" : " ";
+
+ if (isGroup(conv)) {
+ return (
+
+ {label}
+ {index + 1}.
+ [GROUP]
+ {conv.name || "Unnamed"}
+
+ );
+ } else {
+ const peerShort = addressMap[conv.id];
+ if (peerShort) {
+ return (
+
+ {label}
+ {index + 1}.
+ [DM]
+ {peerShort}
+
+ );
+ }
+ }
+ })
+ )}
+
+
+ Use /c <number> to switch conversations
+
+
+ );
+};
+
+// ============================================================================
+// Main App Component
+// ============================================================================
+interface AppProps {
+ env: XmtpEnv;
+ agentIdentifiers?: string[];
+}
+
+const App: React.FC = ({ env, agentIdentifiers }) => {
+ const { exit } = useApp();
+ const [agent, setAgent] = useState(null);
+ const [address, setAddress] = useState("");
+ const [url, setUrl] = useState("");
+ const [installations, setInstallations] = useState(0);
+ const [inboxId, setInboxId] = useState("");
+ const [currentConversation, setCurrentConversation] =
+ useState(null);
+ const [messages, setMessages] = useState([]);
+ const [inputValue, setInputValue] = useState("");
+ const [conversations, setConversations] = useState([]);
+ const [showConversationList, setShowConversationList] = useState(false);
+ const [error, setError] = useState("");
+ const [errorTimeout, setErrorTimeout] = useState(null);
+ const [loadingStatus, setLoadingStatus] = useState(
+ "Initializing XMTP cli client...",
+ );
+ const [peerAddress, setPeerAddress] = useState("");
+
+ // Function to set error with auto-clear
+ const setErrorWithTimeout = (message: string, timeoutMs = 5000) => {
+ setError(message);
+ if (errorTimeout) {
+ clearTimeout(errorTimeout);
+ }
+ const timeout = setTimeout(() => {
+ setError("");
+ setErrorTimeout(null);
+ }, timeoutMs);
+ setErrorTimeout(timeout);
+ };
+ const streamRef = useRef | null>(null);
+ const isStreamingRef = useRef(false);
+
+ // Initialize agent
+ useEffect(() => {
+ const initAgent = async () => {
+ setLoadingStatus("Initializing XMTP cli client...");
+
+ let walletKey = process.env.XMTP_CLIENT_WALLET_KEY;
+ let dbEncryptionKey = process.env.XMTP_CLIENT_DB_ENCRYPTION_KEY;
+
+ if (!walletKey || !dbEncryptionKey) {
+ walletKey = generatePrivateKey();
+ dbEncryptionKey = toString(getRandomValues(new Uint8Array(32)), "hex");
+ }
+
+ const user = createUser(walletKey as `0x${string}`);
+ const signer = createSigner(user);
+
+ // Convert hex string to Uint8Array for dbEncryptionKey
+ const encryptionKeyBytes = fromString(dbEncryptionKey, "hex");
+
+ const newAgent = await Agent.create(signer, {
+ env,
+ dbEncryptionKey: encryptionKeyBytes,
+ dbPath: (inboxId) => "." + `/cli-${env}-${inboxId.slice(0, 8)}.db3`,
+ });
+
+ setAgent(newAgent);
+ setAddress(newAgent.address || "");
+ setInboxId(newAgent.client.inboxId);
+ setUrl(getTestUrl(newAgent.client) || "");
+
+ const finalInboxState = await Client.inboxStateFromInboxIds(
+ [newAgent.client.inboxId],
+ env,
+ );
+ setInstallations(finalInboxState[0].installations.length);
+
+ setLoadingStatus("Syncing conversations...");
+ // Sync conversations
+ await newAgent.client.conversations.sync();
+ const convList = await newAgent.client.conversations.list();
+ setConversations(convList);
+
+ // If agent identifiers provided, create/find conversation
+ if (agentIdentifiers && agentIdentifiers.length > 0) {
+ setLoadingStatus("Connecting to agent...");
+ const conv = await findOrCreateConversation(newAgent, agentIdentifiers);
+ if (conv) {
+ setLoadingStatus("Loading messages...");
+ setCurrentConversation(conv);
+
+ // Fetch peer address for DMs
+ if (!isGroup(conv)) {
+ const address = await getEthereumAddress(conv);
+ setPeerAddress(address || "");
+ } else {
+ setPeerAddress("");
+ }
+
+ await loadMessages(conv, newAgent);
+ await startMessageStream(conv, newAgent);
+ }
+ }
+
+ setLoadingStatus("");
+ };
+
+ initAgent().catch((err) => {
+ handleError(err, setError, "Failed to initialize");
+ setLoadingStatus("");
+ });
+ }, []);
+
+ // Find or create conversation
+ const findOrCreateConversation = async (
+ agentInstance: Agent,
+ identifiers: string[],
+ ): Promise => {
+ const client = agentInstance.client;
+ const groupOptions = {
+ groupName: "CLI Group Chat",
+ groupDescription: "Group created from CLI",
+ };
+
+ try {
+ if (identifiers.length > 1) {
+ // Create group
+ const allEthAddresses = identifiers.every(isEthAddress);
+
+ if (allEthAddresses) {
+ const memberIdentifiers = identifiers.map((id) => ({
+ identifier: id,
+ identifierKind: IdentifierKind.Ethereum,
+ }));
+ return await client.conversations.newGroupWithIdentifiers(
+ memberIdentifiers,
+ groupOptions,
+ );
+ }
+
+ return await client.conversations.newGroup(identifiers, groupOptions);
+ }
+
+ // Create/find DM
+ const identifier = identifiers[0];
+
+ // Try to find existing conversation
+ await client.conversations.sync();
+ const convs = await client.conversations.list();
+
+ for (const conv of convs) {
+ if (!isDm(conv)) continue;
+
+ if (conv.peerInboxId.toLowerCase() === identifier.toLowerCase()) {
+ return conv;
+ }
+
+ if (isEthAddress(identifier)) {
+ const members = await conv.members();
+ const foundMember = members.find((member) => {
+ const ethId = member.accountIdentifiers.find(
+ (id) => id.identifierKind === IdentifierKind.Ethereum,
+ );
+ return ethId?.identifier.toLowerCase() === identifier.toLowerCase();
+ });
+
+ if (foundMember) return conv;
+ }
+ }
+
+ // Create new DM
+ return isEthAddress(identifier)
+ ? await client.conversations.newDmWithIdentifier({
+ identifier,
+ identifierKind: IdentifierKind.Ethereum,
+ })
+ : await client.conversations.newDm(identifier);
+ } catch (err: unknown) {
+ handleError(err, setError, "Failed to create conversation");
+ return null;
+ }
+ };
+
+ // Load messages
+ const loadMessages = async (conv: Conversation, agentInstance: Agent) => {
+ await conv.sync();
+ const msgs = await conv.messages();
+ const formatted = msgs
+ .slice(-50)
+ .map((msg) => formatMessage(msg, agentInstance));
+ setMessages(formatted);
+ };
+
+ // Format message
+ const formatMessage = (
+ message: DecodedMessage,
+ agentInstance: Agent,
+ ): FormattedMessage => {
+ const timestamp = message.sentAt.toLocaleTimeString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ });
+
+ const isFromSelf = message.senderInboxId === agentInstance.client.inboxId;
+ const sender = isFromSelf
+ ? "You"
+ : agentInstance.address?.slice(0, 4) +
+ "..." +
+ agentInstance.address?.slice(-4);
+
+ let content: string;
+ if (typeof message.content === "string") {
+ content = message.content;
+ } else {
+ // Try to format JSON nicely, fallback to compact if it fails
+ try {
+ content = JSON.stringify(message.content, null, 2);
+ } catch {
+ content = JSON.stringify(message.content);
+ }
+ }
+
+ return { timestamp, sender, content, isFromSelf };
+ };
+
+ // Start message stream
+ const startMessageStream = async (
+ conv: Conversation,
+ agentInstance: Agent,
+ ) => {
+ if (isStreamingRef.current) return;
+
+ isStreamingRef.current = true;
+ const client = agentInstance.client;
+
+ try {
+ streamRef.current = await client.conversations.streamAllMessages();
+
+ (async () => {
+ if (!streamRef.current) return;
+
+ for await (const message of streamRef.current) {
+ if (message.conversationId !== conv.id) continue;
+
+ const formatted = formatMessage(message, agentInstance);
+ setMessages((prev) => [...prev, formatted]);
+ }
+ })().catch((err) => {
+ handleError(err, setError, "Stream error");
+ isStreamingRef.current = false;
+ });
+ } catch (err: unknown) {
+ handleError(err, setError, "Failed to start stream");
+ isStreamingRef.current = false;
+ }
+ };
+
+ // Command handlers
+ const commands = {
+ "/exit": () => exit(),
+ "/b": () => {
+ setCurrentConversation(null);
+ setPeerAddress("");
+ setMessages([]);
+ setShowConversationList(false);
+ }
+ };
+
+ const handleChatCommand = async (message: string) => {
+ const parts = message.split(" ");
+ if (parts.length !== 2) {
+ setErrorWithTimeout("Usage: /chat ");
+ return;
+ }
+
+ const index = parseInt(parts[1]) - 1;
+ if (isNaN(index) || index < 0 || index >= conversations.length) {
+ setErrorWithTimeout("Invalid conversation number");
+ return;
+ }
+
+ const newConv = conversations[index];
+ setCurrentConversation(newConv);
+ setShowConversationList(false);
+
+ // Fetch peer address for DMs
+ if (!isGroup(newConv)) {
+ const address = await getEthereumAddress(newConv);
+ setPeerAddress(address || "");
+ } else {
+ setPeerAddress("");
+ }
+
+ if (agent) {
+ await loadMessages(newConv, agent);
+ await startMessageStream(newConv, agent);
+ }
+ };
+
+ // Handle input submit
+ const handleSubmit = async (value: string) => {
+ if (!value.trim()) return;
+
+ const message = value.trim();
+ setInputValue("");
+
+ // Handle direct commands
+ if (commands[message as keyof typeof commands]) {
+ commands[message as keyof typeof commands]();
+ return;
+ }
+
+ // Handle /chat command
+ if (message.startsWith("/chat ")) {
+ await handleChatCommand(message);
+ return;
+ }
+
+ // If not in a conversation, try to connect to agent address
+ if (!currentConversation) {
+ if (agent) {
+ try {
+ const conv = await findOrCreateConversation(agent, [message]);
+ if (conv) {
+ setCurrentConversation(conv);
+
+ // Fetch peer address for DMs
+ if (!isGroup(conv)) {
+ const address = await getEthereumAddress(conv);
+ setPeerAddress(address || "");
+ } else {
+ setPeerAddress("");
+ }
+
+ await loadMessages(conv, agent);
+ await startMessageStream(conv, agent);
+ return;
+ }
+ } catch (err: unknown) {
+ handleError(err, setError, "Failed to connect to agent");
+ return;
+ }
+ }
+ setErrorWithTimeout(
+ "No active conversation. Use /b to see available chats or /c to select one.",
+ );
+ return;
+ }
+
+ // Send message
+ if (!agent) {
+ setErrorWithTimeout("Agent not initialized");
+ return;
+ }
+
+ try {
+ await currentConversation.send(message);
+ } catch (err: unknown) {
+ handleError(err, setError, "Failed to send");
+ }
+ };
+
+ // Show loading state
+ if (!agent || loadingStatus) {
+ return (
+
+
+
+ 🔄 {loadingStatus}
+
+
+ {agent && (
+
+ ✓ Agent initialized
+
+ Address: {address.slice(0, 10)}...{address.slice(-8)}
+
+
+ )}
+
+ );
+ }
+
+ return (
+
+
+
+ {/* Show error inline if present */}
+ {error && (
+
+
+ Error: {error}
+
+
+ )}
+
+ {showConversationList && (
+
+ )}
+
+ {currentConversation && }
+
+
+
+ {!currentConversation && conversations.length > 0 && (
+
+ Available commands: /b, /c <n>, /exit
+
+ )}
+
+ );
+};
+
+// ============================================================================
+// CLI Entry Point
+// ============================================================================
+function parseArgs(): { env: XmtpEnv; help: boolean; agents?: string[] } {
+ const args = process.argv.slice(2);
+ const env = (process.env.XMTP_ENV as XmtpEnv) || "production";
+ let help = false;
+ const agents: string[] = [];
+
+ for (let i = 0; i < args.length; i++) {
+ const arg = args[i];
+ const nextArg = args[i + 1];
+
+ if (arg === "--help" || arg === "-h") {
+ help = true;
+ } else if (arg === "--agent" && nextArg) {
+ i++;
+ while (i < args.length && !args[i].startsWith("--")) {
+ agents.push(args[i]);
+ i++;
+ }
+ i--;
+ }
+ }
+
+ // Auto-detect agent address if not provided and we're in dev environment
+ if (agents.length === 0 && env === "dev") {
+ // Try to get agent address from environment or use the known dev agent address
+ const autoAgentAddressKey = process.env.XMTP_WALLET_KEY || "";
+ const autoAgentAddress = privateKeyToAddress(
+ autoAgentAddressKey as `0x${string}`,
+ );
+ if (autoAgentAddress) {
+ agents.push(autoAgentAddress);
+ }
+ console.log(`🔗 Auto-connecting to agent: ${autoAgentAddress}`);
+ }
+
+ return { env, help, agents: agents.length > 0 ? agents : undefined };
+}
+
+async function main(): Promise {
+ const { env, help, agents } = parseArgs();
+
+ if (help) {
+ showHelp();
+ process.exit(0);
+ }
+ // Create a mutable array of agent identifiers
+ const agentIdentifiers = agents ? [...agents] : [];
+
+ // If no agents specified, use the agent from XMTP_WALLET_KEY
+ if (agentIdentifiers.length === 0) {
+ const walletKey = process.env.XMTP_WALLET_KEY || "";
+ if (walletKey) {
+ const publicKey = privateKeyToAddress(walletKey as `0x${string}`);
+ agentIdentifiers.push(publicKey);
+ }
+ }
+
+ render();
+}
+
+void main();
diff --git a/src/cli.tsx b/src/cli.tsx
index d93b770..f8e0aa2 100644
--- a/src/cli.tsx
+++ b/src/cli.tsx
@@ -1,414 +1,65 @@
import "dotenv/config";
-import React, { useState, useEffect, useRef } from "react";
-import { render, Box, Text, useApp } from "ink";
-import TextInput from "ink-text-input";
-import {
- Agent,
- IdentifierKind,
- type Conversation,
- type DecodedMessage,
- type XmtpEnv,
- type Group,
- type Dm,
-} from "@xmtp/agent-sdk";
-import { getRandomValues } from "node:crypto";
-import { Client } from "@xmtp/node-sdk";
-import { getTestUrl } from "@xmtp/agent-sdk/debug";
-import { createSigner, createUser } from "@xmtp/agent-sdk/user";
-import { generatePrivateKey, privateKeyToAddress } from "viem/accounts";
-import { fromString, toString } from "uint8arrays";
+import React, { useState, useEffect } from "react";
+import { render, Box, Text, useApp, useInput } from "ink";
+import type { XmtpEnv } from "@xmtp/agent-sdk";
+import { privateKeyToAddress } from "viem/accounts";
+import { Layout } from "./components/Layout.js";
+import type { Command } from "./components/CommandPalette.js";
+import { CommandSuggestion } from "./components/CommandSuggestions.js";
+import { useXMTP } from "./hooks/useXMTP.js";
+import { useKeyboard } from "./hooks/useKeyboard.js";
+import { useStore } from "./store/state.js";
+const RED = "#fc4c34";
+
+// ============================================================================
+// Help Display
+// ============================================================================
function showHelp(): void {
console.log(`
-XMTP CLI Chat Interface
+XMTP CLI Chat Interface v2.0
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Chat with your XMTP conversations directly from the terminal.
USAGE:
- yarn chat [options]
+ yarn dev [options]
OPTIONS:
--agent Connect to agent(s) by Ethereum address or inbox ID
Single address: creates/opens a DM
Multiple addresses: creates a group chat
- [auto-detected in dev environment if not provided]
-h, --help Show this help message
-IN-CHAT COMMANDS:
- /list List all your conversations with numbers
- /chat Switch to a different conversation
- /back Return to conversation list
- /exit Quit the application
+KEYBINDINGS:
+ Cmd+B (macOS) / Ctrl+B Toggle sidebar
+ Cmd+K (macOS) / Ctrl+K Open command palette
+ Ctrl+N/P Next/previous conversation
+ ↑↓ Navigate conversations
+ Enter Open selected conversation / Send message
+ Esc Go back to main screen / Cancel input
+ Ctrl+C Quit
+
+COMMANDS:
+ /back Return to main conversation list
+ /list Toggle sidebar visibility
+ /chat Switch to conversation number
+ /new Create new conversation with address
+ /refresh Refresh inbox and update conversations
+ /exit, /quit Exit application
EXAMPLES:
- yarn chat
- yarn chat --agent 0x7c40611372d354799d138542e77243c284e460b2
- yarn chat --agent 0x7c40611372d354799d138542e77243c284e460b2 0x1234567890abcdef1234567890abcdef12345678
- yarn chat --agent 1180478fde9f6dfd4559c25f99f1a3f1505e1ad36b9c3a4dd3d5afb68c419179
+ yarn dev
+ yarn dev --agent 0x7c40611372d354799d138542e77243c284e460b2
+ yarn dev --agent 0x... 0x... (creates group)
ENVIRONMENT VARIABLES:
- XMTP_ENV Default environment
- XMTP_CLIENT_WALLET_KEY Wallet private key (required)
- XMTP_CLIENT_DB_ENCRYPTION_KEY Database encryption key (required)
+ XMTP_ENV Default environment (dev/production)
+ XMTP_CLIENT_WALLET_KEY Wallet private key
+ XMTP_CLIENT_DB_ENCRYPTION_KEY Database encryption key
`);
}
-// Red color - matching the original theme (rgb: 252, 76, 52)
-const RED = "#fc4c34";
-// Standard red for errors
-const ERROR_RED = "#fc4c34";
-
-// ============================================================================
-// Types
-// ============================================================================
-interface FormattedMessage {
- timestamp: string;
- sender: string;
- content: string;
- isFromSelf: boolean;
-}
-
-// ============================================================================
-// Utility Functions
-// ============================================================================
-const isGroup = (conversation: Conversation): conversation is Group => {
- return conversation.constructor.name === "Group";
-};
-
-const isDm = (conversation: Conversation): conversation is Dm => {
- return conversation.constructor.name === "Dm";
-};
-
-const isEthAddress = (identifier: string): boolean => {
- return identifier.startsWith("0x") && identifier.length === 42;
-};
-
-const handleError = (
- error: unknown,
- setError: (msg: string) => void,
- context: string,
- clearAfter?: number,
-): void => {
- const err = error as Error;
- setError(`${context}: ${err.message}`);
-
- // Auto-clear error after specified time (default 5 seconds)
- if (clearAfter) {
- setTimeout(() => {
- setError("");
- }, clearAfter);
- }
-};
-
-// ============================================================================
-// Reusable UI Components
-// ============================================================================
-interface StatusBoxProps {
- children: React.ReactNode;
- color?: string;
- borderColor?: string;
-}
-
-const StatusBox: React.FC = ({
- children,
- color = ERROR_RED,
- borderColor = ERROR_RED,
-}) => (
-
-
- {children}
-
-
-);
-
-interface InfoTextProps {
- children: React.ReactNode;
- marginTop?: number;
-}
-
-const InfoText: React.FC = ({ children, marginTop = 1 }) => (
-
- {children}
-
-);
-
-// ============================================================================
-// Header Component
-// ============================================================================
-interface HeaderProps {
- conversation: Conversation | null;
- env: XmtpEnv;
- url: string;
- conversations: number;
- installations: number;
- address: string;
- inboxId: string;
- peerAddress: string;
-}
-
-const Header: React.FC = ({
- conversation,
- conversations,
- env,
- url,
- installations,
- address,
- inboxId,
- peerAddress,
-}) => {
- const logoLines = [
- " ██╗ ██╗███╗ ███╗████████╗██████╗ ",
- " ╚██╗██╔╝████╗ ████║╚══██╔══╝██╔══██╗",
- " ╚███╔╝ ██╔████╔██║ ██║ ██████╔╝",
- " ██╔██╗ ██║╚██╔╝██║ ██║ ██╔═══╝ ",
- " ██╔╝ ██╗██║ ╚═╝ ██║ ██║ ██║ ",
- " ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ",
- ];
-
- if (!conversation) {
- // Show initialization header
- return (
-
-
-
- {logoLines.map((line, i) => (
-
- {line}
-
- ))}
-
-
-
- InboxId: {inboxId.slice(0, 36)}...
-
-
- Address: {address}
-
-
- Conversations: {conversations}
-
-
- Installations: {installations}
-
-
- Network: {env}
-
-
- URL: {url.slice(0, 30)}...
-
-
-
-
- );
- }
-
- return (
-
-
- {isGroup(conversation) ? (
-
- {" "}
- GROUP: {conversation.name || "Unnamed Group"}{" "}
-
- ) : (
-
- {" "}
- DM:{" "}
- {peerAddress ||
- (conversation as Dm).peerInboxId.slice(0, 16) + "..."}{" "}
-
- )}
-
- Commands: /list • /back • /exit
-
- );
-};
-
-// ============================================================================
-// Messages Component
-// ============================================================================
-interface MessagesProps {
- messages: FormattedMessage[];
- height: number;
-}
-
-const Messages: React.FC = ({ messages, height }) => {
- // Show last N messages that fit in the height
- const visibleMessages = messages.slice(-height);
-
- // Helper function to format long text with proper indentation
- const formatLongText = (text: string, prefix: string) => {
- const lines = text.split("\n");
- if (lines.length === 1) {
- return text;
- }
-
- // For multi-line content, indent continuation lines
- return lines
- .map((line, index) => {
- if (index === 0) return line;
- // Add indentation to match the prefix length
- const indent = " ".repeat(prefix.length);
- return `${indent}${line}`;
- })
- .join("\n");
- };
-
- return (
-
- {visibleMessages.length === 0 ? (
- No messages yet...
- ) : (
- visibleMessages.map((msg, index) => {
- const prefix = `[${msg.timestamp}] ${msg.sender}: `;
- const formattedContent = formatLongText(msg.content, prefix);
-
- return (
-
-
- [{msg.timestamp}]
-
- {msg.sender}:
-
- {formattedContent}
-
-
- );
- })
- )}
-
- );
-};
-
-// ============================================================================
-// Input Component
-// ============================================================================
-interface InputBoxProps {
- value: string;
- onChange: (value: string) => void;
- onSubmit: (value: string) => void;
- placeholder?: string;
-}
-
-const InputBox: React.FC = ({
- value,
- onChange,
- onSubmit,
- placeholder = "Send a message to the agent",
-}) => {
- return (
-
-
-
-
-
- );
-};
-
-// ============================================================================
-// Conversation List Component
-// ============================================================================
-interface ConversationListProps {
- conversations: Conversation[];
- currentConversationId: string | null;
-}
-const getEthereumAddress = async (
- conversation: Conversation,
-): Promise => {
- const members = await conversation.members();
-
- for (const member of members) {
- // Get Ethereum address
- const ethIdentifier = member.accountIdentifiers.find(
- (id) => id.identifierKind === IdentifierKind.Ethereum,
- );
-
- if (ethIdentifier) {
- return ethIdentifier.identifier;
- }
- }
- return null;
-};
-const ConversationList: React.FC = ({
- conversations,
- currentConversationId,
-}) => {
- const [addressMap, setAddressMap] = React.useState>(
- {},
- );
- const [loading, setLoading] = React.useState(true);
-
- React.useEffect(() => {
- const loadAddresses = async () => {
- const newAddressMap: Record = {};
-
- for (const conv of conversations) {
- if (!isGroup(conv)) {
- const address = await getEthereumAddress(conv);
- if (address) {
- newAddressMap[conv.id] = address;
- }
- }
- }
-
- setAddressMap(newAddressMap);
- setLoading(false);
- };
-
- loadAddresses();
- }, [conversations]);
-
- return (
-
- Your conversations
-
- {conversations.length === 0 ? (
- No conversations found
- ) : loading ? (
- Loading conversations...
- ) : (
- conversations.map((conv, index) => {
- const isCurrent = conv.id === currentConversationId;
- const label = isCurrent ? "●" : " ";
-
- if (isGroup(conv)) {
- return (
-
- {label}
- {index + 1}.
- [GROUP]
- {conv.name || "Unnamed"}
-
- );
- } else {
- const peerShort = addressMap[conv.id];
- if (peerShort) {
- return (
-
- {label}
- {index + 1}.
- [DM]
- {peerShort}
-
- );
- }
- }
- })
- )}
-
-
- Use /chat <number> to switch conversations
-
-
- );
-};
-
// ============================================================================
// Main App Component
// ============================================================================
@@ -419,368 +70,383 @@ interface AppProps {
const App: React.FC = ({ env, agentIdentifiers }) => {
const { exit } = useApp();
- const [agent, setAgent] = useState(null);
- const [address, setAddress] = useState("");
- const [url, setUrl] = useState("");
- const [installations, setInstallations] = useState(0);
- const [inboxId, setInboxId] = useState("");
- const [currentConversation, setCurrentConversation] =
- useState(null);
- const [messages, setMessages] = useState([]);
+
+ // Global state
+ const {
+ showSidebar,
+ showCommandPalette,
+ toggleCommandPalette,
+ setCommandMode,
+ selectedConversationIndex,
+ conversations: storeConversations,
+ setConversations,
+ statusMessage,
+ setStatusMessage,
+ } = useStore();
+
+ // Local state
const [inputValue, setInputValue] = useState("");
- const [conversations, setConversations] = useState([]);
- const [showConversationList, setShowConversationList] = useState(false);
- const [error, setError] = useState("");
+ const [error, setError] = useState("");
const [errorTimeout, setErrorTimeout] = useState(null);
- const [loadingStatus, setLoadingStatus] = useState(
- "Initializing XMTP cli client...",
- );
- const [peerAddress, setPeerAddress] = useState("");
+ const [isInputActive, setIsInputActive] = useState(false);
+
+ // Command suggestions state
+ const [showSuggestions, setShowSuggestions] = useState(false);
+ const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(0);
+
+
+ // Handle suggestion navigation
+ const handleSuggestionNavigation = (direction: 'up' | 'down') => {
+ if (!showSuggestions || suggestions.length === 0) return;
+
+ if (direction === 'up') {
+ setSelectedSuggestionIndex(prev =>
+ prev > 0 ? prev - 1 : suggestions.length - 1
+ );
+ } else {
+ setSelectedSuggestionIndex(prev =>
+ prev < suggestions.length - 1 ? prev + 1 : 0
+ );
+ }
+ };
+
+ // Handle suggestion selection
+ const handleSuggestionSelect = (suggestion: CommandSuggestion) => {
+ // Find the corresponding command
+ const command = commands.find(cmd => cmd.id === suggestion.id);
+ if (command) {
+ setInputValue(`/${command.name.toLowerCase().replace(/\s+/g, '-')}`);
+ setShowSuggestions(false);
+ setSelectedSuggestionIndex(0);
+ }
+ };
+
+ // Handle input change with suggestions
+ const handleInputChange = (value: string) => {
+ setInputValue(value);
+
+ // Show suggestions when user types "/"
+ if (value.startsWith("/")) {
+ setShowSuggestions(true);
+ setSelectedSuggestionIndex(0);
+ } else {
+ setShowSuggestions(false);
+ setSelectedSuggestionIndex(0);
+ }
+ };
+
+ // Custom keyboard handler for suggestions
+ useInput((input, key) => {
+ if (!isInputActive || !showSuggestions) return;
+
+ // Handle arrow keys for suggestion navigation
+ if (key.upArrow) {
+ handleSuggestionNavigation('up');
+ return;
+ }
+
+ if (key.downArrow) {
+ handleSuggestionNavigation('down');
+ return;
+ }
+
+ // Handle tab for suggestion completion
+ if (key.tab && suggestions.length > 0) {
+ const selectedSuggestion = suggestions[selectedSuggestionIndex];
+ if (selectedSuggestion) {
+ handleSuggestionSelect(selectedSuggestion);
+ }
+ return;
+ }
+
+ // Handle enter to execute selected suggestion
+ if (key.return && suggestions.length > 0) {
+ const selectedSuggestion = suggestions[selectedSuggestionIndex];
+ if (selectedSuggestion) {
+ // Find the corresponding command and execute it
+ const command = commands.find(cmd => cmd.id === selectedSuggestion.id);
+ if (command) {
+ setInputValue(`/${command.name.toLowerCase().replace(/\s+/g, '-')}`);
+ setShowSuggestions(false);
+ setSelectedSuggestionIndex(0);
+ // Execute the command immediately
+ command.action();
+ }
+ }
+ return;
+ }
+ }, { isActive: isInputActive && showSuggestions });
+
+ // XMTP hook
+ const {
+ agent,
+ address,
+ conversations,
+ currentConversation,
+ messages,
+ isLoading,
+ error: xmtpError,
+ setCurrentConversationById,
+ sendMessage,
+ findOrCreateConversation,
+ refreshConversations,
+ } = useXMTP({
+ env,
+ agentIdentifiers,
+ onError: (err) => setErrorWithTimeout(err),
+ onStatusChange: (status) => {
+ if (status) {
+ // Show loading status
+ }
+ },
+ });
+
+ // Update store when conversations change
+ useEffect(() => {
+ setConversations(conversations);
+ }, [conversations, setConversations]);
- // Function to set error with auto-clear
+ // Auto-clear errors
const setErrorWithTimeout = (message: string, timeoutMs = 5000) => {
setError(message);
- if (errorTimeout) {
- clearTimeout(errorTimeout);
- }
+ if (errorTimeout) clearTimeout(errorTimeout);
const timeout = setTimeout(() => {
setError("");
setErrorTimeout(null);
}, timeoutMs);
setErrorTimeout(timeout);
};
- const streamRef = useRef | null>(null);
- const isStreamingRef = useRef(false);
-
- // Initialize agent
- useEffect(() => {
- const initAgent = async () => {
- setLoadingStatus("Initializing XMTP cli client...");
- let walletKey = process.env.XMTP_CLIENT_WALLET_KEY;
- let dbEncryptionKey = process.env.XMTP_CLIENT_DB_ENCRYPTION_KEY;
+ // Commands
+ const commands: Command[] = [
+ {
+ id: "toggle-sidebar",
+ name: "Toggle Sidebar",
+ description: "Show/hide the conversation list",
+ shortcut: "Cmd+B (macOS) / Ctrl+B",
+ action: () => useStore.getState().toggleSidebar(),
+ },
+ {
+ id: "next-conversation",
+ name: "Next Conversation",
+ description: "Switch to the next conversation",
+ shortcut: "Ctrl+N",
+ action: () => useStore.getState().nextConversation(),
+ },
+ {
+ id: "prev-conversation",
+ name: "Previous Conversation",
+ description: "Switch to the previous conversation",
+ shortcut: "Ctrl+P",
+ action: () => useStore.getState().prevConversation(),
+ },
+ {
+ id: "list-conversations",
+ name: "List Conversations",
+ description: "Show all conversations",
+ action: () => useStore.getState().toggleSidebar(),
+ },
+ {
+ id: "new-chat",
+ name: "New Chat",
+ description: "Start a new conversation",
+ action: () => {
+ useStore.getState().setCurrentConversation(null);
+ useStore.getState().selectConversation(-1);
+ setIsInputActive(true);
+ },
+ },
+ {
+ id: "quit",
+ name: "Quit",
+ description: "Exit the application",
+ shortcut: "Ctrl+C",
+ action: () => exit(),
+ },
+ ];
- if (!walletKey || !dbEncryptionKey) {
- walletKey = generatePrivateKey();
- dbEncryptionKey = toString(getRandomValues(new Uint8Array(32)), "hex");
+ // Command suggestions logic
+ const getCommandSuggestions = (query: string): CommandSuggestion[] => {
+ if (!query.startsWith("/")) return [];
+
+ const commandQuery = query.slice(1).toLowerCase();
+ return commands.filter(cmd =>
+ cmd.name.toLowerCase().includes(commandQuery) ||
+ cmd.description.toLowerCase().includes(commandQuery)
+ ).slice(0, 6).map(cmd => ({
+ id: cmd.id,
+ name: cmd.name,
+ description: cmd.description,
+ shortcut: cmd.shortcut,
+ }));
+ };
+
+ const suggestions = getCommandSuggestions(inputValue);
+
+ // Keyboard navigation
+ useKeyboard({
+ onSelectConversation: async () => {
+ // Handle "New Chat" selection or when no conversations exist
+ if (selectedConversationIndex === -1 || storeConversations.length === 0) {
+ // "New Chat" selected or no conversations - activate input for typing address
+ setIsInputActive(true);
+ return;
}
+
+ // Open/switch to the selected conversation
+ if (storeConversations[selectedConversationIndex]) {
+ await setCurrentConversationById(
+ storeConversations[selectedConversationIndex].id,
+ );
+ setIsInputActive(true); // Activate input for chatting
+ }
+ },
+ onToggleCommandPalette: () => {
+ toggleCommandPalette();
+ },
+ onEscape: () => {
+ if (showCommandPalette) {
+ toggleCommandPalette();
+ return;
+ }
+ if (showSuggestions) {
+ setShowSuggestions(false);
+ setSelectedSuggestionIndex(0);
+ return;
+ }
+ if (isInputActive) {
+ setIsInputActive(false);
+ setInputValue("");
+ return;
+ }
+ setCommandMode(false);
+ },
+ disabled: isLoading || isInputActive, // Disable when input is active
+ });
- const user = createUser(walletKey as `0x${string}`);
- const signer = createSigner(user);
-
- // Convert hex string to Uint8Array for dbEncryptionKey
- const encryptionKeyBytes = fromString(dbEncryptionKey, "hex");
+ // Handle input submit
+ const handleInputSubmit = async (value: string) => {
+ if (!value.trim()) return;
- const newAgent = await Agent.create(signer, {
- env,
- dbEncryptionKey: encryptionKeyBytes,
- dbPath: (inboxId) => "." + `/cli-${env}-${inboxId.slice(0, 8)}.db3`,
- });
+ const message = value.trim();
+ setInputValue("");
- setAgent(newAgent);
- setAddress(newAgent.address || "");
- setInboxId(newAgent.client.inboxId);
- setUrl(getTestUrl(newAgent.client) || "");
+ // Command mode
+ if (message.startsWith("/")) {
+ const cmd = message.slice(1).toLowerCase().trim();
- const finalInboxState = await Client.inboxStateFromInboxIds(
- [newAgent.client.inboxId],
- env,
- );
- setInstallations(finalInboxState[0].installations.length);
-
- setLoadingStatus("Syncing conversations...");
- // Sync conversations
- await newAgent.client.conversations.sync();
- const convList = await newAgent.client.conversations.list();
- setConversations(convList);
-
- // If agent identifiers provided, create/find conversation
- if (agentIdentifiers && agentIdentifiers.length > 0) {
- setLoadingStatus("Connecting to agent...");
- const conv = await findOrCreateConversation(newAgent, agentIdentifiers);
- if (conv) {
- setLoadingStatus("Loading messages...");
- setCurrentConversation(conv);
-
- // Fetch peer address for DMs
- if (!isGroup(conv)) {
- const address = await getEthereumAddress(conv);
- setPeerAddress(address || "");
- } else {
- setPeerAddress("");
- }
+ if (cmd === "exit" || cmd === "quit") {
+ exit();
+ return;
+ }
- await loadMessages(conv, newAgent);
- await startMessageStream(conv, newAgent);
- }
+ if (cmd === "back") {
+ // Go back to main conversation selector
+ const store = useStore.getState();
+ store.setCurrentConversation(null);
+ setError("");
+ // Also reset selection to "New Chat" and deactivate input
+ store.selectConversation(-1);
+ setIsInputActive(false);
+ // Show status message
+ setStatusMessage("Returned to main menu");
+ // Clear status message after 3 seconds
+ setTimeout(() => setStatusMessage(""), 3000);
+ return;
}
- setLoadingStatus("");
- };
-
- initAgent().catch((err) => {
- handleError(err, setError, "Failed to initialize");
- setLoadingStatus("");
- });
- }, []);
-
- // Find or create conversation
- const findOrCreateConversation = async (
- agentInstance: Agent,
- identifiers: string[],
- ): Promise => {
- const client = agentInstance.client;
- const groupOptions = {
- groupName: "CLI Group Chat",
- groupDescription: "Group created from CLI",
- };
+ if (cmd === "list") {
+ const store = useStore.getState();
+ store.toggleSidebar();
+ setStatusMessage(store.showSidebar ? "Sidebar shown" : "Sidebar hidden");
+ setTimeout(() => setStatusMessage(""), 3000);
+ return;
+ }
- try {
- if (identifiers.length > 1) {
- // Create group
- const allEthAddresses = identifiers.every(isEthAddress);
-
- if (allEthAddresses) {
- const memberIdentifiers = identifiers.map((id) => ({
- identifier: id,
- identifierKind: IdentifierKind.Ethereum,
- }));
- return await client.conversations.newGroupWithIdentifiers(
- memberIdentifiers,
- groupOptions,
- );
+ if (cmd.startsWith("chat ")) {
+ const parts = cmd.split(" ");
+ const index = parseInt(parts[1]) - 1;
+ if (
+ !isNaN(index) &&
+ index >= 0 &&
+ index < storeConversations.length
+ ) {
+ await setCurrentConversationById(storeConversations[index].id);
+ setStatusMessage(`Switched to conversation ${index + 1}`);
+ setTimeout(() => setStatusMessage(""), 3000);
+ return;
}
-
- return await client.conversations.newGroup(identifiers, groupOptions);
+ setErrorWithTimeout("Invalid conversation number");
+ return;
}
- // Create/find DM
- const identifier = identifiers[0];
-
- // Try to find existing conversation
- await client.conversations.sync();
- const convs = await client.conversations.list();
-
- for (const conv of convs) {
- if (!isDm(conv)) continue;
-
- if (conv.peerInboxId.toLowerCase() === identifier.toLowerCase()) {
- return conv;
+ if (cmd.startsWith("new ")) {
+ const parts = cmd.split(" ");
+ const address = parts[1];
+ if (!address) {
+ setErrorWithTimeout("Please provide an address: /new ");
+ return;
}
-
- if (isEthAddress(identifier)) {
- const members = await conv.members();
- const foundMember = members.find((member) => {
- const ethId = member.accountIdentifiers.find(
- (id) => id.identifierKind === IdentifierKind.Ethereum,
- );
- return ethId?.identifier.toLowerCase() === identifier.toLowerCase();
- });
-
- if (foundMember) return conv;
+ try {
+ setError("");
+ await findOrCreateConversation([address]);
+ setStatusMessage(`Created conversation with ${address.slice(0, 6)}...${address.slice(-4)}`);
+ setTimeout(() => setStatusMessage(""), 3000);
+ return;
+ } catch (err: unknown) {
+ setErrorWithTimeout(`Failed to create conversation: ${(err as Error).message}`);
+ return;
}
}
- // Create new DM
- return isEthAddress(identifier)
- ? await client.conversations.newDmWithIdentifier({
- identifier,
- identifierKind: IdentifierKind.Ethereum,
- })
- : await client.conversations.newDm(identifier);
- } catch (err: unknown) {
- handleError(err, setError, "Failed to create conversation");
- return null;
- }
- };
-
- // Load messages
- const loadMessages = async (conv: Conversation, agentInstance: Agent) => {
- await conv.sync();
- const msgs = await conv.messages();
- const formatted = msgs
- .slice(-50)
- .map((msg) => formatMessage(msg, agentInstance));
- setMessages(formatted);
- };
-
- // Format message
- const formatMessage = (
- message: DecodedMessage,
- agentInstance: Agent,
- ): FormattedMessage => {
- const timestamp = message.sentAt.toLocaleTimeString("en-US", {
- hour: "2-digit",
- minute: "2-digit",
- });
-
- const isFromSelf = message.senderInboxId === agentInstance.client.inboxId;
- const sender = isFromSelf
- ? "You"
- : agentInstance.address?.slice(0, 4) +
- "..." +
- agentInstance.address?.slice(-4);
-
- let content: string;
- if (typeof message.content === "string") {
- content = message.content;
- } else {
- // Try to format JSON nicely, fallback to compact if it fails
- try {
- content = JSON.stringify(message.content, null, 2);
- } catch {
- content = JSON.stringify(message.content);
- }
- }
-
- return { timestamp, sender, content, isFromSelf };
- };
-
- // Start message stream
- const startMessageStream = async (
- conv: Conversation,
- agentInstance: Agent,
- ) => {
- if (isStreamingRef.current) return;
-
- isStreamingRef.current = true;
- const client = agentInstance.client;
-
- try {
- streamRef.current = await client.conversations.streamAllMessages();
-
- (async () => {
- if (!streamRef.current) return;
-
- for await (const message of streamRef.current) {
- if (message.conversationId !== conv.id) continue;
-
- const formatted = formatMessage(message, agentInstance);
- setMessages((prev) => [...prev, formatted]);
- }
- })().catch((err) => {
- handleError(err, setError, "Stream error");
- isStreamingRef.current = false;
- });
- } catch (err: unknown) {
- handleError(err, setError, "Failed to start stream");
- isStreamingRef.current = false;
- }
- };
-
- // Command handlers
- const commands = {
- "/exit": () => exit(),
- "/back": () => {
- setCurrentConversation(null);
- setPeerAddress("");
- setMessages([]);
- setShowConversationList(false);
- },
- "/list": () => setShowConversationList((prev) => !prev),
- };
-
- const handleChatCommand = async (message: string) => {
- const parts = message.split(" ");
- if (parts.length !== 2) {
- setErrorWithTimeout("Usage: /chat ");
- return;
- }
-
- const index = parseInt(parts[1]) - 1;
- if (isNaN(index) || index < 0 || index >= conversations.length) {
- setErrorWithTimeout("Invalid conversation number");
- return;
- }
-
- const newConv = conversations[index];
- setCurrentConversation(newConv);
- setShowConversationList(false);
-
- // Fetch peer address for DMs
- if (!isGroup(newConv)) {
- const address = await getEthereumAddress(newConv);
- setPeerAddress(address || "");
- } else {
- setPeerAddress("");
- }
-
- if (agent) {
- await loadMessages(newConv, agent);
- await startMessageStream(newConv, agent);
- }
- };
-
- // Handle input submit
- const handleSubmit = async (value: string) => {
- if (!value.trim()) return;
-
- const message = value.trim();
- setInputValue("");
-
- // Handle direct commands
- if (commands[message as keyof typeof commands]) {
- commands[message as keyof typeof commands]();
- return;
- }
-
- // Handle /chat command
- if (message.startsWith("/chat ")) {
- await handleChatCommand(message);
- return;
- }
-
- // If not in a conversation, try to connect to agent address
- if (!currentConversation) {
- if (agent) {
+ if (cmd === "refresh") {
try {
- const conv = await findOrCreateConversation(agent, [message]);
- if (conv) {
- setCurrentConversation(conv);
-
- // Fetch peer address for DMs
- if (!isGroup(conv)) {
- const address = await getEthereumAddress(conv);
- setPeerAddress(address || "");
- } else {
- setPeerAddress("");
- }
-
- await loadMessages(conv, agent);
- await startMessageStream(conv, agent);
- return;
+ setError("");
+ if (agent) {
+ setStatusMessage("Refreshing conversations...");
+ await refreshConversations();
+ setStatusMessage(`Found ${conversations.length} conversations`);
+ setTimeout(() => setStatusMessage(""), 3000);
+ } else {
+ setErrorWithTimeout("Not connected to XMTP");
}
+ return;
} catch (err: unknown) {
- handleError(err, setError, "Failed to connect to agent");
+ setErrorWithTimeout(`Failed to refresh: ${(err as Error).message}`);
return;
}
}
- setErrorWithTimeout(
- "No active conversation. Use /list to see available chats or /chat to select one.",
- );
+
+ setErrorWithTimeout("Unknown command. Try /back, /list, /chat , /new , /refresh, or /exit");
return;
}
- // Send message
- if (!agent) {
- setErrorWithTimeout("Agent not initialized");
+ // If not in a conversation, try to connect to address
+ if (!currentConversation) {
+ try {
+ setError("");
+ await findOrCreateConversation([message]);
+ } catch (err: unknown) {
+ setErrorWithTimeout(`Failed to connect: ${(err as Error).message}`);
+ }
return;
}
+ // Send message
try {
- await currentConversation.send(message);
+ await sendMessage(message);
} catch (err: unknown) {
- handleError(err, setError, "Failed to send");
+ setErrorWithTimeout(`Failed to send: ${(err as Error).message}`);
}
};
// Show loading state
- if (!agent || loadingStatus) {
+ if (isLoading || !agent) {
return (
-
+
- 🔄 {loadingStatus}
+ 🔄 Initializing XMTP Client...
{agent && (
@@ -796,53 +462,30 @@ const App: React.FC = ({ env, agentIdentifiers }) => {
}
return (
-
-
-
- {/* Show error inline if present */}
- {error && (
-
-
- Error: {error}
-
-
- )}
-
- {showConversationList && (
-
- )}
-
- {currentConversation && }
-
-
-
- {!currentConversation && conversations.length > 0 && (
-
- Available commands: /list, /chat <number>, /exit
-
- )}
-
+ cmd.action()}
+ onCommandPaletteClose={() => toggleCommandPalette()}
+ suggestions={suggestions}
+ selectedSuggestionIndex={selectedSuggestionIndex}
+ showSuggestions={showSuggestions}
+ onSuggestionSelect={handleSuggestionSelect}
+ />
);
};
@@ -871,17 +514,13 @@ function parseArgs(): { env: XmtpEnv; help: boolean; agents?: string[] } {
}
}
- // Auto-detect agent address if not provided and we're in dev environment
- if (agents.length === 0 && env === "dev") {
- // Try to get agent address from environment or use the known dev agent address
- const autoAgentAddressKey = process.env.XMTP_WALLET_KEY || "";
- const autoAgentAddress = privateKeyToAddress(
- autoAgentAddressKey as `0x${string}`,
- );
- if (autoAgentAddress) {
- agents.push(autoAgentAddress);
+ // Auto-detect agent address if not provided
+ if (agents.length === 0) {
+ const walletKey = process.env.XMTP_WALLET_KEY || "";
+ if (walletKey) {
+ const publicKey = privateKeyToAddress(walletKey as `0x${string}`);
+ agents.push(publicKey);
}
- console.log(`🔗 Auto-connecting to agent: ${autoAgentAddress}`);
}
return { env, help, agents: agents.length > 0 ? agents : undefined };
@@ -894,19 +533,11 @@ async function main(): Promise {
showHelp();
process.exit(0);
}
- // Create a mutable array of agent identifiers
- const agentIdentifiers = agents ? [...agents] : [];
- // If no agents specified, use the agent from XMTP_WALLET_KEY
- if (agentIdentifiers.length === 0) {
- const walletKey = process.env.XMTP_WALLET_KEY || "";
- if (walletKey) {
- const publicKey = privateKeyToAddress(walletKey as `0x${string}`);
- agentIdentifiers.push(publicKey);
- }
- }
+ const agentIdentifiers = agents ? [...agents] : [];
render();
}
void main();
+
diff --git a/src/components/ChatView.tsx b/src/components/ChatView.tsx
new file mode 100644
index 0000000..496beb3
--- /dev/null
+++ b/src/components/ChatView.tsx
@@ -0,0 +1,96 @@
+import React from "react";
+import { Box, Text } from "ink";
+import type { FormattedMessage, ConversationInfo } from "../types/index.js";
+import { ConversationSelector } from "./ConversationSelector.js";
+
+const RED = "#fc4c34";
+
+interface ChatViewProps {
+ conversation: ConversationInfo | null;
+ messages: FormattedMessage[];
+ height?: number;
+ // Conversation selector props
+ allConversations?: ConversationInfo[];
+ selectedConversationIndex?: number;
+ onSelectConversation?: (index: number) => void;
+}
+
+export const ChatView: React.FC = ({
+ conversation,
+ messages,
+ height = 15,
+ allConversations = [],
+ selectedConversationIndex = 0,
+ onSelectConversation,
+}) => {
+ // Show last N messages that fit in the height
+ const visibleMessages = messages.slice(-height);
+
+ // Helper function to format long text with proper indentation
+ const formatLongText = (text: string, prefix: string) => {
+ const lines = text.split("\n");
+ if (lines.length === 1) {
+ return text;
+ }
+
+ // For multi-line content, indent continuation lines
+ return lines
+ .map((line, index) => {
+ if (index === 0) return line;
+ // Add indentation to match the prefix length
+ const indent = " ".repeat(prefix.length);
+ return `${indent}${line}`;
+ })
+ .join("\n");
+ };
+
+ if (!conversation) {
+ // Show conversation selector instead of empty state
+ return (
+
+ {})}
+ />
+
+ );
+ }
+
+ return (
+
+ {/* Chat header */}
+
+
+ {conversation.type === "group" ? "👥 GROUP: " : "💬 DM: "}
+ {conversation.name}
+
+
+
+ {/* Messages */}
+
+ {visibleMessages.length === 0 ? (
+ No messages yet...
+ ) : (
+ visibleMessages.map((msg) => {
+ const prefix = `[${msg.timestamp}] ${msg.sender}: `;
+ const formattedContent = formatLongText(msg.content, prefix);
+
+ return (
+
+
+ [{msg.timestamp}]
+
+ {msg.sender}:
+
+ {formattedContent}
+
+
+ );
+ })
+ )}
+
+
+ );
+};
+
diff --git a/src/components/CommandPalette.tsx b/src/components/CommandPalette.tsx
new file mode 100644
index 0000000..59b9ad3
--- /dev/null
+++ b/src/components/CommandPalette.tsx
@@ -0,0 +1,138 @@
+import React, { useState, useEffect } from "react";
+import { Box, Text, useInput } from "ink";
+import TextInput from "ink-text-input";
+
+const RED = "#fc4c34";
+
+export interface Command {
+ id: string;
+ name: string;
+ description: string;
+ shortcut?: string;
+ action: () => void;
+}
+
+interface CommandPaletteProps {
+ commands: Command[];
+ onClose: () => void;
+ onExecute: (command: Command) => void;
+}
+
+export const CommandPalette: React.FC = ({
+ commands,
+ onClose,
+ onExecute,
+}) => {
+ const [query, setQuery] = useState("");
+ const [selectedIndex, setSelectedIndex] = useState(0);
+
+ // Filter commands based on query
+ const filteredCommands = commands.filter(
+ (cmd) =>
+ cmd.name.toLowerCase().includes(query.toLowerCase()) ||
+ cmd.description.toLowerCase().includes(query.toLowerCase()),
+ );
+
+ // Reset selected index when query changes
+ useEffect(() => {
+ setSelectedIndex(0);
+ }, [query]);
+
+ // Keyboard navigation
+ useInput((input, key) => {
+ if (key.upArrow) {
+ setSelectedIndex(prev =>
+ prev > 0 ? prev - 1 : filteredCommands.length - 1
+ );
+ return;
+ }
+
+ if (key.downArrow) {
+ setSelectedIndex(prev =>
+ prev < filteredCommands.length - 1 ? prev + 1 : 0
+ );
+ return;
+ }
+
+ if (key.return) {
+ if (filteredCommands.length > 0) {
+ onExecute(filteredCommands[selectedIndex]);
+ onClose();
+ }
+ return;
+ }
+
+ if (key.escape) {
+ onClose();
+ return;
+ }
+ });
+
+ const handleSubmit = () => {
+ if (filteredCommands.length > 0) {
+ onExecute(filteredCommands[selectedIndex]);
+ onClose();
+ }
+ };
+
+ return (
+
+ {/* Header */}
+
+
+ Command Palette
+
+ (Press Esc to close)
+
+
+ {/* Search input */}
+
+ ❯
+
+
+
+ {/* Command list */}
+
+ {filteredCommands.length === 0 ? (
+ No commands found
+ ) : (
+ filteredCommands.slice(0, 10).map((cmd, index) => {
+ const isSelected = index === selectedIndex;
+ return (
+
+
+ {isSelected ? "▶ " : " "}
+
+
+ {cmd.name}
+
+ - {cmd.description}
+ {cmd.shortcut && (
+ ({cmd.shortcut})
+ )}
+
+ );
+ })
+ )}
+
+
+ {/* Footer */}
+
+ ↑↓: Navigate • Enter: Execute • Esc: Close
+
+
+ );
+};
+
diff --git a/src/components/CommandSuggestions.tsx b/src/components/CommandSuggestions.tsx
new file mode 100644
index 0000000..1332a4c
--- /dev/null
+++ b/src/components/CommandSuggestions.tsx
@@ -0,0 +1,71 @@
+import React from "react";
+import { Box, Text } from "ink";
+
+const RED = "#fc4c34";
+
+export interface CommandSuggestion {
+ id: string;
+ name: string;
+ description: string;
+ shortcut?: string;
+}
+
+interface CommandSuggestionsProps {
+ suggestions: CommandSuggestion[];
+ selectedIndex: number;
+ query: string;
+ visible: boolean;
+}
+
+export const CommandSuggestions: React.FC = ({
+ suggestions,
+ selectedIndex,
+ query,
+ visible,
+}) => {
+ if (!visible || suggestions.length === 0) {
+ return null;
+ }
+
+ return (
+
+
+
+ 💡 Command suggestions for "{query}"
+
+
+
+
+ {suggestions.slice(0, 6).map((suggestion, index) => {
+ const isSelected = index === selectedIndex;
+ return (
+
+ {isSelected && (
+ ▶
+ )}
+
+ /{suggestion.name}
+
+ - {suggestion.description}
+ {suggestion.shortcut && (
+ ({suggestion.shortcut})
+ )}
+
+ );
+ })}
+
+
+
+ ↑↓: Navigate • Tab: Complete • Enter: Execute • Esc: Close
+
+
+ );
+};
\ No newline at end of file
diff --git a/src/components/ConversationSelector.tsx b/src/components/ConversationSelector.tsx
new file mode 100644
index 0000000..67f262f
--- /dev/null
+++ b/src/components/ConversationSelector.tsx
@@ -0,0 +1,140 @@
+import React from "react";
+import { Box, Text } from "ink";
+import type { ConversationInfo } from "../types/index.js";
+import { formatTime } from "../utils/formatters.js";
+
+const RED = "#fc4c34";
+
+interface ConversationSelectorProps {
+ conversations: ConversationInfo[];
+ selectedIndex: number;
+ onSelect: (index: number) => void;
+}
+
+export const ConversationSelector: React.FC = ({
+ conversations,
+ selectedIndex,
+}) => {
+ return (
+
+ {/* Header */}
+
+
+ 📱 XMTP Chat - Main Menu
+
+
+
+ 💡 TIP: Use ↑↓ arrows to navigate, then press Enter
+
+
+
+
+ {/* New Chat Option */}
+
+
+ {selectedIndex === -1 ? "▶ " : " "}
+ ➕ New Chat
+
+
+ {selectedIndex === -1 && (
+
+
+ Press Enter, then type an address
+
+
+ )}
+
+ {/* Divider */}
+ {conversations.length > 0 && (
+
+ ──────────────────────────────────────
+
+ )}
+
+ {/* Conversation List */}
+
+ {conversations.length === 0 ? (
+
+ 📭 No conversations yet!
+
+
+ Select "New Chat" above to start chatting
+
+
+
+ ) : (
+ <>
+
+ 💬 Your Conversations:
+
+ {conversations.map((conv, index) => {
+ const isSelected = index === selectedIndex;
+ const hasUnread = conv.unreadCount > 0;
+
+ return (
+
+ {/* Selection indicator */}
+
+ {isSelected ? "▶ " : " "}
+
+
+ {/* Type badge */}
+
+ {conv.type === "group" ? "👥" : "👤"}
+
+
+ {/* Name */}
+
+ {" "}
+ {conv.name}
+
+
+ {/* Last message preview */}
+ {conv.lastMessage && (
+
+ {" "}
+ - {conv.lastMessage.slice(0, 30)}
+ {conv.lastMessage.length > 30 ? "..." : ""}
+
+ )}
+
+ {/* Time */}
+ {conv.lastMessageAt && (
+ ({formatTime(conv.lastMessageAt)})
+ )}
+
+ {/* Unread count */}
+ {hasUnread && (
+
+ {" "}
+ ({conv.unreadCount})
+
+ )}
+
+ );
+ })}
+ >
+ )}
+
+
+ {/* Navigation hints */}
+
+ ⌨️ Controls:
+ ↑↓: Navigate • Enter: Select • Esc: Back
+
+
+ );
+};
+
diff --git a/src/components/Input.tsx b/src/components/Input.tsx
new file mode 100644
index 0000000..a64bd19
--- /dev/null
+++ b/src/components/Input.tsx
@@ -0,0 +1,70 @@
+import React from "react";
+import { Box, Text } from "ink";
+import TextInput from "ink-text-input";
+import { CommandSuggestions, CommandSuggestion } from "./CommandSuggestions";
+
+const RED = "#fc4c34";
+
+interface InputProps {
+ value: string;
+ onChange: (value: string) => void;
+ onSubmit: (value: string) => void;
+ placeholder?: string;
+ commandMode?: boolean;
+ suggestions?: CommandSuggestion[];
+ selectedSuggestionIndex?: number;
+ showSuggestions?: boolean;
+ onSuggestionSelect?: (suggestion: CommandSuggestion) => void;
+}
+
+export const Input: React.FC = ({
+ value,
+ onChange,
+ onSubmit,
+ placeholder = "Type a message...",
+ commandMode = false,
+ suggestions = [],
+ selectedSuggestionIndex = 0,
+ showSuggestions = false,
+ onSuggestionSelect,
+}) => {
+ return (
+
+
+
+
+
+
+
+
+
+ {/* Command suggestions */}
+
+
+ {commandMode && !showSuggestions && (
+
+
+ 💡 Press Enter to execute command
+
+
+ )}
+
+ );
+};
+
diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx
new file mode 100644
index 0000000..d9d5a7d
--- /dev/null
+++ b/src/components/Layout.tsx
@@ -0,0 +1,169 @@
+import React from "react";
+import { Box, Text } from "ink";
+import { Sidebar } from "./Sidebar.js";
+import { ChatView } from "./ChatView.js";
+import { StatusBar } from "./StatusBar.js";
+import { Input } from "./Input.js";
+import { CommandPalette, type Command } from "./CommandPalette.js";
+import { CommandSuggestion } from "./CommandSuggestions.js";
+import type { ConversationInfo, FormattedMessage } from "../types/index.js";
+
+interface LayoutProps {
+ // Sidebar props
+ conversations: ConversationInfo[];
+ selectedConversationIndex: number;
+ showSidebar: boolean;
+
+ // Chat props
+ currentConversation: ConversationInfo | null;
+ messages: FormattedMessage[];
+
+ // Input props
+ inputValue: string;
+ onInputChange: (value: string) => void;
+ onInputSubmit: (value: string) => void;
+ commandMode: boolean;
+ isInputActive?: boolean;
+
+ // Status bar props
+ connectionStatus: "connected" | "disconnected" | "connecting";
+ address: string;
+ error?: string;
+ statusMessage?: string;
+
+ // Command palette props
+ showCommandPalette: boolean;
+ commands: Command[];
+ onCommandExecute: (command: Command) => void;
+ onCommandPaletteClose: () => void;
+
+ // Command suggestions props
+ suggestions?: CommandSuggestion[];
+ selectedSuggestionIndex?: number;
+ showSuggestions?: boolean;
+ onSuggestionSelect?: (suggestion: CommandSuggestion) => void;
+}
+
+export const Layout: React.FC = ({
+ conversations,
+ selectedConversationIndex,
+ showSidebar,
+ currentConversation,
+ messages,
+ inputValue,
+ onInputChange,
+ onInputSubmit,
+ commandMode,
+ isInputActive = false,
+ connectionStatus,
+ address,
+ error,
+ statusMessage,
+ showCommandPalette,
+ commands,
+ onCommandExecute,
+ onCommandPaletteClose,
+ suggestions = [],
+ selectedSuggestionIndex = 0,
+ showSuggestions = false,
+ onSuggestionSelect,
+}) => {
+ return (
+
+ {/* Main content area */}
+
+ {/* Sidebar */}
+ {showSidebar && (
+
+ )}
+
+ {/* Chat view + Input (right side) - wrapped in border */}
+
+ {/* Chat view */}
+ {
+ // This will be handled by the main app
+ }}
+ />
+
+ {/* Input inside chat window border */}
+
+ {isInputActive || currentConversation ? (
+
+ ) : (
+
+
+ {conversations.length === 0
+ ? "No conversations available. Press Enter to start a new chat..."
+ : selectedConversationIndex === -1
+ ? "Press Enter to start typing address..."
+ : "↑↓ to navigate • Enter to open chat • Type to search"}
+
+
+ )}
+
+
+
+
+ {/* Command palette overlay */}
+ {showCommandPalette && (
+
+
+
+ )}
+
+ {/* Status bar */}
+
+
+
+
+ );
+};
+
diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx
new file mode 100644
index 0000000..e4d1efb
--- /dev/null
+++ b/src/components/Sidebar.tsx
@@ -0,0 +1,98 @@
+import React from "react";
+import { Box, Text } from "ink";
+import type { ConversationInfo } from "../types/index.js";
+
+const RED = "#fc4c34";
+const DIM_RED = "#cc3f2a";
+
+interface SidebarProps {
+ conversations: ConversationInfo[];
+ selectedIndex: number;
+ currentConversationId: string | null;
+ width?: number;
+}
+
+export const Sidebar: React.FC = ({
+ conversations,
+ selectedIndex,
+ currentConversationId,
+ width = 25,
+}) => {
+ return (
+
+ {/* Header */}
+
+
+ Conversations ({conversations.length})
+
+
+
+ {/* Conversation List */}
+
+ {conversations.length === 0 ? (
+ No conversations
+ ) : (
+ conversations.map((conv, index) => {
+ const isSelected = index === selectedIndex;
+ const isCurrent = conv.id === currentConversationId;
+ const hasUnread = conv.unreadCount > 0;
+
+ return (
+
+ {/* Selection indicator */}
+
+ {isSelected ? "▶" : " "}
+
+
+ {/* Current conversation indicator */}
+
+ {isCurrent ? "●" : " "}
+
+
+ {/* Type badge */}
+
+ {conv.type === "group" ? "[G]" : "[D]"}
+
+
+ {/* Name */}
+
+ {" "}
+ {conv.name.length > 20
+ ? `${conv.name.slice(0, 6)}...${conv.name.slice(-6)}`
+ : conv.name.slice(0, width - 12)}
+
+
+ {/* Unread count */}
+ {hasUnread && (
+
+ {" "}
+ ({conv.unreadCount})
+
+ )}
+
+ );
+ })
+ )}
+
+
+ {/* Footer hints */}
+
+ ↑↓:Navigate Enter:Open
+
+
+ );
+};
+
diff --git a/src/components/StatusBar.tsx b/src/components/StatusBar.tsx
new file mode 100644
index 0000000..1b49d2b
--- /dev/null
+++ b/src/components/StatusBar.tsx
@@ -0,0 +1,88 @@
+import React from "react";
+import { Box, Text } from "ink";
+
+const RED = "#fc4c34";
+
+interface StatusBarProps {
+ connectionStatus: "connected" | "disconnected" | "connecting";
+ address: string;
+ conversationCount: number;
+ error?: string;
+ statusMessage?: string;
+}
+
+export const StatusBar: React.FC = ({
+ connectionStatus,
+ address,
+ conversationCount,
+ error,
+ statusMessage,
+}) => {
+ const statusColor =
+ connectionStatus === "connected"
+ ? "green"
+ : connectionStatus === "connecting"
+ ? "yellow"
+ : "red";
+ const statusText =
+ connectionStatus === "connected"
+ ? "●"
+ : connectionStatus === "connecting"
+ ? "◐"
+ : "○";
+
+ return (
+
+ {/* Error bar */}
+ {error && (
+
+ ⚠ {error}
+
+ )}
+
+ {/* Status bar */}
+
+ {/* Left side: connection status */}
+
+ {statusText}
+
+ {" "}
+ {address}
+
+ • {conversationCount} chats
+
+
+ ^B:
+ Sidebar
+ ^K:
+ Switch
+ ^C:
+ Quit
+
+
+
+ {/* Status message - at the very bottom */}
+ {statusMessage && (
+
+ ✓ {statusMessage}
+
+ )}
+
+ );
+};
+
diff --git a/src/hooks/useKeyboard.ts b/src/hooks/useKeyboard.ts
new file mode 100644
index 0000000..b502f23
--- /dev/null
+++ b/src/hooks/useKeyboard.ts
@@ -0,0 +1,120 @@
+import { useInput } from "ink";
+import { useStore } from "../store/state.js";
+
+interface UseKeyboardOptions {
+ onSelectConversation?: () => void;
+ onSwitchConversation?: (direction: "next" | "prev") => void;
+ onToggleSidebar?: () => void;
+ onToggleCommandPalette?: () => void;
+ onEscape?: () => void;
+ disabled?: boolean;
+}
+
+export const useKeyboard = (options: UseKeyboardOptions = {}) => {
+ const {
+ onSelectConversation,
+ onSwitchConversation,
+ onToggleSidebar,
+ onToggleCommandPalette,
+ onEscape,
+ disabled = false,
+ } = options;
+
+ const {
+ nextConversation,
+ prevConversation,
+ toggleSidebar,
+ toggleCommandPalette,
+ showCommandPalette,
+ currentConversation,
+ } = useStore();
+
+ useInput(
+ (input, key) => {
+ if (disabled) return;
+
+ // Command palette is open - different keybindings
+ if (showCommandPalette) {
+ if (key.escape) {
+ onEscape?.();
+ }
+ return;
+ }
+
+ // In main menu (no conversation) - navigation mode
+ const inMainMenu = !currentConversation;
+
+ // Ctrl+B or Cmd+B - Toggle sidebar (macOS uses Cmd)
+ if (input === "b" && (key.ctrl || key.meta)) {
+ onToggleSidebar?.();
+ toggleSidebar();
+ return;
+ }
+
+ // Ctrl+K or Cmd+K - Toggle command palette (macOS uses Cmd)
+ if (input === "k" && (key.ctrl || key.meta)) {
+ onToggleCommandPalette?.();
+ toggleCommandPalette();
+ return;
+ }
+
+ // Ctrl+N - Next conversation
+ if (input === "n" && key.ctrl) {
+ onSwitchConversation?.("next");
+ nextConversation();
+ return;
+ }
+
+ // Ctrl+P - Previous conversation
+ if (input === "p" && key.ctrl) {
+ onSwitchConversation?.("prev");
+ prevConversation();
+ return;
+ }
+
+ // Up arrow - Navigate in main menu or switch conversations
+ if (key.upArrow) {
+ if (inMainMenu) {
+ prevConversation();
+ } else {
+ onSwitchConversation?.("prev");
+ }
+ return;
+ }
+
+ // Down arrow - Navigate in main menu or switch conversations
+ if (key.downArrow) {
+ if (inMainMenu) {
+ nextConversation();
+ } else {
+ onSwitchConversation?.("next");
+ }
+ return;
+ }
+
+ // Enter - Select conversation (works in main menu and sidebar)
+ if (key.return) {
+ onSelectConversation?.();
+ return;
+ }
+
+ // Escape - Go back to main menu or cancel input
+ if (key.escape) {
+ onEscape?.();
+ if (currentConversation) {
+ useStore.getState().setCurrentConversation(null);
+ useStore.getState().selectConversation(-1);
+ }
+ return;
+ }
+
+ // Any other key in main menu - activate input for searching/typing
+ if (inMainMenu && !key.ctrl && !key.meta && input && input.length === 1) {
+ // Let the input component handle this
+ return;
+ }
+ },
+ { isActive: !disabled },
+ );
+};
+
diff --git a/src/hooks/useXMTP.ts b/src/hooks/useXMTP.ts
new file mode 100644
index 0000000..567cd8a
--- /dev/null
+++ b/src/hooks/useXMTP.ts
@@ -0,0 +1,406 @@
+import { useState, useEffect, useRef } from "react";
+import {
+ Agent,
+ IdentifierKind,
+ type Conversation,
+ type DecodedMessage,
+ type XmtpEnv,
+ type Dm,
+} from "@xmtp/agent-sdk";
+import { Client } from "@xmtp/node-sdk";
+import { getTestUrl } from "@xmtp/agent-sdk/debug";
+import { createSigner, createUser } from "@xmtp/agent-sdk/user";
+import { generatePrivateKey } from "viem/accounts";
+import { getRandomValues } from "node:crypto";
+import { fromString, toString } from "uint8arrays";
+import { isGroup, isDm, isEthAddress } from "../utils/helpers.js";
+import { formatMessage } from "../utils/formatters.js";
+import type { ConversationInfo, FormattedMessage } from "../types/index.js";
+
+interface UseXMTPOptions {
+ env: XmtpEnv;
+ agentIdentifiers?: string[];
+ onError?: (error: string) => void;
+ onStatusChange?: (status: string) => void;
+}
+
+interface UseXMTPReturn {
+ agent: Agent | null;
+ address: string;
+ inboxId: string;
+ url: string;
+ installations: number;
+ conversations: ConversationInfo[];
+ currentConversation: ConversationInfo | null;
+ messages: FormattedMessage[];
+ isLoading: boolean;
+ error: string;
+ setCurrentConversationById: (id: string) => Promise;
+ sendMessage: (content: string) => Promise;
+ findOrCreateConversation: (identifiers: string[]) => Promise;
+ refreshConversations: () => Promise;
+}
+
+// Helper to get Ethereum address from conversation
+const getEthereumAddress = async (
+ conversation: Conversation,
+): Promise => {
+ const members = await conversation.members();
+
+ for (const member of members) {
+ const ethIdentifier = member.accountIdentifiers.find(
+ (id) => id.identifierKind === IdentifierKind.Ethereum,
+ );
+
+ if (ethIdentifier) {
+ return ethIdentifier.identifier;
+ }
+ }
+ return null;
+};
+
+// Convert Conversation to ConversationInfo
+const toConversationInfo = async (
+ conversation: Conversation,
+): Promise => {
+ const messages = await conversation.messages();
+ const lastMessage = messages[messages.length - 1];
+
+ if (isGroup(conversation)) {
+ return {
+ id: conversation.id,
+ conversation,
+ name: conversation.name || "Unnamed Group",
+ type: "group",
+ unreadCount: 0,
+ lastMessageAt: lastMessage?.sentAt,
+ lastMessage: typeof lastMessage?.content === "string" ? lastMessage.content : "",
+ };
+ } else {
+ const dm = conversation as Dm;
+ const peerAddress = await getEthereumAddress(conversation);
+ return {
+ id: conversation.id,
+ conversation,
+ name: peerAddress || dm.peerInboxId.slice(0, 16) + "...",
+ type: "dm",
+ peerAddress: peerAddress || undefined,
+ peerInboxId: dm.peerInboxId,
+ unreadCount: 0,
+ lastMessageAt: lastMessage?.sentAt,
+ lastMessage: typeof lastMessage?.content === "string" ? lastMessage.content : "",
+ };
+ }
+};
+
+export const useXMTP = (options: UseXMTPOptions): UseXMTPReturn => {
+ const { env, agentIdentifiers, onError, onStatusChange } = options;
+
+ const [agent, setAgent] = useState(null);
+ const [address, setAddress] = useState("");
+ const [inboxId, setInboxId] = useState("");
+ const [url, setUrl] = useState("");
+ const [installations, setInstallations] = useState(0);
+ const [conversations, setConversations] = useState([]);
+ const [currentConversation, setCurrentConversation] =
+ useState(null);
+ const [messages, setMessages] = useState([]);
+ const [isLoading, setIsLoading] = useState(true);
+ const [error, setError] = useState("");
+
+ const streamRef = useRef | null>(null);
+ const isStreamingRef = useRef(false);
+ const refreshIntervalRef = useRef(null);
+
+ // Initialize agent
+ useEffect(() => {
+ const initAgent = async () => {
+ try {
+ onStatusChange?.("Initializing XMTP client...");
+
+ let walletKey = process.env.XMTP_CLIENT_WALLET_KEY;
+ let dbEncryptionKey = process.env.XMTP_CLIENT_DB_ENCRYPTION_KEY;
+
+ if (!walletKey || !dbEncryptionKey) {
+ walletKey = generatePrivateKey();
+ dbEncryptionKey = toString(getRandomValues(new Uint8Array(32)), "hex");
+ }
+
+ const user = createUser(walletKey as `0x${string}`);
+ const signer = createSigner(user);
+
+ const encryptionKeyBytes = fromString(dbEncryptionKey, "hex");
+
+ const newAgent = await Agent.create(signer, {
+ env,
+ dbEncryptionKey: encryptionKeyBytes,
+ dbPath: (inboxId) => "." + `/cli-${env}-${inboxId.slice(0, 8)}.db3`,
+ });
+
+ setAgent(newAgent);
+ setAddress(newAgent.address || "");
+ setInboxId(newAgent.client.inboxId);
+ setUrl(getTestUrl(newAgent.client) || "");
+
+ const finalInboxState = await Client.inboxStateFromInboxIds(
+ [newAgent.client.inboxId],
+ env,
+ );
+ setInstallations(finalInboxState[0].installations.length);
+
+ onStatusChange?.("Syncing conversations...");
+ await newAgent.client.conversations.sync();
+ const convList = await newAgent.client.conversations.list();
+ const conversationInfos = await Promise.all(
+ convList.map(toConversationInfo),
+ );
+ setConversations(conversationInfos);
+
+ // If agent identifiers provided, create/find conversation
+ if (agentIdentifiers && agentIdentifiers.length > 0) {
+ onStatusChange?.("Connecting to conversation...");
+ const conv = await findOrCreateConversationInternal(
+ newAgent,
+ agentIdentifiers,
+ );
+ if (conv) {
+ const convInfo = await toConversationInfo(conv);
+ setCurrentConversation(convInfo);
+ await loadMessages(conv, newAgent);
+ await startMessageStream(conv, newAgent);
+ }
+ }
+
+ onStatusChange?.("");
+ setIsLoading(false);
+
+ // Set up live streaming - refresh conversations every 30 seconds
+ if (refreshIntervalRef.current) {
+ clearInterval(refreshIntervalRef.current);
+ }
+ refreshIntervalRef.current = setInterval(async () => {
+ try {
+ await newAgent.client.conversations.sync();
+ const convList = await newAgent.client.conversations.list();
+ const conversationInfos = await Promise.all(
+ convList.map(toConversationInfo),
+ );
+ setConversations(conversationInfos);
+ } catch (err) {
+ // Silently fail for background refresh
+ console.warn("Background refresh failed:", err);
+ }
+ }, 30000); // 30 seconds
+ } catch (err: unknown) {
+ const errMsg = `Failed to initialize: ${(err as Error).message}`;
+ setError(errMsg);
+ onError?.(errMsg);
+ setIsLoading(false);
+ }
+ };
+
+ initAgent();
+
+ // Cleanup interval on unmount
+ return () => {
+ if (refreshIntervalRef.current) {
+ clearInterval(refreshIntervalRef.current);
+ }
+ };
+ }, [env, agentIdentifiers, onError, onStatusChange]);
+
+ // Find or create conversation
+ const findOrCreateConversationInternal = async (
+ agentInstance: Agent,
+ identifiers: string[],
+ ): Promise => {
+ const client = agentInstance.client;
+ const groupOptions = {
+ groupName: "CLI Group Chat",
+ groupDescription: "Group created from CLI",
+ };
+
+ try {
+ if (identifiers.length > 1) {
+ // Create group
+ const allEthAddresses = identifiers.every(isEthAddress);
+
+ if (allEthAddresses) {
+ const memberIdentifiers = identifiers.map((id) => ({
+ identifier: id,
+ identifierKind: IdentifierKind.Ethereum,
+ }));
+ return await client.conversations.newGroupWithIdentifiers(
+ memberIdentifiers,
+ groupOptions,
+ );
+ }
+
+ return await client.conversations.newGroup(identifiers, groupOptions);
+ }
+
+ // Create/find DM
+ const identifier = identifiers[0];
+
+ // Try to find existing conversation
+ await client.conversations.sync();
+ const convs = await client.conversations.list();
+
+ for (const conv of convs) {
+ if (!isDm(conv)) continue;
+
+ if (conv.peerInboxId.toLowerCase() === identifier.toLowerCase()) {
+ return conv;
+ }
+
+ if (isEthAddress(identifier)) {
+ const members = await conv.members();
+ const foundMember = members.find((member) => {
+ const ethId = member.accountIdentifiers.find(
+ (id) => id.identifierKind === IdentifierKind.Ethereum,
+ );
+ return ethId?.identifier.toLowerCase() === identifier.toLowerCase();
+ });
+
+ if (foundMember) return conv;
+ }
+ }
+
+ // Create new DM
+ return isEthAddress(identifier)
+ ? await client.conversations.newDmWithIdentifier({
+ identifier,
+ identifierKind: IdentifierKind.Ethereum,
+ })
+ : await client.conversations.newDm(identifier);
+ } catch (err: unknown) {
+ const errMsg = `Failed to create conversation: ${(err as Error).message}`;
+ setError(errMsg);
+ onError?.(errMsg);
+ return null;
+ }
+ };
+
+ // Load messages
+ const loadMessages = async (conv: Conversation, agentInstance: Agent) => {
+ await conv.sync();
+ const msgs = await conv.messages();
+ const formatted = msgs
+ .slice(-50)
+ .map((msg) =>
+ formatMessage(msg, agentInstance.client.inboxId, agentInstance.address),
+ );
+ setMessages(formatted);
+ };
+
+ // Start message stream
+ const startMessageStream = async (
+ conv: Conversation,
+ agentInstance: Agent,
+ ) => {
+ if (isStreamingRef.current) return;
+
+ isStreamingRef.current = true;
+ const client = agentInstance.client;
+
+ try {
+ streamRef.current = await client.conversations.streamAllMessages();
+
+ (async () => {
+ if (!streamRef.current) return;
+
+ for await (const message of streamRef.current) {
+ if (message.conversationId !== conv.id) continue;
+
+ const formatted = formatMessage(
+ message,
+ agentInstance.client.inboxId,
+ agentInstance.address,
+ );
+ setMessages((prev) => [...prev, formatted]);
+ }
+ })().catch((err) => {
+ const errMsg = `Stream error: ${(err as Error).message}`;
+ setError(errMsg);
+ onError?.(errMsg);
+ isStreamingRef.current = false;
+ });
+ } catch (err: unknown) {
+ const errMsg = `Failed to start stream: ${(err as Error).message}`;
+ setError(errMsg);
+ onError?.(errMsg);
+ isStreamingRef.current = false;
+ }
+ };
+
+ // Public methods
+ const setCurrentConversationById = async (id: string) => {
+ const conv = conversations.find((c) => c.id === id);
+ if (conv && agent) {
+ setCurrentConversation(conv);
+ await loadMessages(conv.conversation, agent);
+ await startMessageStream(conv.conversation, agent);
+ }
+ };
+
+ const sendMessage = async (content: string) => {
+ if (!currentConversation || !agent) {
+ throw new Error("No active conversation or agent");
+ }
+
+ await currentConversation.conversation.send(content);
+ };
+
+ const findOrCreateConversation = async (identifiers: string[]) => {
+ if (!agent) throw new Error("Agent not initialized");
+
+ const conv = await findOrCreateConversationInternal(agent, identifiers);
+ if (conv) {
+ const convInfo = await toConversationInfo(conv);
+ setCurrentConversation(convInfo);
+
+ // Update conversations list
+ const exists = conversations.find((c) => c.id === convInfo.id);
+ if (!exists) {
+ setConversations([...conversations, convInfo]);
+ }
+
+ await loadMessages(conv, agent);
+ await startMessageStream(conv, agent);
+ }
+ };
+
+ const refreshConversations = async () => {
+ if (!agent) throw new Error("Agent not initialized");
+
+ try {
+ // Sync conversations to get latest
+ await agent.client.conversations.sync();
+ const convList = await agent.client.conversations.list();
+ const conversationInfos = await Promise.all(
+ convList.map(toConversationInfo),
+ );
+ setConversations(conversationInfos);
+ } catch (err: unknown) {
+ throw new Error(`Failed to refresh conversations: ${(err as Error).message}`);
+ }
+ };
+
+ return {
+ agent,
+ address,
+ inboxId,
+ url,
+ installations,
+ conversations,
+ currentConversation,
+ messages,
+ isLoading,
+ error,
+ setCurrentConversationById,
+ sendMessage,
+ findOrCreateConversation,
+ refreshConversations,
+ };
+};
+
diff --git a/src/store/state.ts b/src/store/state.ts
new file mode 100644
index 0000000..fa27107
--- /dev/null
+++ b/src/store/state.ts
@@ -0,0 +1,107 @@
+import { create } from "zustand";
+import type { AppState } from "../types/index.js";
+import type { XmtpEnv } from "@xmtp/agent-sdk";
+
+export const useStore = create((set, get) => ({
+ // Agent state
+ agent: null,
+ address: "",
+ inboxId: "",
+ url: "",
+ installations: 0,
+ env: (process.env.XMTP_ENV as XmtpEnv) || "production",
+
+ // Conversation state
+ conversations: [],
+ currentConversation: null,
+ messages: [],
+
+ // UI state
+ showSidebar: true,
+ showCommandPalette: false,
+ selectedConversationIndex: -1, // Start with no conversation selected
+ inputValue: "",
+ commandMode: false,
+
+ // Status state
+ isLoading: true,
+ loadingStatus: "Initializing...",
+ error: "",
+ statusMessage: "",
+ connectionStatus: "connecting",
+
+ // Actions
+ setAgent: (agent) =>
+ set({
+ agent,
+ address: agent?.address || "",
+ inboxId: agent?.client?.inboxId || "",
+ connectionStatus: "connected",
+ }),
+
+ setConversations: (conversations) => set({ conversations }),
+
+ setCurrentConversation: (conversation) =>
+ set({
+ currentConversation: conversation,
+ selectedConversationIndex: conversation
+ ? get().conversations.findIndex((c) => c.id === conversation.id)
+ : 0,
+ }),
+
+ setMessages: (messages) => set({ messages }),
+
+ addMessage: (message) =>
+ set((state) => ({ messages: [...state.messages, message] })),
+
+ toggleSidebar: () => set((state) => ({ showSidebar: !state.showSidebar })),
+
+ toggleCommandPalette: () =>
+ set((state) => ({ showCommandPalette: !state.showCommandPalette })),
+
+ setInputValue: (inputValue) => set({ inputValue }),
+
+ setError: (error) => set({ error }),
+
+ setStatusMessage: (statusMessage) => set({ statusMessage }),
+
+ setLoadingStatus: (loadingStatus) =>
+ set({ loadingStatus, isLoading: loadingStatus !== "" }),
+
+ nextConversation: () => {
+ const { conversations, selectedConversationIndex } = get();
+ // If no conversations, stay at -1 (no selection)
+ if (conversations.length === 0) {
+ set({ selectedConversationIndex: -1 });
+ return;
+ }
+ // Start from -1 (New Chat) if no conversations, otherwise cycle through
+ const maxIndex = conversations.length - 1;
+ const nextIndex = selectedConversationIndex >= maxIndex ? -1 : selectedConversationIndex + 1;
+ set({ selectedConversationIndex: nextIndex });
+ },
+
+ prevConversation: () => {
+ const { conversations, selectedConversationIndex } = get();
+ // If no conversations, stay at -1 (no selection)
+ if (conversations.length === 0) {
+ set({ selectedConversationIndex: -1 });
+ return;
+ }
+ const maxIndex = conversations.length - 1;
+ // Cycle: ... -> 2 -> 1 -> 0 -> -1 (New Chat) -> maxIndex -> ...
+ const prevIndex = selectedConversationIndex <= -1 ? maxIndex : selectedConversationIndex - 1;
+ set({ selectedConversationIndex: prevIndex });
+ },
+
+ selectConversation: (index) => {
+ const { conversations } = get();
+ // Allow -1 for "New Chat" option
+ if (index === -1 || (index >= 0 && index < conversations.length)) {
+ set({ selectedConversationIndex: index });
+ }
+ },
+
+ setCommandMode: (commandMode) => set({ commandMode }),
+}));
+
diff --git a/src/types/index.ts b/src/types/index.ts
new file mode 100644
index 0000000..5604def
--- /dev/null
+++ b/src/types/index.ts
@@ -0,0 +1,78 @@
+import type { Conversation, XmtpEnv } from "@xmtp/agent-sdk";
+
+export interface FormattedMessage {
+ id: string;
+ timestamp: string;
+ sender: string;
+ content: string;
+ isFromSelf: boolean;
+ sentAt: Date;
+}
+
+export interface ConversationInfo {
+ id: string;
+ conversation: Conversation;
+ name: string;
+ type: "dm" | "group";
+ peerAddress?: string;
+ peerInboxId?: string;
+ unreadCount: number;
+ lastMessageAt?: Date;
+ lastMessage?: string;
+}
+
+export interface AppState {
+ // Agent state
+ agent: any | null;
+ address: string;
+ inboxId: string;
+ url: string;
+ installations: number;
+ env: XmtpEnv;
+
+ // Conversation state
+ conversations: ConversationInfo[];
+ currentConversation: ConversationInfo | null;
+ messages: FormattedMessage[];
+
+ // UI state
+ showSidebar: boolean;
+ showCommandPalette: boolean;
+ selectedConversationIndex: number;
+ inputValue: string;
+ commandMode: boolean;
+
+ // Status state
+ isLoading: boolean;
+ loadingStatus: string;
+ error: string;
+ statusMessage: string;
+ connectionStatus: "connected" | "disconnected" | "connecting";
+
+ // Actions
+ setAgent: (agent: any) => void;
+ setConversations: (conversations: ConversationInfo[]) => void;
+ setCurrentConversation: (conversation: ConversationInfo | null) => void;
+ setMessages: (messages: FormattedMessage[]) => void;
+ addMessage: (message: FormattedMessage) => void;
+ toggleSidebar: () => void;
+ toggleCommandPalette: () => void;
+ setInputValue: (value: string) => void;
+ setError: (error: string) => void;
+ setStatusMessage: (message: string) => void;
+ setLoadingStatus: (status: string) => void;
+ nextConversation: () => void;
+ prevConversation: () => void;
+ selectConversation: (index: number) => void;
+ setCommandMode: (mode: boolean) => void;
+}
+
+export type KeyBinding = {
+ key: string;
+ ctrl?: boolean;
+ shift?: boolean;
+ alt?: boolean;
+ description: string;
+ action: () => void;
+};
+
diff --git a/src/utils/formatters.ts b/src/utils/formatters.ts
new file mode 100644
index 0000000..dd152d2
--- /dev/null
+++ b/src/utils/formatters.ts
@@ -0,0 +1,66 @@
+import type { DecodedMessage } from "@xmtp/agent-sdk";
+import type { FormattedMessage } from "../types/index.js";
+
+export const formatMessage = (
+ message: DecodedMessage,
+ selfInboxId: string,
+ selfAddress?: string,
+): FormattedMessage => {
+ const timestamp = message.sentAt.toLocaleTimeString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ });
+
+ const isFromSelf = message.senderInboxId === selfInboxId;
+ const sender = isFromSelf
+ ? "You"
+ : selfAddress
+ ? selfAddress.slice(0, 6) + "..." + selfAddress.slice(-4)
+ : message.senderInboxId.slice(0, 8) + "...";
+
+ let content: string;
+ if (typeof message.content === "string") {
+ content = message.content;
+ } else {
+ try {
+ content = JSON.stringify(message.content, null, 2);
+ } catch {
+ content = JSON.stringify(message.content);
+ }
+ }
+
+ return {
+ id: message.id,
+ timestamp,
+ sender,
+ content,
+ isFromSelf,
+ sentAt: message.sentAt,
+ };
+};
+
+export const formatAddress = (address: string, length = 10): string => {
+ if (address.length <= length) return address;
+ const start = Math.floor(length / 2);
+ const end = length - start - 3;
+ return `${address.slice(0, start)}...${address.slice(-end)}`;
+};
+
+export const formatTime = (date: Date): string => {
+ const now = new Date();
+ const diffMs = now.getTime() - date.getTime();
+ const diffMins = Math.floor(diffMs / 60000);
+ const diffHours = Math.floor(diffMins / 60);
+ const diffDays = Math.floor(diffHours / 24);
+
+ if (diffMins < 1) return "now";
+ if (diffMins < 60) return `${diffMins}m`;
+ if (diffHours < 24) return `${diffHours}h`;
+ if (diffDays < 7) return `${diffDays}d`;
+
+ return date.toLocaleDateString("en-US", {
+ month: "short",
+ day: "numeric",
+ });
+};
+
diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts
new file mode 100644
index 0000000..0f5e7fe
--- /dev/null
+++ b/src/utils/helpers.ts
@@ -0,0 +1,22 @@
+import type { Conversation, Group, Dm } from "@xmtp/agent-sdk";
+
+export const isGroup = (conversation: Conversation): conversation is Group => {
+ return conversation.constructor.name === "Group";
+};
+
+export const isDm = (conversation: Conversation): conversation is Dm => {
+ return conversation.constructor.name === "Dm";
+};
+
+export const isEthAddress = (identifier: string): boolean => {
+ return identifier.startsWith("0x") && identifier.length === 42;
+};
+
+export const handleError = (
+ error: unknown,
+ context: string,
+): string => {
+ const err = error as Error;
+ return `${context}: ${err.message}`;
+};
+
diff --git a/yarn.lock b/yarn.lock
index dca08a9..4a49612 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -914,6 +914,13 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ansi-align@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59"
+ integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==
+ dependencies:
+ string-width "^4.1.0"
+
ansi-escapes@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.1.1.tgz#fdd39427a7e5a26233e48a8b4366351629ffea1b"
@@ -921,6 +928,16 @@ ansi-escapes@^7.0.0:
dependencies:
environment "^1.0.0"
+ansi-regex@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
+
+ansi-regex@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -931,6 +948,13 @@ ansi-regex@^6.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1"
integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
@@ -958,6 +982,20 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+boxen@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb"
+ integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^5.3.1"
+ chalk "^2.4.2"
+ cli-boxes "^2.2.0"
+ string-width "^3.0.0"
+ term-size "^1.2.0"
+ type-fest "^0.3.0"
+ widest-line "^2.0.0"
+
brace-expansion@^1.1.7:
version "1.1.12"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
@@ -985,6 +1023,11 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
chalk@4.1.2, chalk@^4.0.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
@@ -993,11 +1036,25 @@ chalk@4.1.2, chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
chalk@^5.3.0, chalk@^5.6.0:
version "5.6.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea"
integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==
+cli-boxes@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
+ integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
+
cli-boxes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145"
@@ -1034,6 +1091,13 @@ code-excerpt@^4.0.0:
dependencies:
convert-to-spaces "^2.0.1"
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
color-convert@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
@@ -1041,6 +1105,11 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
@@ -1068,6 +1137,15 @@ convert-to-spaces@^2.0.1:
resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz#61a6c98f8aa626c16b296b862a91412a33bceb6b"
integrity sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cross-spawn@^7.0.6:
version "7.0.6"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
@@ -1114,6 +1192,11 @@ emoji-regex@^10.3.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.6.0.tgz#bf3d6e8f7f8fd22a65d9703475bc0147357a6b0d"
integrity sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -1166,6 +1249,11 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
escape-string-regexp@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
@@ -1285,6 +1373,19 @@ eventemitter3@5.0.1:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -1378,6 +1479,11 @@ get-east-asian-width@^1.0.0, get-east-asian-width@^1.3.1:
resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz#9bc4caa131702b4b61729cb7e42735bc550c9ee6"
integrity sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==
+
get-tsconfig@^4.7.5:
version "4.13.0"
resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7"
@@ -1419,6 +1525,11 @@ graphemer@^1.4.0:
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@@ -1452,6 +1563,14 @@ indent-string@^5.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5"
integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==
+ink-box@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ink-box/-/ink-box-2.0.0.tgz#1bbf4617d6cc18c127b3e38f80b81cf1cc92b4bf"
+ integrity sha512-GTn8oEl/8U+w5Yrqo75xCnOh835n6upxeTkL2SkSGVt1I5a9ONXjFUHtLORZoh5fNAgImiTz+oT13bOlgaZWKg==
+ dependencies:
+ boxen "^3.0.0"
+ prop-types "^15.7.2"
+
ink-text-input@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/ink-text-input/-/ink-text-input-6.0.0.tgz#71bdfacbfd161fbaff88bb8ca6b3a55dbc3d36e0"
@@ -1494,6 +1613,11 @@ is-extglob@^2.1.1:
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
+
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
@@ -1533,6 +1657,11 @@ is-plain-obj@^4.1.0:
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
+
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -1543,7 +1672,7 @@ isows@1.0.7:
resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915"
integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==
-js-tokens@^4.0.0:
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
@@ -1607,6 +1736,21 @@ long@^5.0.0, long@^5.2.0:
resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83"
integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
@@ -1654,6 +1798,18 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
+ dependencies:
+ path-key "^2.0.0"
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
onetime@^5.1.0:
version "5.1.2"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
@@ -1687,6 +1843,11 @@ ox@0.9.6:
abitype "^1.0.9"
eventemitter3 "5.0.1"
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
@@ -1718,6 +1879,11 @@ path-exists@^4.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@@ -1763,6 +1929,15 @@ prettier@^3.4.2:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393"
integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==
+prop-types@^15.7.2:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
protobufjs@^7.0.0:
version "7.5.4"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a"
@@ -1781,6 +1956,11 @@ protobufjs@^7.0.0:
"@types/node" ">=13.7.0"
long "^5.0.0"
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
punycode@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -1791,6 +1971,11 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+react-is@^16.13.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
react-reconciler@^0.32.0:
version "0.32.0"
resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.32.0.tgz#a08bcd8c454a4cd839164d6e05926e30a7a7fac2"
@@ -1855,6 +2040,13 @@ semver@^7.5.2, semver@^7.6.0, semver@^7.7.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -1862,6 +2054,11 @@ shebang-command@^2.0.0:
dependencies:
shebang-regex "^3.0.0"
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
@@ -1872,7 +2069,7 @@ shell-quote@1.8.3:
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b"
integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
-signal-exit@^3.0.2, signal-exit@^3.0.7:
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -1918,6 +2115,23 @@ stack-utils@^2.0.6:
dependencies:
escape-string-regexp "^2.0.0"
+string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -1936,6 +2150,20 @@ string-width@^7.0.0, string-width@^7.2.0:
get-east-asian-width "^1.0.0"
strip-ansi "^7.1.0"
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -1950,6 +2178,11 @@ strip-ansi@^7.1.0:
dependencies:
ansi-regex "^6.0.1"
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
@@ -1962,6 +2195,13 @@ supports-color@8.1.1:
dependencies:
has-flag "^4.0.0"
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@@ -1976,6 +2216,13 @@ synckit@0.11.11, synckit@^0.11.7:
dependencies:
"@pkgr/core" "^0.2.9"
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==
+ dependencies:
+ execa "^0.7.0"
+
tinyglobby@^0.2.12:
version "0.2.15"
resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
@@ -2023,6 +2270,11 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
+type-fest@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1"
+ integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==
+
type-fest@^4.18.2, type-fest@^4.27.0:
version "4.41.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58"
@@ -2088,6 +2340,13 @@ viem@^2.37.6:
ox "0.9.6"
ws "8.18.3"
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -2095,6 +2354,13 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
widest-line@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-5.0.0.tgz#b74826a1e480783345f0cd9061b49753c9da70d0"
@@ -2135,6 +2401,11 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
@@ -2162,3 +2433,8 @@ yoga-layout@~3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/yoga-layout/-/yoga-layout-3.2.1.tgz#d2d1ba06f0e81c2eb650c3e5ad8b0b4adde1e843"
integrity sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==
+
+zustand@^5.0.8:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.8.tgz#b998a0c088c7027a20f2709141a91cb07ac57f8a"
+ integrity sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==