From ecb5b88b1227d99f23830ab1a9c67949027ef215 Mon Sep 17 00:00:00 2001 From: anonim <70073044+l1v0n1@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:11:07 +0300 Subject: [PATCH] feat: enhance Telegram MCP server with new features and improvements - Added support for string session authentication in main.py. - Introduced new tools for searching contacts and retrieving message context. - Updated README.md with detailed usage examples and security considerations. - Modified pyproject.toml for versioning and dependency updates. - Expanded .gitignore to include Telegram session files. --- .gitignore | 4 + README.md | 171 ++++++------ claude_desktop_config.json | 13 + main.py | 504 +++++++++++++++++++++++++++++++++++- pyproject.toml | 28 +- requirements.txt | 6 + screenshots/1.png | Bin 0 -> 173943 bytes session_string_generator.py | 91 +++++++ uv.lock | 490 +++++++++++++++++++++++++++++++++++ 9 files changed, 1224 insertions(+), 83 deletions(-) create mode 100644 claude_desktop_config.json create mode 100644 requirements.txt create mode 100644 screenshots/1.png create mode 100755 session_string_generator.py create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index 0a19790..81cee07 100644 --- a/.gitignore +++ b/.gitignore @@ -172,3 +172,7 @@ cython_debug/ # PyPI configuration file .pypirc + +# Telegram session files +*.session +*.session-journal diff --git a/README.md b/README.md index 59595ff..c90ee31 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,99 @@ -![](https://badge.mcpx.dev 'MCP') +# Telegram MCP for Claude + +![MCP Badge](https://badge.mcpx.dev) [![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-green?style=flat-square)](https://opensource.org/licenses/Apache-2.0) -[![LinkedIn](https://img.shields.io/badge/LinkedIn-blue)](https://www.linkedin.com/in/eugene-evstafev-716669181/) -# Telegram MCP Server +A powerful Telegram integration for Claude via the Model Context Protocol (MCP), allowing you to interact with your Telegram account directly from Claude Desktop. -A Telegram MCP (Model Context Protocol) server built using Python, Telethon, and MCP Python SDK. This MCP server provides simple tools for interacting with Telegram chats directly through MCP-compatible hosts, such as Claude for Desktop. +![Telegram MCP in action](screenshots/1.png) -## Tools Provided +## 🚀 Features -- **`get_chats`**: Retrieve a paginated list of your Telegram chats. -- **`get_messages`**: Retrieve paginated messages from a specific chat. -- **`send_message`**: Send a message to a specific chat. +This MCP server provides a comprehensive suite of tools for seamless Telegram interaction: -## Requirements +### Chat Management +- **get_chats** - Get a paginated list of your chats +- **list_chats** - List all chats with detailed metadata and filtering options +- **get_chat** - Get detailed information about a specific chat -- Python 3.10 or higher -- [Telethon](https://docs.telethon.dev/) package +### Messaging +- **get_messages** - Get messages from a specific chat with pagination +- **list_messages** - Retrieve messages with powerful filtering (text search, date ranges) +- **send_message** - Send messages to any chat +- **get_message_context** - View the context around a specific message + +### Contact Management +- **search_contacts** - Find contacts by name, username or phone number +- **get_direct_chat_by_contact** - Find personal chats with specific contacts +- **get_contact_chats** - List all chats (including groups) involving a contact +- **get_last_interaction** - View your most recent exchanges with a contact + +## 📋 Requirements + +- Python 3.10+ +- [Telethon](https://docs.telethon.dev/) for Telegram API access - [MCP Python SDK](https://modelcontextprotocol.io/docs/) -- [UV](https://astral.sh/uv/) (optional but recommended) +- [UV](https://astral.sh/uv/) package manager +- [Claude Desktop](https://claude.ai/desktop) app -## Installation and Setup +## 🔧 Installation -### Clone the Repository +### 1. Clone the Repository ```bash git clone https://github.com/chigwell/telegram-mcp cd telegram-mcp ``` -### Create Environment File +### 2. Generate Session String -Copy and rename `.env.example` to `.env` and fill it with your Telegram credentials obtained from [https://my.telegram.org/apps](https://my.telegram.org/apps): +For better security and portability, this project uses Telethon's StringSession. Generate your session string: ```bash -cp .env.example .env +python session_string_generator.py ``` -Your `.env` file should look like: +This will: +1. Ask for your phone number +2. Send a verification code to your Telegram app +3. Generate a session string and add it to your `.env` file -```env +The session string allows authentication without storing SQLite session files, which helps avoid database lock issues and improves portability. + +### 3. Set Up Your Environment + +Create a `.env` file with your Telegram credentials: + +``` TELEGRAM_API_ID=your_api_id_here TELEGRAM_API_HASH=your_api_hash_here -TELEGRAM_SESSION_NAME=your_session_name +TELEGRAM_SESSION_NAME=anon +TELEGRAM_SESSION_STRING=your_session_string_here ``` -### Setup Python Environment +You can obtain API credentials at [my.telegram.org/apps](https://my.telegram.org/apps). -Use `uv` to set up the Python environment and install dependencies: +### 4. Install Dependencies ```bash uv venv -source .venv/bin/activate +source .venv/bin/activate # On Windows: .venv\Scripts\activate uv add "mcp[cli]" telethon python-dotenv nest_asyncio ``` -### Run the Server (First-time Auth) +### 5. Configure Claude Desktop -The first time you run the server, Telethon will prompt you to enter a Telegram authentication code: - -```bash -uv run main.py -``` - -Authenticate by entering the code sent to your Telegram client. This step is only required once. - -## Integrating with Claude for Desktop - -### macOS/Linux - -Edit your Claude Desktop configuration: - -```bash -nano ~/Library/Application\ Support/Claude/claude_desktop_config.json -``` - -Add this MCP server configuration: +#### On macOS/Linux: +Edit `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "telegram-mcp": { - "command": "uv", + "command": "/full/path/to/uv", "args": [ "--directory", - "/ABSOLUTE_PATH/telegram-mcp", + "/full/path/to/telegram-mcp-server", "run", "main.py" ] @@ -92,40 +102,57 @@ Add this MCP server configuration: } ``` -Ensure you replace `/ABSOLUTE_PATH/telegram-mcp` with your project's absolute path. +#### On Windows: +Edit `%APPDATA%\Claude\claude_desktop_config.json` with similar configuration. -### Windows +## 🎮 Usage Examples -Edit your Claude Desktop configuration: +Here are some ways to interact with Telegram through Claude: -```powershell -nano $env:AppData\Claude\claude_desktop_config.json -``` +### Basic Chat Navigation +- "Show me my most recent chats" +- "List my group chats with unread messages" +- "Show detailed information about chat 123456789" -Add this MCP server configuration: +### Messaging +- "Show me the last 10 messages from chat 123456789" +- "Send 'I'll be there in 10 minutes' to chat 123456789" +- "Find messages containing 'meeting' in chat 123456789" +- "Show messages from March 1-15, 2023 in chat 123456789" -```json -{ - "mcpServers": { - "telegram-mcp": { - "command": "uv", - "args": [ - "--directory", - "C:\\ABSOLUTE_PATH\\telegram-mcp", - "run", - "main.py" - ] - } - } -} -``` +### Contact Interactions +- "Search for contacts named 'Alex'" +- "Find my direct chat with John" +- "Show all chats where I interact with contact 987654321" +- "Show my last conversation with Lisa" -Ensure you replace `C:\ABSOLUTE_PATH\telegram-mcp` with your project's absolute path. +### Advanced Features +- "Show the context around message 42 in chat 123456789" +- "List all channels I'm subscribed to" -## Usage +## 🔒 Security Considerations -Once integrated, your Telegram tools (`get_chats`, `get_messages`, and `send_message`) will become available within the Claude for Desktop UI or any other MCP-compatible client. +- **Private API Keys**: Never commit your `.env` file or session files to Git repositories +- **Session String**: The session string in your `.env` file provides full access to your Telegram account. Keep it secure. +- **Local Processing**: All Telegram data is processed locally on your machine - no data is sent to external servers beyond Telegram's own API. +- **Permissions**: The MCP server has the same access to Telegram as you would have with the official app, including reading and sending messages. -## License +## 🛠️ Troubleshooting -This project is licensed under the [Apache 2.0 License](https://opensource.org/licenses/Apache-2.0). \ No newline at end of file +If you encounter issues: + +1. Check Claude Desktop logs for error messages +2. Ensure your Telegram API credentials are correct +3. Verify that the paths in your Claude Desktop config are absolute and correct +4. If you see database lock errors, use the session string authentication method +5. If you need to regenerate your session string, run `python session_string_generator.py` again + +## 📄 License + +This project is licensed under the [Apache 2.0 License](LICENSE). + +## 🙏 Acknowledgements + +- [Telethon](https://github.com/LonamiWebs/Telethon) for the Telegram client library +- [Model Context Protocol](https://modelcontextprotocol.io/) for the integration framework +- [Anthropic](https://www.anthropic.com/) for Claude and the Claude Desktop app \ No newline at end of file diff --git a/claude_desktop_config.json b/claude_desktop_config.json new file mode 100644 index 0000000..5834144 --- /dev/null +++ b/claude_desktop_config.json @@ -0,0 +1,13 @@ +{ + "mcpServers": { + "telegram-mcp": { + "command": "/PATH-TO/uv", + "args": [ + "--directory", + "/PATH-TO/telegram-mcp", + "run", + "main.py" + ] + } + } +} \ No newline at end of file diff --git a/main.py b/main.py index 6fbc0ab..ca52b77 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,19 @@ import os +import sys +import time from dotenv import load_dotenv import asyncio import nest_asyncio from mcp.server.fastmcp import FastMCP from telethon import TelegramClient +from telethon.sessions import StringSession +import sqlite3 +from telethon import utils +from telethon.tl.types import User, Chat, Channel +from telethon.tl.functions.contacts import SearchRequest +from datetime import datetime, timedelta +import json +from typing import List, Dict, Optional, Union, Any load_dotenv() @@ -11,13 +21,62 @@ TELEGRAM_API_ID = int(os.getenv("TELEGRAM_API_ID")) TELEGRAM_API_HASH = os.getenv("TELEGRAM_API_HASH") TELEGRAM_SESSION_NAME = os.getenv("TELEGRAM_SESSION_NAME") +# Check if a string session exists in environment, otherwise use file-based session +SESSION_STRING = os.getenv("TELEGRAM_SESSION_STRING") mcp = FastMCP("telegram") -client = TelegramClient(TELEGRAM_SESSION_NAME, TELEGRAM_API_ID, TELEGRAM_API_HASH) + +if SESSION_STRING: + # Use the string session if available + client = TelegramClient(StringSession(SESSION_STRING), TELEGRAM_API_ID, TELEGRAM_API_HASH) +else: + # Use file-based session + client = TelegramClient(TELEGRAM_SESSION_NAME, TELEGRAM_API_ID, TELEGRAM_API_HASH) + + +def format_entity(entity) -> Dict[str, Any]: + """Helper function to format entity information consistently.""" + result = {"id": entity.id} + + if hasattr(entity, "title"): + result["name"] = entity.title + result["type"] = "group" if isinstance(entity, Chat) else "channel" + elif hasattr(entity, "first_name"): + name_parts = [] + if entity.first_name: + name_parts.append(entity.first_name) + if hasattr(entity, "last_name") and entity.last_name: + name_parts.append(entity.last_name) + result["name"] = " ".join(name_parts) + result["type"] = "user" + if hasattr(entity, "username") and entity.username: + result["username"] = entity.username + if hasattr(entity, "phone") and entity.phone: + result["phone"] = entity.phone + + return result + + +def format_message(message) -> Dict[str, Any]: + """Helper function to format message information consistently.""" + result = { + "id": message.id, + "date": message.date.isoformat(), + "text": message.message or "", + } + + if message.from_id: + result["from_id"] = utils.get_peer_id(message.from_id) + + if message.media: + result["has_media"] = True + result["media_type"] = type(message.media).__name__ + + return result @mcp.tool() -async def get_chats(page: int, page_size: int = 20) -> str: +async def get_chats(page: int = 1, page_size: int = 20) -> str: """ Get a paginated list of chats. @@ -42,7 +101,7 @@ async def get_chats(page: int, page_size: int = 20) -> str: @mcp.tool() -async def get_messages(chat_id: int, page: int, page_size: int = 20) -> str: +async def get_messages(chat_id: int, page: int = 1, page_size: int = 20) -> str: """ Get paginated messages from a specific chat. @@ -87,14 +146,443 @@ async def send_message(chat_id: int, message: str) -> str: return f"Failed to send message: {e}" +@mcp.tool() +async def search_contacts(query: str) -> str: + """ + Search for contacts by name or phone number. + + Args: + query: The search term to look for in contact names or phone numbers. + """ + try: + # Search in your contacts + contacts = await client.get_contacts() + results = [] + + for contact in contacts: + if not contact: + continue + + name = f"{getattr(contact, 'first_name', '')} {getattr(contact, 'last_name', '')}".strip() + username = getattr(contact, 'username', '') + phone = getattr(contact, 'phone', '') + + if (query.lower() in name.lower() or + (username and query.lower() in username.lower()) or + (phone and query in phone)): + + contact_info = f"ID: {contact.id}, Name: {name}" + if username: + contact_info += f", Username: @{username}" + if phone: + contact_info += f", Phone: {phone}" + + results.append(contact_info) + + if not results: + return f"No contacts found matching '{query}'." + + return "\n".join(results) + except Exception as e: + return f"Error searching contacts: {e}" + + +@mcp.tool() +async def list_messages(chat_id: int, limit: int = 20, search_query: str = None, + from_date: str = None, to_date: str = None) -> str: + """ + Retrieve messages with optional filters. + + Args: + chat_id: The ID of the chat to get messages from. + limit: Maximum number of messages to retrieve. + search_query: Filter messages containing this text. + from_date: Filter messages starting from this date (format: YYYY-MM-DD). + to_date: Filter messages until this date (format: YYYY-MM-DD). + """ + try: + entity = await client.get_entity(chat_id) + + # Parse date filters if provided + from_date_obj = None + to_date_obj = None + + if from_date: + try: + from_date_obj = datetime.strptime(from_date, "%Y-%m-%d") + except ValueError: + return f"Invalid from_date format. Use YYYY-MM-DD." + + if to_date: + try: + to_date_obj = datetime.strptime(to_date, "%Y-%m-%d") + # Set to end of day + to_date_obj = to_date_obj + timedelta(days=1, microseconds=-1) + except ValueError: + return f"Invalid to_date format. Use YYYY-MM-DD." + + # Prepare filter parameters + params = {} + if search_query: + params['search'] = search_query + + messages = await client.get_messages(entity, limit=limit, **params) + + # Apply date filters (Telethon doesn't support date filtering in get_messages directly) + if from_date_obj or to_date_obj: + filtered_messages = [] + for msg in messages: + if from_date_obj and msg.date < from_date_obj: + continue + if to_date_obj and msg.date > to_date_obj: + continue + filtered_messages.append(msg) + messages = filtered_messages + + if not messages: + return "No messages found matching the criteria." + + lines = [] + for msg in messages: + sender = "" + if msg.sender: + sender_name = getattr(msg.sender, 'first_name', '') or getattr(msg.sender, 'title', 'Unknown') + sender = f"{sender_name} | " + + lines.append(f"ID: {msg.id} | {sender}Date: {msg.date} | Message: {msg.message or '[Media/No text]'}") + + return "\n".join(lines) + except Exception as e: + return f"Error retrieving messages: {e}" + + +@mcp.tool() +async def list_chats(chat_type: str = None, limit: int = 20) -> str: + """ + List available chats with metadata. + + Args: + chat_type: Filter by chat type ('user', 'group', 'channel', or None for all) + limit: Maximum number of chats to retrieve. + """ + try: + dialogs = await client.get_dialogs(limit=limit) + + results = [] + for dialog in dialogs: + entity = dialog.entity + + # Filter by type if requested + current_type = None + if isinstance(entity, User): + current_type = "user" + elif isinstance(entity, Chat): + current_type = "group" + elif isinstance(entity, Channel): + if getattr(entity, 'broadcast', False): + current_type = "channel" + else: + current_type = "group" # Supergroup + + if chat_type and current_type != chat_type.lower(): + continue + + # Format chat info + chat_info = f"Chat ID: {entity.id}" + + if hasattr(entity, 'title'): + chat_info += f", Title: {entity.title}" + elif hasattr(entity, 'first_name'): + name = f"{entity.first_name}" + if hasattr(entity, 'last_name') and entity.last_name: + name += f" {entity.last_name}" + chat_info += f", Name: {name}" + + chat_info += f", Type: {current_type}" + + if hasattr(entity, 'username') and entity.username: + chat_info += f", Username: @{entity.username}" + + # Add unread count if available + if hasattr(dialog, 'unread_count') and dialog.unread_count > 0: + chat_info += f", Unread: {dialog.unread_count}" + + results.append(chat_info) + + if not results: + return f"No chats found matching the criteria." + + return "\n".join(results) + except Exception as e: + return f"Error listing chats: {e}" + + +@mcp.tool() +async def get_chat(chat_id: int) -> str: + """ + Get detailed information about a specific chat. + + Args: + chat_id: The ID of the chat. + """ + try: + entity = await client.get_entity(chat_id) + + result = [] + result.append(f"ID: {entity.id}") + + if hasattr(entity, 'title'): + result.append(f"Title: {entity.title}") + chat_type = "Channel" if getattr(entity, 'broadcast', False) else "Group" + result.append(f"Type: {chat_type}") + if hasattr(entity, 'username') and entity.username: + result.append(f"Username: @{entity.username}") + if hasattr(entity, 'participants_count'): + result.append(f"Participants: {entity.participants_count}") + elif isinstance(entity, User): + name = f"{entity.first_name}" + if entity.last_name: + name += f" {entity.last_name}" + result.append(f"Name: {name}") + result.append(f"Type: User") + if entity.username: + result.append(f"Username: @{entity.username}") + if entity.phone: + result.append(f"Phone: {entity.phone}") + result.append(f"Bot: {'Yes' if entity.bot else 'No'}") + result.append(f"Verified: {'Yes' if entity.verified else 'No'}") + + # Get last activity if it's a dialog + try: + dialogs = await client.get_dialogs(limit=100) + for dialog in dialogs: + if dialog.entity.id == chat_id: + result.append(f"Unread Messages: {dialog.unread_count}") + if dialog.message: + last_msg = dialog.message + sender = getattr(last_msg.sender, 'first_name', '') or 'Unknown' + result.append(f"Last Message: From {sender} at {last_msg.date}") + result.append(f"Message: {last_msg.message or '[Media/No text]'}") + break + except: + pass + + return "\n".join(result) + except Exception as e: + return f"Error getting chat info: {e}" + + +@mcp.tool() +async def get_direct_chat_by_contact(contact_query: str) -> str: + """ + Find a direct chat with a specific contact by name, username, or phone. + + Args: + contact_query: Name, username, or phone number to search for. + """ + try: + # First search for the contact + contacts = await client.get_contacts() + found_contacts = [] + + for contact in contacts: + if not contact: + continue + + name = f"{getattr(contact, 'first_name', '')} {getattr(contact, 'last_name', '')}".strip() + username = getattr(contact, 'username', '') + phone = getattr(contact, 'phone', '') + + if (contact_query.lower() in name.lower() or + (username and contact_query.lower() in username.lower()) or + (phone and contact_query in phone)): + found_contacts.append(contact) + + if not found_contacts: + return f"No contacts found matching '{contact_query}'." + + # If we found contacts, look for direct chats with them + results = [] + dialogs = await client.get_dialogs() + + for contact in found_contacts: + contact_name = f"{getattr(contact, 'first_name', '')} {getattr(contact, 'last_name', '')}".strip() + for dialog in dialogs: + if isinstance(dialog.entity, User) and dialog.entity.id == contact.id: + chat_info = f"Chat ID: {dialog.entity.id}, Contact: {contact_name}" + if getattr(contact, 'username', ''): + chat_info += f", Username: @{contact.username}" + if dialog.unread_count: + chat_info += f", Unread: {dialog.unread_count}" + results.append(chat_info) + break + + if not results: + found_names = ", ".join([f"{c.first_name} {c.last_name}".strip() for c in found_contacts]) + return f"Found contacts: {found_names}, but no direct chats were found with them." + + return "\n".join(results) + except Exception as e: + return f"Error finding direct chat: {e}" + + +@mcp.tool() +async def get_contact_chats(contact_id: int) -> str: + """ + List all chats involving a specific contact. + + Args: + contact_id: The ID of the contact. + """ + try: + # Get contact info + contact = await client.get_entity(contact_id) + if not isinstance(contact, User): + return f"ID {contact_id} is not a user/contact." + + contact_name = f"{getattr(contact, 'first_name', '')} {getattr(contact, 'last_name', '')}".strip() + + # Find direct chat + direct_chat = None + dialogs = await client.get_dialogs() + + results = [] + + # Look for direct chat + for dialog in dialogs: + if isinstance(dialog.entity, User) and dialog.entity.id == contact_id: + chat_info = f"Direct Chat ID: {dialog.entity.id}, Type: Private" + if dialog.unread_count: + chat_info += f", Unread: {dialog.unread_count}" + results.append(chat_info) + break + + # Look for common groups/channels + common_chats = [] + try: + common = await client.get_common_chats(contact) + for chat in common: + chat_type = "Channel" if getattr(chat, 'broadcast', False) else "Group" + chat_info = f"Chat ID: {chat.id}, Title: {chat.title}, Type: {chat_type}" + results.append(chat_info) + except: + results.append("Could not retrieve common groups.") + + if not results: + return f"No chats found with {contact_name} (ID: {contact_id})." + + return f"Chats with {contact_name} (ID: {contact_id}):\n" + "\n".join(results) + except Exception as e: + return f"Error retrieving contact chats: {e}" + + +@mcp.tool() +async def get_last_interaction(contact_id: int) -> str: + """ + Get the most recent message with a contact. + + Args: + contact_id: The ID of the contact. + """ + try: + # Get contact info + contact = await client.get_entity(contact_id) + if not isinstance(contact, User): + return f"ID {contact_id} is not a user/contact." + + contact_name = f"{getattr(contact, 'first_name', '')} {getattr(contact, 'last_name', '')}".strip() + + # Get the last few messages + messages = await client.get_messages(contact, limit=5) + + if not messages: + return f"No messages found with {contact_name} (ID: {contact_id})." + + results = [f"Last interactions with {contact_name} (ID: {contact_id}):"] + + for msg in messages: + sender = "You" if msg.out else contact_name + message_text = msg.message or "[Media/No text]" + results.append(f"Date: {msg.date}, From: {sender}, Message: {message_text}") + + return "\n".join(results) + except Exception as e: + return f"Error retrieving last interaction: {e}" + + +@mcp.tool() +async def get_message_context(chat_id: int, message_id: int, context_size: int = 3) -> str: + """ + Retrieve context around a specific message. + + Args: + chat_id: The ID of the chat. + message_id: The ID of the central message. + context_size: Number of messages before and after to include. + """ + try: + chat = await client.get_entity(chat_id) + + # Get messages around the specified message + messages_before = await client.get_messages( + chat, + limit=context_size, + max_id=message_id + ) + + central_message = await client.get_messages( + chat, + ids=message_id + ) + + messages_after = await client.get_messages( + chat, + limit=context_size, + min_id=message_id, + reverse=True + ) + + if not central_message: + return f"Message with ID {message_id} not found in chat {chat_id}." + + # Combine messages in chronological order + all_messages = list(messages_before) + list(central_message) + list(messages_after) + all_messages.sort(key=lambda m: m.id) + + results = [f"Context for message {message_id} in chat {chat_id}:"] + + for msg in all_messages: + sender_name = "Unknown" + if msg.sender: + sender_name = getattr(msg.sender, 'first_name', '') or getattr(msg.sender, 'title', 'Unknown') + + highlight = " [THIS MESSAGE]" if msg.id == message_id else "" + results.append(f"ID: {msg.id} | {sender_name} | {msg.date}{highlight}\n{msg.message or '[Media/No text]'}\n") + + return "\n".join(results) + except Exception as e: + return f"Error retrieving message context: {e}" + + if __name__ == "__main__": nest_asyncio.apply() async def main() -> None: - # Start the Telethon client. - await client.start() - print("Telegram client started. Running MCP server...") - # Use the asynchronous entrypoint instead of mcp.run() - await mcp.run_stdio_async() + try: + # Start the Telethon client non-interactively + print("Starting Telegram client...") + await client.start() + + print("Telegram client started. Running MCP server...") + # Use the asynchronous entrypoint instead of mcp.run() + await mcp.run_stdio_async() + except Exception as e: + print(f"Error starting client: {e}", file=sys.stderr) + if isinstance(e, sqlite3.OperationalError) and "database is locked" in str(e): + print( + "Database lock detected. Please ensure no other instances are running.", + file=sys.stderr + ) + sys.exit(1) asyncio.run(main()) diff --git a/pyproject.toml b/pyproject.toml index ca85f0d..6a43ddf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,35 @@ +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" + [project] name = "telegram-mcp" -version = "2025.3.201549" -description = "A Telegram MCP (Model Context Protocol) server built using Python, Telethon, and MCP Python SDK. This MCP server provides simple tools for interacting with Telegram chats directly through MCP-compatible hosts, such as Claude for Desktop." +version = "1.5.0" +description = "Telegram MCP (Model Context Protocol) server built using Python, Telethon, and MCP Python SDK" readme = "README.md" -requires-python = ">=3.13" +authors = [ + {name = "chigwell"} +] +license = {text = "Apache-2.0"} +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] +requires-python = ">=3.10" dependencies = [ "dotenv>=0.9.9", "httpx>=0.28.1", "mcp[cli]>=1.4.1", "nest-asyncio>=1.6.0", + "python-dotenv>=1.1.0", "telethon>=1.39.0", ] + +[project.urls] +"Homepage" = "https://github.com/chigwell/telegram-mcp" +"Bug Tracker" = "https://github.com/chigwell/telegram-mcp/issues" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b9ab6bc --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +dotenv>=0.9.9 +httpx>=0.28.1 +mcp[cli]>=1.4.1 +nest-asyncio>=1.6.0 +python-dotenv>=1.1.0 +telethon>=1.39.0 \ No newline at end of file diff --git a/screenshots/1.png b/screenshots/1.png new file mode 100644 index 0000000000000000000000000000000000000000..53c2bf256260f5fff60fdcca36ef4a6c828b582b GIT binary patch literal 173943 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�stq?4wllZ43(}i2 z8Cb5gd2qQ5(`z`d_WKF}Ajv)%#tksJ)`b6Dn)SP0qzwf3Yg?qqvS+Im7DEDrj65a$-NhD|0=zsZ{?e~V8 zX}>M2C*CnY565MnO3I{&)>ndtisYq`__gn#RaPIN0STp1PfLbeaY!&mF@KC;(^Cve zBUmhx-Y!>A3o#_*(|05jmT>jZl8kd~?#mOLfS*&cTjArTR!^}*b%?qZGI>uR0X5^0t5$MCAV=m`JTzyiG|lRzCk%h$0+>5 z6wMML4-U__V3nPP+F@Y_w9rpzG1AbtBEOMK4F zEr)o75U<|E@p@Co#@3mW@%#c$FJ#d`mtA(2M*cUfMF;08acgGheR_PXu`nW27b&=J z+Z_A%s3Uvr?d=zM@TEO@xtxXfD9tJOfvz!99`@Mn4e$^?Go#Ps9OWgv04YBfr9TIO z{EW&O5Y7`t#YsLx3KM|V?*-w>epVQNMU~c^QjIuh0-AnmB0_Xi8YPc!1Aza|c7^d6 z>oj@^lHNm0#+5rH2BUrQP^eHHBLhNY89h;}$z<)sU`9Nv+)t`OFY1dY$fxI0poht$ zq@s~RS@Dp@9`0(j8Ih;`b*8Qey$rt`XF|0Ah{fuN7qOJS4y)Nz@}O{-%`Xe^4=Y{P z<-Au5q-OUxH)TGra7n1$NHqKigc{d zk)#{2W7{lIuLP8kE)I*sYM`_wIJ`st3(u2-4D;tswhEfp>!y(K#>BFI!$XekZQWH% zfBcNQ&>n6=dc}G{EODC$|9%QL+fwq~DOL{tj;nSkFFgnuVyoqH)Ydea_Y9A7cT>!; zWIzmj=z8LhkoG!A5-hJVe$kw=+ah?2oJ4Zye%ZPt>Q%rWzLUrUltK1?WPGt&$z&(_ zB7*8{-~T`Ms^mY^9^wo**~vxC_{~h}talWV3{N?tMJ#%PV)&qpakorkNkL(}m*2R3 znY6iC>Vh|A)oR>h4t8o42^{Z_>18HRj>1wLq(hrNXcmUrmR_z}igI1$oK-H^Edtfty+IGg*X3XnV?B?}d(BmNxj6 z^PCT$a_FMEEH?(qq~yu$mn7=Hv2tptlxe4w)8PQwp}$V?b!Q$+B(zxWSkn`lXqm!+ z1Ojy!Htywl+HZ2%g~G3TFxQkMf-Si~C9b&sCAl5#AR3F>dE~QWwe+3ikiFO4@md%k zqF8V18ZtN5HFt^*_qx>0;qB3V!;*7SiB(z4WspW)vc0`N1yjfpX7I2khP-?{0^UIGqOht2AzT*8r%i4;vUN z75KG~0F+od7ph_BQ>sBIy&LeFZ21$@6qL8u=ok}5VKs{M;j8H8zWa|DrJx_HEH#Rt zZxAA3$zI&@@M7LZwl>=<&ilA;s`HCmWT-j%JHO(W9}p*Is8&S__E=2Q_i9u&>VmWP zoJObbubA0Ce<+Swm4Sv;c+VR}`*{3;-}K`d{ErdhcpWWwEcxmfg#!Y+ZoLQ-p5e1> zO37J(wRb|b7CEIf>5OsV#;G=6Edx!!g1Syakvg*ka)~2paE^cjt=Elyn#ubk>w3Yf zL+bzn1LapxQ0u3*#{vQuGy1S{#l%qptH1S9ZqO+mIzvSwUFxsLdF0`4vieHV&_v%Y zdfWKm?aofwt3&&oqsOz`w5I8NV6}+UkaiCKLqtiy9iGyCOEG3U=I4_tgmK~>OfdZ(P7wuHRq>W1>i$&96qog6WgwITq zEWZYzL7?M26{7-XRdER{-U3v~$^)Nuj=aNa{#(1r2!NksI6G!WH=3QtYe;Nx?#;Fo zrG0Py#Fi@Zfe03AVA*>XQ)O0?p#^PLBFo`wsj0LCViE&ddB;1mz``UQ{m?xW(2_-= z5YPUH#7KB_I{-eO{T9J4JYd@Tez-|_aoDCtzXvf*fligvR9A<)ZPBfxm!~X9)9lcX zL``s$dr(o3N;_O8G@+Bx_E;{7&8kt$?j~otWu7%*PFiGdiU&kD!qq#9iM?++Z&hdK zFf#dm*a6U)Sa!`&*ke&ybQtB+qVMkc3|odO<_`$qP*+p_je(T_-Ymd#|Fi%Q36sti z78IP6WdNNgSyzoh9BBh$IT)zKGQB6%iwrY>q8?>=f0ZB6W%+o26%>Pm(6iyG77`NVoty2M%Viqo{Xr#<6 z_9hFgJPy@*fk??RD5!5VHI;S#;d%`Pn^-84wsClPLuNo?$&!z|8tHG* zh7^GWY-g|Q6*%^Q-uB`&8_~1fSA=Zfkn)9$ZIc+BKUI^J(%6SDysPQ0CHpZ2gI+!8KLs=e^nvRGXUkvwew1ifs0|VD zSigdL?R)m+SXPHaQyD;3q?GtxUG4gv-K*cv@Gt49NFr#xY-m!J-i z!7x5w{{#qY0$kw15etV@IRgw-CxY;JZY~i9|G-a z_2ER;lIhxcplo(v+H_Q#bkL%rHShg+UkRx<#rrQ?l>SrduZ}Vau2=paqKB?f-#aqII#c2hMrz0M#_`MXot|I#@Fj95%09pH(T2>A!~2bClL z_5*?RXmsFW(FNr)$UK{6-=Ukc#LZ34%|Gt`$45CC_)o>E{e?5SUMcqWjhs?{y^n$S zPhyqRB^p*1GsRTB*PM=j{m)4|Nd~X#`U&Ga^v@76BRw_caq}l*)M2vTO?Re6qUZh`G=ML%c*mG z1*QrCfeq@R5=CkmtPsDyJ(VaNvokc*;G(e2s_W~883$S6KSuM{vW5bvIx1K0ver@( z!VSv*e#|GqU^UWxvB`+~FaNNwzdTHi5em(T>`?djV4p#41PDySa|^ZpDXe*uF&goY zyZw0~qIkM`4UTew{gjaPu<<{x&WRCFM&S0Xw@yj2F+n;zh@O5Kp!iPNCP35O|E(a-qIsdZV}^Ik~1k>|4!0?*FfkK1>4X5;27`KMRa8sXx&|i*^zJ z^~!+pWd{osymt15j%}~u(-EhZJ#c;>J2ds6;<1WI(6X!8>Lm;vPi1tpjiCOZ*M z_}||N_kzli0V9xx_f_eEO53w;T-mI_zeqgT=6=``Fa75m1EiC`3&75#0_wD?{y~`c z&75eC)XIh58vWl+_w-7{o?;so=p3%!GyCW4|Hs$Eserg4fkg73i|zk<5~5*XA02-cz5Bn1 z|NCG6Zvy|}5dZx6e-rrIMt(cTABOgS7WlvX?f+c(|6wlww+8+{%mrB3|Nn0yPg=}u zmSEkN*!0znPJ46C^H$h#8$c#x1QbORr;1cY0oA*tdZX&&maC;IKy8oT;%B;7CsQ%_ zqwd;|kXplj{UYs_ulSBX1(TEww-@V{y(|Eor`Qy)xt+Ij&{M$nDNNk%QcZad#)8TT z5YRh%3{0JU(h9uYKN~F(yoV@f2>E~aq1*#a7ETrIhX@B3r>?2Cs9(VMZVbk0^aNpA z0@`6Av@}CWfH1^BES-imK)N=&J!q=Kx9g6m?ZMK($fd6R8>jWJS@9u*8SpQ6u$n1l zGx(9EoFjqh0eaw>ciT$gjeHXO1pw>%VZ3Y;sopDY0FI!9mwAth`~2sJtZ)!OpSlDO zC9pYcqF**RP_tMsfOB~n$qQc*W+HfAuh;_+1N6&oblExJSxtcUcm)zZ6Gx+5BHxpg zCfi=Z?BU%|HT#mP zq;kQlR~7fYzTv00ekqiAZhVe=OB1=WX#_Pqik%~!{=xgrwFgopTDpMkh=LJxj}d*) z-T?;SC;O}^K;S)^Snoam67zhwcvOkave$#y!~K!>eA7`g=2br5?LM=|N>AK=FeVKE z-_@CmWvwfp18^P(i!Lsso}!Sx12EE{BH_iDD4|+ZE`;v4ZxAQzquVMne)#@5#Lez?i2;k(7V{q@DDHHbZqz5-~R zW)Mxu|6MKlbE`%ac$y)T8q1Aw9?xxs%zMl$REw#(Y4vK3iLVQcePuS2^?{&Mach{~ z?pq2~02X<7io$o@Zruhd9`?FaQ`|)XxB*q}!{$kB2ZFf#5A*j;PXw}~{8k_rdmzJa3KfUVXY@cD z8ELxO44qv^O8Bw(8t}2XpL*d@J4 zTclQ%3urS{@<0hDoz2ZPyEVA|Ku6$~)ItnoRlY+gsV ztd(oD^#&q&lr7%OUbX04wkF(a`Px~*%Dd9Q03QYls&2u(D1?Cb2SLL7#Zb=8cwM`| z=3Ms>lX;iwkLfYLWLR(RsPa-bMW&9-!$v)eVKfxVwc=_ovG(%^L<=$(9@luQ%ot@C zTP{z`T;Y)SZQ`7EF`mCY4-6VlSbK2?bm{pboL1Nc&%ebYz4^IJ-)5D(MX*#g)^>h zwu#1ju=U0V=Ir_pcpihCwqbmb{9R={SArmH`I>M(Sys?p5Ow> znRam{=ojZ%#?ncR!!&SypHWevgaqK>pA!?o{Od36-Y}ib`gu-CY}MvKfv-D7e`_m^ zP=3zw?JU2CBF@jYw3jXH1>lZXS4}QQr^~!S__qc@y`_vK!r#{wC}g>RF+AKgoDHaO z8f(LCWJ<+3?M>4OeV(s2o7mMd4+IOk94;91?~N&;E*`IRX@q)I`4Bb4G3aD+*sW2u zU2;&=`{Ki&H@X~2+iqkkieYlwV%pzcS}AE(8un9~Pv$pn69M0DHRQiX*?ze9z~HpU zkcel@sC=+@(YM_@D&=V*tav$+#($)rbFvo3f7-H``E4N-6=rs^h1U(@SE}7m7$liW z(lB~}Y=u13e+%=i>8V->+;=yejiw?H$0u zmcJ;Sk7-La8-@-8A4c;`Ov`L+=j$nYWW<)_wfMblr;TRg8t?f*5UCnr9#NZH?P&ko zCg%fcatVxI4jQk_mO)obyykP&39kc&RC+?oKMNXYOKMULuglz%69#Z}p)d8G=`PSDn4(_$vZLN#zSu~ zP*DXAe;9R3HQ23j35OBHGicV^Qcmw-EF2-6!QOE`WNErATY@0xIh;Df-BIAM6fX>hAlv^K0mp{{AQmC2wziOdIx^g^v05v+DVHpj^P91oJbw1pk z$@&Hhd7iDz%SQgEQ9trRJtFiV6Ij&lbE>NSOey???3iclHEAPM@r6)V=k!&70<+0j zmC5K(T;6(rR7KfU;-?x3%%In#UpL~HKI29LY~hKz<aMb} zNk+K>se1^J)2G5D?}&tfUusN5K-BZ>4fUxKY;o#&p~tgOmcj@6k&muSA{t~l z8`=X^{Q>SuLBp8Tn2c)K+GmM7+WTH zs568u8TAec3GZi`{nm)lQb{yIM@d^wx(Y68y3K55OxiN_T&n>EjSa~-z+{{nGw2OH zX$fJ`e64RXnJ*vjCJLNr(^G`@jfm{t_lrasa6X5r2kJx3I?rOGa|Uoe!D!!Jb){a{ zi^PrttkLzIiFTq%4hp5h=pkF8mxPtvDY<^g9cE{yqH?<-Z#WbEN%&OqS*zPH{)hBHJQ#O+xX7>LB6;!e`Byz;1ig7Z zWWu~b#V|qj1b$2C@4jzc)m4rZ#&WQ^_Q}mPxiHWywX%l_rfao&y6w)_Q3!uWtyaM1 znRD3|7>p}p8E8jbK=${Tf$Y~>&TdowQmb-CYP&ky-cP6!A+m!{1GeW*o+4_&z#cjj^YJyDnb|z=XXRb+H9BC zs}CXg?1E}(+ZEUs_?-3}O1~a@6cG=v{2GRSzIhzp;09IEX*EXw2uTxwLun?sEz@q1 zxOoX<-=9cMQ=-*0p!t2xy+g=|FC>~yCH6-ct^wZOR1rI!)~>nMQn8!j?#QwU7wi?Mex&4xrrS1UT}Hj# z+V<)s2Rgl`E20Evu53KJ_wx?*tyf_*T!PPU2xtNvskL&m$q6Et2!YihitJbm$g9k! z(oBuU&$dQ6OASQ3f(R?#;!c+3F_@`API;!inqs+}xAi#*ad()r9V$FOruiOKMp4Mp zz>=TpSxSc!@d0Jz@TUVO%&3q-V3P72d zDw_FjlN?Kzq`1rn8k#lK`sY3gY??lgz@P8>aQv5Z<@0QLx@#FF;EpiqYx-UkzPtLO zPQ+xMeUWu!jYH32L8Fy4y#AD;`ra@?#XYtI)80^gY7}GDPRO%q+?QCi3Y{jDiU6@T zQ!`?_mfPae5{Jd~TLw(07o{`c%_7ilZO#t4XGw8i)O45Y;ZuV!C-g{9_iPzYoTgJ`ZAgjVp1^H45 z3cC;Vn#}@=c{1!U50`Jthzr_UNWSfTYLWr1sdFHA;A3#ZJAR)XObokU5RYojmcXQ` zv^Ax=IAH&rUTiC|*ytn=MVV)SiW6d(L7`duOHH}>Q=mx|g`UqEk`Xza4-QNfug7IM zWu%<4*qmn=0k7GEum5=m9AWwAN<5(B7`gYzZ8h8Yfy$Gp+b)FU>E;8+SWOZ)i?BYXj8uhRDD31;#*u(cO>`b$ukv-tTfdN`89FO`+& zjQcTAy!LhYKs;V;X3*Gy7mCN5dpd{7jm@BKxT1~T*ncDnR2L{!Mv`~!MMDWp*o6k8 zQQz7TZI0d!l#qv)68e3!B@gto&rlVVh@&s5tW?A;dk8UD(QU4`3(+cnw>@7+NT+_z z`tqB;!o!^#)rYUI2K4o>4qLv4^Ljsc(oPbJrg@$Q+LboNgjd^nw`S$1@pH}}VIN8L zhNhU^yDS&jWyxjuMsqot*FrUQfwnY_e7-m=Tv%<-=*hc3K0psdax!n|liNm9MyT~W z$RTVVhYGyrj@J67T%t2sfC=o*|SY!kVWfSF&5&p#|M~4(X&Sj=e-y$Fc{`J% zEUCN#B}UOjpq!NPE;*W7%NG%we#l_yrSh|~oD^=CLeIC%#=qEFrsW{|_Wkki*S@=; zCNP%P+AN1^k#5Sxw(ov?fD_*C07U%|jhU{dR3;A_oy?2+-@FM67lPmo9<%Q>I{8?C zSMs?-S;jo__fVl~Ip>odWV4zd598R|6n<=ox--*$#fRpj%DO0ircqn=i*eh^C-{igTOItC>u%Rm%`TipSV%kf*`Onw2( zTL9aZzSQEbw(AGQ7zIRL+J&@t4itAROdQ3AL(%^JFZc^dTkG||kbg+wax$C94fzCQ zN)mBwHE2T*r-KHm8x4_eFzU2|ROO&~EZ?M89s_Z0>H5fn(QCb-lyxp#C>V}ClFRB0$4!|1+QtoHR*2>z3uw@m35qGrfu(gsWid9>-~ z>>jE+yM9m4Qp@dR)pD~LbVrbQ-mlu56k7NaC2rfVCCV~8Ock2L%A&x7%Qqb^HCUOs zKzKVlW~+?l`XkAe`0l>oHs0MytvI6|5o->Ep)J?6XjEE#(b@%E8%?fcUSjivaXIZx z5MZ?m%)+Ud{({3Q&mJ$0)Rk8$bX2n@^scIODnx_eV6I@Q>ato+s@4$7b{d> z(ozE3_7HGJty)iZ`}ar8!MIAf>l)bShj~gx)5Z1R^q_!nyWY@)SdZx$r@Hf+5Q~fg z{-v>>>#ro~DAzKYi{&!#Mso>GR-ihZD^|zYSIc+?9Axm4)oela;$kV;W+dx2Uo3)T?83rF0`m+wBV+wsYogkWIZGD* zy*|fE!j4}B)KU6F>01`l&xLt>);jd+cdSkabJ7=rieP;W3U3}!tyuopa+0^~^grih zY1EPjE_&nr5OB~bq!p&Q%43B)S(#7RW!(slh6ZG0gYc6BwjwBOyjVG*=LLCD>ZONb zxXX6;uJ&j3D(d}(Nigin!HLWs?|^>&8(|!?x%0Q054trWMu^A z?}b6FC1=d9#Zo{C#tH|CfM?R6+(MOI!1e27ik5VOiIxE&%-EF0WM^UJ`CC3qMh(Ge z<@rr-RIja}gd{pBD6LC8p7PP2m{(r$9}1pti1efNsEIQTYWh`#63!S6#AcyW$P|KP zpioJxl45=#hO8jwS=ws1SVQ@BjwVOicA=4#P{_b;)I1yH;nGkK-Qi|SsE~iWB@wQ_g|Wa^WIs=di1X-n z+MBUypXQ$LD+Q1Fn!;bwYjW(_AF5)FbdlpnMm;mxC{&vKO1Boi06YCPW?@S>xQGX+ zmFL+Rw8`yldIRfBp4EJ9Q3BYwj&qZTPQ6w?PS8gvfwf4b-pRy-4{ooO(wXtLQKRm# z@EiVo9Tzp@7?$}|X%U8hA2>^t-MqJ|yhXaT){c$^X$Rof`oG)C==wUg-me&A@7O;R zOpEw&_yv?YC1E&GAB}vbpL)Pv85AsH(c38_iMZUi%((^km)^IRM<#LMQ&ZOUTU{RC zu7;EEW?gPGDNjTRuK~4DsthW>yhBV8 zxnzt|Y$g{&^cj!>r6(3M_Bb4~?eGnx==bvYv=?BV%xrRmxI(9ety`FdXJ8fBj79d@Uc4s}F}5`tiAVbP}pd>GaPz zuJXaO`8pdlTIXL6&#Rzcf6%|Fw9z!?-cv^Gk&7hjkNM1NHOEq&K&Ld+Pb{-LkK(VQ=P<=l#ClaoC!U5v18=8Q(pcNFt26DlE&20KMR z=Q+k|ec3RMsstoo9s~`?_JF%BWrrXi=X$3#Wb90Bi=S(to5qny#?jW+A9vZ+v&@ga zC*yM371QFA$*wMHS6FJ1rb!@bb>X2xf~c66wr!8m#jMC}!!0)t)|`XGF| z?SS!T%q0gw3{|TyyslQfmy=)ENrjkA80TvRV~sc@*cF}SN~X#8(D-1!qGcW0Y4`c^ zsX;=?h}GqCfvU@WBpGhccrY74S&lyo?Ol;RRj&BbN@~;UJJ8z}MV@}6ZY)Tq?|iUa z*Gm&;N!c~SMiBk;(+o|%3kwTp7ZMuGx^2n%!Q50dxg?er-C!k(hEaP8d31@~0GU+0 z96n*Mow-ODLDqB%M9zWO7`8%@``BdpAULy|5R`sM3S?_y!Ps<+%e58O$ev+fwes)d z{c(_8hXp#&&IbzV)J{;Btx|MU%~XM6o@$_+2)@mr#Lv{?S2cM&Zf8_9IQ#q#5V9t- zsvrIBUN&iTe$A+tB*zvtU4Ll-bSSL`u8B@HPPDC4DNxbCz*pI5wwdoh-=FZFyzBMO zyFIHu;&x5|H%PKyv>1-SxdcqPk%&aS3jsH>M%;w2xyyl~l?#6vQi6aa*@kMX;|n1r zvxW#MvDd0htuG5jz0cqPx*Mv+Yfx{-7dTowYe#KLkt*Xs!MEck<=sf9y$+Kz$1~%_ z<+dgjYe(<%KocrHi|eP>kzHTBL*U zuf+qN!S{>D2i?mNv};LFW4-Ylv9{VbYi}3iLFZ?D@NIh50!jF#X`|UcTb5A=dMy!4 zsWxESyCz-%ExgLU?3qRH!=@IrhO}eo%v_^?!xW6-mLke99Q5L>c=cDUn?p34_^ zG-OZmt>m%m!zx2CE(YF5#*>t$OG=t5M9hIkyyYSKG#nPo>;Wpp-0za#-*tD-mfJ;f z9f}j_6gs{|{_ZKU(d2a>BpjZtCE2lo5nXW@sb;EGyuHQZa;S1xseYN{=3(FSm4o0O zf+V*!xAR!09@5OnELHrdQY7utc@ z)#0M0k$mzR)jBJ3j#P|DL#rRRq^h)Q;`>&+H4$es@TU}9)bMXH6&~O1%U4HR=NC4C zKn^RC4|M<@#w5T$AnI6QnasEzzjO59HMc@7FI4a35Ppw9QV zgVRcca-sXPTKbqP5cnalOUrcNY;62_)%LW79Q7r>dEgwjD7w!Ig=b$B_P4#T6Gl^b zttzI^d#}2a@E)~3yH!9-V0L57w;y57rE&_c=p?V9Bft4Mx*9nStO0@-@^UazY45-E zCis2wGuZ16!R=LmS>VVOdu!V9(w_js<1#xY6@0|f0CQVoG#X76#WAhvwy)4nI4U2v zQI@0Dzbf;miPr}UH**~zPtDwpTbtNv!-XbIlvrTLkvMuArr{aYt~%Mbm@>e>N2%e~ zRaFWjU>%4Q#^A=nt0eyS{K`)N73O0_*JmM(iY!=vS1i<104nfhv7N+qij&{e3oPB3C-se%}j)s@}@$CMagIRLf(H3#b7o`^GLb*t=nb<5JYCH4NKP zwXUlQ2Xh)fR{$zwX1f>``@tvZ?|$aX`;<-rE240X#grp09b6O5$8^(r2xs^Esv+^w z$pBWARl)|z(OIo1=PN%i-5Hs^Vr!Qzw<7Qu2yWoU{RGMxN%^N%gn3&nU&mMOj#$O# ze;Ou^AeFOFRF$$lXU%IZeiz9z%X``cW`|dPtcR6__whZcT+->m8|WU_m|?s(ikm#pOc9g=9QQOEc@E5Xg7{Jy6Evaz@11Z&ci`Z^EwE>+)EP z(IOIh{(1fIp#@a?02mn`as4v7jr*NTFF5I*-DW9Ut;%>}Mlu%1uK3)o-dpNTK5#VH zl98JGyr`OtdyUVP+eYCOOkAdz++ix0+uhXI%**;iYE??xPI!Gh0-o|^G!%FVD)?)l zEKyJ_G>jM=&euCrbG)4RhjnG`g%m*yq)s;zmzGw5E<<#%-g?04dEd$x`cmY8ur~#( z`1G2LX+Vv_5X0(0+k7IIwW$p$dC1VPyu=b*?t{Z_mV3!{(Ul3VcpfGFyG!?HI?scK z+Jn4?VAV4MkjA7?>-V1ZK>`hpu=%G7RSfi8--;3*&q<>!koE)`q+tGk?0xlHmEF3o zAV^7fgNk%_m!JaD-61L6At{K`N_R_lcQd7x?uJQBy88^*UT3fUeQRI)IzOLl{{wT5 z`OfEk#(3@;g#-55oi*x!-3pUjM2)f!pzRsn9?QEDfj2qfvRe$hzCgp%CnBsYxlIN@ zUQ*M?9#q%Zy6?90%~A<>Mdk>;?4CK(J9HwnG(1DMQHjoG31~!gopZe(#f& zYd7Vf*(Sf%n$1mOAsj$JS#@H{DO4@7Qj?AHbfUNsm>2SHvK1~_Hh)5sa+L@!?e>59 zF2#Z$kw6r=HEey@W)<@XpL8svM$T6)HOyg)WR)0fnjW?*+S+uMSl2h=rB-j%8f|o!5Z->f_pgNFL?1q84Oi&6T^1ckuTZPST#h1HX?V)Bbc~04 z9M{{vqcBX$jdcH}|&Sev|anF8#bdj(=#O>YCf{M>L zw$kNqvI*1TWQscjf12q?=HiF?;jWvKvHaf#zb=n($2X&>KjkZReZG!b8@;9A*K+=9 z48cx@;r(^Dm1swYQ-ZN2{8ESc37a{dQ?mK_-j=DeObw1a?pU0wv6E!hsV*O!{JeDF zb+PZ163+xP@vgbTOP_4Pr^-|W)2UO&2fM&DBfW~p{zHWmA1r=%_BfwTD}@lT!#_;3 zigOoguhN3)g zU;A01em~jHK9wJpvgP!j@sn6cT>>O>?b1c8c&Zoe^q)zO++Lww65DVZ>!?A^2}Ewa z#tYR*V<#v^9t*P1QOM*jG(BE0;@8@9-kyD@b=MtohHW#`+=mnTB*3n_Tf%Ct799d^ z@0`558qw*IzkW(QW4!#W@znp$EBummf2Z<%u4X(->VpfBy0!tU{uWD-X-ol1My_;-+Q`c1m_qzjiVvM83b=`}b?+02?;|D&QhlwuI-Fu5Y1 z+oPirX14xV9-ms^{L8!=sBzhqO!eZeMHhHw=CF100z76dgxg8RJb9 zZ(DB{p?#t;xPF>A{<4+6%%I7tLYkl_;w6pj-@8;ZHB|`tkJFcUg4ag#Z4Z9tQ7kK$ zqyw=V!Hbcm_qSK$k#CX9zE%Gkw^UE>U)~S}XE?fHrl_hWX^G8JYb1cI*Cv$ZZ&G<5v)B`*7;vFCep3ifql zF$?6A#Y#h8@(d#?RI;VfNd(QR8{X7lY{)}d^uqX5>>;u7k259No?a;1SH-Xy0b#%z z9Vw&!P#@Em^PZg^U1>1zo3H)(em*?aloz_3^#_IjrG9wg^}d@x2h)TZ^IseDw_0DJ zS}nDHnk7_Cq4Cb*XX(FkGN((N3PlFD$fG8|5vfg>9ZropsiD z!9o*FwSk7+jkbYz+Suq)Na~E!=C7aMvbEkGB5e#Nege$;AOT@IDZ2=GHW6g}uZ~uG zT?*pr)+*b;U!jM-4-Q!r;E>fYa|CWZc3i%JvY=w+0Xw4d4{Hz8Z^3Klc4RQL!pP2g zt|${qiGpBPwHhl^*BM5VKBD@%2lT$<1~2K9VH{s?q~-2>(JBJw}SGNTGkGngg` zr&&tlwRN&Aj+@J=tFNNXq8`8EtX!(VJCrdhKk?2%&A}+CfVmpw+=2YWlP_AI#QITi zU#db*MXQYS5T$C+3LCax&lf*wK6(>8bStk+GSe zhF!2{gKrJj93|LX6A(86Mv-t-Vse>rr(UGpvo?X{Yk>g45+f1$NHkGK$QM1o_V(ki zDW3hvKLc_$to!Zv0`o);Q`Fg3n-7Y}Ob~@Mp}xKH;#nx(r@rr36Vh3J-GycT_|w}e zw9Hz!6K>gx26!~odym_QIOBRF&|#8hLn+d^GO@Mu@w}w1idDF=xKZ3ZyY@w2P;gW&DUWDeO)!hZ5MM*HX#L zy9*rLC{~vSji#*M03tCHW6uEM+$EymjW??V2q?gok@B7EzIQ$138h_MhgeE;FuLNL zBviO5WHfO<|76+2lrkmbZ`Ad=yk_UUHsq**!zqQu3w7J6IvyHn^Pi<2z%V7s7rkJGGQ?&^3W8}S6%fX5%yCj0p*ap8Fvhx`0AtL|}v8=0_YOn+=y zzH2PAP8`S=Fcv8`W;Bw({!Zu0Wbt0|uMjIT91<9Bjp#B9rp4Lzf79f8e&vl|LzE1g5n1%`=sUN0FiCKU+me5whkbi|GNUbMg zg7B6=CXpj|fH^6BrrI)^UtXC%UZ@qdMGw`zri(B$M-)%+!({0SafUz3z+$KZR8ZAQxeJ*L%AkT#oB$7C)B;YgIS_&^830F;3(?(|;WO15dqH-$gz=$){4Uc6`4$UzTt2d*sv4 zcQ6?zcAd2++5)HBW69bz)<*mg6-v|aOtlcR;S^hbLefoqV)3a7K@fWg_u>LHx zkn?OZw}V|8*#ba!MNI0^`GV7+YMZ#BZt9D--+%4v3F_jtY7*4D}IhRa__~Tg~z|P1yN0vF! zrm?dhl~OND_vi)aBv1%-VO5B;C9D2HNq!yxFoRd^5FKNR_KoM~f?4}ZLIQlj!=ChK zrVRLlWN?lvB-@`bMeG{{tBlQi!wQPS=+?f25RCtFa)a)-c*W2vh-@rAQPXU;5W#2C z{Hb>~e*Z07S_M!l`NX}{mM4~DriSru8|WK9#-z{)7>eho#16BV$*iUdUJJUy6leDQ z^IeF|dgQyFoLO%DqP~vOwgrMW5*{nL#qP+;6pL9lw1vt;>s>pK$(lR_qwN%agNE^* z1^z__SJ#8Zp*w9GwWrqs*{?B`!id<(LVLVYX+H4aN7Md+P#wD5B08<|qP=a_(gJ^M z9s`g8OaXm#`LMql1i^nNqeC**>(yS!_}sMs zfyLamEaeV(z_LF^P2poN!I-6T5VEIiHC8S+3gr zaE9Vp%pfY9CVAKObc)cK(w93PXN%=PKLX|?rM6b@p}azuDq~uyko9Vl8=iQfP4ef` z5m~HlDfzBorV{Tla)vJAC;mCuO`T6QCIayEZid?kH$Ll5_@#%_yLcJ*itG<{w$&C& zhUua%J1^3x*rS)_32+k^y$*!qaeVHtuytnEIgNP{&sxUo9dKvM9dM;0$P&+Ci@Ea$ ziD=B)#Rz~%m)|>H?;X|Y!7v^Ls*Nz^oHs_TVZ~^0e?9#jvQlGh;tRe@?qu$D+i^JE zor>4yvfDh#MtRp0fzg{vt6)oj#p00CXYTqi*5ajMHPW&BjVg?xD~^g*9-$HH{~-fV zq{?Dqegneyr(+5T8iWpO-9{HwPD~ImfULX#0|*&!Q>y#Jokg|9iY|nBFW<|6Ky%or zj{D7`CVGC@58oM0EM#Bk8yz0I94^bzgowscPn@3#PF^@9lKF{zZbm{>mC0q=&!vWlkeDW9`3#>0RyZ#{w>Mf-i>>+6F*`T>K&4}Bq4RRP_y&oT4t&Crk(=%0vJaB2d(^VA z-R7WJD1lx*L4A8?hHsk)#p71Vw>Zq&T;7Eh-ChZR@x%9eENJA-ggv0Y`@wmZS zbc4Bi(M2UyYA$}sFY&wvKAzX71&wpsHCCf+>hJe++=6ZmH=!Wb4cm^ zHjL;uKfySVjEpH*uYa*`w*NK~`+bz6SjYU_dY>-UH+*C<+N|R zm=DCPV3+#QElg`{Mu0lGmD}VBFl+W$SF;FGeU}dY`*Zfc=B`N)Jv5JUG0$>emXi5*pCJ$g9?~D%2)QP&f<+BlmNGJymf=yG(#%p zBjv_`i8eWJze*Kwb&ifkHgTJA+}H+WSmA?+!z!KBSF)b(OTbaG(ft)x$?@y@cWN@X za0Oh@s<5EbbNwJr@dhckGi+dmk_k z#E4cyN923kn?uRtv1_|jX;e5&F~Lt!np^o^2Z~Tj7R8`!E6Q{;{YskZTts zPy-Ez8l;8;jufk&Tsmsb{b-#1rVa3y6`f{w+RS@6poDd_xtTap0Rc*(+t=fv>gb_2&V*^e@VrJkPQQYV4l| zP+tZ-Y{WyRRWE{WoMg<3;Jd$C3aEPm_{d3@7>cfUqm{U)6Sy-CMQ?51G> zu(F@1kl7)oC~uReCi#L;@r|cwt8@dm?N2_tQA}Ev%M}etxaEj{LIO0ue+UU(78O^4 zW@fX1D^T{Pxd^7}H{T|^?#~yTi@Vpl448#7b~K*toZQvBC1=ZX-F>3b*pR^o+!qFc zhAb|>NT+>7bO!Exm1>c?T1yqBFIgxCC4X;7!D9rpEIy{grEc3L!*9@c0jA@DCQ2+iU zH~i*=TovCtF^bR ziX5%>XmI|#`;BDG^fS54&yh1|7u-dvQ^&&S#-Y@YN59=a!C39P1jp@l2dqh(6?QFB zaDY!%YRy}>p$y^pj7~YsE)Tz^pFyczZQrWIwU44+gf;jqmPsi^+bJwHjF^)_YP@!D z&T_FCQAob6EC%W4V>j8s2|JDJeM2dP8yo0qB1G8ruAiPx z8H`Mv*L~1XiDS}Yy7~ju0sc(3N7x$1qeW}{5jI}%IMUokHztmVGPt}3Jtq8ToqdN; z=d_JHU=}v{B>Bpio2E;2@(3cIr{~*!&s}250}|;%6naIG=O8z7d@FhaBiMHfEsoWo zAfg&5$Qs>tccOOBO8-E>G*{*&QUmI@dRHY3#V)&X<4qc@kbt{?^cF}6LPeGK8A-L9 z-7>ETQynJ7^uYenYLhUU&F%>>x}ieWCI5)XeIw;+KDG&cyo^%Z?+J}ZX1Qk5>U-(hxq!o7p0CJ$uV?i@0d47zmXscC|4`V(mCRvsto>@RCFZO7_GUyBA_KU?vldOfTw zlUM*KUu*Ydbm!ojE|qx?Z+a-zQNq;k^D68|}z(qyIQEBOq{j!xb@@|M|xa zNcx{ zYaZ=2(u`@?1q)v?_epuI6&-X3V>>bJkx7hlxx8mzm`+6T%ktzJiiyquT2v;&YpTlhfIPjQ9SH`*1m4my>kUIEqAw*^th!T-o?D7D%o)&xbd& zLT391vo$(;v{Y2zQ03BqaCC#j4l+z$Z8jvJ-sz*@K9cv&o7|b`z^wHa@hKx3o?k7x zKUx}nOd<03k`ixwG8=aN<`FuBMIjmXpi7i@)9{K-B(Es!l+_8+fQw}w>xG0p#>(Jy z#Tq(wqY8h*Hl|cDt^c<>A>`A3jr{jQg2;47@}OMbv_t}nZ*GB#z7xOCEnki8SX|I> zotjeq2isbTKRCX65`~e}B#-OZF`>)WFM0aZ8pWSJdTw)z)knYF!KLWG*2CNokK(Yp zb=zp=pJEZ3|IR|hqt8++2yKNI|3&?(_sSiDiubeVIvlu=$^#tg9P6T=NjdH-{BWF) zTaR0nEIKIFDvD5+-VUWcM`IGp6#9ZggBnTAsYZS`fn;24G1;8!_&Bf3(jW^nt!L5+ zn2~EJjb$kgc6J?Ci^vzxGk-?(!F!$Wt4XMZnY?jt%cy6M#Pq&C=Vek-dwHJ+L6WOY z5Ita|QI(4FNW=RR;=&Etb5-oyXiu-~tZt{K(5$Z3w{dg7B=bA{Afb%{=W|un zoHy9_7;*)8bBc6K2CWij->~8^DY&9Ceonrvi_U0${tMd9FnKG))|!zDw1HAf-ER#T zK1@}ZKnhkJ$kwcK-h7K;GcXuy9`6@yMhnKED5vuux*FUCxZGxCK$Fk)spb9Wh0K>t z86%RNZrY&)L-by?OxC8UlN{S{5J`cTh|r|^Qr13LEk3w%Qpo>VexM!foLu00+Tr65 zlqty}Z3e@R52(4Uttx-yz$U#P#S{EiV-D}WJvX;K3*U9VjaCrJwVN}NA{VO?%lWz8bzJF&^6JB7w#24J=e9y&%GOq*)Yv3>5vX6&x zQtVw-&%sw^%%maB?avn{oOFIS+i$*tJ+mp5>c~1Vbg zf5WRo>R9H#wP2KNQ>C&$gfx866WJb~q7KSq|d z?hNQm;rFpS9qNCNbvoGX9F($5+Yu(sokWmuf8QA|%`KKQv{_}DDAtPZ{m33-j=iKN zdb+SN5JUgG#DI`*R~_1M2TI}<{infxaWcqBVCM_p`&)sgil?^8!D8NLNj28**wnOq zW`cIGteg)fgP08qiBry`Fe!w()v?H*?g}FJaX1?Mt~BLj(5lSouZ>5nvzc>YTa>Jq zAr(Hm?pT5`sq zMwdN_2CV|Zl=XL{m?dtiQ@quD*|&hVIOZhl=pT|LfFnlO_)-D4`_|q$-v0hgnz#2# zCt}xkc#kzm~{jYWo<46~$_lmG?D>v-n9R<*I75G5a01p54jloCqFteZU|J>!e?=(fO!ZIj7yqblFcF zK|~-^7;nRCd#WzdNE|6>(hc^Kp#Krwd2a-9NsI>2F?2|Nwio5oGw3wE+K9)^m)Vdx z9je?AIOopONUgt*v!Y1f*@yIcOH{p54Ny?{az`$Z%lr7iY~dIb$5`JvEY zU%UwF8eK1O{o@G~0wS<0sYbue_}QVUm1pbyTpcyWx?EFQ#H|46-irM~he8&oLOk3& z&hDc`UhB!*$A5*#(dp&!;{T(q7HRRCb1On&?;wv3@cJ|JPy4&^xTQ7sleQNpj)h%X zQphU>AGUCK_sZ4g+-cKSDPiEW>SQ*TspRocw;CvJ!)B_+f7l3a{7`|0l%tkfr2hq}`R^|IFoMPQ^T=eU6QZXm!u$s4G5bB05ldQ{3<==TmDi{uO zbVzD>X!1CwHu4h+q52W{49p2@OB~{ihn%xdq&?3iz^CJ>AzT8O7(0e>7z5iWUhN~@0$6c!1+8Geq zrg@m~`?tA3j5XH0q?ql+MA`0{!i0grl7TGpFjdB9Q*~h0dMcZr(I0F~&1XX)^XcZ| zfKh6w>EN@<)T?3~9XggI{76$Ay_?D*Z9o}XY>#&^~;^g!Vsv?u(mP7<0e~ZG1cBa%PI+FVHGnYS5P1`>2}Rx6O%Y?2v-y zUD9Al5IU0s+gC(&2XUG(odl{?OJ)Bi4uB>t#NNC-51vfG8*S{;+Z)p1oguj{U#l}v z+{iv?Zdd1ixLI0?iK7*|x?Tt|_k?1!p4l<%?gAoOljW<)pV-l3xknojO@S3xJ)uzP zr+jW#@7w-v)HI3)ipkDRr)X_}BQ3v%XV$4P=CxaDtam?gMsb?QIMO@#8bgNrPX-%{ z2U*N0_|g!#@3ZuUy*`J_$TI)^XnUyuBof2E#}xzbz(*RsjN(uu*%%XX`XL8gQraif zb-P7V#VeO`Hq$%M=NJ|~o!KczT4M>c7{2Z=dV zf1MiYD$8U4rx4&?9Db?%S)L?hIF5uWVyQ58fX?fjEbi{#_G3RR_c=hSL2bOADN_QV z?;aa|$-6G?b0pC_KtxsPifUI|oB~0q=hboUEEr3z3qd=XD9}q5xjV&`)t~v7*}U_K zKd{&-0i~cvRxet1Cm6wV(}Wv|=lOJhN7D1MArWH$^xgj5 z^|}xvz4xo6!&-0V$ZAh6FvO@_9c z|6v9H`kKIJpvD8A>C$WeKdt5d1z`PsM`J4grxpBX1Nh&E{@+*E|2}lM|F$^)x6=P_ zNBP%Q1zy$vZ7=`XQU2Aq{%n%}U-tA{T!gf{v#{ZG;n%18f-&?aFFm0kq3Eks^U(+W z2FI^H4||v)>1=S`WV>s;KHd!(e|E~>pWRnTJXM|cd6jXy@H?YdIWU{`!Jq$^2138yd8Je0w_laP+>`{uJb6 zea5k(pVWY7)fdWJ@_EopCE%1E4%WHDmCkg5XNhr#>GA7m! zI_ea+hknDU{3i1N9X(JP)@=y0(ZYtme{r}zBDzgKvdo)@nI)Bdxbi%~ttt-{0}h zwEcEC$d-;!T{^b8TwF`sU%-ryefHN!*{&l_CCA{30b3gBPawpjSANkSCmcLQb+FhX zJ5{Eqc2x!aDUbbJT7CD=gnG;NGm(=pmertR_xOd$7EZnW3fWM)sDa-5c0ah@6Apv3 zt>4d2Py28~(y8ERWbh0{)=#dNZoBN4T800hldemL$pcqc$D7$eK~xWmC%=FGD^G#7 z)9F_MpkHG69F$wGdgDNRNUr~5B+b&P23d`eGbN_$qdZE>`DykzlajgW+>uppvzd!p zyTL@xWPtfut5&^P8QDI`k_zAR^)#L6$9KN`X_QR@RMXl0u|-64nJtx0P}f-?J#k2U z1@|@IqbjbqwoP3=O+XyjgxEtu$pv{p_SnpH9R34#y~_>3yJUeL<>hjt=Zjl8a05LH z)|X9`-7kWeb$G@SIrFw>IE$2#)bb6=M1V12_MOeWaMM!v$;0lI0au2vC|Y%`jaCN5 zMUB{kqax3re#hs$g;k>8^8GuFf_yj$PpxiWvYqt+irsc^_gCC4AQc1(1$_pUAH}(G zO>TQR=%l=gji=iM>O-?}CVxNR-lP8k!p(slYis(*B*ZswSg-j!RS3#R@Ls=FuENB3 zFrbR1_XM{m!hf|y`)Knubh^UemxAcss|0MFX7@g<3E#cC58Lhc-nIijrefPcr?bX{V+ml1dsx6)_{R!+lND$fu%h~=| zTAT4|ElwG-sBTIr8REYldZ{%3JWlBOMV;kNOyACDG(0*n8krc> z<4qvJGba)D#JgL1xJ$2W^g9cZ&zk=IVzD%rS5)9GciKNW#Hj0Y{y8?SJQ+~8Am_gM z_Pw)>@P04gn6)fi6fucfeB*t^^N`ditg|~^CD`S#-0-2?a$Ej1ztcGvvwrm(fAO$z zA(%3UQRgeW)Y$J(T4;K<-Rf1SF+_AkMh1l+PICvHQbe_7*ZbzoP07j~By}BY2l}7@ ztz7*zp1L(i&c9FvIa&QtBH0EE&Ud}sN&F_C8DwJweZ(1p{&|4@kA8{}Eta4PTh^zQ zBYF)GwG4~ji+TGCUPso&_7vFGbB#gf8aBBXi)gQfy-sVpWwd~AfEozvI&UGIti@r!BYc*1>6a~0D0 zrGS=M?r05?r(QB!KcCIJG|fWW5+oR)46`=Yuoj%5(E&2i0uZn7)AU$r{}MeH@5O&T zmSVxf8>v?~9k#=1SGm?Sp3S=KD9&Kl$b+th@@tIGxo6^CY+s* zGte(PU2{D=y7#PT^l&@+xJbeAu$XkIl0l3klg8wVWq)}ixTF&j2|03kCjG_YPvZeI z$q6n_PlUOM(a}~i7VPFzsOU`xP>TKTkVK-FpXVDdwL$V#WgUz=dYRS+@B-_T%PBS8 zCPG)J^mMWv3|#F%*E5_eOK7n_-*5^t{giLc$?rU6v*wQ&<>}@A>+nKFgwR=R3@vL* z8!gY2+`bAWgmEw;a$EfRxwi*4u&=GxRuKY=IhLG2UwL^S<$JTo8-leW9D+w5GPfI) z`&iNQ?s$Opv?KWUR*U^&19=yJn~0AbmLUieMat~$Or}f)j*}Dt@9%LR?`k}qK>!Ha zC_GdB2+`oZ&(Wwc`=+ec$i3$eJmduLy%?~k1f+?2QNWH}5`is>b8n$3m`u4o{9B`*GfX34n;)06&rrUdM*IoMCv)Ae! zU(OtSnXpOsR$kb^?Gf#o;{gXIS=|LXQB_0&-)dm<)d}ea5h8+9 z&s?oJD@8{sW>x2kh-f_JWy7nlII*iANrG{nASkBId+5#zrY$vanui%bd;L}7YxE21 z=FllS-Ml=7bj6SR*~)ox@Aw@zx%lSSTeoJ5G?gPg<^?=q`ASdJL+l?+_ur}H%6Iwi zuaS7zFGSC?>@PHx&5k_WU-0&Y^x6b+ zACqpbJAnz{NQJ$dGmTOWy0cG3KvemKpY}~cly>c*Zy25TfW0{hyD>s`+3%Ycz13tE zZNdtOYEoi2nfM6ma1OEudQ{kehtY#RW!-RIjJ?gWhB(R*jy zk5-jObNc9nn|dVX1zvn)w4SRBvR!I;$9mO7u|!JreCVK3iJnp;+ zr#Alk*C3z++V{=_%KoAw!fR?rZqIX3W{q*7rwykpCf~7}DxQ??_`6Uwfu8WAp z#Q$zR15Z%&_VRH!C9nFK!s91TYtt!KZIt!{i8As2IsyHocYpHI?_e2^pb*aT2?UwY zsacROD_@L%X9apI1QG#|_wylUom`?Y!5bO6S)6bOx=ro^=)7usgdpJy{J+ zK7{m%H|&?%AYm&nE1j_JcFV8tVdlh~-fH}!z@v(QWvcT^QF=M}ed4I87F*0heT04o zQxl^GixMhf@W4$kGMe3ijj$GUh7IP8wF0nsT=Dh(6FcBB$%6@wL zOA9jPFLnc(a}lLgg;suQ{DG+KCX=+tN&gz8?UySCK?r3dtHG1F&^30G-W)PmCkrNo zxw5HSu)kx(?I;rZlj+pe5z+sI`$3oANyV06YkU1P`y`msHzx=Uy3KStFw&Oq6^27o z8Oo8Z-}2G&x9>z`| zvkqSh8pU4Bhbkr_f5ZK&6ES~b_~ty>bgvwA+kY7_wC$EY5z+<5WNI?$2!q@Lv6RgfW>U?8QUyDo4?S>e1!-9Jh0F z!vC$49EwwUQ0}rARKi4Ao zfV{m3xpI}Ydw+ltlSawDShemW#uTF*QZrz`4&pFb~K?~hFeG2rIgc1INLs0V|IW1GcsF34FR zG}`D?(7mlpx7E6D%`%%YQgG`*;yWyae4Jh)5Se8UbE=(4y-weohAyz&16Wt%WO=Qp zzbxIfi-=SHDy=^~2Lcu85}mqp zyMm17gPm0AbQp`837qGTu*CYMb30K!kK|C`m5z5{AymzF$3_V=e-ws!nOa|ilZgr?Ba~0w{(iSSw5tqc(6<2)P1+2#D ztT?2%D^15QzSD5pQDHW-lL=L)-+X#q$h<4E;bc3oFT{xe#tvnoxXU-1p2}23avhhn z{i%jx(JFtL=x-&cAmNvwPZ1JdV$#cU1#eSQ>kW%ypULoJ zalNr0L-k>pmN*Z7yrO8Sm>YGLW0Mx?o^4GVk)n6`W;_BYLMg-Ir0k5~mIK|9s;H7l zCV42$O5*vuBrX*KaWMM2^sm-q5(udkeb%j5+x5=kD8msa1KwWHpMUfumG}mX?Q7|wW*bJ}shG4X8yMDbdamr)q4MaEKH#O;C>}79~6|N)v=#qh&{y4LQ ze_vY>YA8gfU7hf4uV;Xe%NC}&*3`jgsMEnWTWLya+5;W&v0rZYAwX>2tL!zKevcQ%GoE5!bw z$>Ok9rwcEF@(~xj_BF3;pS#a-2Y6om(-`|F!QYK$tLbfHSvNo6ubCTsnR}$H7(y=h zw8Q;w{p)TZyi=m4-C`CEjqw0ZYV+P}7at(vPldFOgK@svx5*gdgMPvj<8di}%yr)} zO1L!B@vilpT#@O)qVltIqb;eAn_*2JE>pyzSNE7V73*c~hb4WjG=6$lXOI0jKqS^_ z;x!Hg-*tUPS3k&WBJz`8n%+ES%e1(=wp&&ZjDHIK?$h)qjc1 zWoJ@_py%3?sEDm^_n89IXrD;pa}X4z8bND6tpb+6PRW*0mef6&X<`mR;W+2`RK?t% zx~v%O^q2l1A@ip{*q>Z~qLBExzu;Ma+wPZ~i_U}x2@^-aa7{YP!$*@3Ni9&JWn@Gi z^kmg6#~SgJeaD*CW=Oq3kMX8iYv_EWx9T;!31MGxLZ1PZDA2)b?@c`bE0XwBnSn}j z!q>?vb5_~ZYF3NEkllqmgDBhAz^SE4ET$R7pl0Q|gr%c}Zn+^hS*#TkibrRWk>VF5 zV>KL~toMcn<4v*I0EM7WATTrK?x_C*>N%>3a$fs!FwTygwR3_AdnFW#Q#!{sM#%EX zb$_-Xkac4~EhDADaeK~mm->Ohl@0Ccyd+ur3OJUPfk13DFRxguI8GV`7twtki7{UE z;VGW`V!e;#!ei7@jj}W;e&ABDHc@X?hgpP1`1!qp89(<|P73n65KfWr`%bG8N3IFM zoIoRF%}*S_s?1r@RCKSMD%H<*x&1^u$$FW&RAEBPolOFzN(3_l?bXb829qChRxcl1 zTrDeo?gS>zGZX`jk@iJpst`3LTN zOEu;ah^^cVp42IS^*FyJuYFoIBHzoT+#LB32=cWrzLJiYPPfk*groxX>+daAY0^pK zdWs8shZ+`5_6G#F<_!) z-jKvBqj-F~HLY;EyH-o$cQP}~EW0<^W229;`ge7&zUfefGWXu^o_&&!pw+))_X*M5IS->r{a zFj;@)yOif<(1nT>mktJe_6SL>(K-WP(-u?M(_U02jE^>6Z=+w*YU;}0IyP@4W)E9b zm3vmBHL3gvJZ$||m|4~d%Ea6=t%Nkdq=M7?8n4mgBu*Tu^XE8>1?#Diu%&Msh|4w6 z>=B?Z%ZU24QJB_JiYA?o4gkQLjv@_K(l}BO{%_7}93Ml2&cruF566i9tYYA`LEH0; z=Ju1|PBv7=6eDKBC^~jd51BkI|0WajecEdK}GzQJs4>UAR4=XYe}#dnXXIz z#BD;pwmd+Y1}?J5UhnHg?W;cJ{s1UpEy?GzT{Q~PZ?Jyd6PHs@duCT))|TC!^ezfj zT8cx_BF2YC^ErQAxJg>jG?oiiVIYnxdVz}j{>d^t6HXm#eHfQceDs?Ie8pMFyRAQUXD0%ZEk%fudyh*gu%LbxZVkyh>Oz=s&$*DbzFS ztrv@Pzde>|*QwLLAmsCNKwRT2o*68_x>)F`$Ha^Mk_ z!Df>6+8Y|rPjaR^y7{Yl!=f#Mx3Wcy>I#6b*O9kvsa))J;b5CLEDh<@O*Epbkp)xd zBIBUTELG)3$?R|-Qv!=uS;!yFm%5AS-YYsf|k$OZEMylp>@5j>)z^_h&1c<_Dm8(q&Q{(6BZ9!&K5T)`z4_L;_Re;6X^2AwXEEFMp?k;wqE&(p;?Xmr9V8OJl0cc zA4FZ>8FPiM8jN|LoOjW2z}Z)%;L^l}_I|nbF-traQny|}C{uTSyIlRguqSISDaz1(enh81c`7Hdd_H^jWWWk9W9kq*8Cd=HOACaH>67 z=@-MG+%cF|)l>f$=dmDvED%*d9QzMb<;kfjn|C9Z!iN&eq$bm_@>r*yzFJ2t=vBq1 z3ltVpWBcX|pxYNZnvb#uA)fs7Ge^&;#F+3+uubXQvSZ1kCQHxWkZl*( zGg&lumlY65q{{9En>XA8p+T=D>k%*H%fFAJ9AGVeOV^AF^Le_xeuUd!DF*dF&SYX- z9YpCgw=;=O9N{bzL?K^cDdB2b3F~5yD>Z29FGZhX=m{3VL>t|A!mhcSvA6raHb5!`yB?VOD9kjYut^D?ebd&j?4YmBW?^t zgcn(6FIO7B^;HMBbx%PfFL|z;6bVgh=cRN~*^E+heJ3EmvYd8%l_%R|H5XU%L%&D6 zGspki^VgcaVm4}~lmSi4V53hyT+VTEDD9F5~D zb#{k`Y!?AdX3*f#Y3(vdh?kY$Ou$k)_ilvHKHii$)UC9 zi>hA>x7m74MxS(YFg;xP5tL?W@Q1sY)Ii!)@dgR^2j$PF#1(TU9BA(kpH~}pbW)sj zF_W7~&mE|xgLr)WByO*`S?jq7J&|q{yuvcWAlv|XNvvPxMke^vliR^rEU!VD9drrY ztD%^ol-+yHLmr<*9C)SpeFdpj*fNx&{eqJ+L^>> zpzexa8?N_x8zB?J>}uy!lptgJ?$&L0Qjh)%xL?Uesd8q?vL03F11e9Xs|A6@^g_hU z!rN_u!1vo+1IK0?x z_Q1;bvZvz{QtTswtA|a$L4lbdQ`f0*S3-Gv@`>h#hfgDd^h_|93aGdaiI97~m5S>w zCo@+dmIsl-3pTXZ$vhu=t)ndvI`p5^?OCp*wAza&OHi=CGPDe0SIfI*N_p2end|z5 z&z8_$K9Qr(m^gvcoJD$NzB^SF*IA5#y|%ZoPVwxL2C524o{qYG`}s3s0N)dUol}inu2#B)@Y=x z&hCgeb73QO>?C-@1;iIKd!xmaU_V1(m{(f-KkR+wUsd0_uR)`9r+|Piy1S9??v$30 zZbTNK(g@Oxv~+h!mvnb`vuN)4?S0SQXP>k0UvT&5vtCT!EEjW*XO3q)-^!9~(Te%S zD-loI8NT3&*%t#v{?+HCg_Shdf+xNw&2?i?St!yJ_Fy}nhxr4x@STqHx1;~)%gLxi z6^B`&zRw(S+6ie~ih>-{Vusy!K3T9Cec*lH*n>qbfA-GzjdHr&Nz5{&*6-0D64G?k z>J~Cnj+x+`G-=j8VHkiAc21*9{E$9BPQ>T_E~4{NaGI?9#rI0;6J{RyVsv8`~$)W>2SZ|hX|Eh#YjUUq+G z&prPP|K#cfy!V;jJ*UU%&ntgRsN?WG(;I?%9F8;id5~Fv7Fg9BR^A zp1Z5fy_~T~d;FT9y<}i>v73Jz5^2q~xa_C!Sdd5q3qOc@7SMBbvX)F9heY@N=7Bw0 zG_W<`IF?1#oK`Qv$J=zheiE7@j6i!kFK>xff*F*Px?<{OVw7ZiwLMpomaF-RP}%A< zH=c74$3U$k_~k^%rKN7gf&fQ*mi7^6w&}eAZoBojKKb|f*mmu|nQLk~IUi?jntU9) z#K+PJx2H3bw-PFZ`sVDLHpaw*(Ndhbvy3vP8>N4%+1m1T#;!-csewaidb;E%LjHWO~i5bqh>W zsdWg>hBCA@`REN0A0ZKt8$;RQGbRnZS@=bm6OY;)0#l}&C50<@CfGK;pmDSXJoZkc z6&C%B!-B9z?Oy^ck*2hNJ`sL_AW;OKX46#`TEVqX=f*+Z2!4gte4Qb)B-*{G37hnv zbu0;{H35^C&p{>?h`O~f^vVzIvKI$)bF^y4SzTfG(Y;hS5Yfy;ldV+e7P_$DsQkTD z3D3tYQdn6iw^_I`dOhpj{E`!1fkTC1aorus3`}{tJ$#RJ?}Cw?j5J5+&>zd-b4sti zDHOh<1i8xm$8-6nW~TV3uP+6U(JBx-)l}1*s2P2RW-jKzMEK&*(iV#Yd<)Nf=Yu!E z2x~4g-;ti_!kro1w|U}>`I_P8yj=OL{Db~MFVI9U!?Eq!FMJ0@mtsu54PJt zhmd}M1~V(^etfIA)-u7$53MhB$Z}=58>}#~XFCf(L?5NFUU-%{LpJsHT}mz1`onAC zXaD#_Vb#(=NpB_HadAVMoC%@3BH@9)H(UDIep*H-22sm<)A`Gr2WSV?3|^$|M)hmppVPw?WXjAJ6i7_XQaulI`1lK% zFG9^-jZB@#=`*g=<11&ipEBzFg}%0gB*&(>LORMHj1kFL3^KEkt2WJ!C5Vwk*p$M~ z#gRL=?Sos}1P#jO4=i4~{9!srhjH-^x8x10H@_QVlf~=Ity5$O zEe%Anjzc4jEzN3Y_aHRobvZ1O%<;5EeXk}mM-!9olRUk7B1orI8flnHKG(rm%~>iy z0q)mB7t6`w&P2avdaGy2D(5Iwvibq9i%$WX=CzJOn&3eZ8v>Ji;S2RH=J~jcANU6D z%B=5uw$)lx+7*a!Ju#5W7k=v2XnKnlQ{ZcblhmE_@^2l#VSzt_u0cv-1*{j>H&|RK zQ#=>eGUmOIM#c<%Xy!V<{Ji9Ki?32#zm&WDE_gV6vE(-I&65og*pmZlZd<-iUcw2UhdYrJ_PyvrcX?v$UV-W_U+=%7Cu%pz zY+S5K!zP+sXy&n>V><<5bfXzZ&yZ^lIS0x~Z;19HYfyM<<=Q^6xtG6#>t0WEsMPjM+p78Dx{n!5aFHfPnB2~AEFr2g0mSaTiVz&s7r|0rtlRHv-?3BePaCt$ zcayNL+g_}lA$|;@_V;z3y(R9b<;#xHr;YKLi(KPmp1w^YFF$Oabs1=^^V`RuG*3!M zJjOas_q@M&2>;|n4JCCexBTASagM9Xbo6Ac%+!}V=>}=(W1I{PX%UW+hoMSN?OgsS z@VwtLXz!a24IK(M9)LQgS`4Kslko-k=x|6_GMUO{w};Qg$GrP0N2u4uo2HN#_#%N- z+WcZ@d!{0Ztj)TbOFiRh#TzQ4yiQwsl#NuhDqGcI+g8+W({6$wdEFHxK7ySv%q3Up zG>U-ty~&-uA1hrKbYc~^8dW&(b-P72G7o-A(p+OOj2^vVUzHb#(%+5KRpp!v2_wLiZu!5}pz- zcs{tBa9h7&ww29BG^0c5Td$Vhtj!JFjR}NF5h|a1w9>;pQ?4uDvTAM|eDI1n? z_quxJ872I#Z0+9LU8rp6h4d#lssH+9$}cBkx?=dk2MNdES+8GMpbFx;<3m|>IKjep z+=pZP0$2a)OYnVApZ${zge)3#GTv->3_k7B6W>oGFHO*~AXKm8PPUQ9tD6K#0$yBt zt%W_EU3)c7o_bmKY|yaQ!5}cwi%UYQK@-`Al$TFkzR|Xb`RiaxSe*IIxrh7~Brk(M z?i*y7TJ_oeHv1e42NhNbE(49?WS*5hijANkl+@|bJ&>I(1t^+KIk0?^4CjyODE6m? zHsv2*$>hkmv}ofvDVW0_>VG%whITN|?Y}-WCq29tVlrS3;kBxit`CW|>#!${O+skb zVh_3H|A_LQ-mzNY8LucZTe%dZQo5~-@>`KYT6p5GDoVDs>))l z%9eoRnXAxqz+{c7`T-LK>^tvM_1ZAyz!*t6(m2Ub9`kI~l2ZMbM0xz&9%nrAjH=1# z4Gp(_~+iTih=GQr!?FD~?A>kM|Kq-z#is= zI=9?ABK?w+rCaz-1>u-Q&ryrvB~4+0DBaIyp(-m#!BLwfD&KbYHQ7qD?IKZxenu2Td30@eNTMaEYQVa}qFKbc(le&#VF-?JF1z#U(KL1Y37;&k z8_1iTX61_=mzNhELO8p=52`_@S)6Tuo!dZlql3 z>7j!kSrFBJtx)&EQAowsPyq(?%I8#Q;egn#R@wuZ%ZdN`z{z93tox_;HOf!{$Rkz= zLL*(JH|=^LU8!iRGD^J{CKJEBw+uD`PGmI*-7h|zpj-!cOs`lU@Fq>zmuc_T5b(n= zA!nC!M-CT#ej`JLxKdEo7HUdNS2-;cw&URz#He2xdDw(phwuK`F}=pne>N3b8lW6a zv%`uNm#TCPuav4bpSjQ^YL?Pp5Tf&6rN4Jbp}jGesG<6xpEh;Nvk>SuoEJrPeoAG{zLzDlULHc) zKW97e;yi0?ap^TqGswvPshZ1pnNzyCCN|9?Bt8( zd?%1Q#HZRN$2)TQW6-b{pH72&jwK*j%WcskuEOs4XZE~#pqDt?DZ%l#i+n7Jq`kQn|yfslIUq2ny@zrNc?{9TDcZGI!z8M2XIX%x} zWmnq+`=#dwx3`!yOQL~uW8y;P2w_GK@S&gu;bx;`pR4^FYi0Hg^r_vs%q9mE-=F;$ zG*=EzrZ*^u&O44VcS}HTa&~!U!@GScN~c{AqZs~1l__}# zWD+nS8Jgm|9|-R&CUK^i)JOsk&Yg8Zu_j&n26fNN7HPsEQ7yA`=*|0of!^wpX&(YEn^m$t{hhWutP?L)9pOXS=o7R_mZ~B>p zdVx!teZlsz5J8=9KLZPew(%Qpw|4F{w~Y>T{3zfkX4CPYD>L4@RreO)C$aSxsVX6l zyKd{vK5=P?<2(876{{rjUpKw}5V!@rR6>S%{RUuwSw-LXfW5JNRZUuG-cHN?K0j>U zX_rq6t)jQL>^p^Nd$0-W#SIn7Y7C5~f6>P)#dj$S;TO9q1>aHan$YPz`cnUBXNXyZ zC#QUy1+F8{Z0d-45^`sd?V;E6m1lc}7Nkpc%gA9C%izRru9;HX?0UdEUjt2~&{ZntZZjr{b<4N3Rb#9AyQ z-Pn@Cd^89z<5vYT2=+Kx$ZW_ z7`Ct6xO&zMrXrb8qwmd5GO!!btJY%;<+NE84VEmQ6LefJ4JGE9)ZU0iH3Pe=%2F8#42Th zq`#ShmA>9m#6(LF^34Iy8hluuwiodxYQY~{m%VYf5;U)w6d~#ugw+mH#O}b{#mj>w z=qNlj%F^qS=23lOf0k3fNYM&H`({Qqz!AbH7G(qjccS&m?)pH8(K+#ZBvyRWQ-h{2K`q(g<$cDm828qyaoG zUV%wxw|9X@V1j7i+_=S5A*7O+UoumjvI%zV!EE`bHF61)#)9nTpgAWBYSO`1r^&Rg zQ=1$!Hwb571N<6dxt2(lE09g*njqtJv)l#Zb~VQ#eHgBx zMYk(u*_Q%NDE3>qZ^47TfFZ5_$v15AUuL^Yd%XX(XvU}3+^Rjh*GC%ka?71sz*V&A z;n)D0`@7Uw?Bb%jL_XbvjhiaIG{8qbep&dSc8b{e#Q~c4*~_%!sKffh4XHrVTd$v1 zY{|Eep4hIfmIYXU@v4j+;8PMC6ORc3w=B7-#e&X9GvD=V`Aww{0`R^Eii~~7-#&Qq z*{8c&APE>wP=R<2)eQb4wE($?NL)Hi?&qxg%pY>}u_e%3njo6Rl%29TaY=TK+8Z5w z)C9)}PqABAFcv4>&*PJ0xLb6pc2Q2hXTH*0pS0Bl(Mo1R729}zCfKg8Jc~60#u^2= z+3W#G3Zs7Zu;))a=N77SmM_XN3Lv4QRx~f$%WJ4r1Euv3A zy_Cd1!y?{>N+BJst40vppLH)A2RXoA?IC$C0Y?xlSDOZii5kE^){1j)=k0}<#qZ;I zLDO@ah}6C;T5*FaeI!DS{>A_+bBubNnn)7S^Sdqiq>v zKEDSKgAlgMds`>R;kkCSYLWC$N|?HBO^eymY#c=FO^WJs@yit}qoS2iQi9${F+@>| zyiS7qEW&RuySpqWR{B0!9)2~t&oAb8{1*3SMXgM-i;qsge11h=2|jD;3#sL2Gjg`73NFh?tUa&L3YT=Y*-#eAxedQ}zgQH~ zt^P2Q8hIFLU53ner6*3N=-s@OG79s_M(+~(?*oX}4!GF0IZ#qPM1oa}K6nXHXn1J{ z={c%h78SY$!g43(t zHwN|Z^P3M_?oKPHUQr_$Bl?I-rSe$Av9%u&WZ`R3y*C2Ef@*egw*&dyV|3K}>CcV6 zjO4mXy)FvIhnL`I)Gj9osW;MJYHp@dpjaP_7t}{Z%t;mKl)CLw6v9?=?)b6^pXRfR z6mi)+g5~;$1}-swET^wbwhQr=8!2{`vym{XrKWW39pQ_^Nn6TCsQ&!Q=Dw{t8QCXy zGIX-WWPna};D~Ag_O$m43iI2C``h=x%}^%0p5&(YLkF9NbXa`g$ECv7LX2xmU*#Zj zH!!0La2p`PEkMt>Yvdh;~A+G#KW^Of+~MJv5b@-nv>;V7it*^Uwi_ z8}i7n4B*qMUJ`SnZJ*%&f*E;(`p*Rs(|rTlX+3VaElz?{EbbJV#r!H2<}WW6znxrF z4L{1D@)7*O>bv0bSxgs<5JWxpfbychWm-XaNyJT70~Yc$B5X1<5Y_Dd#zpI#?#frG z!1-;y-VU)Em6ZiT8%Jv_uHv*`p& zL~(uXVzon6Q%jW=N$r?;+&^i07ezaHyT85MAL-EUk}I6F^+tHT(y)CVA%wP# ziBfW(SY^$#cxcd$=BVPafPY+SU(_CxBlodJk=#U=`TAK{T%^8G%+a(_jl&3~g#*@Q z_ff*=&ps)hSX3lffo9u%otD1XdN5mnq!Rvhuyw%^>!FB%<=S#aK)F)jnSj~Lo==iq z3FR9XZt-BQzJ1_VxRvX3t1x67fXqkZr}&ppz~c-*#fMw$znvF_pG~3o+bB$n6sNSr z!g|BF7Seq!mxw0z;IjDJWA$qtL=IIKAv93o(tzdelWU;|B?E4*+uwg`U?P^!p@=dC z?JhGx^bHE$gB?gGDXgK3*)PtITah=euG(A`2s4LMua#Z)5Mpt7f1)XyKE6R8H@xE( zblNQ9e74{fffAb&?$w0j^O&bx?{|MzgQkn!!<|Ino?g-b+mAMt4BsgY0O-ADovmZ< z33hi3;;5Gb{s~o+egoQ2c|w~{;QT8g@5cbNmMC^BR_gWn68H|egbFxzg!p?3EixWY zE#LcV`~zI`NlB{ia4S^R`F?IiXcwQ)E+2K{J@pRxz$-JgeOQ&@P53U8L3#F&bfA-N zg=f`5D6r{KX|d<8iDhKy9l!3@c;)+QYdrsZZcJ`^yG53q!R`qn?!ss^9c3g#DdZDVGD%U@*eKSGclIy z)7J`t-m_I}j!0>IG5Cn>9xJKyxv3dreU{;+frO*EarAxe#6|IX7CGU3>^a)xgI3`5 z=PQ{UCS=NfJe--TDlPhxma~mM1o=-ES<+7TlI_9 z6`B7LbN-<$?w-dx&t%I({N0OgmX!shHn<}Vf^RH&TMxGrO$DKy`4i*%k+OY^@ao$- zB}X9`U1;QjMQ5dV1?_VSZbv@RGCm5FILj$+i&k7KY>!R5-M+Dph)0Z-Nt%IYvL%g% z3uHmAl%7bUTaQ-@RkknJTJAqM?Pu4W@=zd#kqlTQ{KvmYcpQJ{ zJHZ6pWFPL}Q#KsTMLpbFff$Ug2D8{UM@~DrW4Qt@!}{RVA&Tu?%E&hn`V72ADnF%`q@hB+>?=X+J~s;QoHX?%bPNd`kCzMZUkkx?~s?F8OtFV@lj>lXeCvvw1jVsr59#9QiB22$&jW|uwlEeEdr$WI(eY*xqiC56TZ=t|$tq}OQ3P%lj z9G;<--7Hcu@c5JXjEQ@lS6p9pbxe1dBw(xu+1=w2nEQ9A!iCH4bY&d81*6VVh}$7ZAX^hlWM7dd69qp1pYX22h3@BEGc?8QE5l} zn?x!}wAkEro{D%QRTMttARVml4p9ykq&HDm*lAYe@)x}@6{)}!kt;&CjM6olb~7xg zJ2;Fk$E(te)Vi%k&!eHoRrTP#VtRkTmBrA3t@mQzyeD^G7Do{ z>UKZpH3r#J6uy-c6I-m>P2^VYM!S37 znTNqC$n}wxExke_`&R|Lu=ODj{nAjpT4{KOpG@mMfj!;eR^x3&{h{Sza_%P}XldSi zocsk~cq1qCdZ=g=THGJ6h<%1$_K^Q|PLPh>6$I|bDKT%9RX}9#VFPv?7WGr4Q`KCb z<*^zNm-=IBI2Z~49{|YTFFs?Ymtu#a)kOW*1m_>4od0c0D;;V_!R@U|#{q$LwIXDw;-~s5g;g&qaFe zF7T{ex5>%%Xr^$u#l0*OY;8XZgF0ItALx=eeW-z9LLAV#c6qgc=(xAKHMX(V>V=)R zWyR-DtL>KuT+eyxelcBtgI{ z+#8rHKg&7>QCaK74Tq<{@_rc6lXBTLewe?Cd>H=r=uo1Uu>##&o$^h;R6oU%l|FQP6nG z>okpz<_=wymU>^~pE@?6o!%Zjs*5^8fSY}-AjlLQ?dv9&|2}S|5_~}>D`oC=x&H%% zFZRvXovnii8W6yV4XmOS8=Y6S()@nFr!lC(20q*?C?>M!lki^IHj?bgaCz=evn2c+ za=P5Fb39%ad286*D0hE+Pq)B8miBM9ax7~9LY3(R_G2BSdN-xI26E(3f~IFf>15=()>X1iy^wQyK>AQ~xOKLBp_ouF4(u9GE8=|_JV zfbez$S@aCY+x-{hEGmoMPU%jm@t_k82tfUpnBK3)kdra7wieO}*xnsiF0 zn0c8`6vXy9TvZxWS&d0Z7q*LLw5Dq{DCi3a+09#$-q0r3drCe~JjFVuI0j}L{aPFH zu!mc6?f~p!E@MOk8IVUanYILUq_Oob);1D;292*~Dz>799vj~b3*3gb%Cd~Z;?dXL z4X%L8(EHWwURICO_t)V1Vq{fzS|qOqR7HW?qr>&hp8a`QvAXeAdm8@x-Ek{c^8qa$ zm)%N1O%%QpZ?+1Lf1X|bs|E@aTh-t0e~V>leDZ`_O(>2(l^{lwJYQQSLsM zXxqUyUv-ITPhBuoxX!(RUs;{_1)EvlYnx`h4QC95?Wx<#*z+AWsoZcg0L_ zv8j^*rk1-*$#isrKZbU-D?xklaEc4^Pl7uR3GR1!5{Se>j`-|PLlz#Fp5BFy0 z+hsTNHMR@;-@5_ucIc?=lj`Pmfjd)U@7Ht0!nFj|N@Xz(sX?h>Xg<`Ci37^_z14_*T|i zNdCkBejB{PdZyV_dZtpS0r5Za_5rFo=eRhXW&-43?jt9V-QtmH%|V*@Q@K(M`K_>AfbXhPWyb*Isbdzi6&7w**CyxClr#LH{zLtSja0A0C`58^W+QHD zXtSpXDQqC2qMjTK)PYS61!@He#Ujtl=IQp3B(Cr1Ky?g&?5+qa@?Q(*b6M0{zNSr_}3t_`%?!`>X9X z{A_XDK(U(MCiH2PfjBRN_x$rzF>aTIFr)W3V0<6*QQP@Vp0M%C{OyX)(M-iu?qe-2 ztiT0b;5>5PbhIa-cHP2kNeeHxkjbvWHc@77IYDX_hSG{m?t0t+48(3g8dD(Oj6#ElD=bGST^Nu0z)Ok5z@5`^y@&Ds<}xan zoN;yW-5s-=f061HhJ#E9UG4vC(j zl!jze5G5cEY%}PYKq#Xr4!_f8C|XO2>DyF~skij~i`aLks2Lf!e;?Q#yzW+rN1mRKZ0P6PC zM4FD^KmF3oX*WWjXuD$cv1#aRb68b$9cQM_G*?(j#J?w&TGl*Yv!s~aev&?q0PB~< zHJI1+q>I?+Z@mv=y*t7uD3yP!mlugLF`>~HS7M~WqsnBAIJ}xSk`=o(k8=%-@sjJo z#6LPiY%#jrte2MGHJ2a6vf^P2W@-C z+oi_k4l5>GO+mcCEUY*BT{Q3k@bUY7N!IZ&;^{i_qd|DUV=au!EDVJ>cv#QjopjVH zY83`8%TIs zz%*6@J)W8P#Mei~M{|4TOkFzhH(yL{KJf>Xj~^Es6@5}w#}(rapI$K9GlJHoXqXRY z4s3#Hj8|$w`EDn`tx`!IzcJ)5r@O_@!RLZU?lcyIiPT35$?IoilFz4Gtj1_Y4>#iO zwcefHQ|D;j$^Ppk?QfkMvKXkw&g;KgUf^ij2X@wM_Y;%Tc-BPVe$+I(w-SJ!V|_$O z-~v)p7=Frje}O~FeHK8*&y7aHov!P(?2lN9A3RYB@{;7pe9kewVwdh3uxb1DN?=Z* z2YFA7EkMUS+9Zjdz&oM)`_o6j73%!FcBy2I1>>0>t%| zta_aOLw2*dCj?6q9YNNUp&G@6#~R9DmZjCk7yh#Rq-8CrYe9;}<25(|U}67i{}- zSv&AF6~!XxmS+C*Llcify4{}8<8=i4hpQMI<#x&P_tIvt)Ogb`cXarSclj@}T6Q)U zcwCJzY{sv&7bKm$OO#Ktxf;aKIXG}ND7&;(U&K@m4 zED==a9|11Ad95vNN3_+%ox> z^_?fM;F%t%v>MBHiqkwl)2sfV?V;C%e%Q1@X}`a```bR%?-JB4Ih@*b-oR|u z7o(CR_qI2VDeV-(lMdbI2;bJuk+UM?bp8Tjp5rV9`Z0nNIc*q$?h<=F52Bn2^+mLQ z+$8o_CO|MFn4t|Nr&2HAUm1H@Q+lR$@7cFk@$);=P;R-7FkgQR(s!{YClfkuJ8+V5 zsRH;NL~)eOQ&2H=es*nO(XS`6h7=vAC<4K-!G{ff#dv(X%oCIH8H)I#N$0m6k28xN zK6|T(Z%T`%Bi^oqCxbYjrO)t~dPcIk&n@oPA~eU3ZdG#?d$-b>GU&iDT3UuG6Ma?J+ktpG+Ct1ZIlOilL&4+*+|5~_OXhB*8l-HW_0)Kdr$p4yTUEZg)B|^V9qUO7>{v0)fw18eNX0b>I1vmIP5zt z*)1HOtEQA~qe=QkpI_NW2t^HuZ|USy{f6w>nh~pjEl$cXJp-kNM`pBIo{~sY(xb}f zG4BhWT9u>kLVkkU$2;ESQE%sun0yhpQ2y5uEqYE>p9!HEitn-mj{gMAjosu{86)HB{xg*_94V0#gSmon*r3^`(<`%v!;epX-~N(G3OttEyS3kB*W8Mj8WPN;lHQGrpt z7;2$yBeK&hw;j)Oim?inJ`6KgETjgh;s;d{vYA8B1Il$;g~{do+e*H&(iCe~Xb2g~ z;xVbLv^nk!w%wqMafEi{)CQ)2X3%ALC86OYhgkhlJVIwULv&@Oo~oy4d;9oIvpmSD4}@GM*ola%?syDEC(-$G2u_o3u_&R zNz}N9Rw|p?di=<|#Ta_+aw$MCShu=p7ABB%uX_a@Yk!v}`}pvjB;v2t)H6yQlHz8> zKKJdMH$W_msLBk`mS_L)+iW^ZdbeL^EW{aD{|xO7Io}ag(<@s=ZLwe>8b0NcY0TFx z@khbEZaCka5JQFyzBCaCoYFs9EZOsLr}eHnIpt`T(Vg}`?MbD2K! zqRKFrRl$;gIz%(tZ7Idb9t~hrXo_mTiV^Dp6G`7A>E($B0!5<0rMp?~OZTAJ_9%vZ zoHvn%UbY5mtLndIt6m3ta$=-n9IYC61lyFnXNUgzn8am!?u9>`!ll@Rt+Qw9p`W!m zsLOp60w~*J#{zx&qW2H0ixK_*W)On01oviNkCNYfUu$QsrUi#VM|^W2b)%OwtJKhA zL%r#j&D7AT<6N~uljXxzFlN<*>Pwe7W-@edr%!4HYP~!^610zJo>^sJnP#;LhmeR3 z3!a6heSB_$8=CNj`IC2(ZAfa(@Q6y&K=+z}6+EX7+*h?V3dl+56gxd)GU#999 z+=`sDA)K4Z;_r?0`o4tM@;^3~PpbN(8^?G(kI6efL2)Pigte1lKmOwQ!GqaHqKTl# z{ae_|7mkd{`Ao1ZBs(5e_u953I0*x$)WZjKa!xfb33lsg;ctaX zZgt~5_Ujz1Q`|(|l}9}MPWCUh_qNRZv4yvPnRLol-UdT|;KIjzQVd%nE9nNl4@H3U9n~<>~o_H zy)eZXtZr`_y7Yp}EQ)I*vgQ16UWvvK=;Xc;%Q#vsPdu=T6=p#Qvvr{^r&KcsXrD6y z?O1byXiUJT(E2xr787``%hGI0gt3^E!}`^>b2(w_TIg$Bq01{V4$u_Ku}di?VGY&--TZCcGYL}Q570Ad0v_e*dvI6KS6hA_GiVCYms}|hAgY!L$2psV_gNm zn1$y7Nb7z=$YCAoTjO^(q9&yL;x-1NKZ*R7&uSGe?TD+o^tqx6w9Kcx-VaH;F(d?! zAw$e5Q~paXhB8Pz-=mwYz}#ybYI``u*!G+oewQ8Kx-aOBgypPj>osbMT6p_TwWu1zsObpNCp zEe_K#tCa9>o4njDyG0)+`NHjUdl?lC8IRTc+Qrgg{B*@=qc66eF3p>Dp~7&5$hK(+ z)qopxA>A9?T4Y=Pn4tSQsn{R&v=kvdHdLY zx@yO}S`__Ugs4~JGr4D5G8v+Q{B9!gY|zlorpC>Fb-@f9TVvYlVez@|PC!uOjHG}2 z$-EV1Qsg}dbO>$I4*YX(fMRg^&38Mas9eS4s!q0c$#DMGDdFGD3RXj&1d_g+gbs>) z`F?+UdGm$L?zqb+q!ABHvp#Z4{UN4yG!ZfH*YsHO%oC|8q{1-+rOhA3s%Z#G0)SwA-%{EHqayp)6ceKv3>mxiDB(z zWg^vU;hZpS`;QJ1{8}tszFXRqxS1IKfOb4}?C(-$U(uJiq_Ews&i1`y3=lFTlB z{Qm1x{1|YrmF*q9p2pvt7-LkGNWa4DK`UD`d(U>?G0w@&^x&Pb-uu0K<^zm8s3juS zLj9F8txorgjXOESsJPzOIcY_wLKH_~4e>CzNlBt_FK?SKF8LtzQ-0Z&QIyeK_69|# zZzBW@dZm$?9XlOcFnse!!U;^hgoLF&Jtb6C&HUT?x>f_mZ@(Ha-@K3Bp~{KS@E(vZ zKg9D~yP?NtQdU7ND^4ks=VGi&~nnXlNxea@t2jOem*?F0tg12?XO&v^;tAf1_sD7(zIdq|Zz9ya)fT<%9n%YjJW24o-O#;10-~07W;igYv);%* ztBrxE_gOe`w<{2Da0u9F3<#r^+`0BJaoF9tZ>T32kSW)>0A%LCi5?o(|3iSr9#{P1 zm$gHzLl{2nL67F&;80h9TOk?6v4~f*;93~tN=P`rJe8Nd0pKgcCeK^0xnw=Mk-HP} zf((dGy8?JI4fYzK#mVPw*^@t~Izh!{T!osQusTvnqDov*+KWaUE*vbZvA3A@<9X-@ zp3H&76g!LMR;~@J*sV7)Ca9u71e$qjvyN1s#PElj)41E6br~+wkk+F-`{}S*&FOn? zS9%FcXD`J->p$<-MtIG+Ve|b5vpetSxqZD+`M85LMF=>dn|np4o^9@5Pd9dB`?8oT z3@;ph6O;}|vDJKE>nF8lOtcMjN*Uxsp@of9qL1IJ4;}Fz;C4|x*=t8m!t|}Q z6tv_@-Xgg;hz4Z) zI&OW#F%4f=Whu`E~I0*tOvG74hJb1Bvq%8U4`BA2UFQJ zJm1%!TvXK;4j z4T)#7Q-Fj8K`!hg-Wgkt-#S~S;NPBr&13-sF_&*3V?Ok_3^o1uhsXUzbGU($XK=6}(TYuAxqYV!w!gS-9O^9;oD>V%InH7@p~r z5CpU=_<2287tFJ&uY2eJJ{b5-x)=EzuTvsCMlKQ2{>~3no}nWvjE6f$vWZ{hB(Z8N;G3 zuTgQvSsnud(>~T%F?GCQw>adFMYKr#uvo4QVCGEGT=nSO-6>6pOs4mlDENU`Z;Y!J zek5>7XE!;LC-7dfv!L?P(4!4){K>eFW|wAd*rON@24xZOx3bU^Mdh;?PL0hU6C9-o zj|@RZn3=7z$-gZwuJoyE!u~c$=fO=7NY@qrdw1GxCwiC~%va+lsQ>n0&Nll?_`eVB z3IaV;7cFh~&*E#jO+Q{k1Mjj}1H_}Uh#a5o3V~4zkDK$I(PlB)g-IOT#DYu|<-b3n z%4-A@tp8gu3p`F+GKCtp&QoHTG{q9eh?F#^$eCcIqO)op-YG4)E&TqgT5ORSV5U)(i?TW!UZ!vBB?T`3uWMA?j2VEY*_d5KE~k#m`SWjNuGKwM<|ka(<-_i}3+tnp2)gD0}4_3k@P75wC+$+I-@jM(&_xHSUlLqedeXyPm1~PJa6X zbC#E0s@bjn<;`BxPwlZBv?K>}tfW$G`Q|q6e-y&#dM|`tlWE}|NCSJ1jXOT4$o%o5 z-wu!COdQsy4~h<^^9hpk{38kkJpYHiw~WfN-Sg&bQ+S2R!fu_kG3x`v1!Qu!OG{HUZeFrlO^i zsbyWhENfUOFSXs4NV~SoD(0U7tJ4i29Dr{7zUtfF2l)m|3ycqSRrtTXrDj*J@ZFD} z&sBP+YppmR1dYvuo#DiwN`OU(+!if*!2l*(COsg>!qMtQ%~rARrqI}CmRjE&%#^5-+a;aC!- zcxSD<1F8uN$jynt?vyI+p*9Q3dB4e0RJ8K`f|y=`ya5G$5Pai0NR}y)7(*)NJlWhz z38sxz$5}+{!zIenT<}qZ(y~N6ofB7BlMG_BF(W7;wll=Z0a7eAno(h5ThV?SQfqk; z^Bre^w!X5)V&70So-)2oWi*hgN8UO28)T_P$v^KLSrQ$bkD5lpGd+d2(YxSQZ%ULJ zB34}HsX#C+g;hJdOoc1(VK{|+l-|E-NhyuaQc%B%i~e)kLPEkakfdBd7un? zbr-7jQl0k_&p}@QIL{>h zW1hXlLn9ukx6s-jh9!k2Dll(?pJ;XY$n476BZF_ORdLaNLzY09qu|(KT3`9m5kg+1 zS=OwDSAp^22)Ulw<4qHt4Lq4hZqL)M2) zekhKQtqbJslN+tX|)t&qfk&R+jGi{F)JEVEogD;k+6t(f)wxo+^A z?hAMI%uQey$nWO-tqPsuaN_+v&|M=fIkI{EnT#~;RSdA(DS@i2s-uU%tuMV&{Wxgh zeCk!xQTyGCjEO07$Z!3DIGPHWdhKOTmP*_ipGw2uL2nlBh{meEk^XU1Ros+z7bDmT zrc}`H^0V;_to2U^n8rYHyw>#;-2d}kLUTmXYX`oQvK^Y-7;8I{;ZrO~?_IcU*$AoC zvV1BE_{zw^qmFsvOVfp8HT2ffMA-M;A-WJ1Cu~*T=T5FZ&9k=6j3jVmgA% zJ5oUTP|T3Ta=0px^w1h8GNMt&W;3pocRxo3EwC&(8hKw@$DnD3A5Gi9{mk2_A5B5; zXD8rF^=*e@a=1gV)n@0K*3CqdC!X32LK&+3;nZ85gSl2nKC~t!>ahIB7Nu07Nh8f{ zoGXo&bHr-3{C2G76yUMI^o?Me9jM|)^5*!_L#J!htMw_^-8Tvk0bZD%yEI6*koeOG zzZU}VBCe;!n$zFD$Q%oQ?jK_NNI!Hk-2c9Vw1=s!H}E^S)NK9{cnjjaNZv3m>SbLK z+)+7Eu17!>-b$z>Q7iM&WI}&;r9*4XbvDR4@0UCeeH;j$>JQsx0E*OJ0{YhVOSL?) zc(SxIfaD8>p%OaIv(MYqAURiowl|aLx>ob0VA{rI@Y{qtZan9Qjt`YxAB7aE5{w<6ADSXW( zAchpG(^Z!25gZ`r`95WV}?{Z=l-#3DyzpP8b00R zBM#pUL7Mv_uJ!CvyMx2;*( z$%T4GvuWI=Ivx*AIrfy4rj}jm-uQ}NGEvFa(5goOjC2W87 z8BS##v>RoOueVSW58WF6!fnj%amz`e&>WV=>!mqkHe2caTE-_z=~~V&1yXjpLU^wN zs+11Bv&;-6x6UYXmznT9>|}Rd4Z_opALyZ$S;)YDqoI%Wdy)*fTZ)B`EqNgT^vc+ zQ3b_&ABLY2PtGZEv>Nj|@Gpff$jmqfVJptk-WjAzhbN52kcL9$+tmD*<_JR*siy)Q zf}mVZH*EFk)fh^knzGN$ONvj;ws! zYW^f8V6cbh=>_!Zpb>&D6k0|7%Q75B`@+*g*M&J;F-@d`YO}2qv3P^th;&z)u1bg9 z#V=%)yl$7J=JTzhoA+WxH0}a4o*ewW?=t&HSbq0kU>kgW9*}Wo_vaF=*#cFubOk{l z3@;nL=K>&E;vj>D#41DmbjfL@pW_0TMyp+5+otL)a|fw}*YRo9q{{0Fzlr&#%&=yK z3ABJm>1IC$`YI`8Fsa20BZ^%eF6B;%(_FMZ6bKE^pH3-h?JA($fSyKncq%>Y5m>td zl?T%~8`?rg{}8-N+h7R4W)ot&P{r$kOLkAGG&!Dhr!xR!8+a<@i{k4;AA>jL<%Ex~ z7WRA;)FdLPq+D~*y}Q$GEgo&kl%w*HWezt!f z1F^mH*2iL1-LA#5@TdyVb+8^=v)Yh|WU@%4Gt_U3_z4XrIk_!Tn0&Tv0R($Gy=ylP9c+(<+;6=u6Khr!nt;Rq9w4RE0MPV40KT1+uQ5dkqGhj; zsWtDL3XTEiNOkoQGMq?PFWlFw&U}a$a=4 z&ycGSx~WDr*jBV4C{f19M+d=ZE8Wxxf74y~l>UcmNoYQl{X#nV$HG; zmUpYy^a6ZA*o^i`kj19KA{hSFZmg7|N=5&;&MPE~#l>caPzh(Jm{@1r_-Ljky+B7( zlG7iyM{QRecfFhU=|WtF0tRP*dF!0v<@*Y8BN~2_1Q4EMhy-6nzQ3;M3YzPpOoR>l z4x4^?F{4JJGNJ#7A*lR^^#g4F{iP+t_yQ_}zAUZxL`>#1BVfADVnZWFGXOfPSk^ve zov9|~YmawLwa>M^koQ{c%&uA-n zM`$cVCR}0`-J2XBTUP-v8gqV@={2kQBVfoLExj2~cB^CVaaQd&LW)JB6-0so90HtN@I(XgbV}1F z5TCcm(Wdu)!PUCm@HH*V%bMwGt6lyNP#Og>%)X<+WM-4HnZ8eZbtod%1Ryt45qLJy zO7o~l_JrXdKv0$1r3B0WY`j^`+3me+w~#|cU$zXZ35l~R=^yU-YY)H57D{ewTH9{h zwXt6BC2<-#ima)T9|eJP|IE=jNTcpIWM=z`4!dcg+Mt+u0iD)~3wlj*K5MENx|hJC z?p#X)~fM4@S$~nKbu{{Vo2@*Fy&rc{On| z2WuK(cBS%7A)`(tX}lTFVdqdZgu-ykxg}OyjDmP@>wmPsjFNECd;t)u&ynL&vqR!l zzWOD-59=gYwj4O`|E`1_|6r{E&*>6R_VTq{H0ImetHUPhpxFaJ#uU(0;2qH+`HAc* zM?cY~T1S>E*Bim}O1%b84ps^TA)tSp$J$4UDCYOQ9r(I5^${0tFKHr6M~^#Xin^r$ zR^>&G;ELzN{ikOwhsUcwa-|Mb8P{Wz2foiOFK>KAjs)%B=9|*c!J9j#4OLiwN%QT@ zKOBtfxfe=<-dG?_i~OVE(AcYU&xhMrr$R; zImK^05-q(r-F&V1ipDS7`x(so=^!Qgo5OS&cma{Ni)j=P?h&Pj;(M%Eu8zI?tEGYE zcQP)gvR0!EKSh=;NgRcS7y`bfVD?=SSSaFp!rzIprTr)}BS22OZC{qg^k|CK#Lf(~amVQOIC^d+3o3VjthpxSUF!FVgKwCN zm(YVe@g`ezfu_MQo`rmCC|M93PgckZqU1W6Umkh$v}s{2y5;|FR+7ip05GLB7oBSB zm@M!yj-%HXFcv6e<|F}-I-wO1jh^Yx3lnf^5*pui!Vt(D@O#y6Yl4CK2p_D#;|F<-tgF~sS5^ySoRO)XM=PN(LjKb ztl*kLq-RKQcqtTQ4jkLYN+4W1j(8uRx)5kK>NL5Bb;l@{#eL(pNBj}6(p+~Z@)R-+ z@Zu7C48Dw+hf!($ir_}vPU%%-oxD=c9i_cRtSBk3u#W|4h&MqbF7b($2+Ypkn&FpB zK>@1~xgUP@Zn-y-SCN6_C_!c!^@ng+957!p&N)wR_~F?lcM1~dc@_@*0Ty+AVYbwK z;UklPQWHjod+Cj`RH`D!ER*~BySk#|g63I?Vwt=}M-kMchpGsJ!!eTJ2#)io^yC%;Aq$~72P;24gfmz4^Q#K>2)WU!W#!r$?h{jgrP8(m@qFfeHsk9o>!+}~hn z-^Bh%G`@)u^6Amf>wG!`d{q))qDLy&^LnIj;#tei)E}(`Ognd>Ua6kEN0v23=e)@4 z1!C?eZ4YT<7OPfv5uvcRL_LJ)rB>PIzShSFk5=)|A<}ps5MOaSdB25ykNtY6vn#Oa zswQ!~2ZRnz1s%6IyybJl>FUy#(G)*!ZB&JCEkKEZf4@BLRAKEs&XY)GBT-@Z_4un( zpGCvchdDcaz!ywIZJ{R)nbl=9h(B*iHo!*{`dR{c&GW&5tq)(Q6ZnCzN_N4M=GC)qj@a*;qfL%=Yy17DnYdLn)rw=k!rpP#6B2K2|hn45Ps@ zAI9#$eQyMnoK2Hfuq^`Sko5V30gNbNJFIgsLo_~BipA%7n8Uw&f&V;s&u{_&X66ph zIy~d4bk0t`dZV6$8Y3pQChGfz7-5R81k*yZW(CY>>fa2O|CHFRi2+TQI-Kp(C&6dz zLQy!+`}?&#>ROO|t4)5r%4B;C&aZ*M!jYhO_u^MtcP`ifcKc_rCYDQ(tP;T9FiH zuTFN2AdVd2a9H-M$LKahF*AnbOVKTp%g* zW?l1de)g9u9Q7OUxk%V-@uU9bEcx#XM*JRp0!GWl(0~7{Z~lybDB+Qp|E#_F%Y}{N z(+8j6Q%|_t|An!D4_a1b?C(AozQ5^u{G|`_U$cbn-~XzJH5f8)aM_Xn(bVE^FW&z@ zXbJy68?@d}FP}YodU{u8Z}neU!;o~CB=pZ{0fT(9sQi5W>=Z#FJ$&?0zAr-9eO2gx zTRr3V(G~FVDI}>OjzRx~{ybQh#P_Q{6cjp~kE@r5$K@C&XG=qiQ}0se4AWhip%eG7_lqzT?awt@;luntRgr{dZ{G5( zA*$5b=GB_csqRgeBr;P)^A)YQY+I<*?vOP>s(U6Xb#kC&f0O=orLi^#uPA)$M1HdwXPO^{MACU5EEFCGS=1%v{O|GF-My0N}MGTOg$YY<4Aw zb{TYU-ze9c2Z!Nv&+AX*2qPbPHZ_6PNjPMsK{^D3jus$Zw$j~gPoOc@2ilh#`*Sr0 zqXb@l8eXf=SYkC>=+6SY*$0r_xh~(U91p*!NMJUdi~}rKmyRYhDea|O2S)ooDk8Gm zOOLG}N+Ur=3<0odo;aTKw@b%41a4bgq`VEl}tKbkx6XlMNDtfZnnZWNdwmniqk zk^(T6vu(ws>gDHy!Y?_kx%3gvr~MhrR)TX-T#mSve$&Mu!iom6%QY;;-y4vJ;RS~OD z+->{U-IXt&Fp3m|Q;+AKul?ar?d7pI3_;9`8-$-wznWXf0o~nx_cY205rY#yM4}EY zRCl`@D>Lz6p+Ov+x`7R7ei7x9Uoe{fVcHz(uf}6y1qf4~E*WuF&iPMe1&I4PrDO3- zRQL>dCchKyfBaf5R>?-mE7yWf!;6iZe95cL?ZJs zPa=Jf+)*qcN-7=5u5(>8L(=8n>%TDh^t-~>OY}%n8ty|p*SBd7&yqAf{;IPdkt>6D zM{Q(4>K?^;B+_E^5NaZ4Fps6xcYwz!wkvBeu@k|7{ny2#PaUc{SJ&tv;DT`@J`u71 zPqRMu!?0{_v$zI7@b0d8(STCf{Pn^gQ68fFCfUr51Os@--V}f%`$BD`fIqxwPAFXh zJOK66E|#G(zy>I0$(&9R6s9==h?|S1Q+a&evmdBFm1rq) z33p2=wwh7feS`8;JGjRu=Q5rnrIhPq3%&{_)T8F6AQ>r*wSg`2Fi+HPDQ&C*DU3+!no8Pch`iLgn?WqQyl(cOzN9#y+hs)#}jXP%qP~u$!=ieBO-sHQV?X z6`r;Ho4)FhbQinrfor(+A<3r8=Kb8$IR)ZnLgn4_{i`q);qA0yh0Q&rnNMMZXvu-! zqXC8WJa#0_;|fpiMr8j+AD@xBKbnNETk5{{zd!KZm6s-%ue3ne=Ur<&&Zrt4d21&R z!M$im!mx*(g%kU8-jOeLPO$sna`k5vW^jpuxN1`1v>6M!`GGbf!_O(5WCbH<{xXO3 z9bc#@R-Mgg-Q`(j^4K1a5ji9)@LM+TCIpoNN*2+3q1UY2RxNEgaTMu|9S6LR*MikX zykBg$xF~czRd%7`G+XS$1Le*(640dkFy+Q=hL2jD5Y&w~`t3}ctJq>f(h0n7`Ip_U zG~}K@#$LYhb4;|tuOix)quCvT)IBf0edhA>52^~fwduvfdb@q(h1B2q5(Z6*AQ+#^ zUZy>RT@I5@gW9dOjezYqG0mn2Tek8yHb{dvVZT~5HNA1v)qeE4KWQ0CVvu98nj;6e zZanY@6w`6AP^y*}#ZcFJ8@)fR)i8j(;zgFqYV}3D^*>+)5kPa!6Nx64%`ueh_i}AC zD{iveD$HBbtiUx=C^w&`RBm>zQgJd_dEBsTlIE7=P@n1y4a6%QuXEp(rP(&Tu^Yu_ zUmyCoIrMQPE+n2(3~V=n$9PvK%E=wt?M@!y@0jy!H*1C^_QP>l2W)x?=tx5n;{eY~ z2= z=e0^nc@~SseC|;nmu#&uLsOyWOa7H}fC{-L%Fi^XC$LtyBz_xp_;G`kM%O_endzlT z!|7;_l^ZHkB|zGA{OwkA(m4~S)%V^-VH}PQs3a5PsS*b>y$+*+P+dIP)*w%{?rbAh zy1?^76{?4~w&OeJ|(wxR{+-%5gw7#1f zR(0pSKlX)8I;!Owqf%twuo%yh@13oZu0hUs#)nJG9K5z^w;tBh7+X%r9V?|qm)pEt zJ<@s0j623z^#?Im8ZW{V>y%67ru-B@NJp`&WisBH2VZ99zscIUQ71rI7{!){y(nTeYt~Qu zv%Iz1cVpTe;AX&8rkuft%N_Eb>snjMK`n7%aDT?4V}NAX$hTa{?{iC}(yD!@5A^1X zGOvrXVz-mUbRendPi%gBaK-CR=Jk}GMmr)Xqpqegn_jVxd84sLBi}g`rt*;_5q{0b zy>H!hu){LlRkmXJhD~1}N_QKu`ZmfMgyzVr&9-UZ5Ap8is_P7d{fU`@-#`W;_t4c> zo7+?UKF0K4-@GIO@bsEk7S5yug+ODSn8Q}m~EN^Ey*VrbJ zhOb^Z-%Tz5QhZiK+b93Qq7ArL|kOBWs724OUIk4^Fqk_xC>YkaxZ_P2zfOPia zEdIIo(6HenzgS$lF)RfACg@tP(-ofA9br$d*_XarYiZu7IXBmH`#!JwkfXd4=7wgxQQ7fU5_$Oou;r)7r*eWy6i zyUQcA+LKJr`|wswrp*#J<{^nvVw?x(?45T0m+)py zpF=%EoB?@ZZnJtY#qS)M<@6QCeLK5r?xj=b0n*HJ(Y_Mjc&stD+?o2U?Yu>)$J;n^ z5L%MiG_*pHHBuvw`pjTyxy^0(Zo~dy|L}pXeHh_{CzbItMm~-K&|V5TBjhbZV`-9a z%NLpE_?s{Bl&jy^7SrF!DwZpooO%5Z`` z?SEB|N7d+0u3B4Y-@J~L%;*v_l<`pKHn1R^8E6CFgAxp)Ska2OM4oQ<%M*50sicaw!6y%B5R6gPYdAy61q8e z2EqbAavfdA^irlgN?out8(<qvrh|{xU01$8GM% zk8WErhQld?1(_eHTo#$MneFZl@P@;V0b4X+5djBzcg1eBP4lj{*S8*J{`EVy?~`;p zt!|LqSm~ISqvjd3N?O(X*w&|Iw`IH49)~OG>3w|H!V(B?jH+huw^_>;7 zRlN^tN>wk3@cbMo{8`HA66YQEl8imG^~7fCJAlD}v{7?`!q=!9y}EZ|6!Jy35tNJN z7vB&)9D+)JVLwqollvdGU3p5=<5+oA$eR_Kns#qG<;2UjAJj$`l?&|Ab)u6AfA_drp|dj_O(>G%JxdS2M>8mOA7O{%#p0*v zoe$&>TFeoqi}hO|SajLeIGs1E2q2$9?e7pmj_U;4KnCJej=Fsj;3zL}>yoQ?*T~_p zR}9???~zH;ac4aeP&3M-R^E2$np_;xT4CsJfE;L^%49-(p+J!#>#TRZe|qMXph?l) zeG}N?81L>Po%rc4Ee@SCw!oeEo#4 z+4%Mckt#F_I$S!LtgltdA(${Bc;qfTS8Um+QiEkgQRhyOXy!hYLq9D!Q+;!g*G9 z^d58?R81mf4cMlOUc<|bEEju})!Bc-RW3os6-w?bHY1747bRF;@Dy^RbcY074rdYnAG`zGzw(O( z^gC27CmE-qL`D^c)a9Q5NhY^xxW`=Umr6eHn`61VM)5o!?-dxR)$L})X1C2vR(ZHa zTM~pqBZ7Ol`k?^%E~dBA{;)^6MXl%YvV^E4ttk5t*xJFtzk@y0&bCeHDJihD_&pDm zK(gX_6%KZw0MVP`l5*KZwLt%0ay)mFX}$v6Jvf#zV86zmu}EUzR5CIXYz$1kDpRYA z=5W||{VZwLjpPTlKlM2RQLoq2+%Q7%%c@!UUUq^Isr?6grWt;e50Ir)u63t_l)8+s zrvW&YuwSG$N43V}w3V~Tlz#|h$rr`!9TqiyNlCZ956)Lk+RS*eue%+8W|nI(n24R- zn^#=RaR;H?S}uRQF-p!AP--(L2;e>y`aCBp8xc{wdj*Ls{*6;PS@jXR6i=f%wEHdv4q{B2zHqW$W; z7rz=cWHqNQ7y^Sh{DP2?o+ z^3E=jc~ml8lwV1vvGv1xjW7S!rR)nQKCLH04aK7usT~c@pPef`^5dt}c6_-glRzt{ z$WrXE52QegavagCu6StjEWMBxS`q|E8<+fWRpnRJN^QWio z_Z4939-+otn1>^#M-S>YV}ZEee+}G=iUMKcJJUE0!wj^sw*XXnO|) z?~f9tcpZv7V^+~dyOH*QDq8h&Fu`fXrT0@yn;zL{LrdG?AYH6c%KAF? zG?Dd%@9}Ej(V)|chf&<~q&Ab6JerxF&5@|8+mm&$zi$WYUh}mw=<&o^b!Zs-InESw zM#uS-%z7grHR^?Y5b<@xE{%WgBpZ2uR7KDK8VV7G?R&w4ATl?^LmQc({Logu5*d1c zc~5GPfZootquFyH&&PV^ArQk+=fJ{ph0G@InbgZ z`VolC8d%YI4_{PtxVQL>Ra9^i9^Pj^Uve^~)br(0EmdDxfq+~IY!zx{d6x)AEg|1C zgnjys{p1--Gpf7KIpjgTNRUtj!?N=GOQ^p=@69o z=zBK{*u7jto~qE&nn7kOq($uA=XlH8QV>p$Xm**)GW+;F-*>xSuYhy-$N6C8de#s`feZgw4XdsS+ zad^0xZoYJ~KWza-v23g%+8!S*iZ#Ec{?w8e-LJ<}wqJ76!cvGxH(h%;Ucc&jGo-PtP4W!zlzwCwtn!&2+bS?k%(FYAtVn)MeRy(FjV&e#Q&XyOE0moPHR z%kG0^U*e|)Vm|f{Szc>qk|mEidM#1 zIcuo0;8l33s`3faMD=&^Up<@%Cy-Y>=vJujdqN`}7pfJgj#wQ-N{Br`4N7$IVVVa9 zh~FR*N%Wdanj`#7Xum;5U=xeP*wwbWhu8e?3b#aH6W8cJ4KcxAP{AIQr}iKW>`Dp$=S;MK=O6|bKRrdwME8Uk={ud(hrjC+zE znaP)!$yO(jLj+j07hh00_>FL^LdD7-mv?fbOjRjO^h+w=jex-ydpw4%DxDIHk%ev61bf#WxB|5@1_5P|d2wOh(09@35L3hRS`jp|YG)fHQ z)ZBJtaEtTqA-C9h^LjPv_)bX%mQ*AZZ>QnNFGlH=>lOfay@@RToT#%$0&+U{92gZc zqQkvRrT%@&^UsY}?RVUny97mDaG}|P)}Cj>4aL@FenyD;#KPBhwUmzZY8RLosan&Ix?U+|RIT1JFc&mvL$T|>UovzOI)aOu$)&s6dmkj4NZK8ELm6O=m*t>1@mB8 zwvS(~D?qZs6UQD|WxrBYdOl<@6!=0lu<2+J=sfk{SjB~4AXfzHVQ_lRcm{>iYaRV+ zJRwMZz;Td7eNyExb^?xNOo!a>^K@vDuGgKmm8$jOb|-hsE0cbsYT~hwEl!Sb&^_Jn4Q5Vq@nMHP10Jgqe5_9H*J&(3!n z0Zn4@8P$}SDTT=oWsQz8h00D-L`-(FjHqED2EBN|ao>NiTsahD2f|vUJElW8N2>a-HTLIE;<>Gk5IxBzBEQjkb~8>?KOkSCdX6!}08I5^ zgWwkH3PF)<{1AtDAy|-9JYL@aES(JR2DYm5Qe~2L~1nAoCxyacl(pux%+?| zR4*f~&97jGmFD{H+(58Dxg~ak?fUHOCt75(C~dhyd7{X>gGRCR1y0AwE4O4OvE=@L zqPp~;^qq#_Y1arm9~yI7D)V3yqA{9$V)IK!=3Qj|Mob)|+dCp5)Jz5iyBU3z-SNai zkmKOM{i0Oq>({w(;NQY1kR^nOGmzK3!|LPk| z4xiJP#@g=CmTMx`702Q+FTxc}eB5Wsw8*SF9`Z+MBYA!h*r1li`#Stcc9(}LpQe># z6{!kP9!%P?Lp5VxQ-CxI%x7^y+@Q9#!}XQ~ZrA7UR^&ApI;V0F>uK)dgDzXmg5Qej z++V6$4Xlxd=6&jqu?VBuI0Ljh&Q?Krh=cFbVqMEs&9`%#C^&J&cyNJ?|ERL1k z#S)1blIt|@-_0OSzj<5E1gfnHw*m6~Y>`OxHy)Ngr?waeeO9-LT78qF1+FSEl9t|s z9Ouj|jR)kK-AIc?(kB=xzKtofW0oiQgOS5GLqIE%Vo!OfM z;phl0lUOwxI0CnGn^ga~E>-9dOV;an-b3~lD>5AI#SK-*g|k^9S%|hp$*z`UV%F*G zzQygeM?-my5sj-JcH%74BF*9R6{9PzyJ8cn2W?PPiz-Jk_j9GtH8`Qk;>>;WXmf;I-0a4Hqcj8{iliI>>|vbrO) z$;6P?{JkTzurkxz@@N$GZmE^_Q9rm%)ZS)Q1X-rvT$mz<1s@Agb-%z8;`?>I7mj#c z)$`rP>ubz!{JMy*zsKS8A8fuo^n48VpAs&tcv5JV5-xqdkIrmr9~^86J$9)&gP6!| z*g$K9D|mOb%q{=cX#KVUG>5|Xm~$;!E{VopA-RhJ(&-wWSy4#3Ymqzz3Qk*tii7Us z%7`>?5kkMy%1MNPNtnvm<1wV>q1C_Ard%?WYSKW%LNxTYCx^*JR71J*lzLjb4EO$O zr7k6mv`l$0sP>HutuDpOwb|_ge&1IUjW)l&59;nBL;MekPoyvQ4w^pIZXZmamgGD* z?mvAX{hh{*UleHvor}zUZ=F^5)xiV0!NzG3)zU_9@b^kj@od%5{fzLPMep-ybWX?g zNMjSIbYJMH=Ne|C%{`xR&m(sl9y%-7_GWjHC={yWRNfDRnu9|l>De3fEOUwTCb&JN zdzaxP1`XhbvSxs1PjK)P3x|RRgOlIGyumUuxh~J#^U-O3Ab!x`XAtUTEp`Kc6`K5t z^6eLr4KFM7>5Jk&Ju*7vma|#Cr;lic5UUR8IPOEs?6&U2O{Wc(neC8Wtf=%%7%F^u;N*4ycy6*hfi{;1ZV5wko$I>^HUf%bozh8Fl zBhI8LV%0hq_t%&Yx!PD$Q7+mcD|@ zE_Lf>TZ@opvcQ$=`TnGK+dIFJX6FM{2QntjnY2RH3w7z|OfCatJ<=W~b&j2?AFRuu z5nj#6e#qlm{{s2$FB?hLl1lP^I8B0rSNXk;&f&%W%wTys=kU-lvzek>$TKRgnqB2? zDWFntFtn>AZ1Z};(qE{zSi>S|R>b6fv_muaRi{SvJM;s3olTC#x`tk_)^t{_#ofs$ zkK=k59)TY#$|2WE{lSulO;iBh_yz%klY z;~IA#dk!VCTS}Fj!@T{(@`qnCPogRRF7yh;J|$cQK8g%xzTPd@+C2U4_Z{=!j)SfMSMi(R0Fsb=e$O zUv;iibq>Qq(1`A5i`i)vtb_D;RbVuFxVLpor|`kQ`FKdAd*pSUK+?BqSe7_y3`qWf z*OA_V-M~%@ON=gzOIP|kzh5lc52(~41T^v`o*9&mkBs{oO()H}P!WIlRh&?vbB9X; z7^UOXj`stYbVN&{!*=WN_ZBISt+L>Bob^Z$m^0kFqr?EAnbggVE?%72|)ZXkXUtG zB-n(*i z>iH+C8g8seU6>hdMS3XC6L@|LPkuEg2FIr`@qGmRnWYN&@+|00w@del(wqq)nncr* z%@{<`RlNnIj(CBEJgEbYiRR(W%ZbK@-R#+_gWe9IV7108hv;1bdk<`{G-ar!-Mm?w zL6|ElpGJkmt1jqk;Q87sNAc22jgch0xgj=ymlJWIm2T5ditGIc~t6v zYv_Y>DL09-{X4Un#xCN)ULi60s`X~yDiaNlx^iDTDTO<^e91fY>2i&OhjPuFgtP+7 z8C_J4{J?G`_%$ciEvs$usii3hyOx^)t!!hVda0tMqPLm!b$s_Bhc?T|`)0*H6H0Q4 z(A(R1@xCAVR%bsjLrb3u4_01zJy_#DkWWKbby7OsAB?PcW(8s2p)SKcrHDsz9zxZr zw+x$URV9pX?OW=(&@Nt&U;a|9@-;fR+0OW=qUpBe(7fXjUkP!#uh-CY=9zQ-ML;Hq z!O0^YE#hPL)D~Gc%6}J;KYPM!C7H?;AG*g1yBc_PsRe`V+*=uduU>Zx1Uv|AI5w+Y zRvYg%T6z$tZ>cd2Lfte>Gg6gL#maPhY0Rkas?OPU29nv(IUn!#j*NV6zcgOHR@K`E zEWM;7I3%6jZmSQ#w|R=gsA7fHK zlGFYU$ct*;A9G zDZFx<*x+V@3f*3KncpFML=SvdbWF%48Aq6&RHC;PKC1fKUo@3>wWsfGC^zU7TN~rf zr_i8lKbDngxv3c|U$t^MN8S8!px>FNPMnuB+%Jb&#Y+15ZPr@>y)>t???MpS0a27Q zg8+v#f#MD9=Fcpww-SXKv=JV`GR)2(z!vQ zw()`=_xeX*e6(BSL7k(HSt)O&`5Yr?f8!{_%s$&sQQsQ?@h0P!Q7*5vb)sn09PM74 zLA5>3ml&2&;uPh>dzN2IAM1f?L!BuU?MrUm!)mm+B3`J>+}&~XSC~) zNR6A*^h&4H87)uy5E2pPw|>oFw)OhP{<)`1=2UbXQ?uWFpR(G&&Hc@K1ap)@63~)-Z zmd9!e+TnRe9d}aNb%uhU4@#^ic@_c)JNFduIQp6tN}%gGjy@PM}P$``P(dG zKCkerXNwne+LZZeuGeunrLbK%+@K@WV$N; z`oslD^?+CF=%u94`%>SStm@stjX7$ECax)*3Xm*M^uv+gmqUn^^PQj4h(Cu6glrB% z!-sVAzD#{n!Y zcOnq%K9*~{aDWGGskwMONN2V=r4;BI=rb*F1F7l%<9*;_Q%XO_8Pz2P`tPOhkGl{? z-#th3gI3a*Z{cb}r`h6Vy z9GLZl=8Mn#a-=Vtu~xcMkKX`z=PQ7S(CfJn0QU{;R*JCGO_jR&c*XZ`Dyx5GA!KiW zYI+QS?ybes%*uJvyZ-jAz`gq|!d`r;#m7s9Qp2X~N&0*y zZ!AZHAYKa_=wUr;!gVfd$_{$TeheGJ!jc2pJ*PL`i|#i6Kt0vKCQ<#~+>qdfunUmr z_RR3ev+JS3Pa#xr3+pihbW5sm6ZjVeq)7YUz3MIlrk!EvxbD3Y(G7yf;{yC#^~H~k zbAz&}Elm~WZmx%^JWgiJRM@?z4QXVYhZ%Q)>c_Jz7Z;RT_4Xc;kU{C!J5U0=)T<-C zxJ3EAG=Mnp5NDQyL?e`5K_q~|>EWFSxVG8dJDneeO7_iNNCb;e&Ve&J0 znTe@lES+P>7MjPos& zz*szpv;Hm-n*B_YR3_S#`N&g&rV_l_K*6{|5YvUAIN3-MW=91f^@HTwSM@en!kEQc|=d2_hQ{d8pO;-fz!X@SP01)`FxgdM` zf~XU>>x-5ODPH0)lkrDpnxEP7KEzw_OXMrjv6yo{`o~2zAhTEi3ThVIy19zGtiPWX z#!Jb7R0?BClte&@_)kp$#lX+O48c_71fCulYt!Oee>kpR8^-JVQI6Jb}Lv1Zb2!3$h!|E)aZhwQX>iya@0+w*+n`(&i7tf7WjeG@d9k0Qf zF3r39j}<}^^(c@IB5C&?JS^Bd&Qg?nfqNgPfchJ;t$OjpvMD_>BKjOj0rsHFrfhz+ z$-gO=z1|Cw>+SNu-CWaKfU9`_oeMjN9FISS0`$oPFT=%aO7$sZ9?^GOdvF+0RQVY+ zF9w7AN#yK}`JzbGLabJT)TNs4glJK^)?ixj@#Al_wYsro?fa^h4oWaxL4r<|0rAEz z!NdYX3=4HP4qML~pXwbgyT%V@n{-T;V{b>6hN&|UqN+HeQ+lo%MpY;Nf@Un}J18mm zp>t%+$xhjUT)v7A)D?H~Ug*=TY5z*HKKVLW7@c}2?)|91nqjxngn&{1;<8k`2ATm! zngmW&L73&wVQ~eGtL{-TXrKUXLFa~c4N1-2uw$P~+;SD=T5Y~Dy-NfSY2kD`WQ?)H zrv6&1cv|}3W{je`3JPKt-;~-eFA}tDKNc4}(N(tcUm}+>pi}I`Wqt*^Gg0E5xVB<1 zugzmR<*Kzb0n8gTKZn@E6Qriv4%UL!Gr5ckS#>CI!ihdW(SopM;hr^Z@7m6=38dzZ zd)Q}IM*(mvH{5}xtY+nj_UW*&pVu}0)9s`Z<0+B1_cGpfAmtC$v_#relk4PHVY^AzQ&|6-=y)D*5V^J7UOJ+Esp2vk5&>bfiH z=-VKu){A1U7zq=)37#k-U--~JUyL#fXY6<(E7peb#&pNX<_^RQk#>f{n;bn?G7}j} z=b`(ICf7muO#6jOp?8#5C=5^Z=Vz=H<9W92rmGhsY&v-nYg1iy-iI%5VSs#qp$OIe zwf<3<=M?zdxp_Uz8OWLzJ%3U6i7bPVNi|6W%8Nc}A3It*AI~Vj@I{P@iW=0Ucb=M1 zOGf^7h0^2*?Bdbi0}y75$xMgnj<82Imd9Hi+v9cXRG2|lFY87s?_!6wUQeb5M+&al z!kIEx0kkzc)As;3UjiCfdsEY(_4D2ie$)lpeNFNsQs$4fX>N?NBj2%$U^eg}NHlq? z6{ng9;S-K_N+z|k7%&1=*sc}sP-=4;&#~b05165>;QmRMDR*?=b=QNQG?m-N)-=5F zXLWTETL~rYhqM=m!~g9 z4c`K~1Mx@$M&FPA^17c@?9~=VWLAG+e0Ap!cJdQJMcQ7uGS(X>c$YP5Nyiy*SftT( z?#wr%ctc`h!A^}9x-)%y zD(nNvt!9iqq`pZEXKm`aiLfGjp9w@ejHp(k;Lgp=uuKU`ER&!|zOV{j3OnH~HKhJv zKGzUE$@1vfTFCJ%0Db1~KB|I?aoGIj8hDtws&+>CG2?%L2L9T|O}#jOn#|*7+mrK9 zeYVzeLWxo3VLJOV5$4Jhb@Ors+Y_BH`wZHq%jDtvrDS`%zZwM9!*KzP`A@%F!(?M= zGUi=a3P3o;9u&RqYNVi|>5S58U4P;u#5&ol{@-mB0^Y5s5Ou3{yBZ!J-UP|s{7N0Z?6!p)>ALZ^Rdg;xpu2w=*uy*F&cMAAtD^}MSNZ2 z^Uf)l+N&vDcpRn7x_%yOH{Hvk?!>y6R=U-PU8d-2?uE$K(s7iQ8*u@+j1Q%nH7{!k zw8LHExb0@G%OE*KI%bwS!_3Zk8bzzVGgLle3A36RPCuX;2@%OHsgi z%TQ;B%496zf4_JS3!4>%aC1*js$x{bC8(A#tkr?<7R47EhcognHK50RUb>g(n$B;q zEyto)`}$XQj(zM;gL_<<`8QXG6&1zaond*%*aP`LyiW)8@8==`??PD`0FxquA`H=o zZFBA{9WlD}SBYmH>R4*T^Po2SHf8-gC3JmUuc=D6!@V%9`hVA#C!ff8&@0OEoj+~v7N7VD&30&f;C~(*NoL$};nLMmv3tHAGDoM~>OAvgCObhG zq#SR;;p;=`l9rZQ$BjMJ=Z$dnzND1(pMy-)Ck77nM%~=KKkgyMRPa-0(A3K{8YK`M zkU#Q-FIQlX)Q!4bv_hQ#Zmi;~dZlsbhoPp_?Q1j94f1jFCbC2}JzBW$yy->g^R2aq z!;feMv+N!!h0ScMm20qAO_gv=QTfI*s;mO2z6|KX!RbxmJE6O#+Mk+QGDsV`rp}3V z&9$w9v==X9dz{dgd}KVXD|d-CN_~PK*;|FzM9tly63(z7>q}r`qj|nf<0X(_!|XHU z>_QNBF>Al;u^v=yLhtT(b%Wuh+5MVM3fM$8AzbM)e8*8?rCBYv{BFJ?mxafbj-4`2 ze%OSJ%<4Z%fVL!ecwOz}*PhlPU4hU=Qjx~4ca-!YhNP*pM;x^95&}Lsft&k$VsN+L zf2hfbwf+RTJv`_uxBVD+@HWNwy$H`EH_C@^>xzT6$Ffdi$r3OB^*Z@}KZ?Io&iwf7 z-}v5~!FQPFF18!)hXyygaJTwRI%iw#^FMjve?)z!a~0^hV)ia(hd(RO8Vy^3ZjQBn z`-?X8%`8cXmKWI10c^tL=udtu)Fnpax&2}mnhLTvoA7)XqwEc#x?Jw@=bYCp*3al_ zJ&%VEfZIm0G&-zEOYFa444z>sKnW<>y8cR|`zK){;jQwXf)iYMb)vBp9)JAqCG!8> z@5!lmm~Afv51o51Xe;zf0d6ZzchOnr+YPZstFMm~%@$7q8=&7|^L0@shquKlAhWtw z#wXacRl6Ekjn}fjxm#q7`#Y`|;gY}AuBOd+S^iH#t-n$D9YRR=`PTXaQy3r7x^3M$&-}qnT~7O2{_BxhRCIR4sDG$dxYTrbZs| zd~x&<>kfWc0etYAc3ZBUMH2si1rgrCGX4O#TE>HyT}pA_h2uSSGyV3f2Uv-fo{`U< zUeU@%6Mt=srPC*Fj7~TtHA|yXtG1!*3@3~xid^Ts>rb6K-Fsif3{BM_EfG2ofK@$JZj{SeW<3GRP{0cr%Qt3<&u+0A)-2US`BG17S zgrX7sH_oE}{7nD?1>|7rO)k5CS)PAcurGn&2^`uCmH*Fg?UDK$6t8^NKK$2~?!T^< z$UTR@6mDGgh<|mg{g-!>N&{+kM9y&2e}=?=F3&%|c!B$uLU=b^@&CnJsj(EGaj{3q zJpZSKy@T~j6g&a1J_qB!zjf9PBlG{#0{GwkvhgbrKAc~L4*wg=gnz8FKkwfo1cO=P zec#*60REq#{pZ2)U)gs5-%i~qtj;0efy@NDm+_9PebRvK zhPMA#o)qvnXk50&W4+H09(1+0XZl`9-&{GB1I{Y1Z z(vOM+jcW>!-VRq9ba+}!SBxmSyG7kFUZ242IK76fEk^4?jfXP?=a~jh)f%Wx(MjLE zU|^7LIXCtHGm!j#h;Ka&hf#d8mwS@KZnE(4`;=$*KvNAikRhn`keJoFC0;2`)wGqn zIQo(kqL;w7{bbrtzm-|1QaOQD%a&0QCTGI{657d91zJWvME#~8SJawa+K+nMO$28W z8rE~N``|y7TL(ssfp}d~VES)-GR2i^K9aq*OCjK{kSBjDBXnV2;w`k}bPk#~2faC1 zN}y7RX>9eq_B=O7s*^%o)Bf_gg9;w4?!Y8Mel0~C1-9+ZH=2ynWm;;HFdeS5#Q>CQ zPs&7bRAe6|P0hg8sXZVDn_PX~pG6l=5DzB;iV^XD0P{ZjYopVVni1m02Uy9Qt=$-K z-o0=6K9TwBm>h&fhjADzkiJQF^5?cnllLab?iHYtv=0QdO#hl;=eU(;_~!;Ln{E6y z07_pR^_OK3YPln5wZZbM_IH6mM|41dOj2xqj^Fs$AybQZH%`P8|7c7?dRX-NdI|E3{AY~@dW$NsMmW+fdHH^kRT?EHIlqzMDNGox{jfYCcK=ND)w;2F<-dM7y_y z<2ogS-_y&2YWKI*~pJ&lD zb_-1h?IA`vPV20Brc>HZHGg&4HJTD6YtOvb^Mq0EEe@5lBzxv%S{E>!HIaMWwEoP6 z)Ad(jwZO`P(AS*G;}zo6ro1!&z<}hw;oVRprPY_13LdB<3Kf{WCEx1 zLJ*9eVxUB1ug?g9p--g0e5c%`WuUzqm;U05^NZ~n-S)Bf(2mo@kR*sCl|T5*ddWH@ zd%irTZj$B)=oB&@+ZfH7ZI7o#%7x6CACi&RLPV~Hq=yvP&*%6ji*(fVYXa?mV$t=0 zUXc{fwloi7pyC#2r1$++3+de$vGa^u{f|`^w_@7&#yi~|>vjh$FC)q7R~e5;gK@Jo`D*>2LC^JPByW4gJb&Ig^5{ zGW2l2&cRWsEUu~dVXS4GDym#+^N<${Bwp&AuDb_W3~yg`;>tA`H4FK8_7C#RC&hNk z9X1*54C~;=b~Rb(*2$*4pxpvs*fa(mpp$MgUGY7+I%l7lY4T)|llK`RgtdNv*EQN~ zZfml0xBE~q!fLVQ;DXHdfR>5dZc!Ga zYPvJJo`uEz+6@V$VqH(pKtC~3@-e+Om|E9;#zqT5FqOYT+@e~w=*`j`f)ghJTagt* zrR!k&$8C7SO@&)KM=gOBWj|PZ?g;f(hq=obm99_8g|<*%r##fW=@zI-Vlj<1I-^Pz z8c)>v0C{n6*bCJxNpX#!KKTYCzdB&zANym`3xvCw^=e;P-x&vtV&k;|4O-uv=(!;5 z)>zfja(0I&D##h6x5H)0E`UJkq4cB^X&*Vp8v*TwX)Z>o2yfR)M`nLK&X$ z)1(l=Bq9`BDiQ2e%nWAJZF|UQZa-R{I+()XYZ~fwz7&7BDf>qzx%62fqrAYi2eZ+F zG9hia4o*A&=NV!hXT|ALQKI57wK@0MjyBOiWsx+b>880F(zq7t)wH6DLdQVK+}k?|1T!r@&9@I!WXPfS+(%(h?kDN;TBR1xm}LI(?6v%-$^ z$2=rzVZdcQ4h%|#mab;?JmSH9*?r`*JyrT9Asma&6-S3e{{Q|MDwj#vtHxO}?1qk- z;j-x<4SVtzs$Rdn+vqYfhn43GkjP)PY+D#g%Koa<)+m+%!25QOq>&H~gt8x-XEN#y z^ZqTa_r)fiqgOZN0qb2*w7p|6it3na+96cyb3^#C)mTkE0WrTOltVjZv_p}n`Zwa= zl(N{AeE^#!QO`GajYad>>Bn>k0vt25b5HWVievpMn(ob>cn_W4KUs%HczhiA_L!5! z-yMzy>PIIg0#cX+lLa%PSs3zHhN;LkU`DKnk$?t}EymQ%hO&W0lvoh_wd z9GCFZR4$h{YZD+aL!SUhae5=FUQ+1By{XXeRVQ#~Z}JJn&vY#*-a`u1KH*A4cXP>Ep#qr^CEKU$%YHKd2r-+AJ z4KGmxYziu8i*McixT~a0rC615xJjwtcQUu7EIiBWe&-)R_!{u(0|M>9RgZC5FaWUz zKEEV!^~Y=rwP6p|5?M7E&kyNfuZ+gs2}F8d5ynTx<{A;x|gR zkW4VLd!8K{+ceaEvHW^05vZWK?xvU}K2edZ~SU!%_nK`c{i+Y^w&NBhZT}&FE zW6BYM3R0hHL(XlE3gUWYIx3CbiJS5L!>pZQ`ycb+YK$%znjBb_-=WxFO?Rk%TxP!8 z{=EHH(c_lK>XPY&co@&+xl)v6tpX>O6PPZ>~?N#!gmtoY>_f30c9eC+3C%RP%ko?Hi=hq0oowojQ{W z3nap?jae60twR*m_U__Py{pMqW7LWgB^BZD{u}+{WAae9tR1`|2&$=|Q}j|K#k_c< zfB*S?heJBUF}Lp78{RYWaaa3trNfLibrKY&`X{3SlGmy~-8X)>i#cu;=A#q#LlUIC zzT{1}2aJ&%=B|;GY^x6yze|IVu&uzq1Nn8+0sNiDzwkiIuHAiK0vdkX$Y9z8l!4bZ z9M!}GQ1KI25#rFmFXoqnDX?nkp6&8S@gUdtYUSFNdx`kSFhOI3NQC+^EjAzZP)BcT zN>jRv%SIYv?9@7MI?}SZztMmSn1H{&5ZObYVdq@_^>*j}ajUzq$X*jjaEv0i0Z2H{ zzlnpJNwXx0$Jc(iyE0RXl58hE{Kg?Yff7~5Y0}pR%$h0QbG%*7Sx;hmW6`0r2&|f2 z=FURSgBeR!YSl~omo3cp`!)h*6)_bM(eFs~wWGY*(H&ZuMksgY!MwSP>B14~CYiz| zeBFyW)^2DqWse>d)}92sv`-l&$Z-T;?#$9QespS=@LHO6-*+vk!%e@qPKWd- zaTwWfnx+bRaq}&mDHyD-XUcPg;k^4K;(hfQ>tICE2#EIk#n48wjV1HhC0T_upQIe^ z&QFz~Mzh7Ssq4JeFg8TLFOoh0qFx=?&K-YRGgxCto)WR0bI@k?+IyXD6_*3Fh8z#& z5I0Lx0hyj_p+I3+l~lOZawo6v&sU_y#}_A!sJB}|Gi+>+NM3~#vq7b0fCPn$#7xI% zp;7l!jC=1Bm}B!ZH}ly>GM()cnfHEmd+#rI<`@K`A50rXd-ma`w*L&mUR~3&L73FMYpICcpTQ(4{r?pT_e9 ztw$fntx{^C-{ywjHA+%?^Gcv^Wux#@ra!g!Rb5}m0L8N%sw#?!@M{c`(_nXW{Jr+y z<%qG-JQpiA-QT!%k9^NfR;Ii;ewA3maq1-ab`M-k}K4D_@W=_Uhr2 zATiv=Tvd+TT9^K7?qS^f^~C-c3oj1oMUiaEYw39Y{s)w-nD|$~r9xu2p(;*WSvc9F zq-^@hPW0T{s7!X<%WTC;_YuSPZp?e%_)Yo~I9jIcT6b!bKAYR7Om}xrew05RaT%la z8pe$hYg5UWv#H;0u*$KB%cEs`ev08OaI`fq*>ZDX_2Z~^ecyjv6Rr&a(_2pIB?{2> z3UMupAJ-!wIURHn^b%qyK>Mt*DD3!0iYsnJ7Y(s;t>?{}(+qdI*#Tiia5N=+Q`f^R z6Mk4AANg#;WN%T_@qBe>*|n4VVi5Kxl&-;J_`&GsWhQv&_lJ9+;3`V3?YI`tIi30? zOiipg!o_CpVT(-<+hhLSeefb<#xQOO60Yr>AY>Qk`H}jYj zzoP-D_=^3z6gU{AzEfX)YFhz&I<|a52PZ@0Qnxqt^fj=wVZE>&OwVSjl^SkHr5XJ& zc=>vyb|vBNTj~<5%@ZiE-d}+wFzj5-BeQ#b%Jt^jBZq^{)IWdS{Rs+MHVZ4!XjWA% z*RWy6RfHLI1WRGN1Z|@?SqWY3QEL>RdR+%c-V=Q{QMBG;OwNQJbbh$rA1COU($XUs zT_cjhZN)sL=a#N%Jmo5%3^mN*C?w-hf=ds2-9x!!n&}~he|zD*kpFgytQ!7meUT2R z-mD$wr@K0)cbx?K*;@9}v|if@zuBRZf(AA;U-dC@8vdeBH?AJ+$3V3uUI?=tZ}aR$ zJ=pmLNx+t&o`r(CX%pg^RF7~Sh(6oE1`-_4>Lr``&Mr06t|hBwtMAn-}LCThBA4&BcIgb ziTAumL+=50j%$(fk9#vG#|z_BW)x^A5GkSFKj3dAxBT{nJfOGl4?q^>iF%^_@rUOl zaw9y?&5OXxYhndxbcVPU|f$GZ#FNCAApDx{m64Y`_Yk4L#8Jd>AH_R)#Vny zhr#cxy9~ZedH;5rujpLI_Px^eGjjhTi{a97+F1%)c$toB6|O)?IpYv*l3{qv;un(7 z9NySuutyztMM4i z30%B@*fjwi9H$1{z7QPglYH$WW2}04y$ZEjyTojK6u`yBhBV#`>^g|3g9 zIL%J9Jq}A@ks?GyoFp5UrD889u(4fFlo5lIIdjEnRe?eLcFn6q>rxxLJ&HeaC8H@k z_jv0U0}gWm3Y2kg*2Wthe%BsY@c~&EjF3I|+w0R+YM*_I=~g`=-^)_zr&UzLis8gS z*UVR^9)OGH#0)4y+(X@VW+%M8L*8AXBxSgkX?-}QAAH2y666(q@QJ({Mx)%{Ae#ulhLJ9+y?6#lA1FaLcB%ZaksZ=p*CN54mJtrWx=)`QAdsOfl zzw;M?n_mP6C-C-%@4PW(Q%{l~-=FmgZP!pBIo&5|7XJQ|kPMHj9o4cfq=RPA;E?K` z%=nOF%mkP!@Z0;r=}TYqkn#T^tl#@-{J_MtA>{Dr$5YBldy7y09`l|qt2uFwg-?->9y}uqQCdR7idgPY6P7?+C*n^uoFS*(4e6{pgEVsee`z}7kf0qdE1RcYI-?I2E8 zsFfeZcO9u&?sK*jlBf4`pkU;O#OHyOt?7N-<<+QRxwoFw~Oj*xeKYV6Io z@qje|#G5#^t!(Q<;c|~`-@(16nN^n&o zZd^d z2Mn&XvT0cXbyLojL(v&8*+9!rCJW@)-SqWrjYm%`exL^85M^K;YL{V_ z>9as@%Ub{E373W;qNRCuss)8*%YlArKX7R<`PKK|()3VYf?U(NXTN??K%Rt=S9hwG zvcWXA8lc1Ia{N_~*(p3vn@?Tt_1-xYf_8IgU?5%t$;~$et`#C@pMb;E`}Ei5XkBqU z3--;5J%)3kzOJk-2FGMe@oK>-<|Ma5XKmM131Xq%@-qTIY{tNSu>rd`d2c(H0P+~g z^WbEEJ{+Y-wuei3vW0)iWgm|9h3&Q*pCB8bogsh7Z^g_@@fIlBdglX@2Fx@Yu|Y4E za|4Tyab{y-9>7FwzKCxM_5a(vFC> z`)Ef6+Ju$8A=Xr4$y{cti=SV=lO5(zvmBMU#ql7cH4)(k5?%xr;{~y#M!@N){o}(- zFI$!59F+T%C*2z(_FJAIxLqXf5@{iMy^+Xiz&p}+{rPIBg$(2)50~wey1BvyVx@-` zDzJAgJWsCIWDDg4n)4Lem132MEL8;>q=Vb`Mx9p)~3CH3M7TUo3n~$7N+(uiP z{XXZ0Iv#I~%>NqejEMu{atzEvZT@T?n+2)CIl1qBABIED!K2zA5DI8FgNQS*`GQvv%t>U9rKz|l)brGH`P?>| zG><56JV%@A_2{mfEImf+qJ?Go0T{eVfMUb3wcZSr_|l%M@uJdtA8von^|R&qB#aj* zqOmOiZU_!@N2Zr6-9(vA|F4fro=>)R67Wt7Wa6s^J*@u@eku-Yug!i5rg5IfnZHi_}_#3nIuYU4_B072CF_)dtS=b9Q40 zQJY*Fez?wqIf5bSup%!9|FCTx~%%^O{=8N7Qi7pn8Vj%8P-N|Vt!l&^?PL!2uISzxDz%}22Q|4h7hn;6M-6;wl=M4N$JzbtbP6A^trZ0m_ zz5Li(>I~Ecsz1V`fD~Rv#UTmg8?(mGKW}_4UZcDf`~so1sXQlvvvQUQ0v$@<-`_Bd zwz4=Zz*#zY4#rxZE8I=kpa(~)D&*&}4_P?byE?pX@^aWN3#Q9pvshIfd_!fOevSy#^;h+^ZF`toh+HQ!gDe6Y=akc=Nr>BPypzxV(rQe&IrF zR5!f40i`X#W!ag21US0yFE)Oh4npoA9*TvuAe)O7FnYuT4&?uyv12!jfo_5~qDCC2 zTKmUSAwd&tBd%+{EBAZKiqw)aXs*4KJnOTSdhS# z{Bxt~9kg6!g=f5Llh_Z*=rIG9-?FdbHnA6+ba#mKJT#%oI?9B#QsLKHXR%jy?{LRP zGhI4-!E@SclZ1U3o;UntaM&eT>4kgQ=xRIVsmkuap0%IZZCBCxf@pJb;cf4F^i;J4 z0UKq_0LM>TOdZK6cR`ExD?aJP%~sk`yIa8&c3gJzpP}<}QwT`} z9CY5naL8sbVaKfAJcH{?EQnzel*Gsk7NKp2@QW1~_v?Lsd!Dlcul?NFDMI3~XZ?;~ zS)|8eOvVmS=(0LK@od~IwZJUKW|;`?i;M1Gb=TU?Z0P(@4fmf~T%mAzq=ZzzYYb8j zv~qD@d<6~Fs@5Au<^|BG*c%etyh~Nonsyes-UHN(IOuWjBe~^X2cZk?+6Y)j=NMwx zpgQmnkC=rou+m^Ahu9yqaZUQZ$;~#Hi0Sihr0z({3ZO`HG9O<@H^V|FHv_P@NKHj4 zzZDQH;4K1B@heaA(dw{009HnCL1lX6MY~acx9)zk>xbFC;}i8tq{D@KNDExN^$U6N zM8jDh`sd%Oo5VMa&=!lZ2dz&ga7iWUkGTNFPRipiWW$%QYiuyiXL`xpRkd@IS$Jy8 z+Qx3>qTIZbN0WG(yWL!8 zJi*{ztscsi#jJgTWtUy=ay1FrvdXDh8_mf1vE@|yScl?L$=}==sHJgwSL7eUxo}W( zedfSrB#W9T@o;yP%`qc1@`880*ua&+4zu~S-)c9u<;6%pT*;eVX!RuctBpNjK`X5;@i6zQJa5Z8+ccZyVG*Zcz~b z8*xjZ^<_7NlU~j5Tz*1Pl9S1BXGTS58ahTJu;j(D_RoXKF`d4qd>^Ahhss+?P-Gs?AX7n^5P zp9{=rMkB-A@E0HYbHsi8P}*Ude|}i`79Zy!dw8ec!p-gsmqrYq>44YcmFYTHY%4s- zbldSsU1RAc&MeFtm*}kiIPBzcq%*w6YI~LRNEA05{afL?P($e?n%#uX`EEYQ4}yKV z56>x|@ci5EQ?E9Ujj5jVhN3iw1g@P?6?MG9ob6j(ex;Z2p=wM<;bl?%FHUFCwFjf` zp@X2)U2zFrpuThn5}2U#9zTGSR^gvq#7E&xXg0hn*8CiouI2dFzGlfde@XNKK9#l?iND(Pa2+#uJ(3)iSk58mqDYo%&yzG z(+1*I2G_GO7c=g=L}-5FcW=K}yAIc1Cb_JuA=@hPrbH`tV2h6B=@&BwG+~*1%k^Oh zDKwu{iVU|up~>04G_rH1kDb8$z$pc2y*46K#gB~p##MoF!3k|7u+@LR1ubw))J zZ&y)(t@XwRV>RGGPWn?Wx1o}XOXL11&+on)UizX2(MDvbGtLBX%SO>Du6ga&!y8+{ zfO5A{Pzt*8Fn~Ie5~)tJasAxNkH88pI-lK4$Ij7TYgMgvD%5aU@ddgc@DypQee2t_ z)2@PiN9L6^T*j6)Hea+FfPK}s zwqiTB?31jDcu21%!Qi^=!IL+^!@sp%3-*Jv`sPe+=z4o|$gWVyzKsC=<2ffN5?ps( z2Seg5Bxuu)2G&b#?>(dHM_<|$PfL=I>zJvZPnBzJPvB7qT^(1ou2`7W(W;W_$n4Ow zkYowi3dQv5kJ1^F)cWpQk7e5yUN4YPHfDbX(TsRQn~R8r1js&nx&Ol~e%^6LT7# z(nXz#vtCis^-@Mh3k370tj+DYyKlE=G&^Kyl7$9vvJSafO^fPQ{p$sWMC;;}QmZMs z6rR>w82=Hhwk0qy32cwkV!ahI)zrcT2`66Y_K?1u^ly}=Xl}k?cRG~Pm>X4|S=PKV z!It7UqigoSRzKUS`ZE@@jevUTIU&Q8?pXUD!lQko@{UOxvMFsJ6-=izH;ly*A(F>a znnT~4eEa!ex5tfLj{QcbBf8dFQk%X&p=NRi&oEh#aQG72cEh^29m|&SB@g}f%Xu$M(d%oi>?wb;Z`tOJ_{R4&PL~#DE=m4y_nv5p z%E)->W$i&N+GN@(VDM^BbQ{lIBBHxJkc6ATbf478uyk|OShYFibRpH6Z#A=Iv9e8Q zm+td-(S+vRDx$%O@()}I9OdxL+-`Ty(x;HJ7xGg-BIpI$tB7A$2~OV7mI4iI2%*KS z*D|6(wLaD~{jwa|x?+Q;st~o#0=Qh8TEx*`w$-NdJJp9K+gp9s(_u|5J-53qD?b5& zRyt>22HYXBW|pm?b5Q9Vvw>1AnM+9-XrRMaAGXDG;v?+`@q}-6n(XXZXmJd**Sk8- zW?BdyV_0A?y!pP^Va$Ge`MR_ve~xqJ8r&tbuaz!KKXK03QQ3#Zx0Z%CK5+74YabRQ zuBP0EnQHp}`0*Ti(pt7GkYd<NZf%R$leG`q zkq?37DD5!l2Omw(}JDdH7f9A(MvU9d4LZrJ%;d0{SfqU-ymeDd{C=ap;Xf)2aQ8L z_tTyA5N#&CGyQ7q`omFRq>~$~-Yk`USW>d;)6B~b)x8cLFH(8G1q^Qk)AQK?pfC<%|Kc5rb#IFX zchl7cIL)WESkG$nKZYAv0BzIYLoTx+g{7C`EIT-oc^HRxOK7cD;_-%d=W{Vam6@6<<>c@^sVzy;hk430I5XHE-li7?>|YoOk&Hu z6*ddwx>wtw)(UyneEdL5K%XELmy*9g2->9A;2e6ehRuJUKaf`-0T0V%y;6&^u*sm+ zY%q-$SAk`XlSIgzaM=kGEdNReJSYiB4y_bM#t ztg&jH-eLLIH@>)Isv%_inBO*??;4s)kVpV!q}BA^MqRD%!J#gOLmKPOREKG z@0x#Y$#gcH4$-@~-u`ok@nc@K_nMz)vsSgaq64p`a>vk>{htlR279Uv9yaBo-}&*v zZy-=_yzPr_VvA+|jBU@Bm+!ua09l{hwZW9$1JmRlzej@CL-Co`Zc9HOTr71%Uptv9 zr2Uc;eI{(1)?rq&Jp$xl zcoYf^N20BpVT65SY^_(;uFHEu>o5eE-pY-Z04>|si;Z^AkrUzbh=%!-ablBvtga-R`^7h1i41T#_w^OADb-XgHB?J?&uvS9>ebuZ?>YHf>M~%>^#S^XYm=cmE(&5)HP(rlZJ**E6aO3=3t6uafB4@O5L;0aV>Es3tK7sU;9z^^86!mlh= zV(q4LvJ_q*F{t@U*_6yDCd1HrN;P7C+yzWW8MVsp`P^uTJq~H_OY-K+;1rmkXtH5D zKJ$R6E}EMR$A;T}aiG#mWX*8n{jB?J_Nv=w?_Fq|%+!_E8lt+mKdyEJ&cWZ^ZF_y0 zPp_33&e@e%e4#=qmMfo`F0#x|IN$mv?g0^x%x1KK1ek) z91ZJ3>x>`8?NDm#r;DS_{&LoB$HrAz&sR4y1WqPwj0H_lY?z5 za_7Fc{G9;u_HnsDE1026g7~iMJtQvo;F6E9Gf5=rVc_f9l*O|m6(-F(dk&k~x(uZ} zS&N&wQa96|1fRkanR6j-yFF20+{Ttmsl{#g>iZ3IlHYDlf4sigM#a)=&m)q}R&}V{ zhnBOK>go;c{%9Bl+UH@TU+5z6D5lNSy*TR*Iv4GMpTn1RA7Jtpl#dLJ%5jT4LVQQBvopmukTw{4E=;h%N2MA1~%4&1HBeEPAf zY|-V;mxaZ`yVlr9b+9weCWkCm?v zXMQXiw+N+EI6Hj~{DS6ZH>(u1#1GeQmh@3_7;_V!(}fHimd_N!NV)RFc-Ip5=%-2f zET2B26jGWzRy}Uyi`)W;HCE+%C6nW=1B%JxXtvQ`J9_m8ggDkC}dXWtg6 z^on8@AO)}Ge993Z=$YWl^-k*}L+KFmStF?Cx2~{Wt?Orp9e77T)jdZsUyi)+{rZdc zFT1AuUpvRM#hEN#8=ff?sg-9K?DQkDmNr}QJiX?##hor1^nSnlG?VV>rxQSK*N=Oe zsFW`)>F@9VHfuh?(-|+tTxGM;%MIpdkw4sT5Mt^#sun;VwO+SRVBYr0|H@pO*|}V` zCd^#SGETkFGAWf3Imy#vNvD1%o=VKr^ZA+jBo-WI1GR1qOQe_Xj?R4H;7heLOFE98 zy0VL$pFdb+YL8;Oa2y)_g+1zSpqU}yVZIdLF_ac$z8l`sSS2z?PT(LST81p?nxt^1uRLjvSBWLtO6prUiAF@tADY5$>?_90I`M9Z8NEzNW}_ch(5+W zJN&yfE_6)`^D~~i%#p6OJ+t!fj7w;S*qam9YTg7W#2|87bwQMcs*3-}iF2N|( z;U+cBb4=S(ibb8hi&d8mc7dd90d(+RDzMB%{a=lXg+JV9` zHCK6X!z5|gf4NGeq%SBR!BFOX=JjKk?4e2mR?gNlTZGv_(us`l9DK|Bd6}3p>C?9j z`i!dezG_8;GxAjp#CkXADw^XyLutufs0h68Dr-Z#4g9Qn#fDB38J=3MXWry0a-OHV zq=x+Ixd>aIvKH9bx(V$2Oy*HMBX>Nls!IO&DMQ}YkPo(MYX01oTjOzL`79Q$*Iug` zljBw05PLCc`g!>*hmdf%AHvgnN1#!QA{g&>fj(rR!0=F9Z%E@p8QveF0C6(vo+I{g z6MSyh^)BN`>$qZYcsC-1PX0#zL-p@_i$r6V6GhKfJ8fIlI^$KI6#CK>>#aF3z@fA9 zs?d_5g(ZjFi)#vj3bh6Um%Ng$h|Ax7!Y-$)?lR|vh-Mo$pEs%s4xR+c(0WTUA3llo z*YHxmYYjpz^OJh-9iHgTGg!&c@M=|dz0JtP7bmaMzN+)x-L&9&K7O^;o| zDO8J8>cft)eTh3m(+--dgj#doad$q@qwyL^I+GxA9CuVphBznY{S)Tf^HkhD)i0L5 zmpG+B`do)vDh}MP&Y+bmgTD4Z`pvL5JjGnvhi0nsnVCf0MptDje#k%Edojb<(vVyn zYA=tj)rt+H4UyrqqobtE`JMa8ty72{5R>;ImYm?#p_e?Ap-tI=$Wn$ z@+>*yTR#$9Fq5d|6eiK^>Kl_AO>z0R`k- zVW5DW9j(4(Rk8BagcmP3g!C6mf)5G5wn$DH|?&^7p$Zb zmB!M#4t)Be{s$k0jY8n>P0A1&S=!a+zh~T=q`m_c!E%5=+z%UeU{Wslbd=hm?{?vK zg#<_KjNSK!Vf}8io#dTCl4v4?@azP2iF&R=Gq?W0 z9%=fgXQ}Nv&Fv$rcx`0T)D?ckfYK1?jR|o>^{WvdUuB;earxM zb8OZgrK{%-+2u%lq<8LvS}0W`hg8Sekg(lZ5f`_-OC3^}3GG;U?<6q(zu0^0psL&L zeOLtqL_$(pq&uZHp@4J<(jC&$-3`(r9UDYIx}@2Jv;xxI2%GM1-kax~=ltH^`JV4M z??3NfXNF;z4KsY=zSq6hwXW-0uvwubdmERiJ{7(LJcOv&LR;mu?K!U)ZU^<9D4wH> z(Y~Z%60$jpqnCszsT}uOqVjyV|FLQxmB0{+oi=Z{`18?;M;xZkG=gfZHfffoIlyR= z`GdtS^Wm@M+ArS2qpdp;o{pN6u^T4Am*ZF_%2QAbZ)c-U89o~Fz7SWo3grDfrEJc5Txf}ZO4|0 zqz9cU0!}cns3Fxh?7!0~Lk{H&$kcRmeyqb)!n?2fwuys<1@7md$;K03ld1Ycr>ZQ8 z_EUts3ZCc*vRrWPuDo^o$%yL&aY=VGMc5sB;=YQ0D|Ex#WcQJ!)K<0mm4Y+Vx}9Av z!j4623BWYPwagdTl?*JayHeXcJ)4!5|&X8Yiz!SR!IvwG;K+2td zH0h@JVM8L1bYn(7<t&|waaCEYQsPxH8HA4$}edz`+W(hkBKat&xkA3$8i+6w%I z*jOkKKzi_9gV0xBLRsCJNE?P%$T{$j3>zBMB|AZT2h zd}ICF<@*{TwVTPiu8tnW*+Adcl zeMv?YH{a2Q^F$@uny|yoUQyMoFWm-`Zh4r>zaV5Aqs3NdIG;3Y%CNWg!WiSZb^YKL zPG3tP(9H*?5A@?rJy*Z=GLAt}{U_0PXB6!QT<)*ON(xAQzO+29v?wYVv#tyh0}k$SzL3`DKk>paf?B|T>ME$#z3NX{V?8V zqt7XH=vSZJGL*f$Z{wyO5i*xRDlY?bwu)#d(yR*Was1{Xzv+M845@Yat6VB{IQeVM zb(62M)`WM@c#cmyGqzwTJPWG)T`#j5_0ULn8HDbdrhOGii? zkJWv1Hv~$EUHu1=wYXPF71K;jc$(H=mll7W+0Q1xBzI^GGSf#4dd%Lf<5NA_+g$$0 zev{vx?5Ee~I`Bj#wBGO|N1r28y~tcg;n9kM(uTi|>jmD%br5Ky2KgGDH}!l7wgLfi zK=MA~gA=oOb*PE61adwe!+ab}Bg#XZb$be1}lr=M1clq3EE`oOR&MFLR;u0haZ%8Pq}!tQ~L+<-J8mRVZ?M(D%=k=;`!>rE9c-;pYZ1EI_W%W-@|S zT)8WnmT)*%VRiqdk^*E?wrc8Oe`M8$s{_$_FIHjgU!jilB-QCtVZ-XH7|vrArXPwM z^6Dyae7YB7rm8Ak({{hCdv`6$7Jo&Np2Qxv6mpg6I+5u^roGxtsrE~-3PpYI63*eQ z=ILLQdZ^C4jTd41s!|SD69zp33o33!EP1c4>oHDBIWb*!CM?#vSL0h6IK)@;(=`SZ z%k;gI=Zl<0k_%x%8sClm`;*@|uRs)@7uv_tDzN14^v>tIxNK1B4wkkW;<0yQ9_q+# z*peE!!1*>!O`CP(W)Awu@tSs66Ol@$<8+q9Gaz_h%NWFOtfEOFH0oEg>%K6s^mkv8 zKI*jt@w0rmKCp*zcj&F1i>gU)#3;=BO&O^Q)Sa|X*n7Ua( zH$h?70H1@W>nZc};k~q=bWfA$(fQ=zF1`InPS+mCTZQwV4-}d=3xElK$j$WlEW3lM zalz1rg=r?h{~+7>JjNlzE!XtAwqJht`;(bA6R6&{d)+G$c6@kYGbVql#40?qv*xWK zc==5@|7z8>fD2L>dq%=35Fbtxk3$&5Dyy_} zjRYBXY@?3qJX376U0vr6)mQE4BoV3ThZoPgLw?KtO2KBcO$0zy(^p@o5h z&-tj5))8?{dWM-;vY7t6{;SO0<&hgUw{C`uU0y4BS_Vh)_K26A96a?8}B0R z@^%iAYhty2=fe+}d@2S9`jg2Fd}QCLrH|$re6F9p#>2dROmz~A{IqDr59w(`&wEhB zEBzwCWOB0?CoL;z@|ktZE3NN~rB!2Fq}^Omwcv1FMN`NwsNHl)_f?TS@AJpqL2+Jfw)sc?ImmyU=cUo3f8KW;x+5*Y7qLw-8J;_1fM&zh+gK*@Uha7!G(1?SyW= z_o@jS4b1aigIxX;VJ{J`^|U8k@HAb-?s~m%=%TFJAqA-H@&?bD7%D8`j zng3S&a{+Xl1n+%L1!V#NM>Fm7_fdclp$&9_jPNjT`WvFlifgrtMyJ;n+4@DySv5o#!O7T0@*#z8v(7 zLTL-@1d<5eoc-o8>xkHd0l1TJeOc-ynKpw{;>_IMJE20v5jBg$4I46)!`)w7rO^3$ zP>k{zOLX+ls4YS1wH4muGK8JIe~53N@9jTYcYkMOmEmP=1S--ODg*I}nh2=_9U?3|!i~ zlM|3m5`8Y2-k6*S^x4zA;q0Q%K2)1R} z!3u!ENIV8*IvZPqLt!$+(WNG;YI?=~RwG_#XFB;(i==d5!@+H{hDCXaYwu|~!9#W} zmgrfSOYEUo{ghpyT?Pyuv1H{EVU!D6lci)B(IFxX3ME^h)&;mc36D!xTFDRs&={`- z&?gmeVEK{LrRe|@&(EBu{exHMXlB6o4x{|`Xt-PXiz|EgM+yXE02Z{!`?wu&eRSTP zlJV(|sy3(W5!sq3&pF>;0-(amuRG9vJ;R4gvO+TE zdCXJLm{Ot+noh%|5J5D*0n)^`i7Yzi>)+tP8LF7z;eTBp{`wRiIk`JkmAZ1p9Rez% zl6@(FFy)&Mv(h_!m5qC$r5Z-YTyLEE}R_$(Ap|27PpN|LU-k4(clp;Vo|+w+}fgBgW!U)p4g z@Cv(o?^7Z^`^tAq`uUA0EtJgKYziamQjdqhAo77Jr%kh?HS%|Yo%o<5Ejq%flP|d_ z0@R}q*H6HNFqLaxkbt%N{Zjg6n`0OgA z3*>N_4-G`Dzs+}#oN`(kk(d5T$YzKDeyPp-H| zWU%=?L??Rg;}J~DO$G?$QeN(-+}iGk#9RV)2e!*Uo?Lv9dOImG1kF1M@_F0neoSRu z3JI$gZRTx6Tj|ewKlv>N93ed0`MKZ-N%ZlV=^}xg&}K#FZ5_d|)?(E?af`@JbArBkgq@zn!~lgdXkPu**M9fo zbSS;&HHb2F(Rr~(ot}wf;oggn1`}s0TuRsasR{af-pvP+P6G@yj`XD88UpnAFACI} zg`m84pM)#Cy!Kwb2lqrxEuF;H4*mw2%w}u8S&wb%CGc5Du)^^mVb=M<$kO4p0%&Z&J1C)Z@MY%V1A?N%@G0!q2?nss@AoFD9-`plw@39v|Ru7@s#UzHlzx$Wg2xy~ zfb(8B{JuH@`(krTK7^u!o8}&r|6<(GKZ%W)-!Uoa9y(Xrw`ZVRDz6N4{`j(e<|hxy z&E+#yuYqqlGQFMh^AN`^S)ja0-C97$3V5eb`kmJANbc6gynDnvm_UFY5L4(k#%rQ+ zNy=Xz;_D3pMd!P=AFP*La+f4V0v#C-okx_miRF^uKb!VT zP;zy3?)_CgGhhw#O|(6dLvJQ|0rd#z#|8)@iKRGAZ&`F3UNSdZFb7IsKBk=+q+_62 z2TB}SaQL_+y<{UX#}rsIKjY1S>q3+RLNHYn5Imt2{v99y_$2w4^6V6}Ib&k9^vfA`hL8L#&dzG4fu7|WAy zzP<@bTHDRj;uEN`zQ#M=8SQD=8p@FwsZg__XIh8~tXF^YOw}ZOUfMJS)x@~}6cBsH zOK-!Q$obQv$OJ89<7{U>QAs`bX3WV4{Dl@8_=Ik=Kh3%LkNIMj8Dl?_c!msVgH~`x z(b+UTIN;pD4c7^@Ur+){Rd%;j$5X9`aL(m zONfU($t|gGZe3Go(k0KGx|J1uZiyn0a(Pm*%1$?@6I~5;oA2<^iE1lImF4`axJ;QL znRMJ9mJ4yiV?i)XQ8xvQy$zkJ-qdf;|8&NTPJGg+z3^S6#d#YNHvgJQQ8kVAY@xw8 zldI;J=YHU2ek|>~O9u3t>(!q&Z*J!%4?%vK?-8vl!rL^L)C;dP!9#ONsWD@qC0e~Y zfdNd-HXNx$`{wMFYUIUF=dnJU+3Ay!;cr>FsngN-5kgS>*6sM7eA%jvGMoIy7pk)^ zPYV?(=-)nZQ%O>F(L1J%pJ!s)n5rT!)~?bdd@?>cQ@YHbfwV91v%{a%8cp5xSGb{l z=*2hXpP#6l-Me?4w&--infCNmPacrtU*+`x2qAZ?EMun%zfGJx>31_Wby!lB$;$Ms>w&d2Lw z^Ccg*YIu2%TF|27+uhz`gd_FNootWmjokVScB1XPz zWQ+dSMhQX_@3KloNd(^IO&A8sOmP+yZvY-)Ls7pOLa}04I%eldm_Jc z@6f^)|IN3uS325#F7M|lg6^64{ngAg_i8`>K4{cM*B3(mLEd9ZKeoZSwc5U|kb_mP z={e#lPe;4#18Eu>f~_51quX>r4;r`qK#I~aV+u9(@mKEk>b!1edr#`7;%TXm!)a$@ z!;kj+-YBr@203jko40Hxq#ac^eyMgH7420W`ohJrQ}ulYYtL2hS03eA@w7&xhBUKt8*YaQ%!Wu_q~;xH z-^HVe4B)*(OqD$W#-C|K6)x>*Y?$=;n(O-eU|-I8K5=Pahi!;RTCImB27|U=BmK21 ztD@`Cd8TN{aw{LcE(CVQ^UF)*Fv`kw$H_r2B3GoM@yNO8JIuu`t$o|TojrGenfd ziU1+DYTID!Jzw_T&9u$sv{IGDv=J}jeJoq4d)qlO0%hRGdw+eoilV$MI}Cm&W+rB| z({Mfl;(tCyF`x`*K0&p???IE zcoae0^x*F+LD6~unwreJZ!jZOaLVM}g|Mnj`{xd16M)lQT}~g}2xaI!u=)S-)tYv1 zbFwdvuTU8cxFCvXeshgc4q9S(&Zt`SS+#gtT1DOGN~mj{&$Q&qSLcipT$#Fa zpBrBhOOD1N{z008kWpy=dMkL|Sk8z8y1}HDfrx)U`vt!HD9!?=r{Z32QfX*yA$F;( zkN}B89#`bQuXa!20Wjpq(x~vq*no3tYgU@Q0<$8Yth#o@n%3>r33$rS0S8pGo2wxE z#QWspHKA}CRD+5fJR1_ zK&KH_qT6WFUaH^nfXi~_ah+usTRQ@Z@4dgizH7<&_M<;#x5t%B=1_TLi~GT4&P{^M zsm!$wsfj`^m5MtOs902O| zm!a4+STF}Alot8U8oYijsPz%8D9@$ald;Z7;_n*FF-n~HzUeAYrU(-Kgz<>H~AO|8x8BNsQ|Gc<= z|Kz(U*ix=27#V*5>H7Y;BL4BKm+Cma`m{x%lmdUhg#Z1b_dec3gpm2Snf^0U{imz^ z=db?zXiE`wvKkJOlgE1SJSLv$JOE4&U@9u`_F5%&mR*LpbUe z#>@vHuIZFS$p25vJJ1qr1hdIg5ac$-8X?TuwMn3S6ydR%%l`iTW!O{p=PxWzsE;?N z)f~2AU1$U>1HkvyY_0*x@#4swLAQYyB)p?8_rKHradR|3yVug!Jo!Te%3<6y2zbM0 z1E2jyY6n*xZ*RN`Gzz&%`5o2kry4D3sU`Qy6*zA~$h(Fq-V}f1g*6i39>Wqpm|g0pY`RwKe;rA0J{U&D%dH-l4-&%{G`Fk;LO=haI8|u`g5D zjc6jth5dlB97AIuVC%hGME*ngIwJ?MODuh^&LPA;)WH$(r=@|mI5%_twkE*jaOD@5 z!x$5T;uosXJYD7y>Fj|JQ*-nAXL#0&lE%xR_IfB#n&?K24dHodiNQ0MVPW{oo+>@>MbKinCMlD~0LiDS( z4(yDrYVXmX0`_+t@ZwP{Kn<78q63rh23S@WP`tRc4i(zWakcaTwtJpoPPZcf;{jMK zhzQYzvj{!>-$UPDv3nkC57N??BSWx$aZDV?qQig3!e<69f0+2In-Q_r&F3qY7Gst9 z#k(T*N54U_X!n~}(3?aOC{4aZ3tdR2j~X58Ncuy2fElN8O!Y*$@Mm0lr8mnzVu~Be zxt1I}OSGGw*R_WesHIWH#Q{*&a6JLN26$XEYgT82_J<754vKTS0D88AY5y>w`HQ9C z40Vyye!e?J(b4e#7?n>@&w}(<_ZHi@Tz{Na+RWd#)0O|o_FNEd|+ z$!~-&tVcfF0q$*S9OVEx1aT)*QYgt!#gAP2-+4sjv;^DG z(MFoCou4slHO){I0mp5no2&EX$=C3nco+IN90G0sN_qa%F1p)hzSMrUtP^)&$i{qg zv!pg6gLW+z{8wrs$jHd7<{E-9NOf7y%HsbIDgIQNl*kpaK7ulVH~@Wc)jO2HWK0$ zL!i9N@+uGxW!|6nT3U$LDC2~W-@90uz7P5URLCwDJ-+wn6=PY6HpM$R3lle|ijl$V z2m=0Kz<*U4zo3)c~+T?5ol$Bhws^K>dH zZ0Q81 zUS4e0w&3W`ido_^MhYtBg06cn)1(gbaf6kMFX$u5UUVC{bb|^kdrvf|(dbfDI*qs7 z-D#pc78uEc+a?n9I#7Nj#gVPRIzxlon%l#*5<+eU@Zkf9>UOo|>WO|qAINycfgCNi zHT5we$3Tj(8sXwzTek1L4Ms#>Pp=De;}kX_NpvXJ+3EZdA!oi;&1Z)Y5v2}Qscet_ zxyE*p@<`$v`-#`>77M_oSh}IGz^Dsjq)NtA@Tow+|F(Yq{=D|pvzbTEu4+=CKFaAX z0}`Y=gjIt^i(m?u`2rQ#7f~ibW+QX`p?(1m2Ni@PbHPmBfh`SAl0agH@1R9-*LYcG zMElYm&zM_8f(QW;LJCzURroMNaHG5H(b*GtkJ?A;c?>1K8ly{miX*8nK=KJ}PJ!H$ z_+b~Y94AsioU>`Y5f6_GX&cX<)tdCXL zn!(C`3GY@5)Tez)`1B7)j;{w|Yq5T=GqfJqiki5e&OQYSP3s;`$EQez$UVu7rM1Ez z-+4nxUK+Qbb6miS^;bd2Q(lfWRC)uvMjv!jkHl!`6s<75+)7w<#V~7zk4%_ zG%EN5J6Mgo6S71@{GB(hs;tp-S;`&4{|*TEOuDx^a^f?Zvs)C z_~%EyJ*oZU@(YxGrv1qIFAeV$Vm^W8@Yff|8gK}S zG$|xUIx&+{B1$QqA>RC|c42jt7jb2|0}A35B1GPw0>7+C2NqQycIa>?8;0)J@#ZV# z*q^nR=&ypBP(+g2`8Ey0+Pq4tydAiZ@7-A6;(VVE(U;(liBS#e-6J0`Xfr=rW9KMG zc<3nuM0>5qt)qmjTOU-S$~V}r55&t358yJ=P#RLChYuh5iEC{P3f4|>3No4YXEIM1 z+`1+9|E87+?eB0~g}QuL>Kjk^MNIE@uza9#UBNhEa5`OMlUskhF$|E>(N$bN`*#dF z1yrN?Z$kiB84TrrNGR~9#lDKznxmilx<|DVMD65_Cv720Ao^-!FF@%vD&QZjzlcYQ zn965-vS=BRm_q>?AgJd#np7#M|K;^gHwzn_Hpz(mq2M}(Ba$n!Q)be@sbe5n~vJn0y1GLjD07GvNrN`UOSPk2OF<|(9v-(L=T%CCV_xX z=Kw{)&LiiMt`JOeKr=8McuwI8^EgfCNB};>FeQ)7ujmASyi(Jk7t1JmXj+f#HMu!`x@V4xekk}wX`ZI)cg!gBm-or9&1$%}r% zAX9$6Nw4R#d)Q&fR3+GdqM^)=Eq!x>Fgl}F3S>d1LP0T3HStP4X<()G7>st zp1;PnnCC{ECe3bYA^l_0_`=VYenO-1LcwB$cTF1#I*^0G$D97BEJyEH)oZ~-4-3jj zey0sd9exPl$cvY?rQ@GxCs8!0*Xpytf5xg|&W%+7F_J?1L#3%o!gT-=D;-bWczGH?xjg{3lHykFRBbT_yU?2xO>PSXX4)_j^}v%wH? zI?I_q=Fl_Guvn153Yz(Pg%pPJ!U*%767YkQ23;$clr7fg_tHITMcJUGJKTxBNpH}K zh+*A`x8=A#6=@Py@%{`XK5W_#Z}C0@6U0H!@iFqJx_Go*bg zOn!+lCa`k04v>QF6^62p1evJ#q#~08QWIc_5jvH&bJ=UNadw5w9;upT8heW@yN1 z-rmd)eU01%CjIY%8^P3<4nbO+}(hSSzakT%q*(zr(zly%itV)KLTFgJCSj@1LP zD3WBrTY3f3Ts7S#j6Xp-`p>bfksw7DMat{n91oVIlBw{8WRuwDUM1OYjxiVLD}DSxsxxen6aN|SBP6b@se##3EcV4mK56*W5Sgzv+I zqBQmCTBR+lXX2A#VoN{=lU=K?hnK~7~6AI!%8nrU4xPTaJIOHqXufVV6098JA-_$ zkf=(7Hu2;j`cJf3UtWhR1xFCB53~d*eQ1F=GsLk

Mg!RWCQ>dv^>HHM8w{C!it6 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

%|p(6o0fiO@zk~^KyKveOs?wFLr`X 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 literal 0 HcmV?d00001 diff --git a/session_string_generator.py b/session_string_generator.py new file mode 100755 index 0000000..e63958c --- /dev/null +++ b/session_string_generator.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +""" +Telegram Session String Generator + +This script generates a session string that can be used for Telegram authentication +with the Telegram MCP server. The session string allows for portable authentication +without storing session files. + +Usage: + python session_string_generator.py + +Requirements: + - telethon + - python-dotenv +""" + +import os +from telethon.sync import TelegramClient +from telethon.sessions import StringSession +from dotenv import load_dotenv +import sys + +# Load environment variables from .env file +load_dotenv() + +API_ID = os.getenv("TELEGRAM_API_ID") +API_HASH = os.getenv("TELEGRAM_API_HASH") + +if not API_ID or not API_HASH: + print("Error: TELEGRAM_API_ID and TELEGRAM_API_HASH must be set in .env file") + print("Create an .env file with your credentials from https://my.telegram.org/apps") + sys.exit(1) + +# Convert API_ID to integer +try: + API_ID = int(API_ID) +except ValueError: + print("Error: TELEGRAM_API_ID must be an integer") + sys.exit(1) + +print("\n----- Telegram Session String Generator -----\n") +print("This script will generate a session string for your Telegram account.") +print("You will be asked to enter your phone number and the verification code sent to your Telegram app.") +print("The generated session string can be added to your .env file.") +print("\nYour credentials will NOT be stored on any server and are only used for local authentication.\n") + +try: + # Connect to Telegram and generate the session string + with TelegramClient(StringSession(), API_ID, API_HASH) as client: + # The client.session.save() function from StringSession returns the session string + session_string = StringSession.save(client.session) + + print("\nAuthentication successful!") + print("\n----- Your Session String -----") + print(f"\n{session_string}\n") + print("Add this to your .env file as:") + print(f"TELEGRAM_SESSION_STRING={session_string}") + print("\nIMPORTANT: Keep this string private and never share it with anyone!") + + # Optional: auto-update the .env file + choice = input("\nWould you like to automatically update your .env file with this session string? (y/N): ") + if choice.lower() == 'y': + try: + # Read the current .env file + with open('.env', 'r') as file: + env_contents = file.readlines() + + # Update or add the SESSION_STRING line + session_string_line_found = False + for i, line in enumerate(env_contents): + if line.startswith('TELEGRAM_SESSION_STRING='): + env_contents[i] = f"TELEGRAM_SESSION_STRING={session_string}\n" + session_string_line_found = True + break + + if not session_string_line_found: + env_contents.append(f"TELEGRAM_SESSION_STRING={session_string}\n") + + # Write back to the .env file + with open('.env', 'w') as file: + file.writelines(env_contents) + + print("\n.env file updated successfully!") + except Exception as e: + print(f"\nError updating .env file: {e}") + print("Please manually add the session string to your .env file.") + +except Exception as e: + print(f"\nError: {e}") + print("Failed to generate session string. Please try again.") + sys.exit(1) \ No newline at end of file diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..febcde1 --- /dev/null +++ b/uv.lock @@ -0,0 +1,490 @@ +version = 1 +revision = 1 +requires-python = ">=3.10" + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, +] + +[[package]] +name = "certifi" +version = "2025.1.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "dotenv" +version = "0.9.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dotenv" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/b7/545d2c10c1fc15e48653c91efde329a790f2eecfbbf2bd16003b5db2bab0/dotenv-0.9.9-py2.py3-none-any.whl", hash = "sha256:29cf74a087b31dafdb5a446b6d7e11cbce8ed2741540e2339c69fbef92c94ce9", size = 1892 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "h11" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/41/d7d0a89eb493922c37d343b607bc1b5da7f5be7e383740b4753ad8943e90/httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", size = 85196 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/f5/72347bc88306acb359581ac4d52f23c0ef445b57157adedb9aee0cd689d2/httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd", size = 78551 }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, +] + +[[package]] +name = "httpx-sse" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, +] + +[[package]] +name = "mcp" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "httpx" }, + { name = "httpx-sse" }, + { name = "pydantic" }, + { name = "pydantic-settings" }, + { name = "sse-starlette" }, + { name = "starlette" }, + { name = "uvicorn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/d2/f587cb965a56e992634bebc8611c5b579af912b74e04eb9164bd49527d21/mcp-1.6.0.tar.gz", hash = "sha256:d9324876de2c5637369f43161cd71eebfd803df5a95e46225cab8d280e366723", size = 200031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/30/20a7f33b0b884a9d14dd3aa94ff1ac9da1479fe2ad66dd9e2736075d2506/mcp-1.6.0-py3-none-any.whl", hash = "sha256:7bd24c6ea042dbec44c754f100984d186620d8b841ec30f1b19eda9b93a634d0", size = 76077 }, +] + +[package.optional-dependencies] +cli = [ + { name = "python-dotenv" }, + { name = "typer" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, +] + +[[package]] +name = "pyaes" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/66/2c17bae31c906613795711fc78045c285048168919ace2220daa372c7d72/pyaes-1.6.1.tar.gz", hash = "sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f", size = 28536 } + +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135 }, +] + +[[package]] +name = "pydantic" +version = "2.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/93/a3/698b87a4d4d303d7c5f62ea5fbf7a79cab236ccfbd0a17847b7f77f8163e/pydantic-2.11.1.tar.gz", hash = "sha256:442557d2910e75c991c39f4b4ab18963d57b9b55122c8b2a9cd176d8c29ce968", size = 782817 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/12/f9221a949f2419e2e23847303c002476c26fbcfd62dc7f3d25d0bec5ca99/pydantic-2.11.1-py3-none-any.whl", hash = "sha256:5b6c415eee9f8123a14d859be0c84363fec6b1feb6b688d6435801230b56e0b8", size = 442648 }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/05/91ce14dfd5a3a99555fce436318cc0fd1f08c4daa32b3248ad63669ea8b4/pydantic_core-2.33.0.tar.gz", hash = "sha256:40eb8af662ba409c3cbf4a8150ad32ae73514cd7cb1f1a2113af39763dd616b3", size = 434080 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/43/0649ad07e66b36a3fb21442b425bd0348ac162c5e686b36471f363201535/pydantic_core-2.33.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71dffba8fe9ddff628c68f3abd845e91b028361d43c5f8e7b3f8b91d7d85413e", size = 2042968 }, + { url = "https://files.pythonhosted.org/packages/a0/a6/975fea4774a459e495cb4be288efd8b041ac756a0a763f0b976d0861334b/pydantic_core-2.33.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:abaeec1be6ed535a5d7ffc2e6c390083c425832b20efd621562fbb5bff6dc518", size = 1860347 }, + { url = "https://files.pythonhosted.org/packages/aa/49/7858dadad305101a077ec4d0c606b6425a2b134ea8d858458a6d287fd871/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759871f00e26ad3709efc773ac37b4d571de065f9dfb1778012908bcc36b3a73", size = 1910060 }, + { url = "https://files.pythonhosted.org/packages/8d/4f/6522527911d9c5fe6d76b084d8b388d5c84b09d113247b39f91937500b34/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dcfebee69cd5e1c0b76a17e17e347c84b00acebb8dd8edb22d4a03e88e82a207", size = 1997129 }, + { url = "https://files.pythonhosted.org/packages/75/d0/06f396da053e3d73001ea4787e56b4d7132a87c0b5e2e15a041e808c35cd/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b1262b912435a501fa04cd213720609e2cefa723a07c92017d18693e69bf00b", size = 2140389 }, + { url = "https://files.pythonhosted.org/packages/f5/6b/b9ff5b69cd4ef007cf665463f3be2e481dc7eb26c4a55b2f57a94308c31a/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4726f1f3f42d6a25678c67da3f0b10f148f5655813c5aca54b0d1742ba821b8f", size = 2754237 }, + { url = "https://files.pythonhosted.org/packages/53/80/b4879de375cdf3718d05fcb60c9aa1f119d28e261dafa51b6a69c78f7178/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e790954b5093dff1e3a9a2523fddc4e79722d6f07993b4cd5547825c3cbf97b5", size = 2007433 }, + { url = "https://files.pythonhosted.org/packages/46/24/54054713dc0af98a94eab37e0f4294dfd5cd8f70b2ca9dcdccd15709fd7e/pydantic_core-2.33.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34e7fb3abe375b5c4e64fab75733d605dda0f59827752debc99c17cb2d5f3276", size = 2123980 }, + { url = "https://files.pythonhosted.org/packages/3a/4c/257c1cb89e14cfa6e95ebcb91b308eb1dd2b348340ff76a6e6fcfa9969e1/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ecb158fb9b9091b515213bed3061eb7deb1d3b4e02327c27a0ea714ff46b0760", size = 2087433 }, + { url = "https://files.pythonhosted.org/packages/0c/62/927df8a39ad78ef7b82c5446e01dec9bb0043e1ad71d8f426062f5f014db/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:4d9149e7528af8bbd76cc055967e6e04617dcb2a2afdaa3dea899406c5521faa", size = 2260242 }, + { url = "https://files.pythonhosted.org/packages/74/f2/389414f7c77a100954e84d6f52a82bd1788ae69db72364376d8a73b38765/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e81a295adccf73477220e15ff79235ca9dcbcee4be459eb9d4ce9a2763b8386c", size = 2258227 }, + { url = "https://files.pythonhosted.org/packages/53/99/94516313e15d906a1264bb40faf24a01a4af4e2ca8a7c10dd173b6513c5a/pydantic_core-2.33.0-cp310-cp310-win32.whl", hash = "sha256:f22dab23cdbce2005f26a8f0c71698457861f97fc6318c75814a50c75e87d025", size = 1925523 }, + { url = "https://files.pythonhosted.org/packages/7d/67/cc789611c6035a0b71305a1ec6ba196256ced76eba8375f316f840a70456/pydantic_core-2.33.0-cp310-cp310-win_amd64.whl", hash = "sha256:9cb2390355ba084c1ad49485d18449b4242da344dea3e0fe10babd1f0db7dcfc", size = 1951872 }, + { url = "https://files.pythonhosted.org/packages/f0/93/9e97af2619b4026596487a79133e425c7d3c374f0a7f100f3d76bcdf9c83/pydantic_core-2.33.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a608a75846804271cf9c83e40bbb4dab2ac614d33c6fd5b0c6187f53f5c593ef", size = 2042784 }, + { url = "https://files.pythonhosted.org/packages/42/b4/0bba8412fd242729feeb80e7152e24f0e1a1c19f4121ca3d4a307f4e6222/pydantic_core-2.33.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e1c69aa459f5609dec2fa0652d495353accf3eda5bdb18782bc5a2ae45c9273a", size = 1858179 }, + { url = "https://files.pythonhosted.org/packages/69/1f/c1c40305d929bd08af863df64b0a26203b70b352a1962d86f3bcd52950fe/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9ec80eb5a5f45a2211793f1c4aeddff0c3761d1c70d684965c1807e923a588b", size = 1909396 }, + { url = "https://files.pythonhosted.org/packages/0f/99/d2e727375c329c1e652b5d450fbb9d56e8c3933a397e4bd46e67c68c2cd5/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e925819a98318d17251776bd3d6aa9f3ff77b965762155bdad15d1a9265c4cfd", size = 1998264 }, + { url = "https://files.pythonhosted.org/packages/9c/2e/3119a33931278d96ecc2e9e1b9d50c240636cfeb0c49951746ae34e4de74/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bf68bb859799e9cec3d9dd8323c40c00a254aabb56fe08f907e437005932f2b", size = 2140588 }, + { url = "https://files.pythonhosted.org/packages/35/bd/9267bd1ba55f17c80ef6cb7e07b3890b4acbe8eb6014f3102092d53d9300/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b2ea72dea0825949a045fa4071f6d5b3d7620d2a208335207793cf29c5a182d", size = 2746296 }, + { url = "https://files.pythonhosted.org/packages/6f/ed/ef37de6478a412ee627cbebd73e7b72a680f45bfacce9ff1199de6e17e88/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1583539533160186ac546b49f5cde9ffc928062c96920f58bd95de32ffd7bffd", size = 2005555 }, + { url = "https://files.pythonhosted.org/packages/dd/84/72c8d1439585d8ee7bc35eb8f88a04a4d302ee4018871f1f85ae1b0c6625/pydantic_core-2.33.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23c3e77bf8a7317612e5c26a3b084c7edeb9552d645742a54a5867635b4f2453", size = 2124452 }, + { url = "https://files.pythonhosted.org/packages/a7/8f/cb13de30c6a3e303423751a529a3d1271c2effee4b98cf3e397a66ae8498/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a7a7f2a3f628d2f7ef11cb6188bcf0b9e1558151d511b974dfea10a49afe192b", size = 2087001 }, + { url = "https://files.pythonhosted.org/packages/83/d0/e93dc8884bf288a63fedeb8040ac8f29cb71ca52e755f48e5170bb63e55b/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:f1fb026c575e16f673c61c7b86144517705865173f3d0907040ac30c4f9f5915", size = 2261663 }, + { url = "https://files.pythonhosted.org/packages/4c/ba/4b7739c95efa0b542ee45fd872c8f6b1884ab808cf04ce7ac6621b6df76e/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:635702b2fed997e0ac256b2cfbdb4dd0bf7c56b5d8fba8ef03489c03b3eb40e2", size = 2257786 }, + { url = "https://files.pythonhosted.org/packages/cc/98/73cbca1d2360c27752cfa2fcdcf14d96230e92d7d48ecd50499865c56bf7/pydantic_core-2.33.0-cp311-cp311-win32.whl", hash = "sha256:07b4ced28fccae3f00626eaa0c4001aa9ec140a29501770a88dbbb0966019a86", size = 1925697 }, + { url = "https://files.pythonhosted.org/packages/9a/26/d85a40edeca5d8830ffc33667d6fef329fd0f4bc0c5181b8b0e206cfe488/pydantic_core-2.33.0-cp311-cp311-win_amd64.whl", hash = "sha256:4927564be53239a87770a5f86bdc272b8d1fbb87ab7783ad70255b4ab01aa25b", size = 1949859 }, + { url = "https://files.pythonhosted.org/packages/7e/0b/5a381605f0b9870465b805f2c86c06b0a7c191668ebe4117777306c2c1e5/pydantic_core-2.33.0-cp311-cp311-win_arm64.whl", hash = "sha256:69297418ad644d521ea3e1aa2e14a2a422726167e9ad22b89e8f1130d68e1e9a", size = 1907978 }, + { url = "https://files.pythonhosted.org/packages/a9/c4/c9381323cbdc1bb26d352bc184422ce77c4bc2f2312b782761093a59fafc/pydantic_core-2.33.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6c32a40712e3662bebe524abe8abb757f2fa2000028d64cc5a1006016c06af43", size = 2025127 }, + { url = "https://files.pythonhosted.org/packages/6f/bd/af35278080716ecab8f57e84515c7dc535ed95d1c7f52c1c6f7b313a9dab/pydantic_core-2.33.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ec86b5baa36f0a0bfb37db86c7d52652f8e8aa076ab745ef7725784183c3fdd", size = 1851687 }, + { url = "https://files.pythonhosted.org/packages/12/e4/a01461225809c3533c23bd1916b1e8c2e21727f0fea60ab1acbffc4e2fca/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4deac83a8cc1d09e40683be0bc6d1fa4cde8df0a9bf0cda5693f9b0569ac01b6", size = 1892232 }, + { url = "https://files.pythonhosted.org/packages/51/17/3d53d62a328fb0a49911c2962036b9e7a4f781b7d15e9093c26299e5f76d/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:175ab598fb457a9aee63206a1993874badf3ed9a456e0654273e56f00747bbd6", size = 1977896 }, + { url = "https://files.pythonhosted.org/packages/30/98/01f9d86e02ec4a38f4b02086acf067f2c776b845d43f901bd1ee1c21bc4b/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f36afd0d56a6c42cf4e8465b6441cf546ed69d3a4ec92724cc9c8c61bd6ecf4", size = 2127717 }, + { url = "https://files.pythonhosted.org/packages/3c/43/6f381575c61b7c58b0fd0b92134c5a1897deea4cdfc3d47567b3ff460a4e/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a98257451164666afafc7cbf5fb00d613e33f7e7ebb322fbcd99345695a9a61", size = 2680287 }, + { url = "https://files.pythonhosted.org/packages/01/42/c0d10d1451d161a9a0da9bbef023b8005aa26e9993a8cc24dc9e3aa96c93/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecc6d02d69b54a2eb83ebcc6f29df04957f734bcf309d346b4f83354d8376862", size = 2008276 }, + { url = "https://files.pythonhosted.org/packages/20/ca/e08df9dba546905c70bae44ced9f3bea25432e34448d95618d41968f40b7/pydantic_core-2.33.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a69b7596c6603afd049ce7f3835bcf57dd3892fc7279f0ddf987bebed8caa5a", size = 2115305 }, + { url = "https://files.pythonhosted.org/packages/03/1f/9b01d990730a98833113581a78e595fd40ed4c20f9693f5a658fb5f91eff/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea30239c148b6ef41364c6f51d103c2988965b643d62e10b233b5efdca8c0099", size = 2068999 }, + { url = "https://files.pythonhosted.org/packages/20/18/fe752476a709191148e8b1e1139147841ea5d2b22adcde6ee6abb6c8e7cf/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:abfa44cf2f7f7d7a199be6c6ec141c9024063205545aa09304349781b9a125e6", size = 2241488 }, + { url = "https://files.pythonhosted.org/packages/81/22/14738ad0a0bf484b928c9e52004f5e0b81dd8dabbdf23b843717b37a71d1/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20d4275f3c4659d92048c70797e5fdc396c6e4446caf517ba5cad2db60cd39d3", size = 2248430 }, + { url = "https://files.pythonhosted.org/packages/e8/27/be7571e215ac8d321712f2433c445b03dbcd645366a18f67b334df8912bc/pydantic_core-2.33.0-cp312-cp312-win32.whl", hash = "sha256:918f2013d7eadea1d88d1a35fd4a1e16aaf90343eb446f91cb091ce7f9b431a2", size = 1908353 }, + { url = "https://files.pythonhosted.org/packages/be/3a/be78f28732f93128bd0e3944bdd4b3970b389a1fbd44907c97291c8dcdec/pydantic_core-2.33.0-cp312-cp312-win_amd64.whl", hash = "sha256:aec79acc183865bad120b0190afac467c20b15289050648b876b07777e67ea48", size = 1955956 }, + { url = "https://files.pythonhosted.org/packages/21/26/b8911ac74faa994694b76ee6a22875cc7a4abea3c381fdba4edc6c6bef84/pydantic_core-2.33.0-cp312-cp312-win_arm64.whl", hash = "sha256:5461934e895968655225dfa8b3be79e7e927e95d4bd6c2d40edd2fa7052e71b6", size = 1903259 }, + { url = "https://files.pythonhosted.org/packages/79/20/de2ad03ce8f5b3accf2196ea9b44f31b0cd16ac6e8cfc6b21976ed45ec35/pydantic_core-2.33.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f00e8b59e1fc8f09d05594aa7d2b726f1b277ca6155fc84c0396db1b373c4555", size = 2032214 }, + { url = "https://files.pythonhosted.org/packages/f9/af/6817dfda9aac4958d8b516cbb94af507eb171c997ea66453d4d162ae8948/pydantic_core-2.33.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a73be93ecef45786d7d95b0c5e9b294faf35629d03d5b145b09b81258c7cd6d", size = 1852338 }, + { url = "https://files.pythonhosted.org/packages/44/f3/49193a312d9c49314f2b953fb55740b7c530710977cabe7183b8ef111b7f/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff48a55be9da6930254565ff5238d71d5e9cd8c5487a191cb85df3bdb8c77365", size = 1896913 }, + { url = "https://files.pythonhosted.org/packages/06/e0/c746677825b2e29a2fa02122a8991c83cdd5b4c5f638f0664d4e35edd4b2/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a4ea04195638dcd8c53dadb545d70badba51735b1594810e9768c2c0b4a5da", size = 1986046 }, + { url = "https://files.pythonhosted.org/packages/11/ec/44914e7ff78cef16afb5e5273d480c136725acd73d894affdbe2a1bbaad5/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41d698dcbe12b60661f0632b543dbb119e6ba088103b364ff65e951610cb7ce0", size = 2128097 }, + { url = "https://files.pythonhosted.org/packages/fe/f5/c6247d424d01f605ed2e3802f338691cae17137cee6484dce9f1ac0b872b/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae62032ef513fe6281ef0009e30838a01057b832dc265da32c10469622613885", size = 2681062 }, + { url = "https://files.pythonhosted.org/packages/f0/85/114a2113b126fdd7cf9a9443b1b1fe1b572e5bd259d50ba9d5d3e1927fa9/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f225f3a3995dbbc26affc191d0443c6c4aa71b83358fd4c2b7d63e2f6f0336f9", size = 2007487 }, + { url = "https://files.pythonhosted.org/packages/e6/40/3c05ed28d225c7a9acd2b34c5c8010c279683a870219b97e9f164a5a8af0/pydantic_core-2.33.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5bdd36b362f419c78d09630cbaebc64913f66f62bda6d42d5fbb08da8cc4f181", size = 2121382 }, + { url = "https://files.pythonhosted.org/packages/8a/22/e70c086f41eebd323e6baa92cc906c3f38ddce7486007eb2bdb3b11c8f64/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2a0147c0bef783fd9abc9f016d66edb6cac466dc54a17ec5f5ada08ff65caf5d", size = 2072473 }, + { url = "https://files.pythonhosted.org/packages/3e/84/d1614dedd8fe5114f6a0e348bcd1535f97d76c038d6102f271433cd1361d/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:c860773a0f205926172c6644c394e02c25421dc9a456deff16f64c0e299487d3", size = 2249468 }, + { url = "https://files.pythonhosted.org/packages/b0/c0/787061eef44135e00fddb4b56b387a06c303bfd3884a6df9bea5cb730230/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:138d31e3f90087f42aa6286fb640f3c7a8eb7bdae829418265e7e7474bd2574b", size = 2254716 }, + { url = "https://files.pythonhosted.org/packages/ae/e2/27262eb04963201e89f9c280f1e10c493a7a37bc877e023f31aa72d2f911/pydantic_core-2.33.0-cp313-cp313-win32.whl", hash = "sha256:d20cbb9d3e95114325780f3cfe990f3ecae24de7a2d75f978783878cce2ad585", size = 1916450 }, + { url = "https://files.pythonhosted.org/packages/13/8d/25ff96f1e89b19e0b70b3cd607c9ea7ca27e1dcb810a9cd4255ed6abf869/pydantic_core-2.33.0-cp313-cp313-win_amd64.whl", hash = "sha256:ca1103d70306489e3d006b0f79db8ca5dd3c977f6f13b2c59ff745249431a606", size = 1956092 }, + { url = "https://files.pythonhosted.org/packages/1b/64/66a2efeff657b04323ffcd7b898cb0354d36dae3a561049e092134a83e9c/pydantic_core-2.33.0-cp313-cp313-win_arm64.whl", hash = "sha256:6291797cad239285275558e0a27872da735b05c75d5237bbade8736f80e4c225", size = 1908367 }, + { url = "https://files.pythonhosted.org/packages/52/54/295e38769133363d7ec4a5863a4d579f331728c71a6644ff1024ee529315/pydantic_core-2.33.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7b79af799630af263eca9ec87db519426d8c9b3be35016eddad1832bac812d87", size = 1813331 }, + { url = "https://files.pythonhosted.org/packages/4c/9c/0c8ea02db8d682aa1ef48938abae833c1d69bdfa6e5ec13b21734b01ae70/pydantic_core-2.33.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabf946a4739b5237f4f56d77fa6668263bc466d06a8036c055587c130a46f7b", size = 1986653 }, + { url = "https://files.pythonhosted.org/packages/8e/4f/3fb47d6cbc08c7e00f92300e64ba655428c05c56b8ab6723bd290bae6458/pydantic_core-2.33.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8a1d581e8cdbb857b0e0e81df98603376c1a5c34dc5e54039dcc00f043df81e7", size = 1931234 }, + { url = "https://files.pythonhosted.org/packages/44/77/85e173b715e1a277ce934f28d877d82492df13e564fa68a01c96f36a47ad/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2762c568596332fdab56b07060c8ab8362c56cf2a339ee54e491cd503612c50", size = 2040129 }, + { url = "https://files.pythonhosted.org/packages/33/e7/33da5f8a94bbe2191cfcd15bd6d16ecd113e67da1b8c78d3cc3478112dab/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bf637300ff35d4f59c006fff201c510b2b5e745b07125458a5389af3c0dff8c", size = 1872656 }, + { url = "https://files.pythonhosted.org/packages/b4/7a/9600f222bea840e5b9ba1f17c0acc79b669b24542a78c42c6a10712c0aae/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c151ce3d59ed56ebd7ce9ce5986a409a85db697d25fc232f8e81f195aa39a1", size = 1903731 }, + { url = "https://files.pythonhosted.org/packages/81/d2/94c7ca4e24c5dcfb74df92e0836c189e9eb6814cf62d2f26a75ea0a906db/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee65f0cc652261744fd07f2c6e6901c914aa6c5ff4dcfaf1136bc394d0dd26b", size = 2083966 }, + { url = "https://files.pythonhosted.org/packages/b8/74/a0259989d220e8865ed6866a6d40539e40fa8f507e587e35d2414cc081f8/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:024d136ae44d233e6322027bbf356712b3940bee816e6c948ce4b90f18471b3d", size = 2118951 }, + { url = "https://files.pythonhosted.org/packages/13/4c/87405ed04d6d07597920b657f082a8e8e58bf3034178bb9044b4d57a91e2/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e37f10f6d4bc67c58fbd727108ae1d8b92b397355e68519f1e4a7babb1473442", size = 2079632 }, + { url = "https://files.pythonhosted.org/packages/5a/4c/bcb02970ef91d4cd6de7c6893101302637da456bc8b52c18ea0d047b55ce/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:502ed542e0d958bd12e7c3e9a015bce57deaf50eaa8c2e1c439b512cb9db1e3a", size = 2250541 }, + { url = "https://files.pythonhosted.org/packages/a3/2b/dbe5450c4cd904be5da736dcc7f2357b828199e29e38de19fc81f988b288/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:715c62af74c236bf386825c0fdfa08d092ab0f191eb5b4580d11c3189af9d330", size = 2255685 }, + { url = "https://files.pythonhosted.org/packages/ca/a6/ca1d35f695d81f639c5617fc9efb44caad21a9463383fa45364b3044175a/pydantic_core-2.33.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bccc06fa0372151f37f6b69834181aa9eb57cf8665ed36405fb45fbf6cac3bae", size = 2082395 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/553e42762e7b08771fca41c0230c1ac276f9e79e78f57628e1b7d328551d/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d8dc9f63a26f7259b57f46a7aab5af86b2ad6fbe48487500bb1f4b27e051e4c", size = 2041207 }, + { url = "https://files.pythonhosted.org/packages/85/81/a91a57bbf3efe53525ab75f65944b8950e6ef84fe3b9a26c1ec173363263/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30369e54d6d0113d2aa5aee7a90d17f225c13d87902ace8fcd7bbf99b19124db", size = 1873736 }, + { url = "https://files.pythonhosted.org/packages/9c/d2/5ab52e9f551cdcbc1ee99a0b3ef595f56d031f66f88e5ca6726c49f9ce65/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb479354c62067afa62f53bb387827bee2f75c9c79ef25eef6ab84d4b1ae3b", size = 1903794 }, + { url = "https://files.pythonhosted.org/packages/2f/5f/a81742d3f3821b16f1265f057d6e0b68a3ab13a814fe4bffac536a1f26fd/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0310524c833d91403c960b8a3cf9f46c282eadd6afd276c8c5edc617bd705dc9", size = 2083457 }, + { url = "https://files.pythonhosted.org/packages/b5/2f/e872005bc0fc47f9c036b67b12349a8522d32e3bda928e82d676e2a594d1/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eddb18a00bbb855325db27b4c2a89a4ba491cd6a0bd6d852b225172a1f54b36c", size = 2119537 }, + { url = "https://files.pythonhosted.org/packages/d3/13/183f13ce647202eaf3dada9e42cdfc59cbb95faedd44d25f22b931115c7f/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ade5dbcf8d9ef8f4b28e682d0b29f3008df9842bb5ac48ac2c17bc55771cc976", size = 2080069 }, + { url = "https://files.pythonhosted.org/packages/23/8b/b6be91243da44a26558d9c3a9007043b3750334136c6550551e8092d6d96/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2c0afd34f928383e3fd25740f2050dbac9d077e7ba5adbaa2227f4d4f3c8da5c", size = 2251618 }, + { url = "https://files.pythonhosted.org/packages/aa/c5/fbcf1977035b834f63eb542e74cd6c807177f383386175b468f0865bcac4/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7da333f21cd9df51d5731513a6d39319892947604924ddf2e24a4612975fb936", size = 2255374 }, + { url = "https://files.pythonhosted.org/packages/2f/f8/66f328e411f1c9574b13c2c28ab01f308b53688bbbe6ca8fb981e6cabc42/pydantic_core-2.33.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b6d77c75a57f041c5ee915ff0b0bb58eabb78728b69ed967bc5b780e8f701b8", size = 2082099 }, +] + +[[package]] +name = "pydantic-settings" +version = "2.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "python-dotenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/82/c79424d7d8c29b994fb01d277da57b0a9b09cc03c3ff875f9bd8a86b2145/pydantic_settings-2.8.1.tar.gz", hash = "sha256:d5c663dfbe9db9d5e1c646b2e161da12f0d734d422ee56f567d0ea2cee4e8585", size = 83550 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/53/a64f03044927dc47aafe029c42a5b7aabc38dfb813475e0e1bf71c4a59d0/pydantic_settings-2.8.1-py3-none-any.whl", hash = "sha256:81942d5ac3d905f7f3ee1a70df5dfb62d5569c12f51a5a647defc1c3d9ee2e9c", size = 30839 }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, +] + +[[package]] +name = "rsa" +version = "4.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/65/7d973b89c4d2351d7fb232c2e452547ddfa243e93131e7cfa766da627b52/rsa-4.9.tar.gz", hash = "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21", size = 29711 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", size = 34315 }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, +] + +[[package]] +name = "sse-starlette" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "starlette" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/a4/80d2a11af59fe75b48230846989e93979c892d3a20016b42bb44edb9e398/sse_starlette-2.2.1.tar.gz", hash = "sha256:54470d5f19274aeed6b2d473430b08b4b379ea851d953b11d7f1c4a2c118b419", size = 17376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/e0/5b8bd393f27f4a62461c5cf2479c75a2cc2ffa330976f9f00f5f6e4f50eb/sse_starlette-2.2.1-py3-none-any.whl", hash = "sha256:6410a3d3ba0c89e7675d4c273a301d64649c03a5ef1ca101f10b47f895fd0e99", size = 10120 }, +] + +[[package]] +name = "starlette" +version = "0.46.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/1b/52b27f2e13ceedc79a908e29eac426a63465a1a01248e5f24aa36a62aeb3/starlette-0.46.1.tar.gz", hash = "sha256:3c88d58ee4bd1bb807c0d1acb381838afc7752f9ddaec81bbe4383611d833230", size = 2580102 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/4b/528ccf7a982216885a1ff4908e886b8fb5f19862d1962f56a3fce2435a70/starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227", size = 71995 }, +] + +[[package]] +name = "telegram-mcp" +version = "1.5.0" +source = { editable = "." } +dependencies = [ + { name = "dotenv" }, + { name = "httpx" }, + { name = "mcp", extra = ["cli"] }, + { name = "nest-asyncio" }, + { name = "python-dotenv" }, + { name = "telethon" }, +] + +[package.metadata] +requires-dist = [ + { name = "dotenv", specifier = ">=0.9.9" }, + { name = "httpx", specifier = ">=0.28.1" }, + { name = "mcp", extras = ["cli"], specifier = ">=1.4.1" }, + { name = "nest-asyncio", specifier = ">=1.6.0" }, + { name = "python-dotenv", specifier = ">=1.1.0" }, + { name = "telethon", specifier = ">=1.39.0" }, +] + +[[package]] +name = "telethon" +version = "1.39.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyaes" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/b2/6e48b593a0e4e678578a682332ef36e54648c78ef13a5d395e5cdd293c6d/telethon-1.39.0.tar.gz", hash = "sha256:35d4795d8c91deac515fb0bcb3723866b924de1c724e1d5c230460e96f284a63", size = 640634 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/f2/4e66a59c6d0cb6a25c0c2a630b4b184d81cfe8cb982bf3b65ce32b020fc8/Telethon-1.39.0-py3-none-any.whl", hash = "sha256:aa9f394b94be144799a6f6a93ab463867bc7c63503ede9631751940a98f6c703", size = 715851 }, +] + +[[package]] +name = "typer" +version = "0.15.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0e/3e/b00a62db91a83fff600de219b6ea9908e6918664899a2d85db222f4fbf19/typing_extensions-4.13.0.tar.gz", hash = "sha256:0a4ac55a5820789d87e297727d229866c9650f6521b64206413c4fbada24d95b", size = 106520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/86/39b65d676ec5732de17b7e3c476e45bb80ec64eb50737a8dce1a4178aba1/typing_extensions-4.13.0-py3-none-any.whl", hash = "sha256:c8dd92cc0d6425a97c18fbb9d1954e5ff92c1ca881a309c45f06ebc0b79058e5", size = 45683 }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, +] + +[[package]] +name = "uvicorn" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 }, +]