From be5715cfebb1070458c702b4aee943a80da47b95 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Thu, 22 Jan 2026 22:33:28 +0530 Subject: [PATCH 01/51] feat: add Composio connector types and enhance integration - Introduced new enum values for Composio connectors: COMPOSIO_GOOGLE_DRIVE_CONNECTOR, COMPOSIO_GMAIL_CONNECTOR, and COMPOSIO_GOOGLE_CALENDAR_CONNECTOR. - Updated database migration to add these new enum values to the relevant types. - Refactored Composio integration logic to handle specific connector types, improving the management of connected accounts and indexing processes. - Enhanced frontend components to support the new Composio connector types, including updated UI elements and connector configuration handling. - Improved backend services to manage Composio connected accounts more effectively, including deletion and indexing tasks. --- .../74_add_composio_connector_enums.py | 93 +++++++++------- surfsense_backend/app/db.py | 8 +- .../app/routes/composio_routes.py | 80 ++++++++++---- .../routes/search_source_connectors_routes.py | 88 ++++++++++++++- .../app/services/composio_service.py | 34 ++++++ .../app/tasks/celery_tasks/connector_tasks.py | 10 +- .../app/tasks/composio_indexer.py | 54 +++++---- .../assistant-ui/connector-popup.tsx | 14 ++- .../components/composio-config.tsx | 103 ------------------ .../connector-configs/index.tsx | 4 +- .../constants/connector-constants.ts | 26 ++++- .../constants/connector-popup.schemas.ts | 2 +- .../hooks/use-connector-dialog.ts | 64 ++++++----- .../tabs/all-connectors-tab.tsx | 94 +++++++++------- .../utils/connector-document-mapping.ts | 5 +- surfsense_web/contracts/enums/connector.ts | 4 +- .../contracts/enums/connectorIcons.tsx | 16 ++- .../contracts/types/connector.types.ts | 11 +- .../contracts/types/document.types.ts | 4 +- 19 files changed, 437 insertions(+), 277 deletions(-) diff --git a/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py b/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py index 454b60754..cadf70cb6 100644 --- a/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py +++ b/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py @@ -1,16 +1,21 @@ -"""Add COMPOSIO_CONNECTOR to SearchSourceConnectorType and DocumentType enums +"""Add Composio connector types to SearchSourceConnectorType and DocumentType enums Revision ID: 74 Revises: 73 Create Date: 2026-01-21 -This migration adds the COMPOSIO_CONNECTOR enum value to both: +This migration adds the Composio connector enum values to both: - searchsourceconnectortype (for connector type tracking) - documenttype (for document type tracking) Composio is a managed OAuth integration service that allows connecting to various third-party services (Google Drive, Gmail, Calendar, etc.) without requiring separate OAuth app verification. + +This migration adds three specific connector types: +- COMPOSIO_GOOGLE_DRIVE_CONNECTOR +- COMPOSIO_GMAIL_CONNECTOR +- COMPOSIO_GOOGLE_CALENDAR_CONNECTOR """ from collections.abc import Sequence @@ -23,55 +28,65 @@ down_revision: str | None = "73" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None -# Define the ENUM type names and the new value +# Define the ENUM type names and the new values CONNECTOR_ENUM = "searchsourceconnectortype" -CONNECTOR_NEW_VALUE = "COMPOSIO_CONNECTOR" +CONNECTOR_NEW_VALUES = [ + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", +] DOCUMENT_ENUM = "documenttype" -DOCUMENT_NEW_VALUE = "COMPOSIO_CONNECTOR" +DOCUMENT_NEW_VALUES = [ + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", +] def upgrade() -> None: - """Upgrade schema - add COMPOSIO_CONNECTOR to connector and document enums safely.""" - # Add COMPOSIO_CONNECTOR to searchsourceconnectortype only if not exists - op.execute( - f""" - DO $$ - BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_enum - WHERE enumlabel = '{CONNECTOR_NEW_VALUE}' - AND enumtypid = (SELECT oid FROM pg_type WHERE typname = '{CONNECTOR_ENUM}') - ) THEN - ALTER TYPE {CONNECTOR_ENUM} ADD VALUE '{CONNECTOR_NEW_VALUE}'; - END IF; - END$$; - """ - ) + """Upgrade schema - add Composio connector types to connector and document enums safely.""" + # Add each Composio connector type to searchsourceconnectortype only if not exists + for value in CONNECTOR_NEW_VALUES: + op.execute( + f""" + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_enum e + JOIN pg_type t ON e.enumtypid = t.oid + WHERE t.typname = '{CONNECTOR_ENUM}' AND e.enumlabel = '{value}' + ) THEN + ALTER TYPE {CONNECTOR_ENUM} ADD VALUE '{value}'; + END IF; + END$$; + """ + ) - # Add COMPOSIO_CONNECTOR to documenttype only if not exists - op.execute( - f""" - DO $$ - BEGIN - IF NOT EXISTS ( - SELECT 1 FROM pg_enum - WHERE enumlabel = '{DOCUMENT_NEW_VALUE}' - AND enumtypid = (SELECT oid FROM pg_type WHERE typname = '{DOCUMENT_ENUM}') - ) THEN - ALTER TYPE {DOCUMENT_ENUM} ADD VALUE '{DOCUMENT_NEW_VALUE}'; - END IF; - END$$; - """ - ) + # Add each Composio connector type to documenttype only if not exists + for value in DOCUMENT_NEW_VALUES: + op.execute( + f""" + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_enum e + JOIN pg_type t ON e.enumtypid = t.oid + WHERE t.typname = '{DOCUMENT_ENUM}' AND e.enumlabel = '{value}' + ) THEN + ALTER TYPE {DOCUMENT_ENUM} ADD VALUE '{value}'; + END IF; + END$$; + """ + ) def downgrade() -> None: - """Downgrade schema - remove COMPOSIO_CONNECTOR from connector and document enums. + """Downgrade schema - remove Composio connector types from connector and document enums. Note: PostgreSQL does not support removing enum values directly. To properly downgrade, you would need to: - 1. Delete any rows using the COMPOSIO_CONNECTOR value - 2. Create new enums without COMPOSIO_CONNECTOR + 1. Delete any rows using the Composio connector type values + 2. Create new enums without the Composio connector types 3. Alter the columns to use the new enums 4. Drop the old enums diff --git a/surfsense_backend/app/db.py b/surfsense_backend/app/db.py index b56f37373..705e89ea7 100644 --- a/surfsense_backend/app/db.py +++ b/surfsense_backend/app/db.py @@ -54,7 +54,9 @@ class DocumentType(str, Enum): BOOKSTACK_CONNECTOR = "BOOKSTACK_CONNECTOR" CIRCLEBACK = "CIRCLEBACK" NOTE = "NOTE" - COMPOSIO_CONNECTOR = "COMPOSIO_CONNECTOR" # Generic Composio integration + COMPOSIO_GOOGLE_DRIVE_CONNECTOR = "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" + COMPOSIO_GMAIL_CONNECTOR = "COMPOSIO_GMAIL_CONNECTOR" + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR = "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" class SearchSourceConnectorType(str, Enum): @@ -82,7 +84,9 @@ class SearchSourceConnectorType(str, Enum): BOOKSTACK_CONNECTOR = "BOOKSTACK_CONNECTOR" CIRCLEBACK_CONNECTOR = "CIRCLEBACK_CONNECTOR" MCP_CONNECTOR = "MCP_CONNECTOR" # Model Context Protocol - User-defined API tools - COMPOSIO_CONNECTOR = "COMPOSIO_CONNECTOR" # Generic Composio integration (Google, Slack, etc.) + COMPOSIO_GOOGLE_DRIVE_CONNECTOR = "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" + COMPOSIO_GMAIL_CONNECTOR = "COMPOSIO_GMAIL_CONNECTOR" + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR = "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" class LiteLLMProvider(str, Enum): diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index b6f418aa2..77891fc88 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -19,6 +19,7 @@ from fastapi.responses import RedirectResponse from pydantic import ValidationError from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.future import select from app.config import config from app.db import ( @@ -30,15 +31,17 @@ from app.db import ( from app.services.composio_service import ( COMPOSIO_TOOLKIT_NAMES, INDEXABLE_TOOLKITS, + TOOLKIT_TO_CONNECTOR_TYPE, ComposioService, ) from app.users import current_active_user -from app.utils.connector_naming import ( - check_duplicate_connector, - generate_unique_connector_name, -) +from app.utils.connector_naming import generate_unique_connector_name from app.utils.oauth_security import OAuthStateManager +# Note: We no longer use check_duplicate_connector for Composio connectors because +# Composio generates a new connected_account_id each time, even for the same Google account. +# Instead, we check for existing connectors by type/space/user and update them. + logger = logging.getLogger(__name__) router = APIRouter() @@ -260,30 +263,65 @@ async def composio_callback( "is_indexable": toolkit_id in INDEXABLE_TOOLKITS, } - # Check for duplicate connector - # For Composio, we use toolkit_id + connected_account_id as unique identifier - identifier = final_connected_account_id or f"{toolkit_id}_{user_id}" - - is_duplicate = await check_duplicate_connector( - session, - SearchSourceConnectorType.COMPOSIO_CONNECTOR, - space_id, - user_id, - identifier, - ) - if is_duplicate: - logger.warning( - f"Duplicate Composio connector detected for user {user_id} with toolkit {toolkit_id}" + # Get the specific connector type for this toolkit + connector_type_str = TOOLKIT_TO_CONNECTOR_TYPE.get(toolkit_id) + if not connector_type_str: + raise HTTPException( + status_code=400, + detail=f"Unknown toolkit: {toolkit_id}. Available: {list(TOOLKIT_TO_CONNECTOR_TYPE.keys())}", ) + connector_type = SearchSourceConnectorType(connector_type_str) + + # Check for existing connector of the same type for this user/space + # When reconnecting, Composio gives a new connected_account_id, so we need to + # check by connector_type, user_id, and search_space_id instead of connected_account_id + existing_connector_result = await session.execute( + select(SearchSourceConnector).where( + SearchSourceConnector.connector_type == connector_type, + SearchSourceConnector.search_space_id == space_id, + SearchSourceConnector.user_id == user_id, + ) + ) + existing_connector = existing_connector_result.scalars().first() + + if existing_connector: + # Delete the old Composio connected account before updating + old_connected_account_id = existing_connector.config.get("composio_connected_account_id") + if old_connected_account_id and old_connected_account_id != final_connected_account_id: + try: + deleted = await service.delete_connected_account(old_connected_account_id) + if deleted: + logger.info( + f"Deleted old Composio connected account {old_connected_account_id} " + f"before updating connector {existing_connector.id}" + ) + else: + logger.warning( + f"Failed to delete old Composio connected account {old_connected_account_id}" + ) + except Exception as delete_error: + # Log but don't fail - the old account may already be deleted + logger.warning( + f"Error deleting old Composio connected account {old_connected_account_id}: {delete_error!s}" + ) + + # Update existing connector with new connected_account_id + logger.info( + f"Updating existing Composio connector {existing_connector.id} with new connected_account_id {final_connected_account_id}" + ) + existing_connector.config = connector_config + await session.commit() + await session.refresh(existing_connector) + return RedirectResponse( - url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&error=duplicate_account&connector=composio-connector" + url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&success=true&connector=composio-connector&connectorId={existing_connector.id}" ) try: # Generate a unique, user-friendly connector name connector_name = await generate_unique_connector_name( session, - SearchSourceConnectorType.COMPOSIO_CONNECTOR, + connector_type, space_id, user_id, f"{toolkit_name} (Composio)", @@ -291,7 +329,7 @@ async def composio_callback( db_connector = SearchSourceConnector( name=connector_name, - connector_type=SearchSourceConnectorType.COMPOSIO_CONNECTOR, + connector_type=connector_type, config=connector_config, search_space_id=space_id, user_id=user_id, diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index d60d08d57..9ad03fba8 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -37,6 +37,7 @@ from app.db import ( async_session_maker, get_async_session, ) +from app.services.composio_service import ComposioService from app.schemas import ( GoogleDriveIndexRequest, MCPConnectorCreate, @@ -529,6 +530,34 @@ async def delete_search_source_connector( f"Failed to delete periodic schedule for connector {connector_id}" ) + # For Composio connectors, also delete the connected account in Composio + composio_connector_types = [ + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, + ] + if db_connector.connector_type in composio_connector_types: + composio_connected_account_id = db_connector.config.get("composio_connected_account_id") + if composio_connected_account_id and ComposioService.is_enabled(): + try: + service = ComposioService() + deleted = await service.delete_connected_account(composio_connected_account_id) + if deleted: + logger.info( + f"Successfully deleted Composio connected account {composio_connected_account_id} " + f"for connector {connector_id}" + ) + else: + logger.warning( + f"Failed to delete Composio connected account {composio_connected_account_id} " + f"for connector {connector_id}" + ) + except Exception as composio_error: + # Log but don't fail the deletion - Composio account may already be deleted + logger.warning( + f"Error deleting Composio connected account {composio_connected_account_id}: {composio_error!s}" + ) + await session.delete(db_connector) await session.commit() return {"message": "Search source connector deleted successfully"} @@ -868,7 +897,11 @@ async def index_connector_content( ) response_message = "Web page indexing started in the background." - elif connector.connector_type == SearchSourceConnectorType.COMPOSIO_CONNECTOR: + elif connector.connector_type in [ + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, + ]: from app.tasks.celery_tasks.connector_tasks import ( index_composio_connector_task, ) @@ -2086,6 +2119,59 @@ async def run_bookstack_indexing( ) +async def run_composio_indexing_with_new_session( + connector_id: int, + search_space_id: int, + user_id: str, + start_date: str, + end_date: str, +): + """ + Create a new session and run the Composio indexing task. + This prevents session leaks by creating a dedicated session for the background task. + """ + async with async_session_maker() as session: + await run_composio_indexing( + session, connector_id, search_space_id, user_id, start_date, end_date + ) + + +async def run_composio_indexing( + session: AsyncSession, + connector_id: int, + search_space_id: int, + user_id: str, + start_date: str, + end_date: str, +): + """ + Run Composio connector indexing with real-time notifications. + + This wraps the Composio indexer with the notification system so that + Electric SQL can sync indexing progress to the frontend in real-time. + + Args: + session: Database session + connector_id: ID of the Composio connector + search_space_id: ID of the search space + user_id: ID of the user + start_date: Start date for indexing + end_date: End date for indexing + """ + from app.tasks.composio_indexer import index_composio_connector + + await _run_indexing_with_notifications( + session=session, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + start_date=start_date, + end_date=end_date, + indexing_function=index_composio_connector, + update_timestamp_func=_update_connector_timestamp_by_id, + ) + + # ============================================================================= # MCP Connector Routes # ============================================================================= diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 4b6a32b03..17fbd64e0 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -39,6 +39,20 @@ COMPOSIO_TOOLKIT_NAMES = { # Toolkits that support indexing (Phase 1: Google services only) INDEXABLE_TOOLKITS = {"googledrive", "gmail", "googlecalendar"} +# Mapping of toolkit IDs to connector types +TOOLKIT_TO_CONNECTOR_TYPE = { + "googledrive": "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "gmail": "COMPOSIO_GMAIL_CONNECTOR", + "googlecalendar": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", +} + +# Mapping of toolkit IDs to document types +TOOLKIT_TO_DOCUMENT_TYPE = { + "googledrive": "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "gmail": "COMPOSIO_GMAIL_CONNECTOR", + "googlecalendar": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", +} + class ComposioService: """Service for interacting with Composio API.""" @@ -298,6 +312,26 @@ class ComposioService: logger.error(f"Failed to list connections for user {user_id}: {e!s}") return [] + async def delete_connected_account(self, connected_account_id: str) -> bool: + """ + Delete a connected account from Composio. + + This permanently removes the connected account and revokes access tokens. + + Args: + connected_account_id: The Composio connected account ID to delete. + + Returns: + True if deletion was successful, False otherwise. + """ + try: + self.client.connected_accounts.delete(connected_account_id) + logger.info(f"Successfully deleted Composio connected account: {connected_account_id}") + return True + except Exception as e: + logger.error(f"Failed to delete Composio connected account {connected_account_id}: {e!s}") + return False + async def execute_tool( self, connected_account_id: str, diff --git a/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py b/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py index 72cedb40f..307b5a551 100644 --- a/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py +++ b/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py @@ -793,11 +793,13 @@ async def _index_composio_connector( start_date: str, end_date: str, ): - """Index Composio connector content with new session.""" - # Import from tasks folder (not connector_indexers) to avoid circular import - from app.tasks.composio_indexer import index_composio_connector + """Index Composio connector content with new session and real-time notifications.""" + # Import from routes to use the notification-wrapped version + from app.routes.search_source_connectors_routes import ( + run_composio_indexing, + ) async with get_celery_session_maker()() as session: - await index_composio_connector( + await run_composio_indexing( session, connector_id, search_space_id, user_id, start_date, end_date ) diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index 01d2cfce4..8762561ee 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -23,7 +23,7 @@ from app.db import ( SearchSourceConnector, SearchSourceConnectorType, ) -from app.services.composio_service import INDEXABLE_TOOLKITS +from app.services.composio_service import INDEXABLE_TOOLKITS, TOOLKIT_TO_DOCUMENT_TYPE from app.services.llm_service import get_user_long_context_llm from app.services.task_logging_service import TaskLoggingService from app.utils.document_converters import ( @@ -58,15 +58,13 @@ async def check_document_by_unique_identifier( async def get_connector_by_id( - session: AsyncSession, connector_id: int, connector_type: SearchSourceConnectorType + session: AsyncSession, connector_id: int, connector_type: SearchSourceConnectorType | None ) -> SearchSourceConnector | None: - """Get a connector by ID and type from the database.""" - result = await session.execute( - select(SearchSourceConnector).filter( - SearchSourceConnector.id == connector_id, - SearchSourceConnector.connector_type == connector_type, - ) - ) + """Get a connector by ID and optionally by type from the database.""" + query = select(SearchSourceConnector).filter(SearchSourceConnector.id == connector_id) + if connector_type is not None: + query = query.filter(SearchSourceConnector.connector_type == connector_type) + result = await session.execute(query) return result.scalars().first() @@ -129,10 +127,23 @@ async def index_composio_connector( ) try: - # Get connector by id + # Get connector by id - accept any Composio connector type + # We'll check the actual type after loading connector = await get_connector_by_id( - session, connector_id, SearchSourceConnectorType.COMPOSIO_CONNECTOR + session, connector_id, None # Don't filter by type, we'll validate after ) + + # Validate it's a Composio connector + if connector and connector.connector_type not in [ + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, + ]: + error_msg = f"Connector {connector_id} is not a Composio connector" + await task_logger.log_task_failure( + log_entry, error_msg, {"error_type": "InvalidConnectorType"} + ) + return 0, error_msg if not connector: error_msg = f"Composio connector with ID {connector_id} not found" @@ -276,7 +287,7 @@ async def _index_composio_google_drive( await task_logger.log_task_success( log_entry, success_msg, {"files_count": 0} ) - return 0, success_msg + return 0, None # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(all_files)} Google Drive files to index via Composio") @@ -299,8 +310,9 @@ async def _index_composio_google_drive( continue # Generate unique identifier hash + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) unique_identifier_hash = generate_unique_identifier_hash( - DocumentType.COMPOSIO_CONNECTOR, f"drive_{file_id}", search_space_id + document_type, f"drive_{file_id}", search_space_id ) # Check if document exists @@ -394,7 +406,7 @@ async def _index_composio_google_drive( document = Document( search_space_id=search_space_id, title=f"Drive: {file_name}", - document_type=DocumentType.COMPOSIO_CONNECTOR, + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]), document_metadata={ "file_id": file_id, "file_name": file_name, @@ -489,7 +501,7 @@ async def _index_composio_gmail( await task_logger.log_task_success( log_entry, success_msg, {"messages_count": 0} ) - return 0, success_msg + return 0, None # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(messages)} Gmail messages to index via Composio") @@ -530,8 +542,9 @@ async def _index_composio_gmail( markdown_content = composio_connector.format_gmail_message_to_markdown(message) # Generate unique identifier + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]) unique_identifier_hash = generate_unique_identifier_hash( - DocumentType.COMPOSIO_CONNECTOR, f"gmail_{message_id}", search_space_id + document_type, f"gmail_{message_id}", search_space_id ) content_hash = generate_content_hash(markdown_content, search_space_id) @@ -612,7 +625,7 @@ async def _index_composio_gmail( document = Document( search_space_id=search_space_id, title=f"Gmail: {subject}", - document_type=DocumentType.COMPOSIO_CONNECTOR, + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]), document_metadata={ "message_id": message_id, "subject": subject, @@ -717,7 +730,7 @@ async def _index_composio_google_calendar( await task_logger.log_task_success( log_entry, success_msg, {"events_count": 0} ) - return 0, success_msg + return 0, None # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(events)} Google Calendar events to index via Composio") @@ -738,8 +751,9 @@ async def _index_composio_google_calendar( markdown_content = composio_connector.format_calendar_event_to_markdown(event) # Generate unique identifier + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]) unique_identifier_hash = generate_unique_identifier_hash( - DocumentType.COMPOSIO_CONNECTOR, f"calendar_{event_id}", search_space_id + document_type, f"calendar_{event_id}", search_space_id ) content_hash = generate_content_hash(markdown_content, search_space_id) @@ -828,7 +842,7 @@ async def _index_composio_google_calendar( document = Document( search_space_id=search_space_id, title=f"Calendar: {summary}", - document_type=DocumentType.COMPOSIO_CONNECTOR, + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]), document_metadata={ "event_id": event_id, "summary": summary, diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 1f4341d07..228b12836 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -188,8 +188,18 @@ export const ConnectorIndicator: FC = () => { searchSpaceId={searchSpaceId} connectedToolkits={ (connectors || []) - .filter((c: SearchSourceConnector) => c.connector_type === "COMPOSIO_CONNECTOR") - .map((c: SearchSourceConnector) => c.config?.toolkit_id as string) + .filter((c: SearchSourceConnector) => + c.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || + c.connector_type === "COMPOSIO_GMAIL_CONNECTOR" || + c.connector_type === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" + ) + .map((c: SearchSourceConnector) => { + // Map connector type back to toolkit_id + if (c.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR") return "googledrive"; + if (c.connector_type === "COMPOSIO_GMAIL_CONNECTOR") return "gmail"; + if (c.connector_type === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR") return "googlecalendar"; + return c.config?.toolkit_id as string; + }) .filter(Boolean) } onBack={handleBackFromComposio} diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx index 6fe37e1e5..a96f906fe 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx @@ -1,7 +1,5 @@ "use client"; -import { ExternalLink, Info, Zap } from "lucide-react"; -import Image from "next/image"; import type { FC } from "react"; import { Badge } from "@/components/ui/badge"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; @@ -13,92 +11,13 @@ interface ComposioConfigProps { onNameChange?: (name: string) => void; } -// Get toolkit display info -const getToolkitInfo = (toolkitId: string): { name: string; icon: string; description: string } => { - switch (toolkitId) { - case "googledrive": - return { - name: "Google Drive", - icon: "/connectors/google-drive.svg", - description: "Files and documents from Google Drive", - }; - case "gmail": - return { - name: "Gmail", - icon: "/connectors/google-gmail.svg", - description: "Emails from Gmail", - }; - case "googlecalendar": - return { - name: "Google Calendar", - icon: "/connectors/google-calendar.svg", - description: "Events from Google Calendar", - }; - case "slack": - return { - name: "Slack", - icon: "/connectors/slack.svg", - description: "Messages from Slack", - }; - case "notion": - return { - name: "Notion", - icon: "/connectors/notion.svg", - description: "Pages from Notion", - }; - case "github": - return { - name: "GitHub", - icon: "/connectors/github.svg", - description: "Repositories from GitHub", - }; - default: - return { - name: toolkitId, - icon: "/connectors/composio.svg", - description: "Connected via Composio", - }; - } -}; - export const ComposioConfig: FC = ({ connector }) => { const toolkitId = connector.config?.toolkit_id as string; - const toolkitName = connector.config?.toolkit_name as string; const isIndexable = connector.config?.is_indexable as boolean; const composioAccountId = connector.config?.composio_connected_account_id as string; - const toolkitInfo = getToolkitInfo(toolkitId); - return (
- {/* Toolkit Info Card */} -
-
-
- {toolkitInfo.name} -
-
-
-

{toolkitName || toolkitInfo.name}

- - - Composio - -
-

{toolkitInfo.description}

-
-
-
- {/* Connection Details */}

@@ -133,28 +52,6 @@ export const ComposioConfig: FC = ({ connector }) => { )}

- - {/* Info Banner */} -
-
- -
-

- This connection uses Composio's managed OAuth, which means you don't need to - wait for app verification. Your data is securely accessed through Composio. -

- - Learn more about Composio - - -
-
-
); }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx index a7a92597c..160185b1e 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx @@ -74,7 +74,9 @@ export function getConnectorConfigComponent( return CirclebackConfig; case "MCP_CONNECTOR": return MCPConfig; - case "COMPOSIO_CONNECTOR": + case "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": + case "COMPOSIO_GMAIL_CONNECTOR": + case "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": return ComposioConfig; // OAuth connectors (Gmail, Calendar, Airtable, Notion) and others don't need special config UI default: diff --git a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts index 7646d7a9b..11066f28a 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-constants.ts @@ -168,14 +168,28 @@ export const OTHER_CONNECTORS = [ }, ] as const; -// Composio Connector (Single entry that opens toolkit selector) +// Composio Connectors - Individual entries for each supported toolkit export const COMPOSIO_CONNECTORS = [ { - id: "composio-connector", - title: "Composio", - description: "Connect 100+ apps via Composio (Google, Slack, Notion, etc.)", - connectorType: EnumConnectorName.COMPOSIO_CONNECTOR, - // No authEndpoint - handled via toolkit selector view + id: "composio-googledrive", + title: "Google Drive", + description: "Search your Drive files via Composio", + connectorType: EnumConnectorName.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + authEndpoint: "/api/v1/auth/composio/connector/add/?toolkit_id=googledrive", + }, + { + id: "composio-gmail", + title: "Gmail", + description: "Search through your emails via Composio", + connectorType: EnumConnectorName.COMPOSIO_GMAIL_CONNECTOR, + authEndpoint: "/api/v1/auth/composio/connector/add/?toolkit_id=gmail", + }, + { + id: "composio-googlecalendar", + title: "Google Calendar", + description: "Search through your events via Composio", + connectorType: EnumConnectorName.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, + authEndpoint: "/api/v1/auth/composio/connector/add/?toolkit_id=googlecalendar", }, ] as const; diff --git a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts index d74d66203..c7e77f666 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts @@ -7,7 +7,7 @@ import { searchSourceConnectorTypeEnum } from "@/contracts/types/connector.types export const connectorPopupQueryParamsSchema = z.object({ modal: z.enum(["connectors"]).optional(), tab: z.enum(["all", "active"]).optional(), - view: z.enum(["configure", "edit", "connect", "youtube", "accounts", "mcp-list"]).optional(), + view: z.enum(["configure", "edit", "connect", "youtube", "accounts", "mcp-list", "composio"]).optional(), connector: z.string().optional(), connectorId: z.string().optional(), connectorType: z.string().optional(), diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index c6ef1a927..4a177ac36 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -26,7 +26,7 @@ import { import { cacheKeys } from "@/lib/query-client/cache-keys"; import { queryClient } from "@/lib/query-client/client"; import type { IndexingConfigState } from "../constants/connector-constants"; -import { OAUTH_CONNECTORS, OTHER_CONNECTORS } from "../constants/connector-constants"; +import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS, OTHER_CONNECTORS } from "../constants/connector-constants"; import { dateRangeSchema, frequencyMinutesSchema, @@ -176,15 +176,24 @@ export const useConnectorDialog = () => { } // Handle accounts view - if (params.view === "accounts" && params.connectorType && !viewingAccountsType) { - const oauthConnector = OAUTH_CONNECTORS.find( - (c) => c.connectorType === params.connectorType - ); - if (oauthConnector) { - setViewingAccountsType({ - connectorType: oauthConnector.connectorType, - connectorTitle: oauthConnector.title, - }); + if (params.view === "accounts" && params.connectorType) { + // Update state if not set, or if connectorType has changed + const needsUpdate = !viewingAccountsType || + viewingAccountsType.connectorType !== params.connectorType; + + if (needsUpdate) { + // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS + const oauthConnector = OAUTH_CONNECTORS.find( + (c) => c.connectorType === params.connectorType + ) || COMPOSIO_CONNECTORS.find( + (c) => c.connectorType === params.connectorType + ); + if (oauthConnector) { + setViewingAccountsType({ + connectorType: oauthConnector.connectorType, + connectorTitle: oauthConnector.title, + }); + } } } @@ -293,6 +302,8 @@ export const useConnectorDialog = () => { indexingConfig, connectingConnectorType, viewingAccountsType, + viewingMCPList, + viewingComposio, ]); // Detect OAuth success / Failure and transition to config view @@ -389,15 +400,19 @@ export const useConnectorDialog = () => { // Handle OAuth connection const handleConnectOAuth = useCallback( - async (connector: (typeof OAUTH_CONNECTORS)[number]) => { + async (connector: (typeof OAUTH_CONNECTORS)[number] | (typeof COMPOSIO_CONNECTORS)[number]) => { if (!searchSpaceId || !connector.authEndpoint) return; // Set connecting state immediately to disable button and show spinner setConnectingId(connector.id); try { + // Check if authEndpoint already has query parameters + const separator = connector.authEndpoint.includes("?") ? "&" : "?"; + const url = `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}${connector.authEndpoint}${separator}space_id=${searchSpaceId}`; + const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}${connector.authEndpoint}?space_id=${searchSpaceId}`, + url, { method: "GET" } ); @@ -799,23 +814,19 @@ export const useConnectorDialog = () => { // Handle viewing accounts list for OAuth connector type const handleViewAccountsList = useCallback( - (connectorType: string, connectorTitle: string) => { + (connectorType: string, _connectorTitle?: string) => { if (!searchSpaceId) return; - setViewingAccountsType({ - connectorType, - connectorTitle, - }); - // Update URL to show accounts view, preserving current tab + // The useEffect will handle setting viewingAccountsType based on URL params const url = new URL(window.location.href); url.searchParams.set("modal", "connectors"); url.searchParams.set("view", "accounts"); url.searchParams.set("connectorType", connectorType); // Keep the current tab in URL so we can go back to it - window.history.pushState({ modal: true }, "", url.toString()); + router.replace(url.pathname + url.search, { scroll: false }); }, - [searchSpaceId] + [searchSpaceId, router] ); // Handle going back from accounts list view @@ -839,8 +850,8 @@ export const useConnectorDialog = () => { const url = new URL(window.location.href); url.searchParams.set("modal", "connectors"); url.searchParams.set("view", "mcp-list"); - window.history.pushState({ modal: true }, "", url.toString()); - }, [searchSpaceId]); + router.replace(url.pathname + url.search, { scroll: false }); + }, [searchSpaceId, router]); // Handle going back from MCP list view const handleBackFromMCPList = useCallback(() => { @@ -871,8 +882,8 @@ export const useConnectorDialog = () => { const url = new URL(window.location.href); url.searchParams.set("modal", "connectors"); url.searchParams.set("view", "composio"); - window.history.pushState({ modal: true }, "", url.toString()); - }, [searchSpaceId]); + router.replace(url.pathname + url.search, { scroll: false }); + }, [searchSpaceId, router]); // Handle going back from Composio view const handleBackFromComposio = useCallback(() => { @@ -1423,7 +1434,7 @@ export const useConnectorDialog = () => { setIsDisconnecting(false); } }, - [editingConnector, searchSpaceId, deleteConnector, router] + [editingConnector, searchSpaceId, deleteConnector, router, cameFromMCPList] ); // Handle quick index (index without date picker, uses backend defaults) @@ -1579,6 +1590,7 @@ export const useConnectorDialog = () => { viewingAccountsType, viewingMCPList, viewingComposio, + connectingComposioToolkit, // Setters setSearchQuery, @@ -1616,8 +1628,6 @@ export const useConnectorDialog = () => { setIndexingConnectorConfig, // Composio - viewingComposio, - connectingComposioToolkit, handleOpenComposio, handleBackFromComposio, handleConnectComposioToolkit, diff --git a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx index 1b36b3b81..4a0680200 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx @@ -4,7 +4,6 @@ import type { FC } from "react"; import { EnumConnectorName } from "@/contracts/enums/connector"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import { ConnectorCard } from "../components/connector-card"; -import { ComposioConnectorCard } from "../components/composio-connector-card"; import { CRAWLERS, OAUTH_CONNECTORS, OTHER_CONNECTORS, COMPOSIO_CONNECTORS } from "../constants/connector-constants"; import { getDocumentCountForConnector } from "../utils/connector-document-mapping"; @@ -29,13 +28,12 @@ interface AllConnectorsTabProps { allConnectors: SearchSourceConnector[] | undefined; documentTypeCounts?: Record; indexingConnectorIds?: Set; - onConnectOAuth: (connector: (typeof OAUTH_CONNECTORS)[number]) => void; + onConnectOAuth: (connector: (typeof OAUTH_CONNECTORS)[number] | (typeof COMPOSIO_CONNECTORS)[number]) => void; onConnectNonOAuth?: (connectorType: string) => void; onCreateWebcrawler?: () => void; onCreateYouTubeCrawler?: () => void; onManage?: (connector: SearchSourceConnector) => void; onViewAccountsList?: (connectorType: string, connectorTitle: string) => void; - onOpenComposio?: () => void; } export const AllConnectorsTab: FC = ({ @@ -51,7 +49,6 @@ export const AllConnectorsTab: FC = ({ onCreateYouTubeCrawler, onManage, onViewAccountsList, - onOpenComposio, }) => { // Filter connectors based on search const filteredOAuth = OAUTH_CONNECTORS.filter( @@ -79,23 +76,16 @@ export const AllConnectorsTab: FC = ({ c.description.toLowerCase().includes(searchQuery.toLowerCase()) ); - // Count Composio connectors - const composioConnectorCount = allConnectors - ? allConnectors.filter( - (c: SearchSourceConnector) => c.connector_type === EnumConnectorName.COMPOSIO_CONNECTOR - ).length - : 0; - return (
- {/* Quick Connect */} - {filteredOAuth.length > 0 && ( + {/* Managed OAuth (Composio Integrations) */} + {filteredComposio.length > 0 && (
-

Quick Connect

+

Managed OAuth

- {filteredOAuth.map((connector) => { + {filteredComposio.map((connector) => { const isConnected = connectedTypes.has(connector.connectorType); const isConnecting = connectingId === connector.id; @@ -109,17 +99,6 @@ export const AllConnectorsTab: FC = ({ const accountCount = typeConnectors.length; - // Get the most recent last_indexed_at across all accounts - const mostRecentLastIndexed = typeConnectors.reduce( - (latest, c) => { - if (!c.last_indexed_at) return latest; - if (!latest) return c.last_indexed_at; - return new Date(c.last_indexed_at) > new Date(latest) - ? c.last_indexed_at - : latest; - }, - undefined - ); const documentCount = getDocumentCountForConnector( connector.connectorType, @@ -154,26 +133,57 @@ export const AllConnectorsTab: FC = ({
)} - {/* Composio Integrations */} - {filteredComposio.length > 0 && onOpenComposio && ( + {/* Quick Connect */} + {filteredOAuth.length > 0 && (
-

Managed OAuth

- - No verification needed - +

Quick Connect

- {filteredComposio.map((connector) => ( - - ))} + {filteredOAuth.map((connector) => { + const isConnected = connectedTypes.has(connector.connectorType); + const isConnecting = connectingId === connector.id; + + // Find all connectors of this type + const typeConnectors = + isConnected && allConnectors + ? allConnectors.filter( + (c: SearchSourceConnector) => c.connector_type === connector.connectorType + ) + : []; + + const accountCount = typeConnectors.length; + + + const documentCount = getDocumentCountForConnector( + connector.connectorType, + documentTypeCounts + ); + + // Check if any account is currently indexing + const isIndexing = typeConnectors.some((c) => indexingConnectorIds?.has(c.id)); + + return ( + onConnectOAuth(connector)} + onManage={ + isConnected && onViewAccountsList + ? () => onViewAccountsList(connector.connectorType, connector.title) + : undefined + } + /> + ); + })}
)} diff --git a/surfsense_web/components/assistant-ui/connector-popup/utils/connector-document-mapping.ts b/surfsense_web/components/assistant-ui/connector-popup/utils/connector-document-mapping.ts index 522e1763c..ded3bdcca 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/utils/connector-document-mapping.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/utils/connector-document-mapping.ts @@ -30,7 +30,10 @@ export const CONNECTOR_TO_DOCUMENT_TYPE: Record = { // Special mappings (connector type differs from document type) GOOGLE_DRIVE_CONNECTOR: "GOOGLE_DRIVE_FILE", WEBCRAWLER_CONNECTOR: "CRAWLED_URL", - COMPOSIO_CONNECTOR: "COMPOSIO_CONNECTOR", + // Composio connectors map to their own document types + COMPOSIO_GOOGLE_DRIVE_CONNECTOR: "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + COMPOSIO_GMAIL_CONNECTOR: "COMPOSIO_GMAIL_CONNECTOR", + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", }; /** diff --git a/surfsense_web/contracts/enums/connector.ts b/surfsense_web/contracts/enums/connector.ts index e1fb1e3f2..20d6093b6 100644 --- a/surfsense_web/contracts/enums/connector.ts +++ b/surfsense_web/contracts/enums/connector.ts @@ -24,5 +24,7 @@ export enum EnumConnectorName { YOUTUBE_CONNECTOR = "YOUTUBE_CONNECTOR", CIRCLEBACK_CONNECTOR = "CIRCLEBACK_CONNECTOR", MCP_CONNECTOR = "MCP_CONNECTOR", - COMPOSIO_CONNECTOR = "COMPOSIO_CONNECTOR", + COMPOSIO_GOOGLE_DRIVE_CONNECTOR = "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + COMPOSIO_GMAIL_CONNECTOR = "COMPOSIO_GMAIL_CONNECTOR", + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR = "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", } diff --git a/surfsense_web/contracts/enums/connectorIcons.tsx b/surfsense_web/contracts/enums/connectorIcons.tsx index 947c886d5..a1e6c9040 100644 --- a/surfsense_web/contracts/enums/connectorIcons.tsx +++ b/surfsense_web/contracts/enums/connectorIcons.tsx @@ -66,8 +66,12 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas return ; case EnumConnectorName.MCP_CONNECTOR: return MCP; - case EnumConnectorName.COMPOSIO_CONNECTOR: - return Composio; + case EnumConnectorName.COMPOSIO_GOOGLE_DRIVE_CONNECTOR: + return Google Drive; + case EnumConnectorName.COMPOSIO_GMAIL_CONNECTOR: + return Gmail; + case EnumConnectorName.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: + return Google Calendar; // Additional cases for non-enum connector types case "YOUTUBE_CONNECTOR": return YouTube; @@ -87,8 +91,12 @@ export const getConnectorIcon = (connectorType: EnumConnectorName | string, clas return ; case "GOOGLE_DRIVE_FILE": return ; - case "COMPOSIO_CONNECTOR": - return Composio; + case "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": + return Google Drive; + case "COMPOSIO_GMAIL_CONNECTOR": + return Gmail; + case "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": + return Google Calendar; case "NOTE": return ; case "EXTENSION": diff --git a/surfsense_web/contracts/types/connector.types.ts b/surfsense_web/contracts/types/connector.types.ts index 861bf1758..d52469ce9 100644 --- a/surfsense_web/contracts/types/connector.types.ts +++ b/surfsense_web/contracts/types/connector.types.ts @@ -27,7 +27,9 @@ export const searchSourceConnectorTypeEnum = z.enum([ "BOOKSTACK_CONNECTOR", "CIRCLEBACK_CONNECTOR", "MCP_CONNECTOR", - "COMPOSIO_CONNECTOR", + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", ]); export const searchSourceConnector = z.object({ @@ -149,6 +151,13 @@ export const googleDriveIndexBody = z.object({ name: z.string(), }) ), + indexing_options: z + .object({ + max_files_per_folder: z.number().int().min(1).max(1000), + incremental_sync: z.boolean(), + include_subfolders: z.boolean(), + }) + .optional(), }); /** diff --git a/surfsense_web/contracts/types/document.types.ts b/surfsense_web/contracts/types/document.types.ts index a8f3a3b38..01a58173e 100644 --- a/surfsense_web/contracts/types/document.types.ts +++ b/surfsense_web/contracts/types/document.types.ts @@ -25,7 +25,9 @@ export const documentTypeEnum = z.enum([ "CIRCLEBACK", "SURFSENSE_DOCS", "NOTE", - "COMPOSIO_CONNECTOR", + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", ]); export const document = z.object({ From 6139b07a66f859adc80d93310e420209eeb3f2e0 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 03:57:02 +0530 Subject: [PATCH 02/51] fix: remove toolkit view --- .../assistant-ui/connector-popup.tsx | 34 +- .../hooks/use-connector-dialog.ts | 79 ----- .../tabs/all-connectors-tab.tsx | 2 +- .../views/composio-toolkit-view.tsx | 301 ------------------ 4 files changed, 2 insertions(+), 414 deletions(-) delete mode 100644 surfsense_web/components/assistant-ui/connector-popup/views/composio-toolkit-view.tsx diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 228b12836..a1108f7c8 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -21,7 +21,6 @@ import { useConnectorDialog } from "./connector-popup/hooks/use-connector-dialog import { useIndexingConnectors } from "./connector-popup/hooks/use-indexing-connectors"; import { ActiveConnectorsTab } from "./connector-popup/tabs/active-connectors-tab"; import { AllConnectorsTab } from "./connector-popup/tabs/all-connectors-tab"; -import { ComposioToolkitView } from "./connector-popup/views/composio-toolkit-view"; import { ConnectorAccountsListView } from "./connector-popup/views/connector-accounts-list-view"; import { YouTubeCrawlerView } from "./connector-popup/views/youtube-crawler-view"; @@ -88,12 +87,6 @@ export const ConnectorIndicator: FC = () => { setConnectorConfig, setIndexingConnectorConfig, setConnectorName, - // Composio - viewingComposio, - connectingComposioToolkit, - handleOpenComposio, - handleBackFromComposio, - handleConnectComposioToolkit, } = useConnectorDialog(); // Fetch connectors using Electric SQL + PGlite for real-time updates @@ -142,7 +135,7 @@ export const ConnectorIndicator: FC = () => { // Check which connectors are already connected // Using Electric SQL + PGlite for real-time connector updates - const connectedTypes = new Set( + const connectedTypes = new Set( (connectors || []).map((c: SearchSourceConnector) => c.connector_type) ); @@ -183,30 +176,6 @@ export const ConnectorIndicator: FC = () => { {/* YouTube Crawler View - shown when adding YouTube videos */} {isYouTubeView && searchSpaceId ? ( - ) : viewingComposio && searchSpaceId ? ( - - c.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" || - c.connector_type === "COMPOSIO_GMAIL_CONNECTOR" || - c.connector_type === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" - ) - .map((c: SearchSourceConnector) => { - // Map connector type back to toolkit_id - if (c.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR") return "googledrive"; - if (c.connector_type === "COMPOSIO_GMAIL_CONNECTOR") return "gmail"; - if (c.connector_type === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR") return "googlecalendar"; - return c.config?.toolkit_id as string; - }) - .filter(Boolean) - } - onBack={handleBackFromComposio} - onConnectToolkit={handleConnectComposioToolkit} - isConnecting={connectingComposioToolkit !== null} - connectingToolkitId={connectingComposioToolkit} - /> ) : viewingMCPList ? ( { onCreateYouTubeCrawler={handleCreateYouTubeCrawler} onManage={handleStartEdit} onViewAccountsList={handleViewAccountsList} - onOpenComposio={handleOpenComposio} /> diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 4a177ac36..3ea1aab48 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -83,9 +83,6 @@ export const useConnectorDialog = () => { // MCP list view state (for managing multiple MCP connectors) const [viewingMCPList, setViewingMCPList] = useState(false); - // Composio toolkit view state - const [viewingComposio, setViewingComposio] = useState(false); - const [connectingComposioToolkit, setConnectingComposioToolkit] = useState(null); // Track if we came from accounts list when entering edit mode const [cameFromAccountsList, setCameFromAccountsList] = useState<{ @@ -159,17 +156,6 @@ export const useConnectorDialog = () => { setViewingMCPList(true); } - // Clear Composio view if view is not "composio" anymore - if (params.view !== "composio" && viewingComposio) { - setViewingComposio(false); - setConnectingComposioToolkit(null); - } - - // Handle Composio view - if (params.view === "composio" && !viewingComposio) { - setViewingComposio(true); - } - // Handle connect view if (params.view === "connect" && params.connectorType && !connectingConnectorType) { setConnectingConnectorType(params.connectorType); @@ -303,7 +289,6 @@ export const useConnectorDialog = () => { connectingConnectorType, viewingAccountsType, viewingMCPList, - viewingComposio, ]); // Detect OAuth success / Failure and transition to config view @@ -872,63 +857,6 @@ export const useConnectorDialog = () => { router.replace(url.pathname + url.search, { scroll: false }); }, [router]); - // Handle opening Composio toolkit view - const handleOpenComposio = useCallback(() => { - if (!searchSpaceId) return; - - setViewingComposio(true); - - // Update URL to show Composio view - const url = new URL(window.location.href); - url.searchParams.set("modal", "connectors"); - url.searchParams.set("view", "composio"); - router.replace(url.pathname + url.search, { scroll: false }); - }, [searchSpaceId, router]); - - // Handle going back from Composio view - const handleBackFromComposio = useCallback(() => { - setViewingComposio(false); - setConnectingComposioToolkit(null); - const url = new URL(window.location.href); - url.searchParams.set("modal", "connectors"); - url.searchParams.delete("view"); - router.replace(url.pathname + url.search, { scroll: false }); - }, [router]); - - // Handle connecting a Composio toolkit - const handleConnectComposioToolkit = useCallback( - async (toolkitId: string) => { - if (!searchSpaceId) return; - - setConnectingComposioToolkit(toolkitId); - - try { - const response = await authenticatedFetch( - `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}/api/v1/auth/composio/connector/add?space_id=${searchSpaceId}&toolkit_id=${toolkitId}`, - { method: "GET" } - ); - - if (!response.ok) { - throw new Error(`Failed to initiate Composio OAuth for ${toolkitId}`); - } - - const data = await response.json(); - - if (data.auth_url) { - // Redirect to Composio OAuth - window.location.href = data.auth_url; - } else { - throw new Error("No authorization URL received from Composio"); - } - } catch (error) { - console.error("Error connecting Composio toolkit:", error); - toast.error(`Failed to connect ${toolkitId}. Please try again.`); - setConnectingComposioToolkit(null); - } - }, - [searchSpaceId] - ); - // Handle starting indexing const handleStartIndexing = useCallback( async (refreshConnectors: () => void) => { @@ -1589,8 +1517,6 @@ export const useConnectorDialog = () => { allConnectors, viewingAccountsType, viewingMCPList, - viewingComposio, - connectingComposioToolkit, // Setters setSearchQuery, @@ -1626,10 +1552,5 @@ export const useConnectorDialog = () => { connectorConfig, setConnectorConfig, setIndexingConnectorConfig, - - // Composio - handleOpenComposio, - handleBackFromComposio, - handleConnectComposioToolkit, }; }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx index 4a0680200..ffe879d5d 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx @@ -82,7 +82,7 @@ export const AllConnectorsTab: FC = ({ {filteredComposio.length > 0 && (
-

Managed OAuth

+

Managed OAuth (Composio)

{filteredComposio.map((connector) => { diff --git a/surfsense_web/components/assistant-ui/connector-popup/views/composio-toolkit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/views/composio-toolkit-view.tsx deleted file mode 100644 index 456835597..000000000 --- a/surfsense_web/components/assistant-ui/connector-popup/views/composio-toolkit-view.tsx +++ /dev/null @@ -1,301 +0,0 @@ -"use client"; - -import { - ArrowLeft, - Calendar, - Check, - ExternalLink, - Github, - Loader2, - Mail, - HardDrive, - MessageSquare, - FileText, - Zap, -} from "lucide-react"; -import Image from "next/image"; -import type { FC } from "react"; -import { useState } from "react"; -import { Badge } from "@/components/ui/badge"; -import { Button } from "@/components/ui/button"; -import { cn } from "@/lib/utils"; - -interface ComposioToolkit { - id: string; - name: string; - description: string; - isIndexable: boolean; -} - -interface ComposioToolkitViewProps { - searchSpaceId: string; - connectedToolkits: string[]; - onBack: () => void; - onConnectToolkit: (toolkitId: string) => void; - isConnecting: boolean; - connectingToolkitId: string | null; -} - -// Available Composio toolkits -const COMPOSIO_TOOLKITS: ComposioToolkit[] = [ - { - id: "googledrive", - name: "Google Drive", - description: "Search your Drive files and documents", - isIndexable: true, - }, - { - id: "gmail", - name: "Gmail", - description: "Search through your emails", - isIndexable: true, - }, - { - id: "googlecalendar", - name: "Google Calendar", - description: "Search through your events", - isIndexable: true, - }, - { - id: "slack", - name: "Slack", - description: "Search Slack messages", - isIndexable: false, - }, - { - id: "notion", - name: "Notion", - description: "Search Notion pages", - isIndexable: false, - }, - { - id: "github", - name: "GitHub", - description: "Search repositories and code", - isIndexable: false, - }, -]; - -// Get icon for toolkit -const getToolkitIcon = (toolkitId: string, className?: string) => { - const iconClass = className || "size-5"; - - switch (toolkitId) { - case "googledrive": - return Google Drive; - case "gmail": - return Gmail; - case "googlecalendar": - return Google Calendar; - case "slack": - return Slack; - case "notion": - return Notion; - case "github": - return GitHub; - default: - return ; - } -}; - -export const ComposioToolkitView: FC = ({ - searchSpaceId, - connectedToolkits, - onBack, - onConnectToolkit, - isConnecting, - connectingToolkitId, -}) => { - const [hoveredToolkit, setHoveredToolkit] = useState(null); - - // Separate indexable and non-indexable toolkits - const indexableToolkits = COMPOSIO_TOOLKITS.filter((t) => t.isIndexable); - const nonIndexableToolkits = COMPOSIO_TOOLKITS.filter((t) => !t.isIndexable); - - return ( -
- {/* Header */} -
- {/* Back button */} - - - {/* Header content */} -
-
-
- Composio -
-
-

- Composio -

-

- Connect 100+ apps with managed OAuth - no verification needed -

-
-
- - Powered by Composio - - -
-
- - {/* Content */} -
- {/* Indexable Toolkits (Google Services) */} -
-
-

Google Services

- - Indexable - -
-

- Connect Google services via Composio's verified OAuth app. Your data will be indexed and searchable. -

-
- {indexableToolkits.map((toolkit) => { - const isConnected = connectedToolkits.includes(toolkit.id); - const isThisConnecting = connectingToolkitId === toolkit.id; - - return ( -
setHoveredToolkit(toolkit.id)} - onMouseLeave={() => setHoveredToolkit(null)} - className={cn( - "group relative flex flex-col p-4 rounded-xl border transition-all duration-200", - isConnected - ? "border-emerald-500/30 bg-emerald-500/5" - : "border-border bg-card hover:border-violet-500/30 hover:bg-violet-500/5" - )} - > -
-
- {getToolkitIcon(toolkit.id, "size-5")} -
- {isConnected && ( - - - Connected - - )} -
-

{toolkit.name}

-

- {toolkit.description} -

- -
- ); - })} -
-
- - {/* Non-Indexable Toolkits (Coming Soon) */} -
-
-

More Integrations

- - Coming Soon - -
-

- Connect these services for future indexing support. Currently available for connection only. -

-
- {nonIndexableToolkits.map((toolkit) => ( -
-
-
- {getToolkitIcon(toolkit.id, "size-5")} -
- - Soon - -
-

{toolkit.name}

-

- {toolkit.description} -

- -
- ))} -
-
- - {/* Info footer */} -
-
-
- -
-
-

Why use Composio?

-

- Composio provides pre-verified OAuth apps, so you don't need to wait for Google app verification. - Your data is securely processed through Composio's managed authentication. -

-
-
-
-
-
- ); -}; From 4cbf80d73a74170a532cf1b531d7a9d670cc4663 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 04:44:37 +0530 Subject: [PATCH 03/51] feat: enhance Composio integration with pagination and improved error handling - Updated the list_gmail_messages method to support pagination with page tokens, allowing for more efficient message retrieval. - Modified the return structure to include next_page_token and result_size_estimate for better client-side handling. - Improved error handling and logging throughout the Gmail indexing process, ensuring better visibility into failures. - Implemented batch processing for Gmail messages, committing changes incrementally to prevent data loss. - Ensured consistent timestamp updates for connectors, even when no documents are indexed, to maintain accurate UI states. - Refactored the indexing logic to streamline message processing and enhance overall performance. --- .../app/connectors/composio_connector.py | 15 +- .../routes/search_source_connectors_routes.py | 16 +- .../app/services/composio_service.py | 54 +- .../app/tasks/composio_indexer.py | 579 ++++++++++++------ 4 files changed, 451 insertions(+), 213 deletions(-) diff --git a/surfsense_backend/app/connectors/composio_connector.py b/surfsense_backend/app/connectors/composio_connector.py index 18fd9564c..21e339d12 100644 --- a/surfsense_backend/app/connectors/composio_connector.py +++ b/surfsense_backend/app/connectors/composio_connector.py @@ -151,21 +151,23 @@ class ComposioConnector: async def list_gmail_messages( self, query: str = "", - max_results: int = 100, - ) -> tuple[list[dict[str, Any]], str | None]: + max_results: int = 50, + page_token: str | None = None, + ) -> tuple[list[dict[str, Any]], str | None, int | None, str | None]: """ - List Gmail messages via Composio. + List Gmail messages via Composio with pagination support. Args: query: Gmail search query. - max_results: Maximum number of messages. + max_results: Maximum number of messages per page (default: 50). + page_token: Optional pagination token for next page. Returns: - Tuple of (messages list, error message). + Tuple of (messages list, next_page_token, result_size_estimate, error message). """ connected_account_id = await self.get_connected_account_id() if not connected_account_id: - return [], "No connected account ID found" + return [], None, None, "No connected account ID found" entity_id = await self.get_entity_id() service = await self._get_service() @@ -174,6 +176,7 @@ class ComposioConnector: entity_id=entity_id, query=query, max_results=max_results, + page_token=page_token, ) async def get_gmail_message_detail( diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 9ad03fba8..1578ad0d5 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -957,7 +957,7 @@ async def _update_connector_timestamp_by_id(session: AsyncSession, connector_id: connector = result.scalars().first() if connector: - connector.last_indexed_at = datetime.now() + connector.last_indexed_at = datetime.now(UTC) # Use UTC for timezone consistency await session.commit() logger.info(f"Updated last_indexed_at for connector {connector_id}") except Exception as e: @@ -1097,18 +1097,22 @@ async def _run_indexing_with_notifications( ) await update_timestamp_func(session, connector_id) + await session.commit() # Commit timestamp update logger.info( f"Indexing completed successfully: {documents_processed} documents processed" ) # Update notification on success if notification: + # Refresh notification to ensure it's not stale after timestamp update commit + await session.refresh(notification) await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, indexed_count=documents_processed, error_message=None, ) + await session.commit() # Commit to ensure Electric SQL syncs the notification update elif documents_processed > 0: # Update notification to storing stage if notification: @@ -1124,24 +1128,30 @@ async def _run_indexing_with_notifications( f"Indexing completed successfully: {documents_processed} documents processed" ) if notification: + # Refresh notification to ensure it's not stale after indexing function commits + await session.refresh(notification) await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, indexed_count=documents_processed, error_message=None, ) + await session.commit() # Commit to ensure Electric SQL syncs the notification update else: # No new documents processed - check if this is an error or just no changes if error_or_warning: # Actual failure logger.error(f"Indexing failed: {error_or_warning}") if notification: + # Refresh notification to ensure it's not stale after indexing function commits + await session.refresh(notification) await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, indexed_count=0, error_message=error_or_warning, ) + await session.commit() # Commit to ensure Electric SQL syncs the notification update else: # Success - just no new documents to index (all skipped/unchanged) logger.info( @@ -1150,13 +1160,17 @@ async def _run_indexing_with_notifications( # Still update timestamp so ElectricSQL syncs and clears "Syncing" UI if update_timestamp_func: await update_timestamp_func(session, connector_id) + await session.commit() # Commit timestamp update if notification: + # Refresh notification to ensure it's not stale after timestamp update commit + await session.refresh(notification) await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, indexed_count=0, error_message=None, # No error - sync succeeded ) + await session.commit() # Commit to ensure Electric SQL syncs the notification update except Exception as e: logger.error(f"Error in indexing task: {e!s}", exc_info=True) diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 17fbd64e0..e32cbf8a0 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -256,7 +256,6 @@ class ComposioService: "user_id": getattr(acc, "user_id", None), }) - logger.info(f"DEBUG: Found {len(result)} TOTAL connections in Composio") return result except Exception as e: logger.error(f"Failed to list all connections: {e!s}") @@ -273,7 +272,6 @@ class ComposioService: List of connected account details. """ try: - logger.info(f"DEBUG: Calling connected_accounts.list(user_id='{user_id}')") accounts_response = self.client.connected_accounts.list(user_id=user_id) # Handle paginated response (may have .items attribute) or direct list @@ -358,7 +356,6 @@ class ComposioService: # - connected_account_id: for authentication # - user_id: user identifier (SDK uses user_id, not entity_id) # - dangerously_skip_version_check: skip version check for manual execution - logger.info(f"DEBUG: Executing tool {tool_name} with params: {params}") result = self.client.tools.execute( slug=tool_name, connected_account_id=connected_account_id, @@ -366,8 +363,6 @@ class ComposioService: arguments=params or {}, dangerously_skip_version_check=True, ) - logger.info(f"DEBUG: Tool {tool_name} raw result type: {type(result)}") - logger.info(f"DEBUG: Tool {tool_name} raw result: {result}") return {"success": True, "data": result} except Exception as e: logger.error(f"Failed to execute tool {tool_name}: {e!s}") @@ -417,7 +412,6 @@ class ComposioService: return [], None, result.get("error", "Unknown error") data = result.get("data", {}) - logger.info(f"DEBUG: Drive data type: {type(data)}, keys: {data.keys() if isinstance(data, dict) else 'N/A'}") # Handle nested response structure from Composio files = [] @@ -429,7 +423,6 @@ class ComposioService: elif isinstance(data, list): files = data - logger.info(f"DEBUG: Extracted {len(files)} drive files") return files, next_token, None except Exception as e: @@ -478,25 +471,30 @@ class ComposioService: connected_account_id: str, entity_id: str, query: str = "", - max_results: int = 100, - ) -> tuple[list[dict[str, Any]], str | None]: + max_results: int = 50, + page_token: str | None = None, + ) -> tuple[list[dict[str, Any]], str | None, int | None, str | None]: """ - List Gmail messages via Composio. + List Gmail messages via Composio with pagination support. Args: connected_account_id: Composio connected account ID. entity_id: The entity/user ID that owns the connected account. query: Gmail search query. - max_results: Maximum number of messages to return. + max_results: Maximum number of messages to return per page (default: 50 to avoid payload size issues). + page_token: Optional pagination token for next page. Returns: - Tuple of (messages list, error message). + Tuple of (messages list, next_page_token, result_size_estimate, error message). """ try: - # Composio uses snake_case for parameters, max is 500 - params = {"max_results": min(max_results, 500)} + # Use smaller batch size to avoid 413 payload too large errors + # Composio uses snake_case for parameters + params = {"max_results": min(max_results, 50)} # Reduced from 500 to 50 if query: params["query"] = query # Composio uses 'query' not 'q' + if page_token: + params["page_token"] = page_token result = await self.execute_tool( connected_account_id=connected_account_id, @@ -506,25 +504,38 @@ class ComposioService: ) if not result.get("success"): - return [], result.get("error", "Unknown error") + return [], None, result.get("error", "Unknown error") data = result.get("data", {}) - logger.info(f"DEBUG: Gmail data type: {type(data)}, keys: {data.keys() if isinstance(data, dict) else 'N/A'}") - logger.info(f"DEBUG: Gmail full data: {data}") # Try different possible response structures messages = [] + next_token = None + result_size_estimate = None if isinstance(data, dict): messages = data.get("messages", []) or data.get("data", {}).get("messages", []) or data.get("emails", []) + # Check for pagination token in various possible locations + next_token = ( + data.get("nextPageToken") + or data.get("next_page_token") + or data.get("data", {}).get("nextPageToken") + or data.get("data", {}).get("next_page_token") + ) + # Extract resultSizeEstimate if available (Gmail API provides this) + result_size_estimate = ( + data.get("resultSizeEstimate") + or data.get("result_size_estimate") + or data.get("data", {}).get("resultSizeEstimate") + or data.get("data", {}).get("result_size_estimate") + ) elif isinstance(data, list): messages = data - logger.info(f"DEBUG: Extracted {len(messages)} messages") - return messages, None + return messages, next_token, result_size_estimate, None except Exception as e: logger.error(f"Failed to list Gmail messages: {e!s}") - return [], str(e) + return [], None, str(e) async def get_gmail_message_detail( self, connected_account_id: str, entity_id: str, message_id: str @@ -603,8 +614,6 @@ class ComposioService: return [], result.get("error", "Unknown error") data = result.get("data", {}) - logger.info(f"DEBUG: Calendar data type: {type(data)}, keys: {data.keys() if isinstance(data, dict) else 'N/A'}") - logger.info(f"DEBUG: Calendar full data: {data}") # Try different possible response structures events = [] @@ -613,7 +622,6 @@ class ComposioService: elif isinstance(data, list): events = data - logger.info(f"DEBUG: Extracted {len(events)} calendar events") return events, None except Exception as e: diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index 8762561ee..c9cd74234 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -9,6 +9,7 @@ to avoid circular import issues with the connector_indexers package. import logging from datetime import UTC, datetime +from typing import Any from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession @@ -26,6 +27,7 @@ from app.db import ( from app.services.composio_service import INDEXABLE_TOOLKITS, TOOLKIT_TO_DOCUMENT_TYPE from app.services.llm_service import get_user_long_context_llm from app.services.task_logging_service import TaskLoggingService +from app.tasks.connector_indexers.base import calculate_date_range from app.utils.document_converters import ( create_document_chunks, generate_content_hash, @@ -75,7 +77,7 @@ async def update_connector_last_indexed( ) -> None: """Update the last_indexed_at timestamp for a connector.""" if update_last_indexed: - connector.last_indexed_at = datetime.now() + connector.last_indexed_at = datetime.now(UTC) # Use UTC for timezone consistency logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") @@ -287,6 +289,9 @@ async def _index_composio_google_drive( await task_logger.log_task_success( log_entry, success_msg, {"files_count": 0} ) + # CRITICAL: Update timestamp even when no files found so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + await session.commit() return 0, None # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(all_files)} Google Drive files to index via Composio") @@ -380,6 +385,13 @@ async def _index_composio_google_drive( existing_document.updated_at = get_current_timestamp() documents_indexed += 1 + + # Batch commit every 10 documents + if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Drive files processed so far" + ) + await session.commit() continue # Create new document @@ -425,7 +437,11 @@ async def _index_composio_google_drive( session.add(document) documents_indexed += 1 + # Batch commit every 10 documents if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Drive files processed so far" + ) await session.commit() except Exception as e: @@ -433,10 +449,19 @@ async def _index_composio_google_drive( documents_skipped += 1 continue - if documents_indexed > 0: - await update_connector_last_indexed(session, connector, update_last_indexed) + # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs + # This ensures the UI shows "Last indexed" instead of "Never indexed" + await update_connector_last_indexed(session, connector, update_last_indexed) + # Final commit to ensure all documents are persisted (safety net) + # This matches the pattern used in non-Composio Gmail indexer + logger.info( + f"Final commit: Total {documents_indexed} Google Drive files processed" + ) await session.commit() + logger.info( + "Successfully committed all Composio Google Drive document changes to database" + ) await task_logger.log_task_success( log_entry, @@ -454,154 +479,89 @@ async def _index_composio_google_drive( return 0, f"Failed to index Google Drive via Composio: {e!s}" -async def _index_composio_gmail( +async def _process_gmail_message_batch( session: AsyncSession, - connector, + messages: list[dict[str, Any]], + composio_connector: ComposioConnector, connector_id: int, search_space_id: int, user_id: str, - start_date: str | None, - end_date: str | None, - task_logger: TaskLoggingService, - log_entry, - update_last_indexed: bool = True, - max_items: int = 1000, -) -> tuple[int, str]: - """Index Gmail messages via Composio.""" - try: - composio_connector = ComposioConnector(session, connector_id) + total_documents_indexed: int = 0, +) -> tuple[int, int]: + """ + Process a batch of Gmail messages and index them. + + Args: + total_documents_indexed: Running total of documents indexed so far (for batch commits). + + Returns: + Tuple of (documents_indexed, documents_skipped) + """ + documents_indexed = 0 + documents_skipped = 0 - await task_logger.log_task_progress( - log_entry, - f"Fetching Gmail messages via Composio for connector {connector_id}", - {"stage": "fetching_messages"}, - ) + for message in messages: + try: + # Composio uses 'messageId' (camelCase), not 'id' + message_id = message.get("messageId", "") or message.get("id", "") + if not message_id: + documents_skipped += 1 + continue - # Build query with date range - query_parts = [] - if start_date: - query_parts.append(f"after:{start_date.replace('-', '/')}") - if end_date: - query_parts.append(f"before:{end_date.replace('-', '/')}") - query = " ".join(query_parts) + # Composio's GMAIL_FETCH_EMAILS already returns full message content + # No need for a separate detail API call - messages, error = await composio_connector.list_gmail_messages( - query=query, - max_results=max_items, - ) + # Extract message info from Composio response + # Composio structure: messageId, messageText, messageTimestamp, payload.headers, labelIds + payload = message.get("payload", {}) + headers = payload.get("headers", []) - if error: - await task_logger.log_task_failure( - log_entry, f"Failed to fetch Gmail messages: {error}", {} + subject = "No Subject" + sender = "Unknown Sender" + date_str = message.get("messageTimestamp", "Unknown Date") + + for header in headers: + name = header.get("name", "").lower() + value = header.get("value", "") + if name == "subject": + subject = value + elif name == "from": + sender = value + elif name == "date": + date_str = value + + # Format to markdown using the full message data + markdown_content = composio_connector.format_gmail_message_to_markdown(message) + + # Check for empty content (defensive parsing per Composio best practices) + if not markdown_content.strip(): + logger.warning(f"Skipping Gmail message with no content: {subject}") + documents_skipped += 1 + continue + + # Generate unique identifier + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"gmail_{message_id}", search_space_id ) - return 0, f"Failed to fetch Gmail messages: {error}" - if not messages: - success_msg = "No Gmail messages found in the specified date range" - await task_logger.log_task_success( - log_entry, success_msg, {"messages_count": 0} + content_hash = generate_content_hash(markdown_content, search_space_id) + + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash ) - return 0, None # Return None (not error) when no items found - this is success with 0 items - logger.info(f"Found {len(messages)} Gmail messages to index via Composio") + # Get label IDs from Composio response + label_ids = message.get("labelIds", []) + # Extract thread_id if available (for consistency with non-Composio implementation) + thread_id = message.get("threadId", "") or message.get("thread_id", "") - documents_indexed = 0 - documents_skipped = 0 - - for message in messages: - try: - # Composio uses 'messageId' (camelCase), not 'id' - message_id = message.get("messageId", "") or message.get("id", "") - if not message_id: + if existing_document: + if existing_document.content_hash == content_hash: documents_skipped += 1 continue - # Composio's GMAIL_FETCH_EMAILS already returns full message content - # No need for a separate detail API call - - # Extract message info from Composio response - # Composio structure: messageId, messageText, messageTimestamp, payload.headers, labelIds - payload = message.get("payload", {}) - headers = payload.get("headers", []) - - subject = "No Subject" - sender = "Unknown Sender" - date_str = message.get("messageTimestamp", "Unknown Date") - - for header in headers: - name = header.get("name", "").lower() - value = header.get("value", "") - if name == "subject": - subject = value - elif name == "from": - sender = value - elif name == "date": - date_str = value - - # Format to markdown using the full message data - markdown_content = composio_connector.format_gmail_message_to_markdown(message) - - # Generate unique identifier - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"gmail_{message_id}", search_space_id - ) - - content_hash = generate_content_hash(markdown_content, search_space_id) - - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - - # Get label IDs from Composio response - label_ids = message.get("labelIds", []) - - if existing_document: - if existing_document.content_hash == content_hash: - documents_skipped += 1 - continue - - # Update existing - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "message_id": message_id, - "subject": subject, - "sender": sender, - "document_type": "Gmail Message (Composio)", - } - summary_content, summary_embedding = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" - summary_embedding = config.embedding_model_instance.embed(summary_content) - - chunks = await create_document_chunks(markdown_content) - - existing_document.title = f"Gmail: {subject}" - existing_document.content = summary_content - existing_document.content_hash = content_hash - existing_document.embedding = summary_embedding - existing_document.document_metadata = { - "message_id": message_id, - "subject": subject, - "sender": sender, - "date": date_str, - "labels": label_ids, - "connector_id": connector_id, - "source": "composio", - } - existing_document.chunks = chunks - existing_document.updated_at = get_current_timestamp() - - documents_indexed += 1 - continue - - # Create new document + # Update existing user_llm = await get_user_long_context_llm( session, user_id, search_space_id ) @@ -609,6 +569,7 @@ async def _index_composio_gmail( if user_llm: document_metadata = { "message_id": message_id, + "thread_id": thread_id, "subject": subject, "sender": sender, "document_type": "Gmail Message (Composio)", @@ -622,53 +583,276 @@ async def _index_composio_gmail( chunks = await create_document_chunks(markdown_content) - document = Document( - search_space_id=search_space_id, - title=f"Gmail: {subject}", - document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]), - document_metadata={ - "message_id": message_id, - "subject": subject, - "sender": sender, - "date": date_str, - "labels": label_ids, - "connector_id": connector_id, - "toolkit_id": "gmail", - "source": "composio", - }, - content=summary_content, - content_hash=content_hash, - unique_identifier_hash=unique_identifier_hash, - embedding=summary_embedding, - chunks=chunks, - updated_at=get_current_timestamp(), - ) - session.add(document) + existing_document.title = f"Gmail: {subject}" + existing_document.content = summary_content + existing_document.content_hash = content_hash + existing_document.embedding = summary_embedding + existing_document.document_metadata = { + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "date": date_str, + "labels": label_ids, + "connector_id": connector_id, + "source": "composio", + } + existing_document.chunks = chunks + existing_document.updated_at = get_current_timestamp() + documents_indexed += 1 - - if documents_indexed % 10 == 0: + + # Batch commit every 10 documents + current_total = total_documents_indexed + documents_indexed + if current_total % 10 == 0: + logger.info( + f"Committing batch: {current_total} Gmail messages processed so far" + ) await session.commit() - - except Exception as e: - logger.error(f"Error processing Gmail message: {e!s}", exc_info=True) - documents_skipped += 1 continue - if documents_indexed > 0: - await update_connector_last_indexed(session, connector, update_last_indexed) + # Create new document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + if user_llm: + document_metadata = { + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "document_type": "Gmail Message (Composio)", + } + summary_content, summary_embedding = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" + summary_embedding = config.embedding_model_instance.embed(summary_content) + + chunks = await create_document_chunks(markdown_content) + + document = Document( + search_space_id=search_space_id, + title=f"Gmail: {subject}", + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]), + document_metadata={ + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "date": date_str, + "labels": label_ids, + "connector_id": connector_id, + "toolkit_id": "gmail", + "source": "composio", + }, + content=summary_content, + content_hash=content_hash, + unique_identifier_hash=unique_identifier_hash, + embedding=summary_embedding, + chunks=chunks, + updated_at=get_current_timestamp(), + ) + session.add(document) + documents_indexed += 1 + + # Batch commit every 10 documents + current_total = total_documents_indexed + documents_indexed + if current_total % 10 == 0: + logger.info( + f"Committing batch: {current_total} Gmail messages processed so far" + ) + await session.commit() + + except Exception as e: + logger.error(f"Error processing Gmail message: {e!s}", exc_info=True) + documents_skipped += 1 + # Rollback on error to avoid partial state (per Composio best practices) + try: + await session.rollback() + except Exception as rollback_error: + logger.error(f"Error during rollback: {rollback_error!s}", exc_info=True) + continue + + return documents_indexed, documents_skipped + + +async def _index_composio_gmail( + session: AsyncSession, + connector, + connector_id: int, + search_space_id: int, + user_id: str, + start_date: str | None, + end_date: str | None, + task_logger: TaskLoggingService, + log_entry, + update_last_indexed: bool = True, + max_items: int = 1000, +) -> tuple[int, str]: + """Index Gmail messages via Composio with pagination and incremental processing.""" + try: + composio_connector = ComposioConnector(session, connector_id) + + # Normalize date values - handle "undefined" strings from frontend + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) + + # Build query with date range + query_parts = [] + if start_date_str: + query_parts.append(f"after:{start_date_str.replace('-', '/')}") + if end_date_str: + query_parts.append(f"before:{end_date_str.replace('-', '/')}") + query = " ".join(query_parts) if query_parts else "" + + logger.info( + f"Gmail query for connector {connector_id}: '{query}' " + f"(start_date={start_date_str}, end_date={end_date_str})" + ) + + # Use smaller batch size to avoid 413 payload too large errors + batch_size = 50 + page_token = None + total_documents_indexed = 0 + total_documents_skipped = 0 + total_messages_fetched = 0 + result_size_estimate = None # Will be set from first API response + + while total_messages_fetched < max_items: + # Calculate how many messages to fetch in this batch + remaining = max_items - total_messages_fetched + current_batch_size = min(batch_size, remaining) + + # Use result_size_estimate if available, otherwise fall back to max_items + estimated_total = result_size_estimate if result_size_estimate is not None else max_items + # Cap estimated_total at max_items to avoid showing misleading progress + estimated_total = min(estimated_total, max_items) + + await task_logger.log_task_progress( + log_entry, + f"Fetching Gmail messages batch via Composio for connector {connector_id} " + f"({total_messages_fetched}/{estimated_total} fetched, {total_documents_indexed} indexed)", + { + "stage": "fetching_messages", + "batch_size": current_batch_size, + "total_fetched": total_messages_fetched, + "total_indexed": total_documents_indexed, + "estimated_total": estimated_total, + }, + ) + + # Fetch batch of messages + messages, next_token, result_size_estimate_batch, error = await composio_connector.list_gmail_messages( + query=query, + max_results=current_batch_size, + page_token=page_token, + ) + + if error: + await task_logger.log_task_failure( + log_entry, f"Failed to fetch Gmail messages: {error}", {} + ) + return 0, f"Failed to fetch Gmail messages: {error}" + + if not messages: + # No more messages available + break + + # Update result_size_estimate from first response (Gmail provides this estimate) + if result_size_estimate is None and result_size_estimate_batch is not None: + result_size_estimate = result_size_estimate_batch + logger.info(f"Gmail API estimated {result_size_estimate} total messages for query: '{query}'") + + total_messages_fetched += len(messages) + # Recalculate estimated_total after potentially updating result_size_estimate + estimated_total = result_size_estimate if result_size_estimate is not None else max_items + estimated_total = min(estimated_total, max_items) + + logger.info( + f"Fetched batch of {len(messages)} Gmail messages " + f"(total: {total_messages_fetched}/{estimated_total})" + ) + + # Process batch incrementally + batch_indexed, batch_skipped = await _process_gmail_message_batch( + session=session, + messages=messages, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + total_documents_indexed=total_documents_indexed, + ) + + total_documents_indexed += batch_indexed + total_documents_skipped += batch_skipped + + logger.info( + f"Processed batch: {batch_indexed} indexed, {batch_skipped} skipped " + f"(total: {total_documents_indexed} indexed, {total_documents_skipped} skipped)" + ) + + # Batch commits happen in _process_gmail_message_batch every 10 documents + # This ensures progress is saved incrementally, preventing data loss on crashes + + # Check if we should continue + if not next_token: + # No more pages available + break + + if len(messages) < current_batch_size: + # Last page had fewer items than requested, we're done + break + + # Continue with next page + page_token = next_token + + if total_messages_fetched == 0: + success_msg = "No Gmail messages found in the specified date range" + await task_logger.log_task_success( + log_entry, success_msg, {"messages_count": 0} + ) + # CRITICAL: Update timestamp even when no messages found so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + await session.commit() + return 0, None # Return None (not error) when no items found + + # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs + # This ensures the UI shows "Last indexed" instead of "Never indexed" + await update_connector_last_indexed(session, connector, update_last_indexed) + + # Final commit to ensure all documents are persisted (safety net) + # This matches the pattern used in non-Composio Gmail indexer + logger.info( + f"Final commit: Total {total_documents_indexed} Gmail messages processed" + ) await session.commit() + logger.info( + "Successfully committed all Composio Gmail document changes to database" + ) await task_logger.log_task_success( log_entry, f"Successfully completed Gmail indexing via Composio for connector {connector_id}", { - "documents_indexed": documents_indexed, - "documents_skipped": documents_skipped, + "documents_indexed": total_documents_indexed, + "documents_skipped": total_documents_skipped, + "messages_fetched": total_messages_fetched, }, ) - return documents_indexed, None + return total_documents_indexed, None except Exception as e: logger.error(f"Failed to index Gmail via Composio: {e!s}", exc_info=True) @@ -689,8 +873,6 @@ async def _index_composio_google_calendar( max_items: int = 2500, ) -> tuple[int, str]: """Index Google Calendar events via Composio.""" - from datetime import datetime, timedelta - try: composio_connector = ComposioConnector(session, connector_id) @@ -700,18 +882,26 @@ async def _index_composio_google_calendar( {"stage": "fetching_events"}, ) - # Build time range - if start_date: - time_min = f"{start_date}T00:00:00Z" - else: - # Default to 365 days ago - default_start = datetime.now() - timedelta(days=365) - time_min = default_start.strftime("%Y-%m-%dT00:00:00Z") + # Normalize date values - handle "undefined" strings from frontend + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None - if end_date: - time_max = f"{end_date}T23:59:59Z" - else: - time_max = datetime.now().strftime("%Y-%m-%dT23:59:59Z") + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) + + # Build time range for API call + time_min = f"{start_date_str}T00:00:00Z" + time_max = f"{end_date_str}T23:59:59Z" + + logger.info( + f"Google Calendar query for connector {connector_id}: " + f"(start_date={start_date_str}, end_date={end_date_str})" + ) events, error = await composio_connector.list_calendar_events( time_min=time_min, @@ -730,6 +920,9 @@ async def _index_composio_google_calendar( await task_logger.log_task_success( log_entry, success_msg, {"events_count": 0} ) + # CRITICAL: Update timestamp even when no events found so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + await session.commit() return 0, None # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(events)} Google Calendar events to index via Composio") @@ -814,6 +1007,13 @@ async def _index_composio_google_calendar( existing_document.updated_at = get_current_timestamp() documents_indexed += 1 + + # Batch commit every 10 documents + if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Calendar events processed so far" + ) + await session.commit() continue # Create new document @@ -863,7 +1063,11 @@ async def _index_composio_google_calendar( session.add(document) documents_indexed += 1 + # Batch commit every 10 documents if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Calendar events processed so far" + ) await session.commit() except Exception as e: @@ -871,10 +1075,19 @@ async def _index_composio_google_calendar( documents_skipped += 1 continue - if documents_indexed > 0: - await update_connector_last_indexed(session, connector, update_last_indexed) + # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs + # This ensures the UI shows "Last indexed" instead of "Never indexed" + await update_connector_last_indexed(session, connector, update_last_indexed) + # Final commit to ensure all documents are persisted (safety net) + # This matches the pattern used in non-Composio Gmail indexer + logger.info( + f"Final commit: Total {documents_indexed} Google Calendar events processed" + ) await session.commit() + logger.info( + "Successfully committed all Composio Google Calendar document changes to database" + ) await task_logger.log_task_success( log_entry, From e6a4ac7c9cd14c3bcae4bbeb91b7b58abd538b80 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 04:56:15 +0530 Subject: [PATCH 04/51] fix: change animation from spring to tween for sliding --- .../components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx | 2 +- .../components/layout/ui/sidebar/AllSharedChatsSidebar.tsx | 2 +- surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/surfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx index 39f1b95bc..c094ff44a 100644 --- a/surfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/AllPrivateChatsSidebar.tsx @@ -231,7 +231,7 @@ export function AllPrivateChatsSidebar({ initial={{ x: "-100%" }} animate={{ x: 0 }} exit={{ x: "-100%" }} - transition={{ type: "spring", damping: 25, stiffness: 300 }} + transition={{ type: "tween", duration: 0.3, ease: "easeOut" }} className="fixed inset-y-0 left-0 z-70 w-80 bg-background shadow-xl flex flex-col pointer-events-auto isolate" role="dialog" aria-modal="true" diff --git a/surfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsx index 8dd593945..76dbf1aad 100644 --- a/surfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/AllSharedChatsSidebar.tsx @@ -231,7 +231,7 @@ export function AllSharedChatsSidebar({ initial={{ x: "-100%" }} animate={{ x: 0 }} exit={{ x: "-100%" }} - transition={{ type: "spring", damping: 25, stiffness: 300 }} + transition={{ type: "tween", duration: 0.3, ease: "easeOut" }} className="fixed inset-y-0 left-0 z-70 w-80 bg-background shadow-xl flex flex-col pointer-events-auto isolate" role="dialog" aria-modal="true" diff --git a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx index 166d77eca..a3fd3ea14 100644 --- a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx @@ -446,7 +446,7 @@ export function InboxSidebar({ initial={{ x: "-100%" }} animate={{ x: 0 }} exit={{ x: "-100%" }} - transition={{ type: "spring", damping: 25, stiffness: 300 }} + transition={{ type: "tween", duration: 0.3, ease: "easeOut" }} className="fixed inset-y-0 left-0 z-70 w-90 bg-background shadow-xl flex flex-col pointer-events-auto isolate" role="dialog" aria-modal="true" From 7ec7ed5c3b6dde85127e8809d7c07c47fe62fd87 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 05:17:28 +0530 Subject: [PATCH 05/51] feat: enhance Composio Google Drive integration with folder and file selection - Added a new endpoint to list folders and files in a user's Composio Google Drive, supporting hierarchical structure. - Implemented UI components for selecting specific folders and files to index, improving user control over indexing options. - Introduced indexing options for maximum files per folder and inclusion of subfolders, allowing for customizable indexing behavior. - Enhanced error handling and logging for Composio Drive operations, ensuring better visibility into issues during file retrieval and indexing. - Updated the Composio configuration component to reflect new selection capabilities and indexing options. --- .../app/routes/composio_routes.py | 122 ++++++ .../routes/search_source_connectors_routes.py | 40 +- .../app/services/composio_service.py | 6 +- .../app/tasks/composio_indexer.py | 195 +++++++++- .../components/composio-config.tsx | 294 +++++++++++++- .../views/connector-edit-view.tsx | 7 +- .../hooks/use-connector-dialog.ts | 8 +- .../connectors/composio-drive-folder-tree.tsx | 365 ++++++++++++++++++ .../hooks/use-composio-drive-folders.ts | 29 ++ .../lib/apis/connectors-api.service.ts | 23 ++ surfsense_web/lib/query-client/cache-keys.ts | 4 + 11 files changed, 1069 insertions(+), 24 deletions(-) create mode 100644 surfsense_web/components/connectors/composio-drive-folder-tree.tsx create mode 100644 surfsense_web/hooks/use-composio-drive-folders.ts diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 77891fc88..25e545dfb 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -8,6 +8,7 @@ Endpoints: - GET /composio/toolkits - List available Composio toolkits - GET /auth/composio/connector/add - Initiate OAuth for a specific toolkit - GET /auth/composio/connector/callback - Handle OAuth callback +- GET /connectors/{connector_id}/composio-drive/folders - List folders/files for Composio Google Drive """ import asyncio @@ -369,3 +370,124 @@ async def composio_callback( raise HTTPException( status_code=500, detail=f"Failed to complete Composio OAuth: {e!s}" ) from e + + +@router.get("/connectors/{connector_id}/composio-drive/folders") +async def list_composio_drive_folders( + connector_id: int, + parent_id: str | None = None, + session: AsyncSession = Depends(get_async_session), + user: User = Depends(current_active_user), +): + """ + List folders AND files in user's Google Drive via Composio with hierarchical support. + + This is called at index time from the manage connector page to display + the complete file system (folders and files). Only folders are selectable. + + Args: + connector_id: ID of the Composio Google Drive connector + parent_id: Optional parent folder ID to list contents (None for root) + + Returns: + JSON with list of items: { + "items": [ + {"id": str, "name": str, "mimeType": str, "isFolder": bool, ...}, + ... + ] + } + """ + if not ComposioService.is_enabled(): + raise HTTPException( + status_code=503, + detail="Composio integration is not enabled.", + ) + + try: + # Get connector and verify ownership + result = await session.execute( + select(SearchSourceConnector).filter( + SearchSourceConnector.id == connector_id, + SearchSourceConnector.user_id == user.id, + SearchSourceConnector.connector_type + == SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + ) + ) + connector = result.scalars().first() + + if not connector: + raise HTTPException( + status_code=404, + detail="Composio Google Drive connector not found or access denied", + ) + + # Get Composio connected account ID from config + composio_connected_account_id = connector.config.get("composio_connected_account_id") + if not composio_connected_account_id: + raise HTTPException( + status_code=400, + detail="Composio connected account not found. Please reconnect the connector.", + ) + + # Initialize Composio service and fetch files + service = ComposioService() + entity_id = f"surfsense_{user.id}" + + # Fetch files/folders from Composio Google Drive + files, next_token, error = await service.get_drive_files( + connected_account_id=composio_connected_account_id, + entity_id=entity_id, + folder_id=parent_id, + page_size=100, + ) + + if error: + logger.error(f"Failed to list Composio Drive files: {error}") + raise HTTPException( + status_code=500, detail=f"Failed to list folder contents: {error}" + ) + + # Transform files to match the expected format with isFolder field + items = [] + for file_info in files: + file_id = file_info.get("id", "") or file_info.get("fileId", "") + file_name = file_info.get("name", "") or file_info.get("fileName", "") or "Untitled" + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + + if not file_id: + continue + + is_folder = mime_type == "application/vnd.google-apps.folder" + + items.append({ + "id": file_id, + "name": file_name, + "mimeType": mime_type, + "isFolder": is_folder, + "parents": file_info.get("parents", []), + "size": file_info.get("size"), + "iconLink": file_info.get("iconLink"), + }) + + # Sort: folders first, then files, both alphabetically + folders = sorted([item for item in items if item["isFolder"]], key=lambda x: x["name"].lower()) + files_list = sorted([item for item in items if not item["isFolder"]], key=lambda x: x["name"].lower()) + items = folders + files_list + + folder_count = len(folders) + file_count = len(files_list) + + logger.info( + f"✅ Listed {len(items)} total items ({folder_count} folders, {file_count} files) for Composio connector {connector_id}" + + (f" in folder {parent_id}" if parent_id else " in ROOT") + ) + + return {"items": items} + + except HTTPException: + raise + except Exception as e: + logger.error(f"Error listing Composio Drive contents: {e!s}", exc_info=True) + raise HTTPException( + status_code=500, detail=f"Failed to list Drive contents: {e!s}" + ) from e diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 1578ad0d5..89cdd9f95 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -897,8 +897,46 @@ async def index_connector_content( ) response_message = "Web page indexing started in the background." + elif connector.connector_type == SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR: + from app.tasks.celery_tasks.connector_tasks import ( + index_composio_connector_task, + ) + + # For Composio Google Drive, if drive_items is provided, update connector config + # This allows the UI to pass folder/file selection like the regular Google Drive connector + if drive_items and drive_items.has_items(): + # Update connector config with the selected folders/files + config = connector.config or {} + config["selected_folders"] = [{"id": f.id, "name": f.name} for f in drive_items.folders] + config["selected_files"] = [{"id": f.id, "name": f.name} for f in drive_items.files] + if drive_items.indexing_options: + config["indexing_options"] = { + "max_files_per_folder": drive_items.indexing_options.max_files_per_folder, + "incremental_sync": drive_items.indexing_options.incremental_sync, + "include_subfolders": drive_items.indexing_options.include_subfolders, + } + connector.config = config + from sqlalchemy.orm.attributes import flag_modified + flag_modified(connector, "config") + await session.commit() + await session.refresh(connector) + + logger.info( + f"Triggering Composio Google Drive indexing for connector {connector_id} into search space {search_space_id}, " + f"folders: {len(drive_items.folders)}, files: {len(drive_items.files)}" + ) + else: + logger.info( + f"Triggering Composio Google Drive indexing for connector {connector_id} into search space {search_space_id} " + f"using existing config (from {indexing_from} to {indexing_to})" + ) + + index_composio_connector_task.delay( + connector_id, search_space_id, str(user.id), indexing_from, indexing_to + ) + response_message = "Composio Google Drive indexing started in the background." + elif connector.connector_type in [ - SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, ]: diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index e32cbf8a0..5a6148533 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -397,7 +397,11 @@ class ComposioService: "page_size": min(page_size, 100), } if folder_id: - params["folder_id"] = folder_id + # List contents of a specific folder (exclude shortcuts - we don't have access to them) + params["q"] = f"'{folder_id}' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" + else: + # List root-level items only (My Drive root), exclude shortcuts + params["q"] = "'root' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" if page_token: params["page_token"] = page_token diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index c9cd74234..f568d4134 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -252,37 +252,123 @@ async def _index_composio_google_drive( update_last_indexed: bool = True, max_items: int = 1000, ) -> tuple[int, str]: - """Index Google Drive files via Composio.""" + """Index Google Drive files via Composio. + + Supports folder/file selection via connector config: + - selected_folders: List of {id, name} for folders to index + - selected_files: List of {id, name} for individual files to index + - indexing_options: {max_files_per_folder, incremental_sync, include_subfolders} + """ try: composio_connector = ComposioConnector(session, connector_id) + connector_config = await composio_connector.get_config() + + # Get folder/file selection configuration + selected_folders = connector_config.get("selected_folders", []) + selected_files = connector_config.get("selected_files", []) + indexing_options = connector_config.get("indexing_options", {}) + + max_files_per_folder = indexing_options.get("max_files_per_folder", 100) + include_subfolders = indexing_options.get("include_subfolders", True) await task_logger.log_task_progress( log_entry, f"Fetching Google Drive files via Composio for connector {connector_id}", - {"stage": "fetching_files"}, + {"stage": "fetching_files", "selected_folders": len(selected_folders), "selected_files": len(selected_files)}, ) - # Fetch files all_files = [] - page_token = None - while len(all_files) < max_items: - files, next_token, error = await composio_connector.list_drive_files( - page_token=page_token, - page_size=min(100, max_items - len(all_files)), - ) + # If specific folders/files are selected, fetch from those + if selected_folders or selected_files: + # Fetch files from selected folders + for folder in selected_folders: + folder_id = folder.get("id") + folder_name = folder.get("name", "Unknown") + + if not folder_id: + continue + + # Handle special case for "root" folder + actual_folder_id = None if folder_id == "root" else folder_id + + logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") + + # Fetch files from this folder + folder_files = [] + page_token = None + + while len(folder_files) < max_files_per_folder: + files, next_token, error = await composio_connector.list_drive_files( + folder_id=actual_folder_id, + page_token=page_token, + page_size=min(100, max_files_per_folder - len(folder_files)), + ) - if error: - await task_logger.log_task_failure( - log_entry, f"Failed to fetch Drive files: {error}", {} + if error: + logger.warning(f"Failed to fetch files from folder {folder_name}: {error}") + break + + # Process files + for file_info in files: + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + + # If it's a folder and include_subfolders is enabled, recursively fetch + if mime_type == "application/vnd.google-apps.folder": + if include_subfolders: + # Add subfolder files recursively + subfolder_files = await _fetch_folder_files_recursively( + composio_connector, + file_info.get("id"), + max_files=max_files_per_folder, + current_count=len(folder_files), + ) + folder_files.extend(subfolder_files) + else: + folder_files.append(file_info) + + if not next_token: + break + page_token = next_token + + all_files.extend(folder_files[:max_files_per_folder]) + logger.info(f"Found {len(folder_files)} files in folder {folder_name}") + + # Add specifically selected files + for selected_file in selected_files: + file_id = selected_file.get("id") + file_name = selected_file.get("name", "Unknown") + + if not file_id: + continue + + # Add file info (we'll fetch content later during indexing) + all_files.append({ + "id": file_id, + "name": file_name, + "mimeType": "", # Will be determined later + }) + else: + # No selection specified - fetch all files (original behavior) + page_token = None + + while len(all_files) < max_items: + files, next_token, error = await composio_connector.list_drive_files( + page_token=page_token, + page_size=min(100, max_items - len(all_files)), ) - return 0, f"Failed to fetch Drive files: {error}" - all_files.extend(files) + if error: + await task_logger.log_task_failure( + log_entry, f"Failed to fetch Drive files: {error}", {} + ) + return 0, f"Failed to fetch Drive files: {error}" - if not next_token: - break - page_token = next_token + all_files.extend(files) + + if not next_token: + break + page_token = next_token if not all_files: success_msg = "No Google Drive files found" @@ -479,6 +565,81 @@ async def _index_composio_google_drive( return 0, f"Failed to index Google Drive via Composio: {e!s}" +async def _fetch_folder_files_recursively( + composio_connector: ComposioConnector, + folder_id: str, + max_files: int = 100, + current_count: int = 0, + depth: int = 0, + max_depth: int = 10, +) -> list[dict[str, Any]]: + """ + Recursively fetch files from a Google Drive folder via Composio. + + Args: + composio_connector: The Composio connector instance + folder_id: Google Drive folder ID + max_files: Maximum number of files to fetch + current_count: Current number of files already fetched + depth: Current recursion depth + max_depth: Maximum recursion depth to prevent infinite loops + + Returns: + List of file info dictionaries + """ + if depth >= max_depth: + logger.warning(f"Max recursion depth reached for folder {folder_id}") + return [] + + if current_count >= max_files: + return [] + + all_files = [] + page_token = None + + try: + while len(all_files) + current_count < max_files: + files, next_token, error = await composio_connector.list_drive_files( + folder_id=folder_id, + page_token=page_token, + page_size=min(100, max_files - len(all_files) - current_count), + ) + + if error: + logger.warning(f"Error fetching files from subfolder {folder_id}: {error}") + break + + for file_info in files: + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + + if mime_type == "application/vnd.google-apps.folder": + # Recursively fetch from subfolders + subfolder_files = await _fetch_folder_files_recursively( + composio_connector, + file_info.get("id"), + max_files=max_files, + current_count=current_count + len(all_files), + depth=depth + 1, + max_depth=max_depth, + ) + all_files.extend(subfolder_files) + else: + all_files.append(file_info) + + if len(all_files) + current_count >= max_files: + break + + if not next_token: + break + page_token = next_token + + return all_files[:max_files - current_count] + + except Exception as e: + logger.error(f"Error in recursive folder fetch: {e!s}") + return all_files + + async def _process_gmail_message_batch( session: AsyncSession, messages: list[dict[str, Any]], diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx index a96f906fe..255d0cef4 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx @@ -1,7 +1,20 @@ "use client"; +import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation } from "lucide-react"; import type { FC } from "react"; +import { useEffect, useState } from "react"; +import { ComposioDriveFolderTree } from "@/components/connectors/composio-drive-folder-tree"; import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import { cn } from "@/lib/utils"; @@ -11,11 +24,134 @@ interface ComposioConfigProps { onNameChange?: (name: string) => void; } -export const ComposioConfig: FC = ({ connector }) => { +interface SelectedFolder { + id: string; + name: string; +} + +interface IndexingOptions { + max_files_per_folder: number; + incremental_sync: boolean; + include_subfolders: boolean; +} + +const DEFAULT_INDEXING_OPTIONS: IndexingOptions = { + max_files_per_folder: 100, + incremental_sync: true, + include_subfolders: true, +}; + +// Helper to get appropriate icon for file type based on file name +function getFileIconFromName(fileName: string, className: string = "size-3.5 shrink-0") { + const lowerName = fileName.toLowerCase(); + // Spreadsheets + if ( + lowerName.endsWith(".xlsx") || + lowerName.endsWith(".xls") || + lowerName.endsWith(".csv") || + lowerName.includes("spreadsheet") + ) { + return ; + } + // Presentations + if ( + lowerName.endsWith(".pptx") || + lowerName.endsWith(".ppt") || + lowerName.includes("presentation") + ) { + return ; + } + // Documents (word, text only - not PDF) + if ( + lowerName.endsWith(".docx") || + lowerName.endsWith(".doc") || + lowerName.endsWith(".txt") || + lowerName.includes("document") || + lowerName.includes("word") || + lowerName.includes("text") + ) { + return ; + } + // Images + if ( + lowerName.endsWith(".png") || + lowerName.endsWith(".jpg") || + lowerName.endsWith(".jpeg") || + lowerName.endsWith(".gif") || + lowerName.endsWith(".webp") || + lowerName.endsWith(".svg") + ) { + return ; + } + // Default (including PDF) + return ; +} + +export const ComposioConfig: FC = ({ connector, onConfigChange }) => { const toolkitId = connector.config?.toolkit_id as string; const isIndexable = connector.config?.is_indexable as boolean; const composioAccountId = connector.config?.composio_connected_account_id as string; + // Check if this is a Google Drive Composio connector + const isGoogleDrive = toolkitId === "googledrive"; + + // Initialize with existing selected folders and files from connector config + const existingFolders = + (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; + const existingFiles = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; + const existingIndexingOptions = + (connector.config?.indexing_options as IndexingOptions | undefined) || DEFAULT_INDEXING_OPTIONS; + + const [selectedFolders, setSelectedFolders] = useState(existingFolders); + const [selectedFiles, setSelectedFiles] = useState(existingFiles); + const [showFolderSelector, setShowFolderSelector] = useState(false); + const [indexingOptions, setIndexingOptions] = useState(existingIndexingOptions); + + // Update selected folders and files when connector config changes + useEffect(() => { + const folders = (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; + const files = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; + const options = + (connector.config?.indexing_options as IndexingOptions | undefined) || + DEFAULT_INDEXING_OPTIONS; + setSelectedFolders(folders); + setSelectedFiles(files); + setIndexingOptions(options); + }, [connector.config]); + + const updateConfig = ( + folders: SelectedFolder[], + files: SelectedFolder[], + options: IndexingOptions + ) => { + if (onConfigChange) { + onConfigChange({ + ...connector.config, + selected_folders: folders, + selected_files: files, + indexing_options: options, + }); + } + }; + + const handleSelectFolders = (folders: SelectedFolder[]) => { + setSelectedFolders(folders); + updateConfig(folders, selectedFiles, indexingOptions); + }; + + const handleSelectFiles = (files: SelectedFolder[]) => { + setSelectedFiles(files); + updateConfig(selectedFolders, files, indexingOptions); + }; + + const handleIndexingOptionChange = (key: keyof IndexingOptions, value: number | boolean) => { + const newOptions = { ...indexingOptions, [key]: value }; + setIndexingOptions(newOptions); + updateConfig(selectedFolders, selectedFiles, newOptions); + }; + + const totalSelected = selectedFolders.length + selectedFiles.length; + return (
{/* Connection Details */} @@ -52,6 +188,162 @@ export const ComposioConfig: FC = ({ connector }) => { )}
+ + {/* Google Drive specific: Folder & File Selection */} + {isGoogleDrive && isIndexable && ( + <> +
+
+

Folder & File Selection

+

+ Select specific folders and/or individual files to index. +

+
+ + {totalSelected > 0 && ( +
+

+ Selected {totalSelected} item{totalSelected > 1 ? "s" : ""}: {(() => { + const parts: string[] = []; + if (selectedFolders.length > 0) { + parts.push( + `${selectedFolders.length} folder${selectedFolders.length > 1 ? "s" : ""}` + ); + } + if (selectedFiles.length > 0) { + parts.push(`${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}`); + } + return parts.length > 0 ? `(${parts.join(" ")})` : ""; + })()} +

+
+ {selectedFolders.map((folder) => ( +

+ + {folder.name} +

+ ))} + {selectedFiles.map((file) => ( +

+ {getFileIconFromName(file.name)} + {file.name} +

+ ))} +
+
+ )} + + {showFolderSelector ? ( +
+ + +
+ ) : ( + + )} +
+ + {/* Indexing Options */} +
+
+

Indexing Options

+

+ Configure how files are indexed from your Google Drive. +

+
+ + {/* Max files per folder */} +
+
+
+ +

+ Maximum number of files to index from each folder +

+
+ +
+
+ + {/* Include subfolders toggle */} +
+
+ +

+ Recursively index files in subfolders of selected folders +

+
+ handleIndexingOptionChange("include_subfolders", checked)} + /> +
+
+ + )}
); }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 66afd84a5..71258a519 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -224,8 +224,11 @@ export const ConnectorEditView: FC = ({ {/* Periodic sync - shown for all indexable connectors */} {(() => { - // Check if Google Drive has folders/files selected + // Check if Google Drive (regular or Composio) has folders/files selected const isGoogleDrive = connector.connector_type === "GOOGLE_DRIVE_CONNECTOR"; + const isComposioGoogleDrive = + connector.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR"; + const requiresFolderSelection = isGoogleDrive || isComposioGoogleDrive; const selectedFolders = (connector.config?.selected_folders as | Array<{ id: string; name: string }> @@ -235,7 +238,7 @@ export const ConnectorEditView: FC = ({ | Array<{ id: string; name: string }> | undefined) || []; const hasItemsSelected = selectedFolders.length > 0 || selectedFiles.length > 0; - const isDisabled = isGoogleDrive && !hasItemsSelected; + const isDisabled = requiresFolderSelection && !hasItemsSelected; return ( { return; } - // Prevent periodic indexing for Google Drive without folders/files selected - if (periodicEnabled && editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR") { + // Prevent periodic indexing for Google Drive (regular or Composio) without folders/files selected + if ( + periodicEnabled && + (editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR" || + editingConnector.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR") + ) { const selectedFolders = (connectorConfig || editingConnector.config)?.selected_folders as | Array<{ id: string; name: string }> | undefined; diff --git a/surfsense_web/components/connectors/composio-drive-folder-tree.tsx b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx new file mode 100644 index 000000000..72c36edd5 --- /dev/null +++ b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx @@ -0,0 +1,365 @@ +"use client"; + +import { + ChevronDown, + ChevronRight, + File, + FileSpreadsheet, + FileText, + FolderClosed, + FolderOpen, + HardDrive, + Image, + Loader2, + Presentation, +} from "lucide-react"; +import { useState } from "react"; +import { Checkbox } from "@/components/ui/checkbox"; +import { ScrollArea } from "@/components/ui/scroll-area"; +import { useComposioDriveFolders } from "@/hooks/use-composio-drive-folders"; +import { connectorsApiService } from "@/lib/apis/connectors-api.service"; +import { cn } from "@/lib/utils"; + +interface DriveItem { + id: string; + name: string; + mimeType: string; + isFolder: boolean; + parents?: string[]; + size?: number; + iconLink?: string; +} + +interface ItemTreeNode { + item: DriveItem; + children: DriveItem[] | null; // null = not loaded, [] = loaded but empty + isExpanded: boolean; + isLoading: boolean; +} + +interface SelectedFolder { + id: string; + name: string; +} + +interface ComposioDriveFolderTreeProps { + connectorId: number; + selectedFolders: SelectedFolder[]; + onSelectFolders: (folders: SelectedFolder[]) => void; + selectedFiles?: SelectedFolder[]; + onSelectFiles?: (files: SelectedFolder[]) => void; +} + +// Helper to get appropriate icon for file type +function getFileIcon(mimeType: string, className: string = "h-4 w-4") { + if (mimeType.includes("spreadsheet") || mimeType.includes("excel")) { + return ; + } + if (mimeType.includes("presentation") || mimeType.includes("powerpoint")) { + return ; + } + if (mimeType.includes("document") || mimeType.includes("word") || mimeType.includes("text")) { + return ; + } + if (mimeType.includes("image")) { + return ; + } + return ; +} + +export function ComposioDriveFolderTree({ + connectorId, + selectedFolders, + onSelectFolders, + selectedFiles = [], + onSelectFiles = () => {}, +}: ComposioDriveFolderTreeProps) { + const [itemStates, setItemStates] = useState>(new Map()); + + const { data: rootData, isLoading: isLoadingRoot } = useComposioDriveFolders({ + connectorId, + }); + + const rootItems = rootData?.items || []; + + const isFolderSelected = (folderId: string): boolean => { + return selectedFolders.some((f) => f.id === folderId); + }; + + const isFileSelected = (fileId: string): boolean => { + return selectedFiles.some((f) => f.id === fileId); + }; + + const toggleFolderSelection = (folderId: string, folderName: string) => { + if (isFolderSelected(folderId)) { + onSelectFolders(selectedFolders.filter((f) => f.id !== folderId)); + } else { + onSelectFolders([...selectedFolders, { id: folderId, name: folderName }]); + } + }; + + const toggleFileSelection = (fileId: string, fileName: string) => { + if (isFileSelected(fileId)) { + onSelectFiles(selectedFiles.filter((f) => f.id !== fileId)); + } else { + onSelectFiles([...selectedFiles, { id: fileId, name: fileName }]); + } + }; + + /** + * Find an item by ID across all loaded items (root and nested). + */ + const findItem = (itemId: string): DriveItem | undefined => { + const state = itemStates.get(itemId); + if (state?.item) return state.item; + + const rootItem = rootItems.find((item) => item.id === itemId); + if (rootItem) return rootItem; + + for (const [, nodeState] of itemStates) { + if (nodeState.children) { + const found = nodeState.children.find((child) => child.id === itemId); + if (found) return found; + } + } + + return undefined; + }; + + /** + * Load and display contents of a specific folder. + */ + const loadFolderContents = async (folderId: string) => { + try { + setItemStates((prev) => { + const newMap = new Map(prev); + const existing = newMap.get(folderId); + if (existing) { + newMap.set(folderId, { ...existing, isLoading: true }); + } else { + const item = findItem(folderId); + if (item) { + newMap.set(folderId, { + item, + children: null, + isExpanded: false, + isLoading: true, + }); + } + } + return newMap; + }); + + const data = await connectorsApiService.listComposioDriveFolders({ + connector_id: connectorId, + parent_id: folderId, + }); + const items = data.items || []; + + setItemStates((prev) => { + const newMap = new Map(prev); + const existing = newMap.get(folderId); + const item = existing?.item || findItem(folderId); + + if (item) { + newMap.set(folderId, { + item, + children: items, + isExpanded: true, + isLoading: false, + }); + } else { + console.error(`Could not find item for folderId: ${folderId}`); + } + return newMap; + }); + } catch (error) { + console.error("Error loading folder contents:", error); + setItemStates((prev) => { + const newMap = new Map(prev); + const existing = newMap.get(folderId); + if (existing) { + newMap.set(folderId, { ...existing, isLoading: false }); + } + return newMap; + }); + } + }; + + /** + * Toggle folder expand/collapse state. + */ + const toggleFolder = async (item: DriveItem) => { + if (!item.isFolder) return; + + const state = itemStates.get(item.id); + + if (!state || state.children === null) { + await loadFolderContents(item.id); + } else { + setItemStates((prev) => { + const newMap = new Map(prev); + newMap.set(item.id, { + ...state, + isExpanded: !state.isExpanded, + }); + return newMap; + }); + } + }; + + /** + * Render a single item (folder or file) with its children. + */ + const renderItem = (item: DriveItem, level: number = 0) => { + const state = itemStates.get(item.id); + const isExpanded = state?.isExpanded || false; + const isLoading = state?.isLoading || false; + const children = state?.children; + const isFolder = item.isFolder; + const isSelected = isFolder ? isFolderSelected(item.id) : isFileSelected(item.id); + + const childFolders = children?.filter((c) => c.isFolder) || []; + const childFiles = children?.filter((c) => !c.isFolder) || []; + + const indentSize = 0.75; // Smaller indent for mobile + + return ( +
+
+ {isFolder ? ( + + ) : ( + + )} + + { + if (isFolder) { + toggleFolderSelection(item.id, item.name); + } else { + toggleFileSelection(item.id, item.name); + } + }} + className="shrink-0 h-3.5 w-3.5 sm:h-4 sm:w-4 border-slate-400/20 dark:border-white/20" + onClick={(e) => e.stopPropagation()} + /> + +
+ {isFolder ? ( + isExpanded ? ( + + ) : ( + + ) + ) : ( + getFileIcon(item.mimeType, "h-3 w-3 sm:h-4 sm:w-4") + )} +
+ + {isFolder ? ( + + ) : ( + + {item.name} + + )} +
+ + {isExpanded && isFolder && children && ( +
+ {childFolders.map((child) => renderItem(child, level + 1))} + {childFiles.map((child) => renderItem(child, level + 1))} + + {children.length === 0 && ( +
+ Empty folder +
+ )} +
+ )} +
+ ); + }; + + return ( +
+ +
+
+
+ toggleFolderSelection("root", "My Drive")} + className="shrink-0 h-3.5 w-3.5 sm:h-4 sm:w-4 border-slate-400/20 dark:border-white/20" + /> + + +
+
+ + {isLoadingRoot && ( +
+ +
+ )} + +
+ {!isLoadingRoot && rootItems.map((item) => renderItem(item, 0))} +
+ + {!isLoadingRoot && rootItems.length === 0 && ( +
+ No files or folders found in your Google Drive +
+ )} +
+
+
+ ); +} + diff --git a/surfsense_web/hooks/use-composio-drive-folders.ts b/surfsense_web/hooks/use-composio-drive-folders.ts new file mode 100644 index 000000000..af8da1a81 --- /dev/null +++ b/surfsense_web/hooks/use-composio-drive-folders.ts @@ -0,0 +1,29 @@ +import { useQuery } from "@tanstack/react-query"; +import { connectorsApiService } from "@/lib/apis/connectors-api.service"; +import { cacheKeys } from "@/lib/query-client/cache-keys"; + +interface UseComposioDriveFoldersOptions { + connectorId: number; + parentId?: string; + enabled?: boolean; +} + +export function useComposioDriveFolders({ + connectorId, + parentId, + enabled = true, +}: UseComposioDriveFoldersOptions) { + return useQuery({ + queryKey: cacheKeys.connectors.composioDrive.folders(connectorId, parentId), + queryFn: async () => { + return connectorsApiService.listComposioDriveFolders({ + connector_id: connectorId, + parent_id: parentId, + }); + }, + enabled: enabled && !!connectorId, + staleTime: 5 * 60 * 1000, // 5 minutes + retry: 2, + }); +} + diff --git a/surfsense_web/lib/apis/connectors-api.service.ts b/surfsense_web/lib/apis/connectors-api.service.ts index 0e4f7f4d5..567db38de 100644 --- a/surfsense_web/lib/apis/connectors-api.service.ts +++ b/surfsense_web/lib/apis/connectors-api.service.ts @@ -233,6 +233,29 @@ class ConnectorsApiService { ); }; + /** + * List Composio Google Drive folders and files + */ + listComposioDriveFolders = async (request: ListGoogleDriveFoldersRequest) => { + const parsedRequest = listGoogleDriveFoldersRequest.safeParse(request); + + if (!parsedRequest.success) { + console.error("Invalid request:", parsedRequest.error); + + const errorMessage = parsedRequest.error.issues.map((issue) => issue.message).join(", "); + throw new ValidationError(`Invalid request: ${errorMessage}`); + } + + const { connector_id, parent_id } = parsedRequest.data; + + const queryParams = parent_id ? `?parent_id=${encodeURIComponent(parent_id)}` : ""; + + return baseApiService.get( + `/api/v1/connectors/${connector_id}/composio-drive/folders${queryParams}`, + listGoogleDriveFoldersResponse + ); + }; + // ============================================================================= // MCP Connector Methods // ============================================================================= diff --git a/surfsense_web/lib/query-client/cache-keys.ts b/surfsense_web/lib/query-client/cache-keys.ts index 72f2bbd54..8ffc3b786 100644 --- a/surfsense_web/lib/query-client/cache-keys.ts +++ b/surfsense_web/lib/query-client/cache-keys.ts @@ -71,6 +71,10 @@ export const cacheKeys = { folders: (connectorId: number, parentId?: string) => ["connectors", "google-drive", connectorId, "folders", parentId] as const, }, + composioDrive: { + folders: (connectorId: number, parentId?: string) => + ["connectors", "composio-drive", connectorId, "folders", parentId] as const, + }, }, comments: { byMessage: (messageId: number) => ["comments", "message", messageId] as const, From 42752bbeabea23f03e34821143d769b0ec83afc2 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 05:28:03 +0530 Subject: [PATCH 06/51] feat: improve Composio file processing and error handling - Enhanced the handling of file content from Composio, supporting both binary and text files with appropriate processing methods. - Introduced robust error logging and handling for file content extraction, ensuring better visibility into issues during processing. - Updated the indexing logic to accommodate new content processing methods, improving overall reliability and user feedback on errors. - Added temporary file handling for binary files to facilitate text extraction using the ETL service. --- .../routes/search_source_connectors_routes.py | 6 +- .../app/services/composio_service.py | 75 ++++- .../app/tasks/composio_indexer.py | 301 +++++++++++++++++- 3 files changed, 360 insertions(+), 22 deletions(-) diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 89cdd9f95..ed306c7bc 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -1140,7 +1140,7 @@ async def _run_indexing_with_notifications( f"Indexing completed successfully: {documents_processed} documents processed" ) - # Update notification on success + # Update notification on success (or partial success with errors) if notification: # Refresh notification to ensure it's not stale after timestamp update commit await session.refresh(notification) @@ -1148,7 +1148,7 @@ async def _run_indexing_with_notifications( session=session, notification=notification, indexed_count=documents_processed, - error_message=None, + error_message=error_or_warning, # Show errors even if some documents were indexed ) await session.commit() # Commit to ensure Electric SQL syncs the notification update elif documents_processed > 0: @@ -1172,7 +1172,7 @@ async def _run_indexing_with_notifications( session=session, notification=notification, indexed_count=documents_processed, - error_message=None, + error_message=error_or_warning, # Show errors even if some documents were indexed ) await session.commit() # Commit to ensure Electric SQL syncs the notification update else: diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 5a6148533..1173cfb6a 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -458,11 +458,76 @@ class ComposioService: if not result.get("success"): return None, result.get("error", "Unknown error") - content = result.get("data") - if isinstance(content, str): - content = content.encode("utf-8") - - return content, None + data = result.get("data") + + # Composio GOOGLEDRIVE_DOWNLOAD_FILE returns a dict with file info + # The actual content is in "downloaded_file_content" field + if isinstance(data, dict): + # Try known Composio response fields in order of preference + content = None + + # Primary field from GOOGLEDRIVE_DOWNLOAD_FILE + if "downloaded_file_content" in data: + content = data["downloaded_file_content"] + # downloaded_file_content might itself be a dict with the actual content inside + if isinstance(content, dict): + # Try to extract actual content from nested dict + # Note: Composio nests downloaded_file_content inside another downloaded_file_content + actual_content = ( + content.get("downloaded_file_content") or + content.get("content") or + content.get("data") or + content.get("file_content") or + content.get("body") or + content.get("text") + ) + if actual_content is not None: + content = actual_content + else: + # Log structure for debugging + logger.warning(f"downloaded_file_content is dict with keys: {list(content.keys())}") + return None, f"Cannot extract content from downloaded_file_content. Keys: {list(content.keys())}" + # Fallback fields for compatibility + elif "content" in data: + content = data["content"] + elif "file_content" in data: + content = data["file_content"] + elif "data" in data: + content = data["data"] + + if content is None: + # Log available keys for debugging + logger.warning(f"Composio response dict keys: {list(data.keys())}") + return None, f"No file content found in Composio response. Available keys: {list(data.keys())}" + + # Convert content to bytes + if isinstance(content, str): + # Check if it's base64 encoded + import base64 + try: + # Try to decode as base64 first + content = base64.b64decode(content) + except Exception: + # If not base64, encode as UTF-8 + content = content.encode("utf-8") + elif isinstance(content, bytes): + pass # Already bytes + elif isinstance(content, dict): + # Still a dict after all extraction attempts - log structure + logger.warning(f"Content still dict after extraction: {list(content.keys())}") + return None, f"Unexpected nested content structure: {list(content.keys())}" + else: + return None, f"Unexpected content type in Composio response: {type(content).__name__}" + + return content, None + elif isinstance(data, str): + return data.encode("utf-8"), None + elif isinstance(data, bytes): + return data, None + elif data is None: + return None, "No data returned from Composio" + else: + return None, f"Unexpected data type from Composio: {type(data).__name__}" except Exception as e: logger.error(f"Failed to get Drive file content: {e!s}") diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index f568d4134..6f40e6d66 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -8,7 +8,10 @@ to avoid circular import issues with the connector_indexers package. """ import logging +import os +import tempfile from datetime import UTC, datetime +from pathlib import Path from typing import Any from sqlalchemy.exc import SQLAlchemyError @@ -21,6 +24,7 @@ from app.connectors.composio_connector import ComposioConnector from app.db import ( Document, DocumentType, + Log, SearchSourceConnector, SearchSourceConnectorType, ) @@ -81,6 +85,237 @@ async def update_connector_last_indexed( logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") +# Binary file extensions that need file processor +BINARY_FILE_EXTENSIONS = { + ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", + ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp", + ".zip", ".tar", ".gz", ".rar", ".7z", + ".mp3", ".mp4", ".wav", ".avi", ".mov", + ".exe", ".dll", ".so", ".bin", +} + +# Text file extensions that can be decoded as UTF-8 +TEXT_FILE_EXTENSIONS = { + ".txt", ".md", ".markdown", ".json", ".xml", ".html", ".htm", + ".css", ".js", ".ts", ".py", ".java", ".c", ".cpp", ".h", + ".yaml", ".yml", ".toml", ".ini", ".cfg", ".conf", + ".sh", ".bash", ".zsh", ".fish", + ".sql", ".csv", ".tsv", + ".rst", ".tex", ".log", +} + + +def _is_binary_file(file_name: str, mime_type: str) -> bool: + """Check if a file is binary based on extension or mime type.""" + extension = Path(file_name).suffix.lower() + + # Check extension first + if extension in BINARY_FILE_EXTENSIONS: + return True + if extension in TEXT_FILE_EXTENSIONS: + return False + + # Check mime type + if mime_type: + if mime_type.startswith(("image/", "audio/", "video/", "application/pdf")): + return True + if mime_type.startswith(("text/", "application/json", "application/xml")): + return False + # Office documents + if "spreadsheet" in mime_type or "document" in mime_type or "presentation" in mime_type: + return True + + # Default to text for unknown types + return False + + +async def _process_file_content( + content: bytes | str, + file_name: str, + file_id: str, + mime_type: str, + search_space_id: int, + user_id: str, + session: AsyncSession, + task_logger: TaskLoggingService, + log_entry: Log, + processing_errors: list[str], +) -> str: + """ + Process file content and return markdown text. + + For binary files (PDFs, images, etc.), uses Surfsense's ETL service. + For text files, decodes as UTF-8. + + Args: + content: File content as bytes or string + file_name: Name of the file + file_id: Google Drive file ID + mime_type: MIME type of the file + search_space_id: Search space ID + user_id: User ID + session: Database session + task_logger: Task logging service + log_entry: Log entry for tracking + processing_errors: List to append errors to + + Returns: + Markdown content string + """ + # Ensure content is bytes + if isinstance(content, str): + content = content.encode("utf-8") + + # Check if this is a binary file + if _is_binary_file(file_name, mime_type): + # Use ETL service for binary files (PDF, Office docs, etc.) + temp_file_path = None + try: + # Get file extension + extension = Path(file_name).suffix or ".bin" + + # Write to temp file + with tempfile.NamedTemporaryFile(delete=False, suffix=extension) as tmp_file: + tmp_file.write(content) + temp_file_path = tmp_file.name + + # Use the configured ETL service to extract text + extracted_text = await _extract_text_with_etl( + temp_file_path, file_name, task_logger, log_entry + ) + + if extracted_text: + return extracted_text + else: + # Fallback if extraction fails + logger.warning(f"Could not extract text from binary file {file_name}") + return f"# {file_name}\n\n[Binary file - text extraction failed]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + + except Exception as e: + error_msg = f"Error processing binary file {file_name}: {e!s}" + logger.error(error_msg) + processing_errors.append(error_msg) + return f"# {file_name}\n\n[Binary file - processing error]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + finally: + # Cleanup temp file + if temp_file_path and os.path.exists(temp_file_path): + try: + os.unlink(temp_file_path) + except Exception as e: + logger.debug(f"Could not delete temp file {temp_file_path}: {e}") + else: + # Text file - try to decode as UTF-8 + try: + return content.decode("utf-8") + except UnicodeDecodeError: + # Try other encodings + for encoding in ["latin-1", "cp1252", "iso-8859-1"]: + try: + return content.decode(encoding) + except UnicodeDecodeError: + continue + + # If all encodings fail, treat as binary + error_msg = f"Could not decode text file {file_name} with any encoding" + logger.warning(error_msg) + processing_errors.append(error_msg) + return f"# {file_name}\n\n[File content could not be decoded]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + + +async def _extract_text_with_etl( + file_path: str, + file_name: str, + task_logger: TaskLoggingService, + log_entry: Log, +) -> str | None: + """ + Extract text from a file using the configured ETL service. + + Args: + file_path: Path to the file + file_name: Name of the file + task_logger: Task logging service + log_entry: Log entry for tracking + + Returns: + Extracted text as markdown, or None if extraction fails + """ + import warnings + from logging import ERROR, getLogger + + etl_service = config.ETL_SERVICE + + try: + if etl_service == "UNSTRUCTURED": + from langchain_unstructured import UnstructuredLoader + + from app.utils.document_converters import convert_document_to_markdown + + loader = UnstructuredLoader( + file_path, + mode="elements", + post_processors=[], + languages=["eng"], + include_orig_elements=False, + include_metadata=False, + strategy="auto", + ) + + docs = await loader.aload() + if docs: + return await convert_document_to_markdown(docs) + return None + + elif etl_service == "LLAMACLOUD": + from app.tasks.document_processors.file_processors import parse_with_llamacloud_retry + + # Estimate pages (rough estimate based on file size) + file_size = os.path.getsize(file_path) + estimated_pages = max(1, file_size // (80 * 1024)) + + result = await parse_with_llamacloud_retry( + file_path=file_path, + estimated_pages=estimated_pages, + task_logger=task_logger, + log_entry=log_entry, + ) + + markdown_documents = await result.aget_markdown_documents(split_by_page=False) + if markdown_documents: + return markdown_documents[0].text + return None + + elif etl_service == "DOCLING": + from app.services.docling_service import create_docling_service + + docling_service = create_docling_service() + + # Suppress pdfminer warnings + pdfminer_logger = getLogger("pdfminer") + original_level = pdfminer_logger.level + + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=UserWarning, module="pdfminer") + warnings.filterwarnings("ignore", message=".*Cannot set gray non-stroke color.*") + warnings.filterwarnings("ignore", message=".*invalid float value.*") + + pdfminer_logger.setLevel(ERROR) + + try: + result = await docling_service.process_document(file_path, file_name) + finally: + pdfminer_logger.setLevel(original_level) + + return result.get("content") + else: + logger.warning(f"Unknown ETL service: {etl_service}") + return None + + except Exception as e: + logger.error(f"ETL extraction failed for {file_name}: {e!s}") + return None + + # ============ Main indexer function ============ @@ -384,6 +619,7 @@ async def _index_composio_google_drive( documents_indexed = 0 documents_skipped = 0 + processing_errors = [] for file_info in all_files: try: @@ -422,11 +658,28 @@ async def _index_composio_google_drive( markdown_content = f"# {file_name}\n\n" markdown_content += f"**File ID:** {file_id}\n" markdown_content += f"**Type:** {mime_type}\n" + elif isinstance(content, dict): + # Safety check: if content is still a dict, log error and use fallback + error_msg = f"Unexpected dict content format for file {file_name}: {list(content.keys())}" + logger.error(error_msg) + processing_errors.append(error_msg) + markdown_content = f"# {file_name}\n\n" + markdown_content += f"**File ID:** {file_id}\n" + markdown_content += f"**Type:** {mime_type}\n" else: - try: - markdown_content = content.decode("utf-8") - except UnicodeDecodeError: - markdown_content = f"# {file_name}\n\n[Binary file content]\n" + # Process content based on file type + markdown_content = await _process_file_content( + content=content, + file_name=file_name, + file_id=file_id, + mime_type=mime_type, + search_space_id=search_space_id, + user_id=user_id, + session=session, + task_logger=task_logger, + log_entry=log_entry, + processing_errors=processing_errors, + ) content_hash = generate_content_hash(markdown_content, search_space_id) @@ -531,7 +784,9 @@ async def _index_composio_google_drive( await session.commit() except Exception as e: - logger.error(f"Error processing Drive file: {e!s}", exc_info=True) + error_msg = f"Error processing Drive file {file_name or 'unknown'}: {e!s}" + logger.error(error_msg, exc_info=True) + processing_errors.append(error_msg) documents_skipped += 1 continue @@ -549,16 +804,34 @@ async def _index_composio_google_drive( "Successfully committed all Composio Google Drive document changes to database" ) - await task_logger.log_task_success( - log_entry, - f"Successfully completed Google Drive indexing via Composio for connector {connector_id}", - { - "documents_indexed": documents_indexed, - "documents_skipped": documents_skipped, - }, - ) + # If there were processing errors, return them so notification can show them + error_message = None + if processing_errors: + # Combine all errors into a single message + if len(processing_errors) == 1: + error_message = processing_errors[0] + else: + error_message = f"Failed to process {len(processing_errors)} file(s). First error: {processing_errors[0]}" + await task_logger.log_task_failure( + log_entry, + f"Completed Google Drive indexing with {len(processing_errors)} error(s) for connector {connector_id}", + { + "documents_indexed": documents_indexed, + "documents_skipped": documents_skipped, + "errors": processing_errors, + }, + ) + else: + await task_logger.log_task_success( + log_entry, + f"Successfully completed Google Drive indexing via Composio for connector {connector_id}", + { + "documents_indexed": documents_indexed, + "documents_skipped": documents_skipped, + }, + ) - return documents_indexed, None + return documents_indexed, error_message except Exception as e: logger.error(f"Failed to index Google Drive via Composio: {e!s}", exc_info=True) From 8a0b8346a5ee913a94a922ae8750072ce3b0ec11 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 05:28:18 +0530 Subject: [PATCH 07/51] chore: ran linting --- .../74_add_composio_connector_enums.py | 4 +- .../app/connectors/composio_connector.py | 6 +- .../app/connectors/github_connector.py | 46 +- .../app/routes/composio_routes.py | 74 ++- .../routes/search_source_connectors_routes.py | 48 +- .../app/services/composio_service.py | 178 ++++--- .../app/tasks/composio_indexer.py | 441 ++++++++++++------ .../app/tasks/connector_indexers/__init__.py | 1 + .../connector_indexers/github_indexer.py | 14 +- .../components/composio-config.tsx | 8 +- .../constants/connector-popup.schemas.ts | 4 +- .../hooks/use-connector-dialog.ts | 28 +- .../tabs/all-connectors-tab.tsx | 17 +- .../connectors/composio-drive-folder-tree.tsx | 1 - .../hooks/use-composio-drive-folders.ts | 1 - 15 files changed, 583 insertions(+), 288 deletions(-) diff --git a/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py b/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py index cadf70cb6..2996d9d07 100644 --- a/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py +++ b/surfsense_backend/alembic/versions/74_add_composio_connector_enums.py @@ -82,14 +82,14 @@ def upgrade() -> None: def downgrade() -> None: """Downgrade schema - remove Composio connector types from connector and document enums. - + Note: PostgreSQL does not support removing enum values directly. To properly downgrade, you would need to: 1. Delete any rows using the Composio connector type values 2. Create new enums without the Composio connector types 3. Alter the columns to use the new enums 4. Drop the old enums - + This is left as a no-op since removing enum values is complex and typically not needed in practice. """ diff --git a/surfsense_backend/app/connectors/composio_connector.py b/surfsense_backend/app/connectors/composio_connector.py index 21e339d12..b49988887 100644 --- a/surfsense_backend/app/connectors/composio_connector.py +++ b/surfsense_backend/app/connectors/composio_connector.py @@ -12,7 +12,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from app.db import SearchSourceConnector -from app.services.composio_service import ComposioService, INDEXABLE_TOOLKITS +from app.services.composio_service import INDEXABLE_TOOLKITS, ComposioService logger = logging.getLogger(__name__) @@ -271,7 +271,9 @@ class ComposioConnector: from_email = header_dict.get("from", "Unknown Sender") to_email = header_dict.get("to", "Unknown Recipient") # Composio provides messageTimestamp directly - date_str = message.get("messageTimestamp", "") or header_dict.get("date", "Unknown Date") + date_str = message.get("messageTimestamp", "") or header_dict.get( + "date", "Unknown Date" + ) # Build markdown content markdown_content = f"# {subject}\n\n" diff --git a/surfsense_backend/app/connectors/github_connector.py b/surfsense_backend/app/connectors/github_connector.py index 6f04ccdba..9d4b98c4b 100644 --- a/surfsense_backend/app/connectors/github_connector.py +++ b/surfsense_backend/app/connectors/github_connector.py @@ -58,7 +58,9 @@ class GitHubConnector: if self.token: logger.info("GitHub connector initialized with authentication token.") else: - logger.info("GitHub connector initialized without token (public repos only).") + logger.info( + "GitHub connector initialized without token (public repos only)." + ) def ingest_repository( self, @@ -95,17 +97,27 @@ class GitHubConnector: cmd = [ "gitingest", repo_url, - "--output", output_path, - "--max-size", str(max_file_size), + "--output", + output_path, + "--max-size", + str(max_file_size), # Common exclude patterns - "-e", "node_modules/*", - "-e", "vendor/*", - "-e", ".git/*", - "-e", "__pycache__/*", - "-e", "dist/*", - "-e", "build/*", - "-e", "*.lock", - "-e", "package-lock.json", + "-e", + "node_modules/*", + "-e", + "vendor/*", + "-e", + ".git/*", + "-e", + "__pycache__/*", + "-e", + "dist/*", + "-e", + "build/*", + "-e", + "*.lock", + "-e", + "package-lock.json", ] # Add branch if specified @@ -147,7 +159,9 @@ class GitHubConnector: os.unlink(output_path) if not full_content or not full_content.strip(): - logger.warning(f"No content retrieved from repository: {repo_full_name}") + logger.warning( + f"No content retrieved from repository: {repo_full_name}" + ) return None # Parse the gitingest output @@ -171,11 +185,11 @@ class GitHubConnector: logger.error(f"gitingest timed out for repository: {repo_full_name}") return None except FileNotFoundError: - logger.error( - "gitingest CLI not found. Falling back to Python library." - ) + logger.error("gitingest CLI not found. Falling back to Python library.") # Fall back to Python library - return self._ingest_with_python_library(repo_full_name, branch, max_file_size) + return self._ingest_with_python_library( + repo_full_name, branch, max_file_size + ) except Exception as e: logger.error(f"Failed to ingest repository {repo_full_name}: {e}") return None diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 25e545dfb..dec9beb02 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -11,7 +11,6 @@ Endpoints: - GET /connectors/{connector_id}/composio-drive/folders - List folders/files for Composio Google Drive """ -import asyncio import logging from uuid import UUID @@ -89,7 +88,9 @@ async def list_composio_toolkits(user: User = Depends(current_active_user)): @router.get("/auth/composio/connector/add") async def initiate_composio_auth( space_id: int, - toolkit_id: str = Query(..., description="Composio toolkit ID (e.g., 'googledrive', 'gmail')"), + toolkit_id: str = Query( + ..., description="Composio toolkit ID (e.g., 'googledrive', 'gmail')" + ), user: User = Depends(current_active_user), ): """ @@ -239,13 +240,15 @@ async def composio_callback( # Initialize Composio service service = ComposioService() entity_id = f"surfsense_{user_id}" - + # Use camelCase param if provided (Composio's format), fallback to snake_case final_connected_account_id = connectedAccountId or connected_account_id - + # DEBUG: Log all query parameters received - logger.info(f"DEBUG: Callback received - connectedAccountId: {connectedAccountId}, connected_account_id: {connected_account_id}, using: {final_connected_account_id}") - + logger.info( + f"DEBUG: Callback received - connectedAccountId: {connectedAccountId}, connected_account_id: {connected_account_id}, using: {final_connected_account_id}" + ) + # If we still don't have a connected_account_id, warn but continue # (the connector will be created but indexing won't work until updated) if not final_connected_account_id: @@ -254,7 +257,9 @@ async def composio_callback( "The connector will be created but indexing may not work." ) else: - logger.info(f"Successfully got connected_account_id: {final_connected_account_id}") + logger.info( + f"Successfully got connected_account_id: {final_connected_account_id}" + ) # Build connector config connector_config = { @@ -287,10 +292,17 @@ async def composio_callback( if existing_connector: # Delete the old Composio connected account before updating - old_connected_account_id = existing_connector.config.get("composio_connected_account_id") - if old_connected_account_id and old_connected_account_id != final_connected_account_id: + old_connected_account_id = existing_connector.config.get( + "composio_connected_account_id" + ) + if ( + old_connected_account_id + and old_connected_account_id != final_connected_account_id + ): try: - deleted = await service.delete_connected_account(old_connected_account_id) + deleted = await service.delete_connected_account( + old_connected_account_id + ) if deleted: logger.info( f"Deleted old Composio connected account {old_connected_account_id} " @@ -422,7 +434,9 @@ async def list_composio_drive_folders( ) # Get Composio connected account ID from config - composio_connected_account_id = connector.config.get("composio_connected_account_id") + composio_connected_account_id = connector.config.get( + "composio_connected_account_id" + ) if not composio_connected_account_id: raise HTTPException( status_code=400, @@ -451,27 +465,37 @@ async def list_composio_drive_folders( items = [] for file_info in files: file_id = file_info.get("id", "") or file_info.get("fileId", "") - file_name = file_info.get("name", "") or file_info.get("fileName", "") or "Untitled" + file_name = ( + file_info.get("name", "") or file_info.get("fileName", "") or "Untitled" + ) mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") - + if not file_id: continue is_folder = mime_type == "application/vnd.google-apps.folder" - - items.append({ - "id": file_id, - "name": file_name, - "mimeType": mime_type, - "isFolder": is_folder, - "parents": file_info.get("parents", []), - "size": file_info.get("size"), - "iconLink": file_info.get("iconLink"), - }) + + items.append( + { + "id": file_id, + "name": file_name, + "mimeType": mime_type, + "isFolder": is_folder, + "parents": file_info.get("parents", []), + "size": file_info.get("size"), + "iconLink": file_info.get("iconLink"), + } + ) # Sort: folders first, then files, both alphabetically - folders = sorted([item for item in items if item["isFolder"]], key=lambda x: x["name"].lower()) - files_list = sorted([item for item in items if not item["isFolder"]], key=lambda x: x["name"].lower()) + folders = sorted( + [item for item in items if item["isFolder"]], + key=lambda x: x["name"].lower(), + ) + files_list = sorted( + [item for item in items if not item["isFolder"]], + key=lambda x: x["name"].lower(), + ) items = folders + files_list folder_count = len(folders) diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index ed306c7bc..433acac1c 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -37,7 +37,6 @@ from app.db import ( async_session_maker, get_async_session, ) -from app.services.composio_service import ComposioService from app.schemas import ( GoogleDriveIndexRequest, MCPConnectorCreate, @@ -48,6 +47,7 @@ from app.schemas import ( SearchSourceConnectorRead, SearchSourceConnectorUpdate, ) +from app.services.composio_service import ComposioService from app.services.notification_service import NotificationService from app.tasks.connector_indexers import ( index_airtable_records, @@ -537,11 +537,15 @@ async def delete_search_source_connector( SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, ] if db_connector.connector_type in composio_connector_types: - composio_connected_account_id = db_connector.config.get("composio_connected_account_id") + composio_connected_account_id = db_connector.config.get( + "composio_connected_account_id" + ) if composio_connected_account_id and ComposioService.is_enabled(): try: service = ComposioService() - deleted = await service.delete_connected_account(composio_connected_account_id) + deleted = await service.delete_connected_account( + composio_connected_account_id + ) if deleted: logger.info( f"Successfully deleted Composio connected account {composio_connected_account_id} " @@ -897,7 +901,10 @@ async def index_connector_content( ) response_message = "Web page indexing started in the background." - elif connector.connector_type == SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR: + elif ( + connector.connector_type + == SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR + ): from app.tasks.celery_tasks.connector_tasks import ( index_composio_connector_task, ) @@ -907,8 +914,12 @@ async def index_connector_content( if drive_items and drive_items.has_items(): # Update connector config with the selected folders/files config = connector.config or {} - config["selected_folders"] = [{"id": f.id, "name": f.name} for f in drive_items.folders] - config["selected_files"] = [{"id": f.id, "name": f.name} for f in drive_items.files] + config["selected_folders"] = [ + {"id": f.id, "name": f.name} for f in drive_items.folders + ] + config["selected_files"] = [ + {"id": f.id, "name": f.name} for f in drive_items.files + ] if drive_items.indexing_options: config["indexing_options"] = { "max_files_per_folder": drive_items.indexing_options.max_files_per_folder, @@ -917,6 +928,7 @@ async def index_connector_content( } connector.config = config from sqlalchemy.orm.attributes import flag_modified + flag_modified(connector, "config") await session.commit() await session.refresh(connector) @@ -934,7 +946,9 @@ async def index_connector_content( index_composio_connector_task.delay( connector_id, search_space_id, str(user.id), indexing_from, indexing_to ) - response_message = "Composio Google Drive indexing started in the background." + response_message = ( + "Composio Google Drive indexing started in the background." + ) elif connector.connector_type in [ SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, @@ -995,7 +1009,9 @@ async def _update_connector_timestamp_by_id(session: AsyncSession, connector_id: connector = result.scalars().first() if connector: - connector.last_indexed_at = datetime.now(UTC) # Use UTC for timezone consistency + connector.last_indexed_at = datetime.now( + UTC + ) # Use UTC for timezone consistency await session.commit() logger.info(f"Updated last_indexed_at for connector {connector_id}") except Exception as e: @@ -1150,7 +1166,9 @@ async def _run_indexing_with_notifications( indexed_count=documents_processed, error_message=error_or_warning, # Show errors even if some documents were indexed ) - await session.commit() # Commit to ensure Electric SQL syncs the notification update + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update elif documents_processed > 0: # Update notification to storing stage if notification: @@ -1174,7 +1192,9 @@ async def _run_indexing_with_notifications( indexed_count=documents_processed, error_message=error_or_warning, # Show errors even if some documents were indexed ) - await session.commit() # Commit to ensure Electric SQL syncs the notification update + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update else: # No new documents processed - check if this is an error or just no changes if error_or_warning: @@ -1189,7 +1209,9 @@ async def _run_indexing_with_notifications( indexed_count=0, error_message=error_or_warning, ) - await session.commit() # Commit to ensure Electric SQL syncs the notification update + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update else: # Success - just no new documents to index (all skipped/unchanged) logger.info( @@ -1208,7 +1230,9 @@ async def _run_indexing_with_notifications( indexed_count=0, error_message=None, # No error - sync succeeded ) - await session.commit() # Commit to ensure Electric SQL syncs the notification update + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update except Exception as e: logger.error(f"Error in indexing task: {e!s}", exc_info=True) diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 1173cfb6a..0d6189cd9 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -111,7 +111,7 @@ class ComposioService: config_toolkit = getattr(auth_config, "toolkit", None) if config_toolkit is None: continue - + # Extract toolkit name/slug from the object toolkit_name = None if isinstance(config_toolkit, str): @@ -122,18 +122,22 @@ class ComposioService: toolkit_name = config_toolkit.name elif hasattr(config_toolkit, "id"): toolkit_name = config_toolkit.id - + # Compare case-insensitively if toolkit_name and toolkit_name.lower() == toolkit_id.lower(): - logger.info(f"Found auth config {auth_config.id} for toolkit {toolkit_id}") + logger.info( + f"Found auth config {auth_config.id} for toolkit {toolkit_id}" + ) return auth_config.id - + # Log available auth configs for debugging - logger.warning(f"No auth config found for toolkit '{toolkit_id}'. Available auth configs:") + logger.warning( + f"No auth config found for toolkit '{toolkit_id}'. Available auth configs:" + ) for auth_config in auth_configs.items: config_toolkit = getattr(auth_config, "toolkit", None) logger.warning(f" - {auth_config.id}: toolkit={config_toolkit}") - + return None except Exception as e: logger.error(f"Failed to list auth configs: {e!s}") @@ -162,7 +166,7 @@ class ComposioService: try: # First, get the auth_config_id for this toolkit auth_config_id = self._get_auth_config_for_toolkit(toolkit_id) - + if not auth_config_id: raise ValueError( f"No auth config found for toolkit '{toolkit_id}'. " @@ -214,7 +218,9 @@ class ComposioService: "user_id": getattr(account, "user_id", None), } except Exception as e: - logger.error(f"Failed to get connected account {connected_account_id}: {e!s}") + logger.error( + f"Failed to get connected account {connected_account_id}: {e!s}" + ) return None async def list_all_connections(self) -> list[dict[str, Any]]: @@ -226,15 +232,17 @@ class ComposioService: """ try: accounts_response = self.client.connected_accounts.list() - + if hasattr(accounts_response, "items"): accounts = accounts_response.items elif hasattr(accounts_response, "__iter__"): accounts = accounts_response else: - logger.warning(f"Unexpected accounts response type: {type(accounts_response)}") + logger.warning( + f"Unexpected accounts response type: {type(accounts_response)}" + ) return [] - + result = [] for acc in accounts: toolkit_raw = getattr(acc, "toolkit", None) @@ -248,14 +256,16 @@ class ComposioService: toolkit_info = toolkit_raw.name else: toolkit_info = str(toolkit_raw) - - result.append({ - "id": acc.id, - "status": getattr(acc, "status", None), - "toolkit": toolkit_info, - "user_id": getattr(acc, "user_id", None), - }) - + + result.append( + { + "id": acc.id, + "status": getattr(acc, "status", None), + "toolkit": toolkit_info, + "user_id": getattr(acc, "user_id", None), + } + ) + return result except Exception as e: logger.error(f"Failed to list all connections: {e!s}") @@ -273,16 +283,18 @@ class ComposioService: """ try: accounts_response = self.client.connected_accounts.list(user_id=user_id) - + # Handle paginated response (may have .items attribute) or direct list if hasattr(accounts_response, "items"): accounts = accounts_response.items elif hasattr(accounts_response, "__iter__"): accounts = accounts_response else: - logger.warning(f"Unexpected accounts response type: {type(accounts_response)}") + logger.warning( + f"Unexpected accounts response type: {type(accounts_response)}" + ) return [] - + result = [] for acc in accounts: # Extract toolkit info - might be string or object @@ -297,13 +309,15 @@ class ComposioService: toolkit_info = toolkit_raw.name else: toolkit_info = toolkit_raw - - result.append({ - "id": acc.id, - "status": getattr(acc, "status", None), - "toolkit": toolkit_info, - }) - + + result.append( + { + "id": acc.id, + "status": getattr(acc, "status", None), + "toolkit": toolkit_info, + } + ) + logger.info(f"Found {len(result)} connections for user {user_id}: {result}") return result except Exception as e: @@ -324,10 +338,14 @@ class ComposioService: """ try: self.client.connected_accounts.delete(connected_account_id) - logger.info(f"Successfully deleted Composio connected account: {connected_account_id}") + logger.info( + f"Successfully deleted Composio connected account: {connected_account_id}" + ) return True except Exception as e: - logger.error(f"Failed to delete Composio connected account {connected_account_id}: {e!s}") + logger.error( + f"Failed to delete Composio connected account {connected_account_id}: {e!s}" + ) return False async def execute_tool( @@ -398,10 +416,14 @@ class ComposioService: } if folder_id: # List contents of a specific folder (exclude shortcuts - we don't have access to them) - params["q"] = f"'{folder_id}' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" + params["q"] = ( + f"'{folder_id}' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" + ) else: # List root-level items only (My Drive root), exclude shortcuts - params["q"] = "'root' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" + params["q"] = ( + "'root' in parents and trashed = false and mimeType != 'application/vnd.google-apps.shortcut'" + ) if page_token: params["page_token"] = page_token @@ -416,17 +438,21 @@ class ComposioService: return [], None, result.get("error", "Unknown error") data = result.get("data", {}) - + # Handle nested response structure from Composio files = [] next_token = None if isinstance(data, dict): # Try direct access first, then nested files = data.get("files", []) or data.get("data", {}).get("files", []) - next_token = data.get("nextPageToken") or data.get("next_page_token") or data.get("data", {}).get("nextPageToken") + next_token = ( + data.get("nextPageToken") + or data.get("next_page_token") + or data.get("data", {}).get("nextPageToken") + ) elif isinstance(data, list): files = data - + return files, next_token, None except Exception as e: @@ -459,13 +485,13 @@ class ComposioService: return None, result.get("error", "Unknown error") data = result.get("data") - + # Composio GOOGLEDRIVE_DOWNLOAD_FILE returns a dict with file info # The actual content is in "downloaded_file_content" field if isinstance(data, dict): # Try known Composio response fields in order of preference content = None - + # Primary field from GOOGLEDRIVE_DOWNLOAD_FILE if "downloaded_file_content" in data: content = data["downloaded_file_content"] @@ -474,19 +500,24 @@ class ComposioService: # Try to extract actual content from nested dict # Note: Composio nests downloaded_file_content inside another downloaded_file_content actual_content = ( - content.get("downloaded_file_content") or - content.get("content") or - content.get("data") or - content.get("file_content") or - content.get("body") or - content.get("text") + content.get("downloaded_file_content") + or content.get("content") + or content.get("data") + or content.get("file_content") + or content.get("body") + or content.get("text") ) if actual_content is not None: content = actual_content else: # Log structure for debugging - logger.warning(f"downloaded_file_content is dict with keys: {list(content.keys())}") - return None, f"Cannot extract content from downloaded_file_content. Keys: {list(content.keys())}" + logger.warning( + f"downloaded_file_content is dict with keys: {list(content.keys())}" + ) + return ( + None, + f"Cannot extract content from downloaded_file_content. Keys: {list(content.keys())}", + ) # Fallback fields for compatibility elif "content" in data: content = data["content"] @@ -494,16 +525,20 @@ class ComposioService: content = data["file_content"] elif "data" in data: content = data["data"] - + if content is None: # Log available keys for debugging logger.warning(f"Composio response dict keys: {list(data.keys())}") - return None, f"No file content found in Composio response. Available keys: {list(data.keys())}" - + return ( + None, + f"No file content found in Composio response. Available keys: {list(data.keys())}", + ) + # Convert content to bytes if isinstance(content, str): # Check if it's base64 encoded import base64 + try: # Try to decode as base64 first content = base64.b64decode(content) @@ -514,11 +549,19 @@ class ComposioService: pass # Already bytes elif isinstance(content, dict): # Still a dict after all extraction attempts - log structure - logger.warning(f"Content still dict after extraction: {list(content.keys())}") - return None, f"Unexpected nested content structure: {list(content.keys())}" + logger.warning( + f"Content still dict after extraction: {list(content.keys())}" + ) + return ( + None, + f"Unexpected nested content structure: {list(content.keys())}", + ) else: - return None, f"Unexpected content type in Composio response: {type(content).__name__}" - + return ( + None, + f"Unexpected content type in Composio response: {type(content).__name__}", + ) + return content, None elif isinstance(data, str): return data.encode("utf-8"), None @@ -527,7 +570,10 @@ class ComposioService: elif data is None: return None, "No data returned from Composio" else: - return None, f"Unexpected data type from Composio: {type(data).__name__}" + return ( + None, + f"Unexpected data type from Composio: {type(data).__name__}", + ) except Exception as e: logger.error(f"Failed to get Drive file content: {e!s}") @@ -576,17 +622,21 @@ class ComposioService: return [], None, result.get("error", "Unknown error") data = result.get("data", {}) - + # Try different possible response structures messages = [] next_token = None result_size_estimate = None if isinstance(data, dict): - messages = data.get("messages", []) or data.get("data", {}).get("messages", []) or data.get("emails", []) + messages = ( + data.get("messages", []) + or data.get("data", {}).get("messages", []) + or data.get("emails", []) + ) # Check for pagination token in various possible locations next_token = ( - data.get("nextPageToken") - or data.get("next_page_token") + data.get("nextPageToken") + or data.get("next_page_token") or data.get("data", {}).get("nextPageToken") or data.get("data", {}).get("next_page_token") ) @@ -599,7 +649,7 @@ class ComposioService: ) elif isinstance(data, list): messages = data - + return messages, next_token, result_size_estimate, None except Exception as e: @@ -683,14 +733,18 @@ class ComposioService: return [], result.get("error", "Unknown error") data = result.get("data", {}) - + # Try different possible response structures events = [] if isinstance(data, dict): - events = data.get("items", []) or data.get("data", {}).get("items", []) or data.get("events", []) + events = ( + data.get("items", []) + or data.get("data", {}).get("items", []) + or data.get("events", []) + ) elif isinstance(data, list): events = data - + return events, None except Exception as e: diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index 6f40e6d66..e5c8b701e 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -64,10 +64,14 @@ async def check_document_by_unique_identifier( async def get_connector_by_id( - session: AsyncSession, connector_id: int, connector_type: SearchSourceConnectorType | None + session: AsyncSession, + connector_id: int, + connector_type: SearchSourceConnectorType | None, ) -> SearchSourceConnector | None: """Get a connector by ID and optionally by type from the database.""" - query = select(SearchSourceConnector).filter(SearchSourceConnector.id == connector_id) + query = select(SearchSourceConnector).filter( + SearchSourceConnector.id == connector_id + ) if connector_type is not None: query = query.filter(SearchSourceConnector.connector_type == connector_type) result = await session.execute(query) @@ -81,40 +85,90 @@ async def update_connector_last_indexed( ) -> None: """Update the last_indexed_at timestamp for a connector.""" if update_last_indexed: - connector.last_indexed_at = datetime.now(UTC) # Use UTC for timezone consistency + connector.last_indexed_at = datetime.now( + UTC + ) # Use UTC for timezone consistency logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") # Binary file extensions that need file processor BINARY_FILE_EXTENSIONS = { - ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", - ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp", - ".zip", ".tar", ".gz", ".rar", ".7z", - ".mp3", ".mp4", ".wav", ".avi", ".mov", - ".exe", ".dll", ".so", ".bin", + ".pdf", + ".doc", + ".docx", + ".xls", + ".xlsx", + ".ppt", + ".pptx", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".tiff", + ".webp", + ".zip", + ".tar", + ".gz", + ".rar", + ".7z", + ".mp3", + ".mp4", + ".wav", + ".avi", + ".mov", + ".exe", + ".dll", + ".so", + ".bin", } # Text file extensions that can be decoded as UTF-8 TEXT_FILE_EXTENSIONS = { - ".txt", ".md", ".markdown", ".json", ".xml", ".html", ".htm", - ".css", ".js", ".ts", ".py", ".java", ".c", ".cpp", ".h", - ".yaml", ".yml", ".toml", ".ini", ".cfg", ".conf", - ".sh", ".bash", ".zsh", ".fish", - ".sql", ".csv", ".tsv", - ".rst", ".tex", ".log", + ".txt", + ".md", + ".markdown", + ".json", + ".xml", + ".html", + ".htm", + ".css", + ".js", + ".ts", + ".py", + ".java", + ".c", + ".cpp", + ".h", + ".yaml", + ".yml", + ".toml", + ".ini", + ".cfg", + ".conf", + ".sh", + ".bash", + ".zsh", + ".fish", + ".sql", + ".csv", + ".tsv", + ".rst", + ".tex", + ".log", } def _is_binary_file(file_name: str, mime_type: str) -> bool: """Check if a file is binary based on extension or mime type.""" extension = Path(file_name).suffix.lower() - + # Check extension first if extension in BINARY_FILE_EXTENSIONS: return True if extension in TEXT_FILE_EXTENSIONS: return False - + # Check mime type if mime_type: if mime_type.startswith(("image/", "audio/", "video/", "application/pdf")): @@ -122,9 +176,13 @@ def _is_binary_file(file_name: str, mime_type: str) -> bool: if mime_type.startswith(("text/", "application/json", "application/xml")): return False # Office documents - if "spreadsheet" in mime_type or "document" in mime_type or "presentation" in mime_type: + if ( + "spreadsheet" in mime_type + or "document" in mime_type + or "presentation" in mime_type + ): return True - + # Default to text for unknown types return False @@ -143,10 +201,10 @@ async def _process_file_content( ) -> str: """ Process file content and return markdown text. - + For binary files (PDFs, images, etc.), uses Surfsense's ETL service. For text files, decodes as UTF-8. - + Args: content: File content as bytes or string file_name: Name of the file @@ -158,14 +216,14 @@ async def _process_file_content( task_logger: Task logging service log_entry: Log entry for tracking processing_errors: List to append errors to - + Returns: Markdown content string """ # Ensure content is bytes if isinstance(content, str): content = content.encode("utf-8") - + # Check if this is a binary file if _is_binary_file(file_name, mime_type): # Use ETL service for binary files (PDF, Office docs, etc.) @@ -173,24 +231,26 @@ async def _process_file_content( try: # Get file extension extension = Path(file_name).suffix or ".bin" - + # Write to temp file - with tempfile.NamedTemporaryFile(delete=False, suffix=extension) as tmp_file: + with tempfile.NamedTemporaryFile( + delete=False, suffix=extension + ) as tmp_file: tmp_file.write(content) temp_file_path = tmp_file.name - + # Use the configured ETL service to extract text extracted_text = await _extract_text_with_etl( temp_file_path, file_name, task_logger, log_entry ) - + if extracted_text: return extracted_text else: # Fallback if extraction fails logger.warning(f"Could not extract text from binary file {file_name}") return f"# {file_name}\n\n[Binary file - text extraction failed]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" - + except Exception as e: error_msg = f"Error processing binary file {file_name}: {e!s}" logger.error(error_msg) @@ -214,7 +274,7 @@ async def _process_file_content( return content.decode(encoding) except UnicodeDecodeError: continue - + # If all encodings fail, treat as binary error_msg = f"Could not decode text file {file_name} with any encoding" logger.warning(error_msg) @@ -230,27 +290,27 @@ async def _extract_text_with_etl( ) -> str | None: """ Extract text from a file using the configured ETL service. - + Args: file_path: Path to the file file_name: Name of the file task_logger: Task logging service log_entry: Log entry for tracking - + Returns: Extracted text as markdown, or None if extraction fails """ import warnings from logging import ERROR, getLogger - + etl_service = config.ETL_SERVICE - + try: if etl_service == "UNSTRUCTURED": from langchain_unstructured import UnstructuredLoader from app.utils.document_converters import convert_document_to_markdown - + loader = UnstructuredLoader( file_path, mode="elements", @@ -260,57 +320,67 @@ async def _extract_text_with_etl( include_metadata=False, strategy="auto", ) - + docs = await loader.aload() if docs: return await convert_document_to_markdown(docs) return None - + elif etl_service == "LLAMACLOUD": - from app.tasks.document_processors.file_processors import parse_with_llamacloud_retry - + from app.tasks.document_processors.file_processors import ( + parse_with_llamacloud_retry, + ) + # Estimate pages (rough estimate based on file size) file_size = os.path.getsize(file_path) estimated_pages = max(1, file_size // (80 * 1024)) - + result = await parse_with_llamacloud_retry( file_path=file_path, estimated_pages=estimated_pages, task_logger=task_logger, log_entry=log_entry, ) - - markdown_documents = await result.aget_markdown_documents(split_by_page=False) + + markdown_documents = await result.aget_markdown_documents( + split_by_page=False + ) if markdown_documents: return markdown_documents[0].text return None - + elif etl_service == "DOCLING": from app.services.docling_service import create_docling_service - + docling_service = create_docling_service() - + # Suppress pdfminer warnings pdfminer_logger = getLogger("pdfminer") original_level = pdfminer_logger.level - + with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=UserWarning, module="pdfminer") - warnings.filterwarnings("ignore", message=".*Cannot set gray non-stroke color.*") + warnings.filterwarnings( + "ignore", category=UserWarning, module="pdfminer" + ) + warnings.filterwarnings( + "ignore", message=".*Cannot set gray non-stroke color.*" + ) warnings.filterwarnings("ignore", message=".*invalid float value.*") - + pdfminer_logger.setLevel(ERROR) - + try: - result = await docling_service.process_document(file_path, file_name) + result = await docling_service.process_document( + file_path, file_name + ) finally: pdfminer_logger.setLevel(original_level) - + return result.get("content") else: logger.warning(f"Unknown ETL service: {etl_service}") return None - + except Exception as e: logger.error(f"ETL extraction failed for {file_name}: {e!s}") return None @@ -367,9 +437,11 @@ async def index_composio_connector( # Get connector by id - accept any Composio connector type # We'll check the actual type after loading connector = await get_connector_by_id( - session, connector_id, None # Don't filter by type, we'll validate after + session, + connector_id, + None, # Don't filter by type, we'll validate after ) - + # Validate it's a Composio connector if connector and connector.connector_type not in [ SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, @@ -392,7 +464,9 @@ async def index_composio_connector( # Get toolkit ID from config toolkit_id = connector.config.get("toolkit_id") if not toolkit_id: - error_msg = f"Composio connector {connector_id} has no toolkit_id configured" + error_msg = ( + f"Composio connector {connector_id} has no toolkit_id configured" + ) await task_logger.log_task_failure( log_entry, error_msg, {"error_type": "MissingToolkitId"} ) @@ -488,7 +562,7 @@ async def _index_composio_google_drive( max_items: int = 1000, ) -> tuple[int, str]: """Index Google Drive files via Composio. - + Supports folder/file selection via connector config: - selected_folders: List of {id, name} for folders to index - selected_files: List of {id, name} for individual files to index @@ -502,14 +576,18 @@ async def _index_composio_google_drive( selected_folders = connector_config.get("selected_folders", []) selected_files = connector_config.get("selected_files", []) indexing_options = connector_config.get("indexing_options", {}) - + max_files_per_folder = indexing_options.get("max_files_per_folder", 100) include_subfolders = indexing_options.get("include_subfolders", True) await task_logger.log_task_progress( log_entry, f"Fetching Google Drive files via Composio for connector {connector_id}", - {"stage": "fetching_files", "selected_folders": len(selected_folders), "selected_files": len(selected_files)}, + { + "stage": "fetching_files", + "selected_folders": len(selected_folders), + "selected_files": len(selected_files), + }, ) all_files = [] @@ -520,34 +598,42 @@ async def _index_composio_google_drive( for folder in selected_folders: folder_id = folder.get("id") folder_name = folder.get("name", "Unknown") - + if not folder_id: continue - + # Handle special case for "root" folder actual_folder_id = None if folder_id == "root" else folder_id - + logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") - + # Fetch files from this folder folder_files = [] page_token = None - + while len(folder_files) < max_files_per_folder: - files, next_token, error = await composio_connector.list_drive_files( + ( + files, + next_token, + error, + ) = await composio_connector.list_drive_files( folder_id=actual_folder_id, page_token=page_token, page_size=min(100, max_files_per_folder - len(folder_files)), ) if error: - logger.warning(f"Failed to fetch files from folder {folder_name}: {error}") + logger.warning( + f"Failed to fetch files from folder {folder_name}: {error}" + ) break # Process files for file_info in files: - mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") - + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + # If it's a folder and include_subfolders is enabled, recursively fetch if mime_type == "application/vnd.google-apps.folder": if include_subfolders: @@ -565,7 +651,7 @@ async def _index_composio_google_drive( if not next_token: break page_token = next_token - + all_files.extend(folder_files[:max_files_per_folder]) logger.info(f"Found {len(folder_files)} files in folder {folder_name}") @@ -573,16 +659,18 @@ async def _index_composio_google_drive( for selected_file in selected_files: file_id = selected_file.get("id") file_name = selected_file.get("name", "Unknown") - + if not file_id: continue - + # Add file info (we'll fetch content later during indexing) - all_files.append({ - "id": file_id, - "name": file_name, - "mimeType": "", # Will be determined later - }) + all_files.append( + { + "id": file_id, + "name": file_name, + "mimeType": "", # Will be determined later + } + ) else: # No selection specified - fetch all files (original behavior) page_token = None @@ -613,7 +701,10 @@ async def _index_composio_google_drive( # CRITICAL: Update timestamp even when no files found so Electric SQL syncs and UI shows indexed status await update_connector_last_indexed(session, connector, update_last_indexed) await session.commit() - return 0, None # Return None (not error) when no items found - this is success with 0 items + return ( + 0, + None, + ) # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(all_files)} Google Drive files to index via Composio") @@ -625,8 +716,14 @@ async def _index_composio_google_drive( try: # Handle both standard Google API and potential Composio variations file_id = file_info.get("id", "") or file_info.get("fileId", "") - file_name = file_info.get("name", "") or file_info.get("fileName", "") or "Untitled" - mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + file_name = ( + file_info.get("name", "") + or file_info.get("fileName", "") + or "Untitled" + ) + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) if not file_id: documents_skipped += 1 @@ -648,12 +745,15 @@ async def _index_composio_google_drive( ) # Get file content - content, content_error = await composio_connector.get_drive_file_content( - file_id - ) + ( + content, + content_error, + ) = await composio_connector.get_drive_file_content(file_id) if content_error or not content: - logger.warning(f"Could not get content for file {file_name}: {content_error}") + logger.warning( + f"Could not get content for file {file_name}: {content_error}" + ) # Use metadata as content fallback markdown_content = f"# {file_name}\n\n" markdown_content += f"**File ID:** {file_id}\n" @@ -700,12 +800,19 @@ async def _index_composio_google_drive( "mime_type": mime_type, "document_type": "Google Drive File (Composio)", } - summary_content, summary_embedding = await generate_document_summary( + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( markdown_content, user_llm, document_metadata ) else: - summary_content = f"Google Drive File: {file_name}\n\nType: {mime_type}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) @@ -724,8 +831,8 @@ async def _index_composio_google_drive( existing_document.updated_at = get_current_timestamp() documents_indexed += 1 - - # Batch commit every 10 documents + + # Batch commit every 10 documents if documents_indexed % 10 == 0: logger.info( f"Committing batch: {documents_indexed} Google Drive files processed so far" @@ -745,12 +852,19 @@ async def _index_composio_google_drive( "mime_type": mime_type, "document_type": "Google Drive File (Composio)", } - summary_content, summary_embedding = await generate_document_summary( + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( markdown_content, user_llm, document_metadata ) else: - summary_content = f"Google Drive File: {file_name}\n\nType: {mime_type}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) @@ -776,7 +890,7 @@ async def _index_composio_google_drive( session.add(document) documents_indexed += 1 - # Batch commit every 10 documents + # Batch commit every 10 documents if documents_indexed % 10 == 0: logger.info( f"Committing batch: {documents_indexed} Google Drive files processed so far" @@ -784,7 +898,9 @@ async def _index_composio_google_drive( await session.commit() except Exception as e: - error_msg = f"Error processing Drive file {file_name or 'unknown'}: {e!s}" + error_msg = ( + f"Error processing Drive file {file_name or 'unknown'}: {e!s}" + ) logger.error(error_msg, exc_info=True) processing_errors.append(error_msg) documents_skipped += 1 @@ -848,7 +964,7 @@ async def _fetch_folder_files_recursively( ) -> list[dict[str, Any]]: """ Recursively fetch files from a Google Drive folder via Composio. - + Args: composio_connector: The Composio connector instance folder_id: Google Drive folder ID @@ -856,20 +972,20 @@ async def _fetch_folder_files_recursively( current_count: Current number of files already fetched depth: Current recursion depth max_depth: Maximum recursion depth to prevent infinite loops - + Returns: List of file info dictionaries """ if depth >= max_depth: logger.warning(f"Max recursion depth reached for folder {folder_id}") return [] - + if current_count >= max_files: return [] - + all_files = [] page_token = None - + try: while len(all_files) + current_count < max_files: files, next_token, error = await composio_connector.list_drive_files( @@ -877,14 +993,18 @@ async def _fetch_folder_files_recursively( page_token=page_token, page_size=min(100, max_files - len(all_files) - current_count), ) - + if error: - logger.warning(f"Error fetching files from subfolder {folder_id}: {error}") + logger.warning( + f"Error fetching files from subfolder {folder_id}: {error}" + ) break - + for file_info in files: - mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") - + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + if mime_type == "application/vnd.google-apps.folder": # Recursively fetch from subfolders subfolder_files = await _fetch_folder_files_recursively( @@ -898,16 +1018,16 @@ async def _fetch_folder_files_recursively( all_files.extend(subfolder_files) else: all_files.append(file_info) - + if len(all_files) + current_count >= max_files: break - + if not next_token: break page_token = next_token - - return all_files[:max_files - current_count] - + + return all_files[: max_files - current_count] + except Exception as e: logger.error(f"Error in recursive folder fetch: {e!s}") return all_files @@ -924,10 +1044,10 @@ async def _process_gmail_message_batch( ) -> tuple[int, int]: """ Process a batch of Gmail messages and index them. - + Args: total_documents_indexed: Running total of documents indexed so far (for batch commits). - + Returns: Tuple of (documents_indexed, documents_skipped) """ @@ -965,7 +1085,9 @@ async def _process_gmail_message_batch( date_str = value # Format to markdown using the full message data - markdown_content = composio_connector.format_gmail_message_to_markdown(message) + markdown_content = composio_connector.format_gmail_message_to_markdown( + message + ) # Check for empty content (defensive parsing per Composio best practices) if not markdown_content.strip(): @@ -1008,12 +1130,19 @@ async def _process_gmail_message_batch( "sender": sender, "document_type": "Gmail Message (Composio)", } - summary_content, summary_embedding = await generate_document_summary( + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( markdown_content, user_llm, document_metadata ) else: - summary_content = f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_content = ( + f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) @@ -1035,8 +1164,8 @@ async def _process_gmail_message_batch( existing_document.updated_at = get_current_timestamp() documents_indexed += 1 - - # Batch commit every 10 documents + + # Batch commit every 10 documents current_total = total_documents_indexed + documents_indexed if current_total % 10 == 0: logger.info( @@ -1062,8 +1191,12 @@ async def _process_gmail_message_batch( markdown_content, user_llm, document_metadata ) else: - summary_content = f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_content = ( + f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) @@ -1092,7 +1225,7 @@ async def _process_gmail_message_batch( session.add(document) documents_indexed += 1 - # Batch commit every 10 documents + # Batch commit every 10 documents current_total = total_documents_indexed + documents_indexed if current_total % 10 == 0: logger.info( @@ -1107,7 +1240,9 @@ async def _process_gmail_message_batch( try: await session.rollback() except Exception as rollback_error: - logger.error(f"Error during rollback: {rollback_error!s}", exc_info=True) + logger.error( + f"Error during rollback: {rollback_error!s}", exc_info=True + ) continue return documents_indexed, documents_skipped @@ -1169,7 +1304,9 @@ async def _index_composio_gmail( current_batch_size = min(batch_size, remaining) # Use result_size_estimate if available, otherwise fall back to max_items - estimated_total = result_size_estimate if result_size_estimate is not None else max_items + estimated_total = ( + result_size_estimate if result_size_estimate is not None else max_items + ) # Cap estimated_total at max_items to avoid showing misleading progress estimated_total = min(estimated_total, max_items) @@ -1187,7 +1324,12 @@ async def _index_composio_gmail( ) # Fetch batch of messages - messages, next_token, result_size_estimate_batch, error = await composio_connector.list_gmail_messages( + ( + messages, + next_token, + result_size_estimate_batch, + error, + ) = await composio_connector.list_gmail_messages( query=query, max_results=current_batch_size, page_token=page_token, @@ -1206,13 +1348,17 @@ async def _index_composio_gmail( # Update result_size_estimate from first response (Gmail provides this estimate) if result_size_estimate is None and result_size_estimate_batch is not None: result_size_estimate = result_size_estimate_batch - logger.info(f"Gmail API estimated {result_size_estimate} total messages for query: '{query}'") + logger.info( + f"Gmail API estimated {result_size_estimate} total messages for query: '{query}'" + ) total_messages_fetched += len(messages) # Recalculate estimated_total after potentially updating result_size_estimate - estimated_total = result_size_estimate if result_size_estimate is not None else max_items + estimated_total = ( + result_size_estimate if result_size_estimate is not None else max_items + ) estimated_total = min(estimated_total, max_items) - + logger.info( f"Fetched batch of {len(messages)} Gmail messages " f"(total: {total_messages_fetched}/{estimated_total})" @@ -1357,7 +1503,10 @@ async def _index_composio_google_calendar( # CRITICAL: Update timestamp even when no events found so Electric SQL syncs and UI shows indexed status await update_connector_last_indexed(session, connector, update_last_indexed) await session.commit() - return 0, None # Return None (not error) when no items found - this is success with 0 items + return ( + 0, + None, + ) # Return None (not error) when no items found - this is success with 0 items logger.info(f"Found {len(events)} Google Calendar events to index via Composio") @@ -1368,14 +1517,18 @@ async def _index_composio_google_calendar( try: # Handle both standard Google API and potential Composio variations event_id = event.get("id", "") or event.get("eventId", "") - summary = event.get("summary", "") or event.get("title", "") or "No Title" + summary = ( + event.get("summary", "") or event.get("title", "") or "No Title" + ) if not event_id: documents_skipped += 1 continue # Format to markdown - markdown_content = composio_connector.format_calendar_event_to_markdown(event) + markdown_content = composio_connector.format_calendar_event_to_markdown( + event + ) # Generate unique identifier document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]) @@ -1413,14 +1566,19 @@ async def _index_composio_google_calendar( "start_time": start_time, "document_type": "Google Calendar Event (Composio)", } - summary_content, summary_embedding = await generate_document_summary( + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( markdown_content, user_llm, document_metadata ) else: summary_content = f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" if location: summary_content += f"\nLocation: {location}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) @@ -1441,8 +1599,8 @@ async def _index_composio_google_calendar( existing_document.updated_at = get_current_timestamp() documents_indexed += 1 - - # Batch commit every 10 documents + + # Batch commit every 10 documents if documents_indexed % 10 == 0: logger.info( f"Committing batch: {documents_indexed} Google Calendar events processed so far" @@ -1462,21 +1620,30 @@ async def _index_composio_google_calendar( "start_time": start_time, "document_type": "Google Calendar Event (Composio)", } - summary_content, summary_embedding = await generate_document_summary( + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( markdown_content, user_llm, document_metadata ) else: - summary_content = f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" + summary_content = ( + f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" + ) if location: summary_content += f"\nLocation: {location}" - summary_embedding = config.embedding_model_instance.embed(summary_content) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) chunks = await create_document_chunks(markdown_content) document = Document( search_space_id=search_space_id, title=f"Calendar: {summary}", - document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]), + document_type=DocumentType( + TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"] + ), document_metadata={ "event_id": event_id, "summary": summary, @@ -1497,7 +1664,7 @@ async def _index_composio_google_calendar( session.add(document) documents_indexed += 1 - # Batch commit every 10 documents + # Batch commit every 10 documents if documents_indexed % 10 == 0: logger.info( f"Committing batch: {documents_indexed} Google Calendar events processed so far" @@ -1535,5 +1702,7 @@ async def _index_composio_google_calendar( return documents_indexed, None except Exception as e: - logger.error(f"Failed to index Google Calendar via Composio: {e!s}", exc_info=True) + logger.error( + f"Failed to index Google Calendar via Composio: {e!s}", exc_info=True + ) return 0, f"Failed to index Google Calendar via Composio: {e!s}" diff --git a/surfsense_backend/app/tasks/connector_indexers/__init__.py b/surfsense_backend/app/tasks/connector_indexers/__init__.py index 35b5fde4c..8f25e6fdd 100644 --- a/surfsense_backend/app/tasks/connector_indexers/__init__.py +++ b/surfsense_backend/app/tasks/connector_indexers/__init__.py @@ -26,6 +26,7 @@ Available indexers: # Calendar and scheduling from .airtable_indexer import index_airtable_records from .bookstack_indexer import index_bookstack_pages + # Note: composio_indexer is imported directly in connector_tasks.py to avoid circular imports from .clickup_indexer import index_clickup_tasks from .confluence_indexer import index_confluence_pages diff --git a/surfsense_backend/app/tasks/connector_indexers/github_indexer.py b/surfsense_backend/app/tasks/connector_indexers/github_indexer.py index f16ee0156..4a8df4918 100644 --- a/surfsense_backend/app/tasks/connector_indexers/github_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/github_indexer.py @@ -128,7 +128,9 @@ async def index_github_repos( if github_pat: logger.info("Using GitHub PAT for authentication (private repos supported)") else: - logger.info("No GitHub PAT provided - only public repositories can be indexed") + logger.info( + "No GitHub PAT provided - only public repositories can be indexed" + ) # 3. Initialize GitHub connector with gitingest backend await task_logger.log_task_progress( @@ -308,9 +310,7 @@ async def _process_repository_digest( if existing_document: # Document exists - check if content has changed if existing_document.content_hash == content_hash: - logger.info( - f"Repository {repo_full_name} unchanged. Skipping." - ) + logger.info(f"Repository {repo_full_name} unchanged. Skipping.") return 0 else: logger.info( @@ -341,7 +341,7 @@ async def _process_repository_digest( summary_content = ( f"# Repository: {repo_full_name}\n\n" f"## File Structure\n\n{digest.tree}\n\n" - f"## File Contents (truncated)\n\n{digest.content[:MAX_DIGEST_CHARS - len(digest.tree) - 200]}..." + f"## File Contents (truncated)\n\n{digest.content[: MAX_DIGEST_CHARS - len(digest.tree) - 200]}..." ) summary_text, summary_embedding = await generate_document_summary( @@ -362,9 +362,7 @@ async def _process_repository_digest( # This preserves file-level granularity in search chunks_data = await create_document_chunks(digest.content) except Exception as chunk_err: - logger.error( - f"Failed to chunk repository {repo_full_name}: {chunk_err}" - ) + logger.error(f"Failed to chunk repository {repo_full_name}: {chunk_err}") # Fall back to a simpler chunking approach chunks_data = await _simple_chunk_content(digest.content) diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx index 255d0cef4..fdff956e5 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx @@ -211,7 +211,9 @@ export const ComposioConfig: FC = ({ connector, onConfigCha ); } if (selectedFiles.length > 0) { - parts.push(`${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}`); + parts.push( + `${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}` + ); } return parts.length > 0 ? `(${parts.join(" ")})` : ""; })()} @@ -338,7 +340,9 @@ export const ComposioConfig: FC = ({ connector, onConfigCha handleIndexingOptionChange("include_subfolders", checked)} + onCheckedChange={(checked) => + handleIndexingOptionChange("include_subfolders", checked) + } /> diff --git a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts index c7e77f666..5a0a8e8c8 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/constants/connector-popup.schemas.ts @@ -7,7 +7,9 @@ import { searchSourceConnectorTypeEnum } from "@/contracts/types/connector.types export const connectorPopupQueryParamsSchema = z.object({ modal: z.enum(["connectors"]).optional(), tab: z.enum(["all", "active"]).optional(), - view: z.enum(["configure", "edit", "connect", "youtube", "accounts", "mcp-list", "composio"]).optional(), + view: z + .enum(["configure", "edit", "connect", "youtube", "accounts", "mcp-list", "composio"]) + .optional(), connector: z.string().optional(), connectorId: z.string().optional(), connectorType: z.string().optional(), diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 1be8a7983..b30337de3 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -26,7 +26,11 @@ import { import { cacheKeys } from "@/lib/query-client/cache-keys"; import { queryClient } from "@/lib/query-client/client"; import type { IndexingConfigState } from "../constants/connector-constants"; -import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS, OTHER_CONNECTORS } from "../constants/connector-constants"; +import { + COMPOSIO_CONNECTORS, + OAUTH_CONNECTORS, + OTHER_CONNECTORS, +} from "../constants/connector-constants"; import { dateRangeSchema, frequencyMinutesSchema, @@ -83,7 +87,6 @@ export const useConnectorDialog = () => { // MCP list view state (for managing multiple MCP connectors) const [viewingMCPList, setViewingMCPList] = useState(false); - // Track if we came from accounts list when entering edit mode const [cameFromAccountsList, setCameFromAccountsList] = useState<{ connectorType: string; @@ -164,16 +167,14 @@ export const useConnectorDialog = () => { // Handle accounts view if (params.view === "accounts" && params.connectorType) { // Update state if not set, or if connectorType has changed - const needsUpdate = !viewingAccountsType || - viewingAccountsType.connectorType !== params.connectorType; - + const needsUpdate = + !viewingAccountsType || viewingAccountsType.connectorType !== params.connectorType; + if (needsUpdate) { // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS - const oauthConnector = OAUTH_CONNECTORS.find( - (c) => c.connectorType === params.connectorType - ) || COMPOSIO_CONNECTORS.find( - (c) => c.connectorType === params.connectorType - ); + const oauthConnector = + OAUTH_CONNECTORS.find((c) => c.connectorType === params.connectorType) || + COMPOSIO_CONNECTORS.find((c) => c.connectorType === params.connectorType); if (oauthConnector) { setViewingAccountsType({ connectorType: oauthConnector.connectorType, @@ -395,11 +396,8 @@ export const useConnectorDialog = () => { // Check if authEndpoint already has query parameters const separator = connector.authEndpoint.includes("?") ? "&" : "?"; const url = `${process.env.NEXT_PUBLIC_FASTAPI_BACKEND_URL}${connector.authEndpoint}${separator}space_id=${searchSpaceId}`; - - const response = await authenticatedFetch( - url, - { method: "GET" } - ); + + const response = await authenticatedFetch(url, { method: "GET" }); if (!response.ok) { throw new Error(`Failed to initiate ${connector.title} OAuth`); diff --git a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx index ffe879d5d..6b38a37d2 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/tabs/all-connectors-tab.tsx @@ -4,7 +4,12 @@ import type { FC } from "react"; import { EnumConnectorName } from "@/contracts/enums/connector"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import { ConnectorCard } from "../components/connector-card"; -import { CRAWLERS, OAUTH_CONNECTORS, OTHER_CONNECTORS, COMPOSIO_CONNECTORS } from "../constants/connector-constants"; +import { + CRAWLERS, + OAUTH_CONNECTORS, + OTHER_CONNECTORS, + COMPOSIO_CONNECTORS, +} from "../constants/connector-constants"; import { getDocumentCountForConnector } from "../utils/connector-document-mapping"; /** @@ -28,7 +33,9 @@ interface AllConnectorsTabProps { allConnectors: SearchSourceConnector[] | undefined; documentTypeCounts?: Record; indexingConnectorIds?: Set; - onConnectOAuth: (connector: (typeof OAUTH_CONNECTORS)[number] | (typeof COMPOSIO_CONNECTORS)[number]) => void; + onConnectOAuth: ( + connector: (typeof OAUTH_CONNECTORS)[number] | (typeof COMPOSIO_CONNECTORS)[number] + ) => void; onConnectNonOAuth?: (connectorType: string) => void; onCreateWebcrawler?: () => void; onCreateYouTubeCrawler?: () => void; @@ -82,7 +89,9 @@ export const AllConnectorsTab: FC = ({ {filteredComposio.length > 0 && (
-

Managed OAuth (Composio)

+

+ Managed OAuth (Composio) +

{filteredComposio.map((connector) => { @@ -99,7 +108,6 @@ export const AllConnectorsTab: FC = ({ const accountCount = typeConnectors.length; - const documentCount = getDocumentCountForConnector( connector.connectorType, documentTypeCounts @@ -154,7 +162,6 @@ export const AllConnectorsTab: FC = ({ const accountCount = typeConnectors.length; - const documentCount = getDocumentCountForConnector( connector.connectorType, documentTypeCounts diff --git a/surfsense_web/components/connectors/composio-drive-folder-tree.tsx b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx index 72c36edd5..76ae218cb 100644 --- a/surfsense_web/components/connectors/composio-drive-folder-tree.tsx +++ b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx @@ -362,4 +362,3 @@ export function ComposioDriveFolderTree({
); } - diff --git a/surfsense_web/hooks/use-composio-drive-folders.ts b/surfsense_web/hooks/use-composio-drive-folders.ts index af8da1a81..31e516286 100644 --- a/surfsense_web/hooks/use-composio-drive-folders.ts +++ b/surfsense_web/hooks/use-composio-drive-folders.ts @@ -26,4 +26,3 @@ export function useComposioDriveFolders({ retry: 2, }); } - From 6a41b0f6080f9d050a662fa8d0909f282c1c83d4 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:12:57 +0530 Subject: [PATCH 08/51] feat: enhance Composio and Google Drive connector functionality - Added support for extracting connected account IDs from query parameters in the Composio callback, accommodating both camelCase and snake_case formats. - Improved logging for received query parameters in the Composio callback to enhance debugging. - Updated Google Drive folder listing logs to remove unnecessary emoji for consistency. - Expanded the connector dialog to include Composio Google Drive as a recognized connector type, improving user interface clarity. --- .../app/routes/composio_routes.py | 21 ++++++++++--------- .../google_drive_add_connector_route.py | 2 +- .../hooks/use-connector-dialog.ts | 7 +++++-- .../layout/ui/sidebar/InboxSidebar.tsx | 3 +++ 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index dec9beb02..5af332760 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -14,7 +14,7 @@ Endpoints: import logging from uuid import UUID -from fastapi import APIRouter, Depends, HTTPException, Query +from fastapi import APIRouter, Depends, HTTPException, Query, Request from fastapi.responses import RedirectResponse from pydantic import ValidationError from sqlalchemy.exc import IntegrityError @@ -170,9 +170,8 @@ async def initiate_composio_auth( @router.get("/auth/composio/connector/callback") async def composio_callback( + request: Request, state: str | None = None, - connectedAccountId: str | None = None, # Composio sends camelCase - connected_account_id: str | None = None, # Fallback snake_case error: str | None = None, session: AsyncSession = Depends(get_async_session), ): @@ -239,14 +238,16 @@ async def composio_callback( # Initialize Composio service service = ComposioService() - entity_id = f"surfsense_{user_id}" - # Use camelCase param if provided (Composio's format), fallback to snake_case - final_connected_account_id = connectedAccountId or connected_account_id + # Extract connected_account_id from query params (accepts both camelCase and snake_case) + query_params = request.query_params + final_connected_account_id = query_params.get( + "connectedAccountId" + ) or query_params.get("connected_account_id") - # DEBUG: Log all query parameters received + # DEBUG: Log query parameter received logger.info( - f"DEBUG: Callback received - connectedAccountId: {connectedAccountId}, connected_account_id: {connected_account_id}, using: {final_connected_account_id}" + f"DEBUG: Callback received - connectedAccountId: {query_params.get('connectedAccountId')}, connected_account_id: {query_params.get('connected_account_id')}, using: {final_connected_account_id}" ) # If we still don't have a connected_account_id, warn but continue @@ -448,7 +449,7 @@ async def list_composio_drive_folders( entity_id = f"surfsense_{user.id}" # Fetch files/folders from Composio Google Drive - files, next_token, error = await service.get_drive_files( + files, _next_token, error = await service.get_drive_files( connected_account_id=composio_connected_account_id, entity_id=entity_id, folder_id=parent_id, @@ -502,7 +503,7 @@ async def list_composio_drive_folders( file_count = len(files_list) logger.info( - f"✅ Listed {len(items)} total items ({folder_count} folders, {file_count} files) for Composio connector {connector_id}" + f"Listed {len(items)} total items ({folder_count} folders, {file_count} files) for Composio connector {connector_id}" + (f" in folder {parent_id}" if parent_id else " in ROOT") ) diff --git a/surfsense_backend/app/routes/google_drive_add_connector_route.py b/surfsense_backend/app/routes/google_drive_add_connector_route.py index e15aed762..6b4159d29 100644 --- a/surfsense_backend/app/routes/google_drive_add_connector_route.py +++ b/surfsense_backend/app/routes/google_drive_add_connector_route.py @@ -402,7 +402,7 @@ async def list_google_drive_folders( file_count = len(items) - folder_count logger.info( - f"✅ Listed {len(items)} total items ({folder_count} folders, {file_count} files) for connector {connector_id}" + f"Listed {len(items)} total items ({folder_count} folders, {file_count} files) for connector {connector_id}" + (f" in folder {parent_id}" if parent_id else " in ROOT") ) diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index b30337de3..2923ab823 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -1182,8 +1182,11 @@ export const useConnectorDialog = () => { if (!editingConnector.is_indexable) { // Non-indexable connectors (like Tavily API) don't need re-indexing indexingDescription = "Settings saved."; - } else if (editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR") { - // Google Drive uses folder selection from config, not date ranges + } else if ( + editingConnector.connector_type === "GOOGLE_DRIVE_CONNECTOR" || + editingConnector.connector_type === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" + ) { + // Google Drive (both regular and Composio) uses folder selection from config, not date ranges const selectedFolders = (connectorConfig || editingConnector.config)?.selected_folders as | Array<{ id: string; name: string }> | undefined; diff --git a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx index a3fd3ea14..4dee8888a 100644 --- a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx @@ -79,6 +79,9 @@ function getConnectorTypeDisplayName(connectorType: string): string { GOOGLE_CALENDAR_CONNECTOR: "Google Calendar", GOOGLE_GMAIL_CONNECTOR: "Gmail", GOOGLE_DRIVE_CONNECTOR: "Google Drive", + COMPOSIO_GOOGLE_DRIVE_CONNECTOR: "Composio Google Drive", + COMPOSIO_GMAIL_CONNECTOR: "Composio Gmail", + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: "Composio Google Calendar", LINEAR_CONNECTOR: "Linear", NOTION_CONNECTOR: "Notion", SLACK_CONNECTOR: "Slack", From 9c5c925fcaf60e2ad7c8a76a6bd66e7e5a227904 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:50:06 +0530 Subject: [PATCH 09/51] feat: update Obsidian connector UI and icon --- .../components/obsidian-connect-form.tsx | 4 +- surfsense_web/lib/connectors/utils.ts | 1 + surfsense_web/public/connectors/obsidian.svg | 56 +++++++++++++++---- 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx index 064e10e2f..94839b03b 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx @@ -1,7 +1,7 @@ "use client"; import { zodResolver } from "@hookform/resolvers/zod"; -import { FolderOpen, Info } from "lucide-react"; +import { Info } from "lucide-react"; import type { FC } from "react"; import { useRef, useState } from "react"; import { useForm } from "react-hook-form"; @@ -109,7 +109,7 @@ export const ObsidianConnectForm: FC = ({ onSubmit, isSubmitti return (
- +
Self-Hosted Only diff --git a/surfsense_web/lib/connectors/utils.ts b/surfsense_web/lib/connectors/utils.ts index a85b912ed..34721a6aa 100644 --- a/surfsense_web/lib/connectors/utils.ts +++ b/surfsense_web/lib/connectors/utils.ts @@ -21,6 +21,7 @@ export const getConnectorTypeDisplay = (type: string): string => { ELASTICSEARCH_CONNECTOR: "Elasticsearch", WEBCRAWLER_CONNECTOR: "Web Pages", CIRCLEBACK_CONNECTOR: "Circleback", + OBSIDIAN_CONNECTOR: "Obsidian", }; return typeMap[type] || type; }; diff --git a/surfsense_web/public/connectors/obsidian.svg b/surfsense_web/public/connectors/obsidian.svg index 9fe15c4a3..b5afd5724 100644 --- a/surfsense_web/public/connectors/obsidian.svg +++ b/surfsense_web/public/connectors/obsidian.svg @@ -1,12 +1,46 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 29382070aaa2583a18a0b5dcb0c078d13ebb62f2 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:37:09 +0530 Subject: [PATCH 10/51] feat: enhance Composio connector functionality with Google Drive delta sync support - Added methods to retrieve the starting page token and list changes in Google Drive, enabling delta sync capabilities. - Updated Composio service to handle file download directory configuration. - Modified indexing tasks to support delta sync, improving efficiency by processing only changed files. - Adjusted date handling in connector tasks to allow optional start and end dates. - Improved error handling and logging throughout the Composio indexing process. --- .../app/connectors/composio_connector.py | 49 + .../routes/search_source_connectors_routes.py | 4 +- .../app/services/composio_service.py | 333 +++++-- .../app/tasks/celery_tasks/connector_tasks.py | 8 +- .../celery_tasks/schedule_checker_task.py | 5 + .../app/tasks/composio_indexer.py | 909 +++++++++++------- .../(manage)/components/RowActions.tsx | 2 +- .../assistant-ui/connector-popup.tsx | 13 +- .../views/connector-edit-view.tsx | 2 +- .../views/indexing-configuration-view.tsx | 11 +- .../hooks/use-connector-dialog.ts | 5 +- .../tabs/active-connectors-tab.tsx | 7 +- .../components/settings/llm-role-manager.tsx | 2 +- .../settings/model-config-manager.tsx | 18 +- .../settings/prompt-config-manager.tsx | 2 +- surfsense_web/messages/en.json | 6 +- 16 files changed, 905 insertions(+), 471 deletions(-) diff --git a/surfsense_backend/app/connectors/composio_connector.py b/surfsense_backend/app/connectors/composio_connector.py index b49988887..8cb91355d 100644 --- a/surfsense_backend/app/connectors/composio_connector.py +++ b/surfsense_backend/app/connectors/composio_connector.py @@ -146,6 +146,55 @@ class ComposioConnector: file_id=file_id, ) + async def get_drive_start_page_token(self) -> tuple[str | None, str | None]: + """ + Get the starting page token for Google Drive change tracking. + + Returns: + Tuple of (start_page_token, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_drive_start_page_token( + connected_account_id=connected_account_id, + entity_id=entity_id, + ) + + async def list_drive_changes( + self, + page_token: str | None = None, + page_size: int = 100, + include_removed: bool = True, + ) -> tuple[list[dict[str, Any]], str | None, str | None]: + """ + List changes in Google Drive since the given page token. + + Args: + page_token: Page token from previous sync (optional). + page_size: Number of changes per page. + include_removed: Whether to include removed items. + + Returns: + Tuple of (changes list, new_start_page_token, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return [], None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.list_drive_changes( + connected_account_id=connected_account_id, + entity_id=entity_id, + page_token=page_token, + page_size=page_size, + include_removed=include_removed, + ) + # ===== Gmail Methods ===== async def list_gmail_messages( diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index db1b884e0..82f452c61 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -2288,8 +2288,8 @@ async def run_composio_indexing( connector_id: int, search_space_id: int, user_id: str, - start_date: str, - end_date: str, + start_date: str | None, + end_date: str | None, ): """ Run Composio connector indexing with real-time notifications. diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 0d6189cd9..3810f03a4 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -57,17 +57,30 @@ TOOLKIT_TO_DOCUMENT_TYPE = { class ComposioService: """Service for interacting with Composio API.""" - def __init__(self, api_key: str | None = None): + # Default download directory for files from Composio + DEFAULT_DOWNLOAD_DIR = "/tmp/composio_downloads" + + def __init__(self, api_key: str | None = None, file_download_dir: str | None = None): """ Initialize the Composio service. Args: api_key: Composio API key. If not provided, uses config.COMPOSIO_API_KEY. + file_download_dir: Directory for downloaded files. Defaults to /tmp/composio_downloads. """ + import os + self.api_key = api_key or config.COMPOSIO_API_KEY if not self.api_key: raise ValueError("COMPOSIO_API_KEY is required but not configured") - self.client = Composio(api_key=self.api_key) + + # Set up download directory + self.file_download_dir = file_download_dir or self.DEFAULT_DOWNLOAD_DIR + os.makedirs(self.file_download_dir, exist_ok=True) + + # Initialize Composio client with download directory + # Per docs: file_download_dir configures where files are downloaded + self.client = Composio(api_key=self.api_key, file_download_dir=self.file_download_dir) @staticmethod def is_enabled() -> bool: @@ -465,6 +478,10 @@ class ComposioService: """ Download file content from Google Drive via Composio. + Per Composio docs: When tools return files, they are automatically downloaded + to a local directory, and the local file path is provided in the response. + Response includes: file_path, file_name, size fields. + Args: connected_account_id: Composio connected account ID. entity_id: The entity/user ID that owns the connected account. @@ -473,11 +490,13 @@ class ComposioService: Returns: Tuple of (file content bytes, error message). """ + from pathlib import Path + try: result = await self.execute_tool( connected_account_id=connected_account_id, tool_name="GOOGLEDRIVE_DOWNLOAD_FILE", - params={"file_id": file_id}, # snake_case + params={"file_id": file_id}, entity_id=entity_id, ) @@ -485,100 +504,234 @@ class ComposioService: return None, result.get("error", "Unknown error") data = result.get("data") - - # Composio GOOGLEDRIVE_DOWNLOAD_FILE returns a dict with file info - # The actual content is in "downloaded_file_content" field - if isinstance(data, dict): - # Try known Composio response fields in order of preference - content = None - - # Primary field from GOOGLEDRIVE_DOWNLOAD_FILE - if "downloaded_file_content" in data: - content = data["downloaded_file_content"] - # downloaded_file_content might itself be a dict with the actual content inside - if isinstance(content, dict): - # Try to extract actual content from nested dict - # Note: Composio nests downloaded_file_content inside another downloaded_file_content - actual_content = ( - content.get("downloaded_file_content") - or content.get("content") - or content.get("data") - or content.get("file_content") - or content.get("body") - or content.get("text") - ) - if actual_content is not None: - content = actual_content - else: - # Log structure for debugging - logger.warning( - f"downloaded_file_content is dict with keys: {list(content.keys())}" - ) - return ( - None, - f"Cannot extract content from downloaded_file_content. Keys: {list(content.keys())}", - ) - # Fallback fields for compatibility - elif "content" in data: - content = data["content"] - elif "file_content" in data: - content = data["file_content"] - elif "data" in data: - content = data["data"] - - if content is None: - # Log available keys for debugging - logger.warning(f"Composio response dict keys: {list(data.keys())}") - return ( - None, - f"No file content found in Composio response. Available keys: {list(data.keys())}", - ) - - # Convert content to bytes - if isinstance(content, str): - # Check if it's base64 encoded - import base64 - - try: - # Try to decode as base64 first - content = base64.b64decode(content) - except Exception: - # If not base64, encode as UTF-8 - content = content.encode("utf-8") - elif isinstance(content, bytes): - pass # Already bytes - elif isinstance(content, dict): - # Still a dict after all extraction attempts - log structure - logger.warning( - f"Content still dict after extraction: {list(content.keys())}" - ) - return ( - None, - f"Unexpected nested content structure: {list(content.keys())}", - ) - else: - return ( - None, - f"Unexpected content type in Composio response: {type(content).__name__}", - ) - - return content, None - elif isinstance(data, str): - return data.encode("utf-8"), None - elif isinstance(data, bytes): - return data, None - elif data is None: + if not data: return None, "No data returned from Composio" - else: - return ( - None, - f"Unexpected data type from Composio: {type(data).__name__}", + + # Per Composio docs, response includes file_path where file was downloaded + # Response structure: {data: {...}, error: ..., successful: ...} + # The actual file info is nested inside data["data"] + file_path = None + + if isinstance(data, dict): + # Handle nested response structure: data contains {data, error, successful} + # The actual file info is in data["data"] + inner_data = data + if "data" in data and isinstance(data["data"], dict): + inner_data = data["data"] + logger.debug(f"Found nested data structure. Inner keys: {list(inner_data.keys())}") + elif "successful" in data and "data" in data: + # Standard Composio response wrapper + inner_data = data["data"] if data["data"] else data + + # Try documented fields: file_path, downloaded_file_content, path, uri + file_path = ( + inner_data.get("file_path") or + inner_data.get("downloaded_file_content") or + inner_data.get("path") or + inner_data.get("uri") ) + + # Handle nested dict case where downloaded_file_content contains the path + if isinstance(file_path, dict): + file_path = ( + file_path.get("file_path") or + file_path.get("downloaded_file_content") or + file_path.get("path") or + file_path.get("uri") + ) + + # If still no path, check if inner_data itself has the nested structure + if not file_path and isinstance(inner_data, dict): + for key in ["downloaded_file_content", "file_path", "path", "uri"]: + if key in inner_data: + val = inner_data[key] + if isinstance(val, str): + file_path = val + break + elif isinstance(val, dict): + # One more level of nesting + file_path = ( + val.get("file_path") or + val.get("downloaded_file_content") or + val.get("path") or + val.get("uri") + ) + if file_path: + break + + logger.debug(f"Composio response keys: {list(data.keys())}, inner keys: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}, extracted path: {file_path}") + elif isinstance(data, str): + # Direct string response (could be path or content) + file_path = data + elif isinstance(data, bytes): + # Direct bytes response + return data, None + + # Read file from the path + if file_path and isinstance(file_path, str): + path_obj = Path(file_path) + + # Check if it's a valid file path (absolute or in .composio directory) + if path_obj.is_absolute() or '.composio' in str(path_obj): + try: + if path_obj.exists(): + content = path_obj.read_bytes() + logger.info(f"Successfully read {len(content)} bytes from Composio file: {file_path}") + return content, None + else: + logger.warning(f"File path from Composio does not exist: {file_path}") + return None, f"File not found at path: {file_path}" + except Exception as e: + logger.error(f"Failed to read file from Composio path {file_path}: {e!s}") + return None, f"Failed to read file: {e!s}" + else: + # Not a file path - might be base64 encoded content + try: + import base64 + content = base64.b64decode(file_path) + return content, None + except Exception: + # Not base64, return as UTF-8 bytes + return file_path.encode("utf-8"), None + + # If we got here, couldn't extract file path + if isinstance(data, dict): + # Log full structure for debugging + inner_data = data.get("data", {}) + logger.warning( + f"Could not extract file path from Composio response. " + f"Top keys: {list(data.keys())}, " + f"Inner data keys: {list(inner_data.keys()) if isinstance(inner_data, dict) else type(inner_data).__name__}, " + f"Full inner data: {inner_data}" + ) + return None, f"No file path in Composio response. Keys: {list(data.keys())}, inner: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}" + + return None, f"Unexpected data type from Composio: {type(data).__name__}" except Exception as e: logger.error(f"Failed to get Drive file content: {e!s}") return None, str(e) + async def get_drive_start_page_token( + self, connected_account_id: str, entity_id: str + ) -> tuple[str | None, str | None]: + """ + Get the starting page token for Google Drive change tracking. + + This token represents the current state and is used for future delta syncs. + Per Composio docs: Use GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN to get initial token. + + Args: + connected_account_id: Composio connected account ID. + entity_id: The entity/user ID that owns the connected account. + + Returns: + Tuple of (start_page_token, error message). + """ + try: + result = await self.execute_tool( + connected_account_id=connected_account_id, + tool_name="GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN", + params={}, + entity_id=entity_id, + ) + + if not result.get("success"): + return None, result.get("error", "Unknown error") + + data = result.get("data", {}) + # Handle nested response: {data: {startPageToken: ...}, successful: ...} + if isinstance(data, dict): + inner_data = data.get("data", data) + token = ( + inner_data.get("startPageToken") or + inner_data.get("start_page_token") or + data.get("startPageToken") or + data.get("start_page_token") + ) + if token: + logger.info(f"Got Drive start page token: {token}") + return token, None + + logger.warning(f"Could not extract start page token from response: {data}") + return None, "No start page token in response" + + except Exception as e: + logger.error(f"Failed to get Drive start page token: {e!s}") + return None, str(e) + + async def list_drive_changes( + self, + connected_account_id: str, + entity_id: str, + page_token: str | None = None, + page_size: int = 100, + include_removed: bool = True, + ) -> tuple[list[dict[str, Any]], str | None, str | None]: + """ + List changes in Google Drive since the given page token. + + Per Composio docs: GOOGLEDRIVE_LIST_CHANGES tracks modifications to files/folders. + If pageToken is not provided, it auto-fetches the current start page token. + Response includes nextPageToken for pagination and newStartPageToken for future syncs. + + Args: + connected_account_id: Composio connected account ID. + entity_id: The entity/user ID that owns the connected account. + page_token: Page token from previous sync (optional - will auto-fetch if not provided). + page_size: Number of changes per page. + include_removed: Whether to include removed items in the response. + + Returns: + Tuple of (changes list, new_start_page_token, error message). + """ + try: + params = { + "pageSize": min(page_size, 100), + "includeRemoved": include_removed, + } + if page_token: + params["pageToken"] = page_token + + result = await self.execute_tool( + connected_account_id=connected_account_id, + tool_name="GOOGLEDRIVE_LIST_CHANGES", + params=params, + entity_id=entity_id, + ) + + if not result.get("success"): + return [], None, result.get("error", "Unknown error") + + data = result.get("data", {}) + + # Handle nested response structure + changes = [] + new_start_token = None + + if isinstance(data, dict): + inner_data = data.get("data", data) + changes = inner_data.get("changes", []) or data.get("changes", []) + + # Get the token for next sync + # newStartPageToken is returned when all changes have been fetched + # nextPageToken is for pagination within the current fetch + new_start_token = ( + inner_data.get("newStartPageToken") or + inner_data.get("new_start_page_token") or + inner_data.get("nextPageToken") or + inner_data.get("next_page_token") or + data.get("newStartPageToken") or + data.get("nextPageToken") + ) + + logger.info(f"Got {len(changes)} Drive changes, new token: {new_start_token[:20] if new_start_token else 'None'}...") + return changes, new_start_token, None + + except Exception as e: + logger.error(f"Failed to list Drive changes: {e!s}") + return [], None, str(e) + # ===== Gmail specific methods ===== async def get_gmail_messages( diff --git a/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py b/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py index 81cafaa2c..d0710d246 100644 --- a/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py +++ b/surfsense_backend/app/tasks/celery_tasks/connector_tasks.py @@ -810,8 +810,8 @@ def index_composio_connector_task( connector_id: int, search_space_id: int, user_id: str, - start_date: str, - end_date: str, + start_date: str | None, + end_date: str | None, ): """Celery task to index Composio connector content (Google Drive, Gmail, Calendar via Composio).""" import asyncio @@ -833,8 +833,8 @@ async def _index_composio_connector( connector_id: int, search_space_id: int, user_id: str, - start_date: str, - end_date: str, + start_date: str | None, + end_date: str | None, ): """Index Composio connector content with new session and real-time notifications.""" # Import from routes to use the notification-wrapped version diff --git a/surfsense_backend/app/tasks/celery_tasks/schedule_checker_task.py b/surfsense_backend/app/tasks/celery_tasks/schedule_checker_task.py index 21855f73f..bf80cbe78 100644 --- a/surfsense_backend/app/tasks/celery_tasks/schedule_checker_task.py +++ b/surfsense_backend/app/tasks/celery_tasks/schedule_checker_task.py @@ -66,6 +66,7 @@ async def _check_and_trigger_schedules(): from app.tasks.celery_tasks.connector_tasks import ( index_airtable_records_task, index_clickup_tasks_task, + index_composio_connector_task, index_confluence_pages_task, index_crawled_urls_task, index_discord_messages_task, @@ -98,6 +99,10 @@ async def _check_and_trigger_schedules(): SearchSourceConnectorType.ELASTICSEARCH_CONNECTOR: index_elasticsearch_documents_task, SearchSourceConnectorType.WEBCRAWLER_CONNECTOR: index_crawled_urls_task, SearchSourceConnectorType.GOOGLE_DRIVE_CONNECTOR: index_google_drive_files_task, + # Composio connector types + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR: index_composio_connector_task, + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR: index_composio_connector_task, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: index_composio_connector_task, } # Trigger indexing for each due connector diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index e5c8b701e..3eed8470e 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -561,8 +561,12 @@ async def _index_composio_google_drive( update_last_indexed: bool = True, max_items: int = 1000, ) -> tuple[int, str]: - """Index Google Drive files via Composio. + """Index Google Drive files via Composio with delta sync support. + Delta Sync Flow: + 1. First sync: Full scan + get initial page token + 2. Subsequent syncs: Use LIST_CHANGES to process only changed files + Supports folder/file selection via connector config: - selected_folders: List of {id, name} for folders to index - selected_files: List of {id, name} for individual files to index @@ -576,354 +580,88 @@ async def _index_composio_google_drive( selected_folders = connector_config.get("selected_folders", []) selected_files = connector_config.get("selected_files", []) indexing_options = connector_config.get("indexing_options", {}) + + # Check for stored page token for delta sync + stored_page_token = connector_config.get("drive_page_token") + use_delta_sync = stored_page_token and connector.last_indexed_at max_files_per_folder = indexing_options.get("max_files_per_folder", 100) include_subfolders = indexing_options.get("include_subfolders", True) - await task_logger.log_task_progress( - log_entry, - f"Fetching Google Drive files via Composio for connector {connector_id}", - { - "stage": "fetching_files", - "selected_folders": len(selected_folders), - "selected_files": len(selected_files), - }, - ) - - all_files = [] - - # If specific folders/files are selected, fetch from those - if selected_folders or selected_files: - # Fetch files from selected folders - for folder in selected_folders: - folder_id = folder.get("id") - folder_name = folder.get("name", "Unknown") - - if not folder_id: - continue - - # Handle special case for "root" folder - actual_folder_id = None if folder_id == "root" else folder_id - - logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") - - # Fetch files from this folder - folder_files = [] - page_token = None - - while len(folder_files) < max_files_per_folder: - ( - files, - next_token, - error, - ) = await composio_connector.list_drive_files( - folder_id=actual_folder_id, - page_token=page_token, - page_size=min(100, max_files_per_folder - len(folder_files)), - ) - - if error: - logger.warning( - f"Failed to fetch files from folder {folder_name}: {error}" - ) - break - - # Process files - for file_info in files: - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" - ) - - # If it's a folder and include_subfolders is enabled, recursively fetch - if mime_type == "application/vnd.google-apps.folder": - if include_subfolders: - # Add subfolder files recursively - subfolder_files = await _fetch_folder_files_recursively( - composio_connector, - file_info.get("id"), - max_files=max_files_per_folder, - current_count=len(folder_files), - ) - folder_files.extend(subfolder_files) - else: - folder_files.append(file_info) - - if not next_token: - break - page_token = next_token - - all_files.extend(folder_files[:max_files_per_folder]) - logger.info(f"Found {len(folder_files)} files in folder {folder_name}") - - # Add specifically selected files - for selected_file in selected_files: - file_id = selected_file.get("id") - file_name = selected_file.get("name", "Unknown") - - if not file_id: - continue - - # Add file info (we'll fetch content later during indexing) - all_files.append( - { - "id": file_id, - "name": file_name, - "mimeType": "", # Will be determined later - } - ) - else: - # No selection specified - fetch all files (original behavior) - page_token = None - - while len(all_files) < max_items: - files, next_token, error = await composio_connector.list_drive_files( - page_token=page_token, - page_size=min(100, max_items - len(all_files)), - ) - - if error: - await task_logger.log_task_failure( - log_entry, f"Failed to fetch Drive files: {error}", {} - ) - return 0, f"Failed to fetch Drive files: {error}" - - all_files.extend(files) - - if not next_token: - break - page_token = next_token - - if not all_files: - success_msg = "No Google Drive files found" - await task_logger.log_task_success( - log_entry, success_msg, {"files_count": 0} + # Route to delta sync or full scan + if use_delta_sync: + logger.info(f"Using delta sync for Composio Google Drive connector {connector_id}") + await task_logger.log_task_progress( + log_entry, + f"Starting delta sync for Google Drive via Composio (connector {connector_id})", + {"stage": "delta_sync", "token": stored_page_token[:20] + "..."}, + ) + + documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_delta_sync( + session=session, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + page_token=stored_page_token, + max_items=max_items, + task_logger=task_logger, + log_entry=log_entry, + ) + else: + logger.info(f"Using full scan for Composio Google Drive connector {connector_id} (first sync or no token)") + await task_logger.log_task_progress( + log_entry, + f"Fetching Google Drive files via Composio for connector {connector_id}", + { + "stage": "full_scan", + "selected_folders": len(selected_folders), + "selected_files": len(selected_files), + }, + ) + + documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_full_scan( + session=session, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + selected_folders=selected_folders, + selected_files=selected_files, + max_files_per_folder=max_files_per_folder, + include_subfolders=include_subfolders, + max_items=max_items, + task_logger=task_logger, + log_entry=log_entry, ) - # CRITICAL: Update timestamp even when no files found so Electric SQL syncs and UI shows indexed status - await update_connector_last_indexed(session, connector, update_last_indexed) - await session.commit() - return ( - 0, - None, - ) # Return None (not error) when no items found - this is success with 0 items - logger.info(f"Found {len(all_files)} Google Drive files to index via Composio") + # Get new page token for next sync (always update after successful sync) + new_token, token_error = await composio_connector.get_drive_start_page_token() + if new_token and not token_error: + from sqlalchemy.orm.attributes import flag_modified + + # Refresh connector to avoid stale state + await session.refresh(connector) + + if not connector.config: + connector.config = {} + connector.config["drive_page_token"] = new_token + flag_modified(connector, "config") + logger.info(f"Updated drive_page_token for connector {connector_id}") + elif token_error: + logger.warning(f"Failed to get new page token: {token_error}") - documents_indexed = 0 - documents_skipped = 0 - processing_errors = [] - - for file_info in all_files: - try: - # Handle both standard Google API and potential Composio variations - file_id = file_info.get("id", "") or file_info.get("fileId", "") - file_name = ( - file_info.get("name", "") - or file_info.get("fileName", "") - or "Untitled" - ) - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" - ) - - if not file_id: - documents_skipped += 1 - continue - - # Skip folders - if mime_type == "application/vnd.google-apps.folder": - continue - - # Generate unique identifier hash - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"drive_{file_id}", search_space_id - ) - - # Check if document exists - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - - # Get file content - ( - content, - content_error, - ) = await composio_connector.get_drive_file_content(file_id) - - if content_error or not content: - logger.warning( - f"Could not get content for file {file_name}: {content_error}" - ) - # Use metadata as content fallback - markdown_content = f"# {file_name}\n\n" - markdown_content += f"**File ID:** {file_id}\n" - markdown_content += f"**Type:** {mime_type}\n" - elif isinstance(content, dict): - # Safety check: if content is still a dict, log error and use fallback - error_msg = f"Unexpected dict content format for file {file_name}: {list(content.keys())}" - logger.error(error_msg) - processing_errors.append(error_msg) - markdown_content = f"# {file_name}\n\n" - markdown_content += f"**File ID:** {file_id}\n" - markdown_content += f"**Type:** {mime_type}\n" - else: - # Process content based on file type - markdown_content = await _process_file_content( - content=content, - file_name=file_name, - file_id=file_id, - mime_type=mime_type, - search_space_id=search_space_id, - user_id=user_id, - session=session, - task_logger=task_logger, - log_entry=log_entry, - processing_errors=processing_errors, - ) - - content_hash = generate_content_hash(markdown_content, search_space_id) - - if existing_document: - if existing_document.content_hash == content_hash: - documents_skipped += 1 - continue - - # Update existing document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "document_type": "Google Drive File (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - existing_document.title = f"Drive: {file_name}" - existing_document.content = summary_content - existing_document.content_hash = content_hash - existing_document.embedding = summary_embedding - existing_document.document_metadata = { - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "connector_id": connector_id, - "source": "composio", - } - existing_document.chunks = chunks - existing_document.updated_at = get_current_timestamp() - - documents_indexed += 1 - - # Batch commit every 10 documents - if documents_indexed % 10 == 0: - logger.info( - f"Committing batch: {documents_indexed} Google Drive files processed so far" - ) - await session.commit() - continue - - # Create new document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "document_type": "Google Drive File (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - document = Document( - search_space_id=search_space_id, - title=f"Drive: {file_name}", - document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]), - document_metadata={ - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "connector_id": connector_id, - "toolkit_id": "googledrive", - "source": "composio", - }, - content=summary_content, - content_hash=content_hash, - unique_identifier_hash=unique_identifier_hash, - embedding=summary_embedding, - chunks=chunks, - updated_at=get_current_timestamp(), - ) - session.add(document) - documents_indexed += 1 - - # Batch commit every 10 documents - if documents_indexed % 10 == 0: - logger.info( - f"Committing batch: {documents_indexed} Google Drive files processed so far" - ) - await session.commit() - - except Exception as e: - error_msg = ( - f"Error processing Drive file {file_name or 'unknown'}: {e!s}" - ) - logger.error(error_msg, exc_info=True) - processing_errors.append(error_msg) - documents_skipped += 1 - continue - - # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs - # This ensures the UI shows "Last indexed" instead of "Never indexed" + # CRITICAL: Always update timestamp so Electric SQL syncs and UI shows indexed status await update_connector_last_indexed(session, connector, update_last_indexed) - # Final commit to ensure all documents are persisted (safety net) - # This matches the pattern used in non-Composio Gmail indexer - logger.info( - f"Final commit: Total {documents_indexed} Google Drive files processed" - ) + # Final commit + logger.info(f"Final commit: Total {documents_indexed} Google Drive files processed") await session.commit() - logger.info( - "Successfully committed all Composio Google Drive document changes to database" - ) + logger.info("Successfully committed all Composio Google Drive document changes to database") - # If there were processing errors, return them so notification can show them + # Handle processing errors error_message = None if processing_errors: - # Combine all errors into a single message if len(processing_errors) == 1: error_message = processing_errors[0] else: @@ -934,6 +672,7 @@ async def _index_composio_google_drive( { "documents_indexed": documents_indexed, "documents_skipped": documents_skipped, + "sync_type": "delta" if use_delta_sync else "full", "errors": processing_errors, }, ) @@ -944,6 +683,7 @@ async def _index_composio_google_drive( { "documents_indexed": documents_indexed, "documents_skipped": documents_skipped, + "sync_type": "delta" if use_delta_sync else "full", }, ) @@ -954,6 +694,469 @@ async def _index_composio_google_drive( return 0, f"Failed to index Google Drive via Composio: {e!s}" +async def _index_composio_drive_delta_sync( + session: AsyncSession, + composio_connector: ComposioConnector, + connector_id: int, + search_space_id: int, + user_id: str, + page_token: str, + max_items: int, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Index Google Drive files using delta sync (only changed files). + + Uses GOOGLEDRIVE_LIST_CHANGES to fetch only files that changed since last sync. + Handles: new files, modified files, and deleted files. + """ + documents_indexed = 0 + documents_skipped = 0 + processing_errors = [] + + # Fetch all changes with pagination + all_changes = [] + current_token = page_token + + while len(all_changes) < max_items: + changes, next_token, error = await composio_connector.list_drive_changes( + page_token=current_token, + page_size=100, + include_removed=True, + ) + + if error: + logger.error(f"Error fetching Drive changes: {error}") + processing_errors.append(f"Failed to fetch changes: {error}") + break + + all_changes.extend(changes) + + if not next_token or next_token == current_token: + break + current_token = next_token + + if not all_changes: + logger.info("No changes detected since last sync") + return 0, 0, [] + + logger.info(f"Processing {len(all_changes)} changes from delta sync") + + for change in all_changes[:max_items]: + try: + # Handle removed files + is_removed = change.get("removed", False) + file_info = change.get("file", {}) + file_id = change.get("fileId") or file_info.get("id", "") + + if not file_id: + documents_skipped += 1 + continue + + # Check if file was trashed or removed + if is_removed or file_info.get("trashed", False): + # Remove document from database + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"drive_{file_id}", search_space_id + ) + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + if existing_document: + await session.delete(existing_document) + documents_indexed += 1 + logger.info(f"Deleted document for removed/trashed file: {file_id}") + continue + + # Process changed file + file_name = file_info.get("name", "") or "Untitled" + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + + # Skip folders + if mime_type == "application/vnd.google-apps.folder": + continue + + # Process the file + indexed, skipped, errors = await _process_single_drive_file( + session=session, + composio_connector=composio_connector, + file_id=file_id, + file_name=file_name, + mime_type=mime_type, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + task_logger=task_logger, + log_entry=log_entry, + ) + + documents_indexed += indexed + documents_skipped += skipped + processing_errors.extend(errors) + + # Batch commit every 10 documents + if documents_indexed > 0 and documents_indexed % 10 == 0: + await session.commit() + logger.info(f"Committed batch: {documents_indexed} changes processed") + + except Exception as e: + error_msg = f"Error processing change for file {file_id}: {e!s}" + logger.error(error_msg, exc_info=True) + processing_errors.append(error_msg) + documents_skipped += 1 + + logger.info(f"Delta sync complete: {documents_indexed} indexed, {documents_skipped} skipped") + return documents_indexed, documents_skipped, processing_errors + + +async def _index_composio_drive_full_scan( + session: AsyncSession, + composio_connector: ComposioConnector, + connector_id: int, + search_space_id: int, + user_id: str, + selected_folders: list[dict], + selected_files: list[dict], + max_files_per_folder: int, + include_subfolders: bool, + max_items: int, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Index Google Drive files using full scan (first sync or when no delta token).""" + documents_indexed = 0 + documents_skipped = 0 + processing_errors = [] + + all_files = [] + + # If specific folders/files are selected, fetch from those + if selected_folders or selected_files: + # Fetch files from selected folders + for folder in selected_folders: + folder_id = folder.get("id") + folder_name = folder.get("name", "Unknown") + + if not folder_id: + continue + + # Handle special case for "root" folder + actual_folder_id = None if folder_id == "root" else folder_id + + logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") + + # Fetch files from this folder + folder_files = [] + page_token = None + + while len(folder_files) < max_files_per_folder: + ( + files, + next_token, + error, + ) = await composio_connector.list_drive_files( + folder_id=actual_folder_id, + page_token=page_token, + page_size=min(100, max_files_per_folder - len(folder_files)), + ) + + if error: + logger.warning( + f"Failed to fetch files from folder {folder_name}: {error}" + ) + break + + # Process files + for file_info in files: + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + + # If it's a folder and include_subfolders is enabled, recursively fetch + if mime_type == "application/vnd.google-apps.folder": + if include_subfolders: + # Add subfolder files recursively + subfolder_files = await _fetch_folder_files_recursively( + composio_connector, + file_info.get("id"), + max_files=max_files_per_folder, + current_count=len(folder_files), + ) + folder_files.extend(subfolder_files) + else: + folder_files.append(file_info) + + if not next_token: + break + page_token = next_token + + all_files.extend(folder_files[:max_files_per_folder]) + logger.info(f"Found {len(folder_files)} files in folder {folder_name}") + + # Add specifically selected files + for selected_file in selected_files: + file_id = selected_file.get("id") + file_name = selected_file.get("name", "Unknown") + + if not file_id: + continue + + # Add file info (we'll fetch content later during indexing) + all_files.append( + { + "id": file_id, + "name": file_name, + "mimeType": "", # Will be determined later + } + ) + else: + # No selection specified - fetch all files (original behavior) + page_token = None + + while len(all_files) < max_items: + files, next_token, error = await composio_connector.list_drive_files( + page_token=page_token, + page_size=min(100, max_items - len(all_files)), + ) + + if error: + return 0, 0, [f"Failed to fetch Drive files: {error}"] + + all_files.extend(files) + + if not next_token: + break + page_token = next_token + + if not all_files: + logger.info("No Google Drive files found") + return 0, 0, [] + + logger.info(f"Found {len(all_files)} Google Drive files to index via Composio (full scan)") + + for file_info in all_files: + try: + # Handle both standard Google API and potential Composio variations + file_id = file_info.get("id", "") or file_info.get("fileId", "") + file_name = ( + file_info.get("name", "") + or file_info.get("fileName", "") + or "Untitled" + ) + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + + if not file_id: + documents_skipped += 1 + continue + + # Skip folders + if mime_type == "application/vnd.google-apps.folder": + continue + + # Process the file + indexed, skipped, errors = await _process_single_drive_file( + session=session, + composio_connector=composio_connector, + file_id=file_id, + file_name=file_name, + mime_type=mime_type, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + task_logger=task_logger, + log_entry=log_entry, + ) + + documents_indexed += indexed + documents_skipped += skipped + processing_errors.extend(errors) + + # Batch commit every 10 documents + if documents_indexed > 0 and documents_indexed % 10 == 0: + logger.info(f"Committing batch: {documents_indexed} Google Drive files processed so far") + await session.commit() + + except Exception as e: + error_msg = f"Error processing Drive file {file_name or 'unknown'}: {e!s}" + logger.error(error_msg, exc_info=True) + processing_errors.append(error_msg) + documents_skipped += 1 + + logger.info(f"Full scan complete: {documents_indexed} indexed, {documents_skipped} skipped") + return documents_indexed, documents_skipped, processing_errors + + +async def _process_single_drive_file( + session: AsyncSession, + composio_connector: ComposioConnector, + file_id: str, + file_name: str, + mime_type: str, + connector_id: int, + search_space_id: int, + user_id: str, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Process a single Google Drive file for indexing. + + Returns: + Tuple of (documents_indexed, documents_skipped, processing_errors) + """ + processing_errors = [] + + # Generate unique identifier hash + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"drive_{file_id}", search_space_id + ) + + # Check if document exists + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + + # Get file content + content, content_error = await composio_connector.get_drive_file_content(file_id) + + if content_error or not content: + logger.warning( + f"Could not get content for file {file_name}: {content_error}" + ) + # Use metadata as content fallback + markdown_content = f"# {file_name}\n\n" + markdown_content += f"**File ID:** {file_id}\n" + markdown_content += f"**Type:** {mime_type}\n" + elif isinstance(content, dict): + # Safety check: if content is still a dict, log error and use fallback + error_msg = f"Unexpected dict content format for file {file_name}: {list(content.keys())}" + logger.error(error_msg) + processing_errors.append(error_msg) + markdown_content = f"# {file_name}\n\n" + markdown_content += f"**File ID:** {file_id}\n" + markdown_content += f"**Type:** {mime_type}\n" + else: + # Process content based on file type + markdown_content = await _process_file_content( + content=content, + file_name=file_name, + file_id=file_id, + mime_type=mime_type, + search_space_id=search_space_id, + user_id=user_id, + session=session, + task_logger=task_logger, + log_entry=log_entry, + processing_errors=processing_errors, + ) + + content_hash = generate_content_hash(markdown_content, search_space_id) + + if existing_document: + if existing_document.content_hash == content_hash: + return 0, 1, processing_errors # Skipped + + # Update existing document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "file_id": file_id, + "file_name": file_name, + "mime_type": mime_type, + "document_type": "Google Drive File (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + existing_document.title = f"Drive: {file_name}" + existing_document.content = summary_content + existing_document.content_hash = content_hash + existing_document.embedding = summary_embedding + existing_document.document_metadata = { + "file_id": file_id, + "file_name": file_name, + "FILE_NAME": file_name, # For compatibility + "mime_type": mime_type, + "connector_id": connector_id, + "source": "composio", + } + existing_document.chunks = chunks + existing_document.updated_at = get_current_timestamp() + + return 1, 0, processing_errors # Indexed + + # Create new document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "file_id": file_id, + "file_name": file_name, + "mime_type": mime_type, + "document_type": "Google Drive File (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + document = Document( + search_space_id=search_space_id, + title=f"Drive: {file_name}", + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]), + document_metadata={ + "file_id": file_id, + "file_name": file_name, + "FILE_NAME": file_name, # For compatibility + "mime_type": mime_type, + "connector_id": connector_id, + "toolkit_id": "googledrive", + "source": "composio", + }, + content=summary_content, + content_hash=content_hash, + unique_identifier_hash=unique_identifier_hash, + embedding=summary_embedding, + chunks=chunks, + updated_at=get_current_timestamp(), + ) + session.add(document) + + return 1, 0, processing_errors # Indexed + + async def _fetch_folder_files_recursively( composio_connector: ComposioConnector, folder_id: str, @@ -1271,11 +1474,18 @@ async def _index_composio_gmail( if end_date == "undefined" or end_date == "": end_date = None - # Calculate date range with defaults (uses last_indexed_at or 365 days back) - # This ensures indexing works even when user doesn't specify dates - start_date_str, end_date_str = calculate_date_range( - connector, start_date, end_date, default_days_back=365 - ) + # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at + # This ensures user-selected dates are respected (matching non-Composio Gmail connector behavior) + if start_date is not None and end_date is not None: + # User provided both dates - use them directly + start_date_str = start_date + end_date_str = end_date + else: + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) # Build query with date range query_parts = [] @@ -1468,11 +1678,18 @@ async def _index_composio_google_calendar( if end_date == "undefined" or end_date == "": end_date = None - # Calculate date range with defaults (uses last_indexed_at or 365 days back) - # This ensures indexing works even when user doesn't specify dates - start_date_str, end_date_str = calculate_date_range( - connector, start_date, end_date, default_days_back=365 - ) + # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at + # This ensures user-selected dates are respected (matching non-Composio Calendar connector behavior) + if start_date is not None and end_date is not None: + # User provided both dates - use them directly + start_date_str = start_date + end_date_str = end_date + else: + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) # Build time range for API call time_min = f"{start_date_str}T00:00:00Z" diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsx index d277a84ee..d9a894e5a 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/RowActions.tsx @@ -209,7 +209,7 @@ export function RowActions({ disabled={isDeleting} className="bg-destructive text-destructive-foreground hover:bg-destructive/90" > - {isDeleting ? "Deleting..." : "Delete"} + {isDeleting ? "Deleting" : "Delete"} diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index a1108f7c8..045c3c586 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -16,7 +16,7 @@ import { ConnectorDialogHeader } from "./connector-popup/components/connector-di import { ConnectorConnectView } from "./connector-popup/connector-configs/views/connector-connect-view"; import { ConnectorEditView } from "./connector-popup/connector-configs/views/connector-edit-view"; import { IndexingConfigurationView } from "./connector-popup/connector-configs/views/indexing-configuration-view"; -import { OAUTH_CONNECTORS } from "./connector-popup/constants/connector-constants"; +import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS } from "./connector-popup/constants/connector-constants"; import { useConnectorDialog } from "./connector-popup/hooks/use-connector-dialog"; import { useIndexingConnectors } from "./connector-popup/hooks/use-indexing-connectors"; import { ActiveConnectorsTab } from "./connector-popup/tabs/active-connectors-tab"; @@ -196,9 +196,14 @@ export const ConnectorIndicator: FC = () => { onBack={handleBackFromAccountsList} onManage={handleStartEdit} onAddAccount={() => { - const oauthConnector = OAUTH_CONNECTORS.find( - (c) => c.connectorType === viewingAccountsType.connectorType - ); + // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS + const oauthConnector = + OAUTH_CONNECTORS.find( + (c) => c.connectorType === viewingAccountsType.connectorType + ) || + COMPOSIO_CONNECTORS.find( + (c) => c.connectorType === viewingAccountsType.connectorType + ); if (oauthConnector) { handleConnectOAuth(oauthConnector); } diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 71258a519..234898922 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -341,7 +341,7 @@ export const ConnectorEditView: FC = ({ {isSaving ? ( <> - Saving... + Saving ) : ( "Save Changes" diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx index ea489aec8..68fc688c3 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx @@ -9,7 +9,11 @@ import { getConnectorTypeDisplay } from "@/lib/connectors/utils"; import { cn } from "@/lib/utils"; import { DateRangeSelector } from "../../components/date-range-selector"; import { PeriodicSyncConfig } from "../../components/periodic-sync-config"; -import { type IndexingConfigState, OAUTH_CONNECTORS } from "../../constants/connector-constants"; +import { + COMPOSIO_CONNECTORS, + type IndexingConfigState, + OAUTH_CONNECTORS, +} from "../../constants/connector-constants"; import { getConnectorDisplayName } from "../../tabs/all-connectors-tab"; import { getConnectorConfigComponent } from "../index"; @@ -91,7 +95,10 @@ export const IndexingConfigurationView: FC = ({ }; }, [checkScrollState]); - const authConnector = OAUTH_CONNECTORS.find((c) => c.connectorType === connector?.connector_type); + // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS + const authConnector = + OAUTH_CONNECTORS.find((c) => c.connectorType === connector?.connector_type) || + COMPOSIO_CONNECTORS.find((c) => c.connectorType === connector?.connector_type); return (
diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 2923ab823..a2b1168bd 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -191,7 +191,10 @@ export const useConnectorDialog = () => { // Handle configure view (for page refresh support) if (params.view === "configure" && params.connector && !indexingConfig && allConnectors) { - const oauthConnector = OAUTH_CONNECTORS.find((c) => c.id === params.connector); + // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS + const oauthConnector = + OAUTH_CONNECTORS.find((c) => c.id === params.connector) || + COMPOSIO_CONNECTORS.find((c) => c.id === params.connector); if (oauthConnector) { let existingConnector: SearchSourceConnector | undefined; if (params.connectorId) { diff --git a/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx b/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx index a518d63a6..e45888bb1 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx @@ -13,7 +13,7 @@ import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import type { LogActiveTask, LogSummary } from "@/contracts/types/log.types"; import { connectorsApiService } from "@/lib/apis/connectors-api.service"; import { cn } from "@/lib/utils"; -import { OAUTH_CONNECTORS } from "../constants/connector-constants"; +import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS } from "../constants/connector-constants"; import { getDocumentCountForConnector } from "../utils/connector-document-mapping"; interface ActiveConnectorsTabProps { @@ -113,7 +113,10 @@ export const ActiveConnectorsTab: FC = ({ // Get display info for OAuth connector type const getOAuthConnectorTypeInfo = (connectorType: string) => { - const oauthConnector = OAUTH_CONNECTORS.find((c) => c.connectorType === connectorType); + // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS + const oauthConnector = + OAUTH_CONNECTORS.find((c) => c.connectorType === connectorType) || + COMPOSIO_CONNECTORS.find((c) => c.connectorType === connectorType); return { title: oauthConnector?.title || diff --git a/surfsense_web/components/settings/llm-role-manager.tsx b/surfsense_web/components/settings/llm-role-manager.tsx index ba4c4970c..c41a2d3bf 100644 --- a/surfsense_web/components/settings/llm-role-manager.tsx +++ b/surfsense_web/components/settings/llm-role-manager.tsx @@ -398,7 +398,7 @@ export function LLMRoleManager({ searchSpaceId }: LLMRoleManagerProps) { className="flex items-center gap-2 text-xs md:text-sm h-9 md:h-10" > - {isSaving ? "Saving..." : "Save Changes"} + {isSaving ? "Saving" : "Save Changes"}
diff --git a/surfsense_web/messages/en.json b/surfsense_web/messages/en.json index 94e44c8ec..8ca382669 100644 --- a/surfsense_web/messages/en.json +++ b/surfsense_web/messages/en.json @@ -157,7 +157,7 @@ "delete_note": "Delete Note", "delete_note_confirm": "Are you sure you want to delete", "action_cannot_undone": "This action cannot be undone.", - "deleting": "Deleting...", + "deleting": "Deleting", "surfsense_dashboard": "SurfSense Dashboard", "welcome_message": "Welcome to your SurfSense dashboard.", "your_search_spaces": "Your Search Spaces", @@ -498,7 +498,7 @@ "base": "Base", "all_roles_assigned": "All roles are assigned and ready to use! Your LLM configuration is complete.", "save_changes": "Save Changes", - "saving": "Saving...", + "saving": "Saving", "reset": "Reset", "status": "Status", "status_ready": "Ready", @@ -548,7 +548,7 @@ "log_deleted_error": "Failed to delete log", "confirm_delete_log_title": "Are you sure?", "confirm_delete_log_desc": "This action cannot be undone. This will permanently delete the log entry.", - "deleting": "Deleting..." + "deleting": "Deleting" }, "onboard": { "welcome_title": "Welcome to SurfSense", From 8d8f69545ee869242fe27fb2f4d4512429cdb240 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 18:57:10 +0530 Subject: [PATCH 11/51] feat: improve Google Calendar and Gmail connectors with enhanced error handling - Added user-friendly re-authentication messages for expired or revoked tokens in both Google Calendar and Gmail connectors. - Updated error handling in indexing tasks to log specific authentication errors and provide clearer feedback to users. - Enhanced the connector UI to handle indexing failures more effectively, improving overall user experience. --- .../connectors/google_calendar_connector.py | 14 +++++++ .../app/connectors/google_gmail_connector.py | 14 +++++++ .../google_calendar_indexer.py | 15 +++++-- .../google_gmail_indexer.py | 14 ++++++- .../assistant-ui/connector-popup.tsx | 18 ++++++-- .../views/connector-edit-view.tsx | 2 +- .../hooks/use-connector-dialog.ts | 6 ++- .../hooks/use-indexing-connectors.ts | 42 ++++++++++++++++++- 8 files changed, 113 insertions(+), 12 deletions(-) diff --git a/surfsense_backend/app/connectors/google_calendar_connector.py b/surfsense_backend/app/connectors/google_calendar_connector.py index 6d389ddd5..ac60b02a8 100644 --- a/surfsense_backend/app/connectors/google_calendar_connector.py +++ b/surfsense_backend/app/connectors/google_calendar_connector.py @@ -142,6 +142,12 @@ class GoogleCalendarConnector: flag_modified(connector, "config") await self._session.commit() except Exception as e: + error_str = str(e) + # Check if this is an invalid_grant error (token expired/revoked) + if "invalid_grant" in error_str.lower() or "token has been expired or revoked" in error_str.lower(): + raise Exception( + "Google Calendar authentication failed. Please re-authenticate." + ) from e raise Exception( f"Failed to refresh Google OAuth credentials: {e!s}" ) from e @@ -165,6 +171,10 @@ class GoogleCalendarConnector: self.service = build("calendar", "v3", credentials=credentials) return self.service except Exception as e: + error_str = str(e) + # If the error already contains a user-friendly re-authentication message, preserve it + if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + raise Exception(error_str) from e raise Exception(f"Failed to create Google Calendar service: {e!s}") from e async def get_calendars(self) -> tuple[list[dict[str, Any]], str | None]: @@ -271,6 +281,10 @@ class GoogleCalendarConnector: return events, None except Exception as e: + error_str = str(e) + # If the error already contains a user-friendly re-authentication message, preserve it + if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + return [], error_str return [], f"Error fetching events: {e!s}" def format_event_to_markdown(self, event: dict[str, Any]) -> str: diff --git a/surfsense_backend/app/connectors/google_gmail_connector.py b/surfsense_backend/app/connectors/google_gmail_connector.py index 10008ad73..8c0e4690e 100644 --- a/surfsense_backend/app/connectors/google_gmail_connector.py +++ b/surfsense_backend/app/connectors/google_gmail_connector.py @@ -141,6 +141,12 @@ class GoogleGmailConnector: flag_modified(connector, "config") await self._session.commit() except Exception as e: + error_str = str(e) + # Check if this is an invalid_grant error (token expired/revoked) + if "invalid_grant" in error_str.lower() or "token has been expired or revoked" in error_str.lower(): + raise Exception( + "Gmail authentication failed. Please re-authenticate." + ) from e raise Exception( f"Failed to refresh Google OAuth credentials: {e!s}" ) from e @@ -164,6 +170,10 @@ class GoogleGmailConnector: self.service = build("gmail", "v1", credentials=credentials) return self.service except Exception as e: + error_str = str(e) + # If the error already contains a user-friendly re-authentication message, preserve it + if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + raise Exception(error_str) from e raise Exception(f"Failed to create Gmail service: {e!s}") from e async def get_user_profile(self) -> tuple[dict[str, Any], str | None]: @@ -225,6 +235,10 @@ class GoogleGmailConnector: return messages, None except Exception as e: + error_str = str(e) + # If the error already contains a user-friendly re-authentication message, preserve it + if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + return [], error_str return [], f"Error fetching messages list: {e!s}" async def get_message_details( diff --git a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py index b8c0e564d..09bb8de4b 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py @@ -246,13 +246,20 @@ async def index_google_calendar_events( ) return 0, None else: + # Check if this is an authentication error that requires re-authentication + error_message = error + error_type = "APIError" + if "re-authenticate" in error.lower() or "expired or been revoked" in error.lower() or "authentication failed" in error.lower(): + error_message = "Google Calendar authentication failed. Please re-authenticate." + error_type = "AuthenticationError" + await task_logger.log_task_failure( log_entry, - f"Failed to get Google Calendar events: {error}", - "API Error", - {"error_type": "APIError"}, + error_message, + error, + {"error_type": error_type}, ) - return 0, f"Failed to get Google Calendar events: {error}" + return 0, error_message logger.info(f"Retrieved {len(events)} events from Google Calendar API") diff --git a/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py index e10297057..6a3057437 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py @@ -170,10 +170,20 @@ async def index_google_gmail_messages( ) if error: + # Check if this is an authentication error that requires re-authentication + error_message = error + error_type = "APIError" + if "re-authenticate" in error.lower() or "expired or been revoked" in error.lower() or "authentication failed" in error.lower(): + error_message = "Gmail authentication failed. Please re-authenticate." + error_type = "AuthenticationError" + await task_logger.log_task_failure( - log_entry, f"Failed to fetch messages: {error}", {} + log_entry, + error_message, + error, + {"error_type": error_type} ) - return 0, f"Failed to fetch Gmail messages: {error}" + return 0, error_message if not messages: success_msg = "No Google gmail messages found in the specified date range" diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 045c3c586..a04e2a9fd 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -5,12 +5,14 @@ import { Cable, Loader2 } from "lucide-react"; import { useSearchParams } from "next/navigation"; import type { FC } from "react"; import { activeSearchSpaceIdAtom } from "@/atoms/search-spaces/search-space-query.atoms"; +import { currentUserAtom } from "@/atoms/user/user-query.atoms"; import { TooltipIconButton } from "@/components/assistant-ui/tooltip-icon-button"; import { Dialog, DialogContent } from "@/components/ui/dialog"; import { Tabs, TabsContent } from "@/components/ui/tabs"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import { useConnectorsElectric } from "@/hooks/use-connectors-electric"; import { useDocumentsElectric } from "@/hooks/use-documents-electric"; +import { useInbox } from "@/hooks/use-inbox"; import { cn } from "@/lib/utils"; import { ConnectorDialogHeader } from "./connector-popup/components/connector-dialog-header"; import { ConnectorConnectView } from "./connector-popup/connector-configs/views/connector-connect-view"; @@ -27,10 +29,18 @@ import { YouTubeCrawlerView } from "./connector-popup/views/youtube-crawler-view export const ConnectorIndicator: FC = () => { const searchSpaceId = useAtomValue(activeSearchSpaceIdAtom); const searchParams = useSearchParams(); + const { data: currentUser } = useAtomValue(currentUserAtom); // Fetch document type counts using Electric SQL + PGlite for real-time updates const { documentTypeCounts, loading: documentTypesLoading } = useDocumentsElectric(searchSpaceId); + // Fetch notifications to detect indexing failures + const { inboxItems = [] } = useInbox( + currentUser?.id ?? null, + searchSpaceId ? Number(searchSpaceId) : null, + "connector_indexing" + ); + // Check if YouTube view is active const isYouTubeView = searchParams.get("view") === "youtube"; @@ -116,8 +126,10 @@ export const ConnectorIndicator: FC = () => { }; // Track indexing state locally - clears automatically when Electric SQL detects last_indexed_at changed - const { indexingConnectorIds, startIndexing } = useIndexingConnectors( - connectors as SearchSourceConnector[] + // Also clears when failed notifications are detected + const { indexingConnectorIds, startIndexing, stopIndexing } = useIndexingConnectors( + connectors as SearchSourceConnector[], + inboxItems ); const isLoading = connectorsLoading || documentTypesLoading; @@ -246,7 +258,7 @@ export const ConnectorIndicator: FC = () => { editingConnector.connector_type !== "GOOGLE_DRIVE_CONNECTOR" ? () => { startIndexing(editingConnector.id); - handleQuickIndexConnector(editingConnector.id, editingConnector.connector_type); + handleQuickIndexConnector(editingConnector.id, editingConnector.connector_type, stopIndexing); } : undefined } diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 234898922..fbdffed7a 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -97,7 +97,7 @@ export const ConnectorEditView: FC = ({ }; }, [checkScrollState]); - // Reset local quick indexing state when indexing completes + // Reset local quick indexing state when indexing completes or fails useEffect(() => { if (!isIndexing) { setIsQuickIndexing(false); diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index a2b1168bd..f505d8f83 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -1375,7 +1375,7 @@ export const useConnectorDialog = () => { // Handle quick index (index without date picker, uses backend defaults) const handleQuickIndexConnector = useCallback( - async (connectorId: number, connectorType?: string) => { + async (connectorId: number, connectorType?: string, stopIndexing?: (id: number) => void) => { if (!searchSpaceId) return; // Track quick index clicked event @@ -1401,6 +1401,10 @@ export const useConnectorDialog = () => { } catch (error) { console.error("Error indexing connector content:", error); toast.error(error instanceof Error ? error.message : "Failed to start indexing"); + // Stop indexing state on error + if (stopIndexing) { + stopIndexing(connectorId); + } } }, [searchSpaceId, indexConnector] diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts index 2ac8d340a..e82a8eb29 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts @@ -2,6 +2,8 @@ import { useCallback, useEffect, useRef, useState } from "react"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; +import type { InboxItem } from "@/contracts/types/inbox.types"; +import { isConnectorIndexingMetadata } from "@/contracts/types/inbox.types"; /** * Hook to track which connectors are currently indexing using local state. @@ -9,10 +11,14 @@ import type { SearchSourceConnector } from "@/contracts/types/connector.types"; * This provides a better UX than polling by: * 1. Setting indexing state immediately when user triggers indexing (optimistic) * 2. Clearing indexing state when Electric SQL detects last_indexed_at changed + * 3. Clearing indexing state when a failed notification is detected * * The actual `last_indexed_at` value comes from Electric SQL/PGlite, not local state. */ -export function useIndexingConnectors(connectors: SearchSourceConnector[]) { +export function useIndexingConnectors( + connectors: SearchSourceConnector[], + inboxItems?: InboxItem[] +) { // Set of connector IDs that are currently indexing const [indexingConnectorIds, setIndexingConnectorIds] = useState>(new Set()); @@ -48,6 +54,40 @@ export function useIndexingConnectors(connectors: SearchSourceConnector[]) { } }, [connectors, indexingConnectorIds]); + // Detect failed notifications and stop indexing state + useEffect(() => { + if (!inboxItems || inboxItems.length === 0) return; + + const newIndexingIds = new Set(indexingConnectorIds); + let hasChanges = false; + + for (const item of inboxItems) { + // Only check connector_indexing notifications + if (item.type !== "connector_indexing") continue; + + // Check if this notification indicates a failure + const metadata = isConnectorIndexingMetadata(item.metadata) + ? item.metadata + : null; + if (!metadata) continue; + + // Check if status is "failed" or if there's an error_message + const isFailed = + metadata.status === "failed" || + (metadata.error_message && metadata.error_message.trim().length > 0); + + // If failed and connector is in indexing state, clear it + if (isFailed && indexingConnectorIds.has(metadata.connector_id)) { + newIndexingIds.delete(metadata.connector_id); + hasChanges = true; + } + } + + if (hasChanges) { + setIndexingConnectorIds(newIndexingIds); + } + }, [inboxItems, indexingConnectorIds]); + // Add a connector to the indexing set (called when indexing starts) const startIndexing = useCallback((connectorId: number) => { setIndexingConnectorIds((prev) => { From 1343fabeee9cfe7d101e031abb00f3dbd29ad631 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 19:56:19 +0530 Subject: [PATCH 12/51] feat: refactor composio connectors for modularity --- .../app/connectors/composio_connector.py | 366 +--- .../connectors/composio_gmail_connector.py | 614 ++++++ .../composio_google_calendar_connector.py | 453 ++++ .../composio_google_drive_connector.py | 1162 +++++++++++ .../app/routes/composio_routes.py | 19 +- .../app/services/composio_service.py | 21 + .../app/tasks/composio_indexer.py | 1819 +---------------- .../components/composio-connector-card.tsx | 78 - .../components/composio-calendar-config.tsx | 220 ++ .../components/composio-config.tsx | 353 ---- .../components/composio-drive-config.tsx | 313 +++ .../components/composio-gmail-config.tsx | 174 ++ .../connector-configs/index.tsx | 8 +- .../views/connector-edit-view.tsx | 4 +- .../views/indexing-configuration-view.tsx | 20 +- .../hooks/use-connector-dialog.ts | 113 +- surfsense_web/lib/connectors/utils.ts | 3 + 17 files changed, 3128 insertions(+), 2612 deletions(-) create mode 100644 surfsense_backend/app/connectors/composio_gmail_connector.py create mode 100644 surfsense_backend/app/connectors/composio_google_calendar_connector.py create mode 100644 surfsense_backend/app/connectors/composio_google_drive_connector.py delete mode 100644 surfsense_web/components/assistant-ui/connector-popup/components/composio-connector-card.tsx create mode 100644 surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx delete mode 100644 surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx create mode 100644 surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx create mode 100644 surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx diff --git a/surfsense_backend/app/connectors/composio_connector.py b/surfsense_backend/app/connectors/composio_connector.py index 8cb91355d..301296378 100644 --- a/surfsense_backend/app/connectors/composio_connector.py +++ b/surfsense_backend/app/connectors/composio_connector.py @@ -1,7 +1,7 @@ """ -Composio Connector Module. +Composio Connector Base Module. -Provides a unified interface for interacting with various services via Composio, +Provides a base class for interacting with various services via Composio, primarily used during indexing operations. """ @@ -19,10 +19,10 @@ logger = logging.getLogger(__name__) class ComposioConnector: """ - Generic Composio connector for data retrieval. + Base Composio connector for data retrieval. Wraps the ComposioService to provide toolkit-specific data access - for indexing operations. + for indexing operations. Subclasses implement toolkit-specific methods. """ def __init__( @@ -89,354 +89,12 @@ class ComposioConnector: toolkit_id = await self.get_toolkit_id() return toolkit_id in INDEXABLE_TOOLKITS - # ===== Google Drive Methods ===== + @property + def session(self) -> AsyncSession: + """Get the database session.""" + return self._session - async def list_drive_files( - self, - folder_id: str | None = None, - page_token: str | None = None, - page_size: int = 100, - ) -> tuple[list[dict[str, Any]], str | None, str | None]: - """ - List files from Google Drive via Composio. - - Args: - folder_id: Optional folder ID to list contents of. - page_token: Pagination token. - page_size: Number of files per page. - - Returns: - Tuple of (files list, next_page_token, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return [], None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_drive_files( - connected_account_id=connected_account_id, - entity_id=entity_id, - folder_id=folder_id, - page_token=page_token, - page_size=page_size, - ) - - async def get_drive_file_content( - self, file_id: str - ) -> tuple[bytes | None, str | None]: - """ - Download file content from Google Drive via Composio. - - Args: - file_id: Google Drive file ID. - - Returns: - Tuple of (file content bytes, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_drive_file_content( - connected_account_id=connected_account_id, - entity_id=entity_id, - file_id=file_id, - ) - - async def get_drive_start_page_token(self) -> tuple[str | None, str | None]: - """ - Get the starting page token for Google Drive change tracking. - - Returns: - Tuple of (start_page_token, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_drive_start_page_token( - connected_account_id=connected_account_id, - entity_id=entity_id, - ) - - async def list_drive_changes( - self, - page_token: str | None = None, - page_size: int = 100, - include_removed: bool = True, - ) -> tuple[list[dict[str, Any]], str | None, str | None]: - """ - List changes in Google Drive since the given page token. - - Args: - page_token: Page token from previous sync (optional). - page_size: Number of changes per page. - include_removed: Whether to include removed items. - - Returns: - Tuple of (changes list, new_start_page_token, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return [], None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.list_drive_changes( - connected_account_id=connected_account_id, - entity_id=entity_id, - page_token=page_token, - page_size=page_size, - include_removed=include_removed, - ) - - # ===== Gmail Methods ===== - - async def list_gmail_messages( - self, - query: str = "", - max_results: int = 50, - page_token: str | None = None, - ) -> tuple[list[dict[str, Any]], str | None, int | None, str | None]: - """ - List Gmail messages via Composio with pagination support. - - Args: - query: Gmail search query. - max_results: Maximum number of messages per page (default: 50). - page_token: Optional pagination token for next page. - - Returns: - Tuple of (messages list, next_page_token, result_size_estimate, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return [], None, None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_gmail_messages( - connected_account_id=connected_account_id, - entity_id=entity_id, - query=query, - max_results=max_results, - page_token=page_token, - ) - - async def get_gmail_message_detail( - self, message_id: str - ) -> tuple[dict[str, Any] | None, str | None]: - """ - Get full details of a Gmail message via Composio. - - Args: - message_id: Gmail message ID. - - Returns: - Tuple of (message details, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return None, "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_gmail_message_detail( - connected_account_id=connected_account_id, - entity_id=entity_id, - message_id=message_id, - ) - - # ===== Google Calendar Methods ===== - - async def list_calendar_events( - self, - time_min: str | None = None, - time_max: str | None = None, - max_results: int = 250, - ) -> tuple[list[dict[str, Any]], str | None]: - """ - List Google Calendar events via Composio. - - Args: - time_min: Start time (RFC3339 format). - time_max: End time (RFC3339 format). - max_results: Maximum number of events. - - Returns: - Tuple of (events list, error message). - """ - connected_account_id = await self.get_connected_account_id() - if not connected_account_id: - return [], "No connected account ID found" - - entity_id = await self.get_entity_id() - service = await self._get_service() - return await service.get_calendar_events( - connected_account_id=connected_account_id, - entity_id=entity_id, - time_min=time_min, - time_max=time_max, - max_results=max_results, - ) - - # ===== Utility Methods ===== - - def format_gmail_message_to_markdown(self, message: dict[str, Any]) -> str: - """ - Format a Gmail message to markdown. - - Args: - message: Message object from Composio's GMAIL_FETCH_EMAILS response. - Composio structure: messageId, messageText, messageTimestamp, - payload.headers, labelIds, attachmentList - - Returns: - Formatted markdown string. - """ - try: - # Composio uses 'messageId' (camelCase) - message_id = message.get("messageId", "") or message.get("id", "") - label_ids = message.get("labelIds", []) - - # Extract headers from payload - payload = message.get("payload", {}) - headers = payload.get("headers", []) - - # Parse headers into a dict - header_dict = {} - for header in headers: - name = header.get("name", "").lower() - value = header.get("value", "") - header_dict[name] = value - - # Extract key information - subject = header_dict.get("subject", "No Subject") - from_email = header_dict.get("from", "Unknown Sender") - to_email = header_dict.get("to", "Unknown Recipient") - # Composio provides messageTimestamp directly - date_str = message.get("messageTimestamp", "") or header_dict.get( - "date", "Unknown Date" - ) - - # Build markdown content - markdown_content = f"# {subject}\n\n" - markdown_content += f"**From:** {from_email}\n" - markdown_content += f"**To:** {to_email}\n" - markdown_content += f"**Date:** {date_str}\n" - - if label_ids: - markdown_content += f"**Labels:** {', '.join(label_ids)}\n" - - markdown_content += "\n---\n\n" - - # Composio provides full message text in 'messageText' - message_text = message.get("messageText", "") - if message_text: - markdown_content += f"## Content\n\n{message_text}\n\n" - else: - # Fallback to snippet if no messageText - snippet = message.get("snippet", "") - if snippet: - markdown_content += f"## Preview\n\n{snippet}\n\n" - - # Add attachment info if present - attachments = message.get("attachmentList", []) - if attachments: - markdown_content += "## Attachments\n\n" - for att in attachments: - att_name = att.get("filename", att.get("name", "Unknown")) - markdown_content += f"- {att_name}\n" - markdown_content += "\n" - - # Add message metadata - markdown_content += "## Message Details\n\n" - markdown_content += f"- **Message ID:** {message_id}\n" - - return markdown_content - - except Exception as e: - return f"Error formatting message to markdown: {e!s}" - - def format_calendar_event_to_markdown(self, event: dict[str, Any]) -> str: - """ - Format a Google Calendar event to markdown. - - Args: - event: Event object from Google Calendar API. - - Returns: - Formatted markdown string. - """ - from datetime import datetime - - try: - # Extract basic event information - summary = event.get("summary", "No Title") - description = event.get("description", "") - location = event.get("location", "") - - # Extract start and end times - start = event.get("start", {}) - end = event.get("end", {}) - - start_time = start.get("dateTime") or start.get("date", "") - end_time = end.get("dateTime") or end.get("date", "") - - # Format times for display - def format_time(time_str: str) -> str: - if not time_str: - return "Unknown" - try: - if "T" in time_str: - dt = datetime.fromisoformat(time_str.replace("Z", "+00:00")) - return dt.strftime("%Y-%m-%d %H:%M") - return time_str - except Exception: - return time_str - - start_formatted = format_time(start_time) - end_formatted = format_time(end_time) - - # Extract attendees - attendees = event.get("attendees", []) - attendee_list = [] - for attendee in attendees: - email = attendee.get("email", "") - display_name = attendee.get("displayName", email) - response_status = attendee.get("responseStatus", "") - attendee_list.append(f"- {display_name} ({response_status})") - - # Build markdown content - markdown_content = f"# {summary}\n\n" - markdown_content += f"**Start:** {start_formatted}\n" - markdown_content += f"**End:** {end_formatted}\n" - - if location: - markdown_content += f"**Location:** {location}\n" - - markdown_content += "\n" - - if description: - markdown_content += f"## Description\n\n{description}\n\n" - - if attendee_list: - markdown_content += "## Attendees\n\n" - markdown_content += "\n".join(attendee_list) - markdown_content += "\n\n" - - # Add event metadata - markdown_content += "## Event Details\n\n" - markdown_content += f"- **Event ID:** {event.get('id', 'Unknown')}\n" - markdown_content += f"- **Created:** {event.get('created', 'Unknown')}\n" - markdown_content += f"- **Updated:** {event.get('updated', 'Unknown')}\n" - - return markdown_content - - except Exception as e: - return f"Error formatting event to markdown: {e!s}" + @property + def connector_id(self) -> int: + """Get the connector ID.""" + return self._connector_id diff --git a/surfsense_backend/app/connectors/composio_gmail_connector.py b/surfsense_backend/app/connectors/composio_gmail_connector.py new file mode 100644 index 000000000..5a9645a66 --- /dev/null +++ b/surfsense_backend/app/connectors/composio_gmail_connector.py @@ -0,0 +1,614 @@ +""" +Composio Gmail Connector Module. + +Provides Gmail specific methods for data retrieval and indexing via Composio. +""" + +import logging +from datetime import UTC, datetime +from typing import Any + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.future import select +from sqlalchemy.orm import selectinload + +from app.config import config +from app.connectors.composio_connector import ComposioConnector +from app.db import Document, DocumentType +from app.services.composio_service import TOOLKIT_TO_DOCUMENT_TYPE +from app.services.llm_service import get_user_long_context_llm +from app.services.task_logging_service import TaskLoggingService +from app.tasks.connector_indexers.base import calculate_date_range +from app.utils.document_converters import ( + create_document_chunks, + generate_content_hash, + generate_document_summary, + generate_unique_identifier_hash, +) + +logger = logging.getLogger(__name__) + + +def get_current_timestamp() -> datetime: + """Get the current timestamp with timezone for updated_at field.""" + return datetime.now(UTC) + + +async def check_document_by_unique_identifier( + session: AsyncSession, unique_identifier_hash: str +) -> Document | None: + """Check if a document with the given unique identifier hash already exists.""" + existing_doc_result = await session.execute( + select(Document) + .options(selectinload(Document.chunks)) + .where(Document.unique_identifier_hash == unique_identifier_hash) + ) + return existing_doc_result.scalars().first() + + +async def update_connector_last_indexed( + session: AsyncSession, + connector, + update_last_indexed: bool = True, +) -> None: + """Update the last_indexed_at timestamp for a connector.""" + if update_last_indexed: + connector.last_indexed_at = datetime.now(UTC) + logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") + + +class ComposioGmailConnector(ComposioConnector): + """ + Gmail specific Composio connector. + + Provides methods for listing messages, getting message details, and formatting + Gmail messages from Gmail via Composio. + """ + + async def list_gmail_messages( + self, + query: str = "", + max_results: int = 50, + page_token: str | None = None, + ) -> tuple[list[dict[str, Any]], str | None, int | None, str | None]: + """ + List Gmail messages via Composio with pagination support. + + Args: + query: Gmail search query. + max_results: Maximum number of messages per page (default: 50). + page_token: Optional pagination token for next page. + + Returns: + Tuple of (messages list, next_page_token, result_size_estimate, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return [], None, None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_gmail_messages( + connected_account_id=connected_account_id, + entity_id=entity_id, + query=query, + max_results=max_results, + page_token=page_token, + ) + + async def get_gmail_message_detail( + self, message_id: str + ) -> tuple[dict[str, Any] | None, str | None]: + """ + Get full details of a Gmail message via Composio. + + Args: + message_id: Gmail message ID. + + Returns: + Tuple of (message details, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_gmail_message_detail( + connected_account_id=connected_account_id, + entity_id=entity_id, + message_id=message_id, + ) + + def format_gmail_message_to_markdown(self, message: dict[str, Any]) -> str: + """ + Format a Gmail message to markdown. + + Args: + message: Message object from Composio's GMAIL_FETCH_EMAILS response. + Composio structure: messageId, messageText, messageTimestamp, + payload.headers, labelIds, attachmentList + + Returns: + Formatted markdown string. + """ + try: + # Composio uses 'messageId' (camelCase) + message_id = message.get("messageId", "") or message.get("id", "") + label_ids = message.get("labelIds", []) + + # Extract headers from payload + payload = message.get("payload", {}) + headers = payload.get("headers", []) + + # Parse headers into a dict + header_dict = {} + for header in headers: + name = header.get("name", "").lower() + value = header.get("value", "") + header_dict[name] = value + + # Extract key information + subject = header_dict.get("subject", "No Subject") + from_email = header_dict.get("from", "Unknown Sender") + to_email = header_dict.get("to", "Unknown Recipient") + # Composio provides messageTimestamp directly + date_str = message.get("messageTimestamp", "") or header_dict.get( + "date", "Unknown Date" + ) + + # Build markdown content + markdown_content = f"# {subject}\n\n" + markdown_content += f"**From:** {from_email}\n" + markdown_content += f"**To:** {to_email}\n" + markdown_content += f"**Date:** {date_str}\n" + + if label_ids: + markdown_content += f"**Labels:** {', '.join(label_ids)}\n" + + markdown_content += "\n---\n\n" + + # Composio provides full message text in 'messageText' + message_text = message.get("messageText", "") + if message_text: + markdown_content += f"## Content\n\n{message_text}\n\n" + else: + # Fallback to snippet if no messageText + snippet = message.get("snippet", "") + if snippet: + markdown_content += f"## Preview\n\n{snippet}\n\n" + + # Add attachment info if present + attachments = message.get("attachmentList", []) + if attachments: + markdown_content += "## Attachments\n\n" + for att in attachments: + att_name = att.get("filename", att.get("name", "Unknown")) + markdown_content += f"- {att_name}\n" + markdown_content += "\n" + + # Add message metadata + markdown_content += "## Message Details\n\n" + markdown_content += f"- **Message ID:** {message_id}\n" + + return markdown_content + + except Exception as e: + return f"Error formatting message to markdown: {e!s}" + + +# ============ Indexer Functions ============ + + +async def _process_gmail_message_batch( + session: AsyncSession, + messages: list[dict[str, Any]], + composio_connector: ComposioGmailConnector, + connector_id: int, + search_space_id: int, + user_id: str, + total_documents_indexed: int = 0, +) -> tuple[int, int]: + """ + Process a batch of Gmail messages and index them. + + Args: + total_documents_indexed: Running total of documents indexed so far (for batch commits). + + Returns: + Tuple of (documents_indexed, documents_skipped) + """ + documents_indexed = 0 + documents_skipped = 0 + + for message in messages: + try: + # Composio uses 'messageId' (camelCase), not 'id' + message_id = message.get("messageId", "") or message.get("id", "") + if not message_id: + documents_skipped += 1 + continue + + # Composio's GMAIL_FETCH_EMAILS already returns full message content + # No need for a separate detail API call + + # Extract message info from Composio response + # Composio structure: messageId, messageText, messageTimestamp, payload.headers, labelIds + payload = message.get("payload", {}) + headers = payload.get("headers", []) + + subject = "No Subject" + sender = "Unknown Sender" + date_str = message.get("messageTimestamp", "Unknown Date") + + for header in headers: + name = header.get("name", "").lower() + value = header.get("value", "") + if name == "subject": + subject = value + elif name == "from": + sender = value + elif name == "date": + date_str = value + + # Format to markdown using the full message data + markdown_content = composio_connector.format_gmail_message_to_markdown( + message + ) + + # Check for empty content (defensive parsing per Composio best practices) + if not markdown_content.strip(): + logger.warning(f"Skipping Gmail message with no content: {subject}") + documents_skipped += 1 + continue + + # Generate unique identifier + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"gmail_{message_id}", search_space_id + ) + + content_hash = generate_content_hash(markdown_content, search_space_id) + + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + + # Get label IDs from Composio response + label_ids = message.get("labelIds", []) + # Extract thread_id if available (for consistency with non-Composio implementation) + thread_id = message.get("threadId", "") or message.get("thread_id", "") + + if existing_document: + if existing_document.content_hash == content_hash: + documents_skipped += 1 + continue + + # Update existing + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "document_type": "Gmail Message (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + existing_document.title = f"Gmail: {subject}" + existing_document.content = summary_content + existing_document.content_hash = content_hash + existing_document.embedding = summary_embedding + existing_document.document_metadata = { + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "date": date_str, + "labels": label_ids, + "connector_id": connector_id, + "source": "composio", + } + existing_document.chunks = chunks + existing_document.updated_at = get_current_timestamp() + + documents_indexed += 1 + + # Batch commit every 10 documents + current_total = total_documents_indexed + documents_indexed + if current_total % 10 == 0: + logger.info( + f"Committing batch: {current_total} Gmail messages processed so far" + ) + await session.commit() + continue + + # Create new document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "document_type": "Gmail Message (Composio)", + } + summary_content, summary_embedding = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + document = Document( + search_space_id=search_space_id, + title=f"Gmail: {subject}", + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]), + document_metadata={ + "message_id": message_id, + "thread_id": thread_id, + "subject": subject, + "sender": sender, + "date": date_str, + "labels": label_ids, + "connector_id": connector_id, + "toolkit_id": "gmail", + "source": "composio", + }, + content=summary_content, + content_hash=content_hash, + unique_identifier_hash=unique_identifier_hash, + embedding=summary_embedding, + chunks=chunks, + updated_at=get_current_timestamp(), + ) + session.add(document) + documents_indexed += 1 + + # Batch commit every 10 documents + current_total = total_documents_indexed + documents_indexed + if current_total % 10 == 0: + logger.info( + f"Committing batch: {current_total} Gmail messages processed so far" + ) + await session.commit() + + except Exception as e: + logger.error(f"Error processing Gmail message: {e!s}", exc_info=True) + documents_skipped += 1 + # Rollback on error to avoid partial state (per Composio best practices) + try: + await session.rollback() + except Exception as rollback_error: + logger.error( + f"Error during rollback: {rollback_error!s}", exc_info=True + ) + continue + + return documents_indexed, documents_skipped + + +async def index_composio_gmail( + session: AsyncSession, + connector, + connector_id: int, + search_space_id: int, + user_id: str, + start_date: str | None, + end_date: str | None, + task_logger: TaskLoggingService, + log_entry, + update_last_indexed: bool = True, + max_items: int = 1000, +) -> tuple[int, str]: + """Index Gmail messages via Composio with pagination and incremental processing.""" + try: + composio_connector = ComposioGmailConnector(session, connector_id) + + # Normalize date values - handle "undefined" strings from frontend + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + + # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at + # This ensures user-selected dates are respected (matching non-Composio Gmail connector behavior) + if start_date is not None and end_date is not None: + # User provided both dates - use them directly + start_date_str = start_date + end_date_str = end_date + else: + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) + + # Build query with date range + query_parts = [] + if start_date_str: + query_parts.append(f"after:{start_date_str.replace('-', '/')}") + if end_date_str: + query_parts.append(f"before:{end_date_str.replace('-', '/')}") + query = " ".join(query_parts) if query_parts else "" + + logger.info( + f"Gmail query for connector {connector_id}: '{query}' " + f"(start_date={start_date_str}, end_date={end_date_str})" + ) + + # Use smaller batch size to avoid 413 payload too large errors + batch_size = 50 + page_token = None + total_documents_indexed = 0 + total_documents_skipped = 0 + total_messages_fetched = 0 + result_size_estimate = None # Will be set from first API response + + while total_messages_fetched < max_items: + # Calculate how many messages to fetch in this batch + remaining = max_items - total_messages_fetched + current_batch_size = min(batch_size, remaining) + + # Use result_size_estimate if available, otherwise fall back to max_items + estimated_total = ( + result_size_estimate if result_size_estimate is not None else max_items + ) + # Cap estimated_total at max_items to avoid showing misleading progress + estimated_total = min(estimated_total, max_items) + + await task_logger.log_task_progress( + log_entry, + f"Fetching Gmail messages batch via Composio for connector {connector_id} " + f"({total_messages_fetched}/{estimated_total} fetched, {total_documents_indexed} indexed)", + { + "stage": "fetching_messages", + "batch_size": current_batch_size, + "total_fetched": total_messages_fetched, + "total_indexed": total_documents_indexed, + "estimated_total": estimated_total, + }, + ) + + # Fetch batch of messages + ( + messages, + next_token, + result_size_estimate_batch, + error, + ) = await composio_connector.list_gmail_messages( + query=query, + max_results=current_batch_size, + page_token=page_token, + ) + + if error: + await task_logger.log_task_failure( + log_entry, f"Failed to fetch Gmail messages: {error}", {} + ) + return 0, f"Failed to fetch Gmail messages: {error}" + + if not messages: + # No more messages available + break + + # Update result_size_estimate from first response (Gmail provides this estimate) + if result_size_estimate is None and result_size_estimate_batch is not None: + result_size_estimate = result_size_estimate_batch + logger.info( + f"Gmail API estimated {result_size_estimate} total messages for query: '{query}'" + ) + + total_messages_fetched += len(messages) + # Recalculate estimated_total after potentially updating result_size_estimate + estimated_total = ( + result_size_estimate if result_size_estimate is not None else max_items + ) + estimated_total = min(estimated_total, max_items) + + logger.info( + f"Fetched batch of {len(messages)} Gmail messages " + f"(total: {total_messages_fetched}/{estimated_total})" + ) + + # Process batch incrementally + batch_indexed, batch_skipped = await _process_gmail_message_batch( + session=session, + messages=messages, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + total_documents_indexed=total_documents_indexed, + ) + + total_documents_indexed += batch_indexed + total_documents_skipped += batch_skipped + + logger.info( + f"Processed batch: {batch_indexed} indexed, {batch_skipped} skipped " + f"(total: {total_documents_indexed} indexed, {total_documents_skipped} skipped)" + ) + + # Batch commits happen in _process_gmail_message_batch every 10 documents + # This ensures progress is saved incrementally, preventing data loss on crashes + + # Check if we should continue + if not next_token: + # No more pages available + break + + if len(messages) < current_batch_size: + # Last page had fewer items than requested, we're done + break + + # Continue with next page + page_token = next_token + + if total_messages_fetched == 0: + success_msg = "No Gmail messages found in the specified date range" + await task_logger.log_task_success( + log_entry, success_msg, {"messages_count": 0} + ) + # CRITICAL: Update timestamp even when no messages found so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + await session.commit() + return 0, None # Return None (not error) when no items found + + # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs + # This ensures the UI shows "Last indexed" instead of "Never indexed" + await update_connector_last_indexed(session, connector, update_last_indexed) + + # Final commit to ensure all documents are persisted (safety net) + # This matches the pattern used in non-Composio Gmail indexer + logger.info( + f"Final commit: Total {total_documents_indexed} Gmail messages processed" + ) + await session.commit() + logger.info( + "Successfully committed all Composio Gmail document changes to database" + ) + + await task_logger.log_task_success( + log_entry, + f"Successfully completed Gmail indexing via Composio for connector {connector_id}", + { + "documents_indexed": total_documents_indexed, + "documents_skipped": total_documents_skipped, + "messages_fetched": total_messages_fetched, + }, + ) + + return total_documents_indexed, None + + except Exception as e: + logger.error(f"Failed to index Gmail via Composio: {e!s}", exc_info=True) + return 0, f"Failed to index Gmail via Composio: {e!s}" + diff --git a/surfsense_backend/app/connectors/composio_google_calendar_connector.py b/surfsense_backend/app/connectors/composio_google_calendar_connector.py new file mode 100644 index 000000000..ab8bde53c --- /dev/null +++ b/surfsense_backend/app/connectors/composio_google_calendar_connector.py @@ -0,0 +1,453 @@ +""" +Composio Google Calendar Connector Module. + +Provides Google Calendar specific methods for data retrieval and indexing via Composio. +""" + +import logging +from datetime import UTC, datetime +from typing import Any + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.future import select +from sqlalchemy.orm import selectinload + +from app.config import config +from app.connectors.composio_connector import ComposioConnector +from app.db import Document, DocumentType +from app.services.composio_service import TOOLKIT_TO_DOCUMENT_TYPE +from app.services.llm_service import get_user_long_context_llm +from app.services.task_logging_service import TaskLoggingService +from app.tasks.connector_indexers.base import calculate_date_range +from app.utils.document_converters import ( + create_document_chunks, + generate_content_hash, + generate_document_summary, + generate_unique_identifier_hash, +) + +logger = logging.getLogger(__name__) + + +def get_current_timestamp() -> datetime: + """Get the current timestamp with timezone for updated_at field.""" + return datetime.now(UTC) + + +async def check_document_by_unique_identifier( + session: AsyncSession, unique_identifier_hash: str +) -> Document | None: + """Check if a document with the given unique identifier hash already exists.""" + existing_doc_result = await session.execute( + select(Document) + .options(selectinload(Document.chunks)) + .where(Document.unique_identifier_hash == unique_identifier_hash) + ) + return existing_doc_result.scalars().first() + + +async def update_connector_last_indexed( + session: AsyncSession, + connector, + update_last_indexed: bool = True, +) -> None: + """Update the last_indexed_at timestamp for a connector.""" + if update_last_indexed: + connector.last_indexed_at = datetime.now(UTC) + logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") + + +class ComposioGoogleCalendarConnector(ComposioConnector): + """ + Google Calendar specific Composio connector. + + Provides methods for listing calendar events and formatting them from + Google Calendar via Composio. + """ + + async def list_calendar_events( + self, + time_min: str | None = None, + time_max: str | None = None, + max_results: int = 250, + ) -> tuple[list[dict[str, Any]], str | None]: + """ + List Google Calendar events via Composio. + + Args: + time_min: Start time (RFC3339 format). + time_max: End time (RFC3339 format). + max_results: Maximum number of events. + + Returns: + Tuple of (events list, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return [], "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_calendar_events( + connected_account_id=connected_account_id, + entity_id=entity_id, + time_min=time_min, + time_max=time_max, + max_results=max_results, + ) + + def format_calendar_event_to_markdown(self, event: dict[str, Any]) -> str: + """ + Format a Google Calendar event to markdown. + + Args: + event: Event object from Google Calendar API. + + Returns: + Formatted markdown string. + """ + try: + # Extract basic event information + summary = event.get("summary", "No Title") + description = event.get("description", "") + location = event.get("location", "") + + # Extract start and end times + start = event.get("start", {}) + end = event.get("end", {}) + + start_time = start.get("dateTime") or start.get("date", "") + end_time = end.get("dateTime") or end.get("date", "") + + # Format times for display + def format_time(time_str: str) -> str: + if not time_str: + return "Unknown" + try: + if "T" in time_str: + dt = datetime.fromisoformat(time_str.replace("Z", "+00:00")) + return dt.strftime("%Y-%m-%d %H:%M") + return time_str + except Exception: + return time_str + + start_formatted = format_time(start_time) + end_formatted = format_time(end_time) + + # Extract attendees + attendees = event.get("attendees", []) + attendee_list = [] + for attendee in attendees: + email = attendee.get("email", "") + display_name = attendee.get("displayName", email) + response_status = attendee.get("responseStatus", "") + attendee_list.append(f"- {display_name} ({response_status})") + + # Build markdown content + markdown_content = f"# {summary}\n\n" + markdown_content += f"**Start:** {start_formatted}\n" + markdown_content += f"**End:** {end_formatted}\n" + + if location: + markdown_content += f"**Location:** {location}\n" + + markdown_content += "\n" + + if description: + markdown_content += f"## Description\n\n{description}\n\n" + + if attendee_list: + markdown_content += "## Attendees\n\n" + markdown_content += "\n".join(attendee_list) + markdown_content += "\n\n" + + # Add event metadata + markdown_content += "## Event Details\n\n" + markdown_content += f"- **Event ID:** {event.get('id', 'Unknown')}\n" + markdown_content += f"- **Created:** {event.get('created', 'Unknown')}\n" + markdown_content += f"- **Updated:** {event.get('updated', 'Unknown')}\n" + + return markdown_content + + except Exception as e: + return f"Error formatting event to markdown: {e!s}" + + +# ============ Indexer Functions ============ + + +async def index_composio_google_calendar( + session: AsyncSession, + connector, + connector_id: int, + search_space_id: int, + user_id: str, + start_date: str | None, + end_date: str | None, + task_logger: TaskLoggingService, + log_entry, + update_last_indexed: bool = True, + max_items: int = 2500, +) -> tuple[int, str]: + """Index Google Calendar events via Composio.""" + try: + composio_connector = ComposioGoogleCalendarConnector(session, connector_id) + + await task_logger.log_task_progress( + log_entry, + f"Fetching Google Calendar events via Composio for connector {connector_id}", + {"stage": "fetching_events"}, + ) + + # Normalize date values - handle "undefined" strings from frontend + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + + # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at + # This ensures user-selected dates are respected (matching non-Composio Calendar connector behavior) + if start_date is not None and end_date is not None: + # User provided both dates - use them directly + start_date_str = start_date + end_date_str = end_date + else: + # Calculate date range with defaults (uses last_indexed_at or 365 days back) + # This ensures indexing works even when user doesn't specify dates + start_date_str, end_date_str = calculate_date_range( + connector, start_date, end_date, default_days_back=365 + ) + + # Build time range for API call + time_min = f"{start_date_str}T00:00:00Z" + time_max = f"{end_date_str}T23:59:59Z" + + logger.info( + f"Google Calendar query for connector {connector_id}: " + f"(start_date={start_date_str}, end_date={end_date_str})" + ) + + events, error = await composio_connector.list_calendar_events( + time_min=time_min, + time_max=time_max, + max_results=max_items, + ) + + if error: + await task_logger.log_task_failure( + log_entry, f"Failed to fetch Calendar events: {error}", {} + ) + return 0, f"Failed to fetch Calendar events: {error}" + + if not events: + success_msg = "No Google Calendar events found in the specified date range" + await task_logger.log_task_success( + log_entry, success_msg, {"events_count": 0} + ) + # CRITICAL: Update timestamp even when no events found so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + await session.commit() + return ( + 0, + None, + ) # Return None (not error) when no items found - this is success with 0 items + + logger.info(f"Found {len(events)} Google Calendar events to index via Composio") + + documents_indexed = 0 + documents_skipped = 0 + + for event in events: + try: + # Handle both standard Google API and potential Composio variations + event_id = event.get("id", "") or event.get("eventId", "") + summary = ( + event.get("summary", "") or event.get("title", "") or "No Title" + ) + + if not event_id: + documents_skipped += 1 + continue + + # Format to markdown + markdown_content = composio_connector.format_calendar_event_to_markdown( + event + ) + + # Generate unique identifier + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"calendar_{event_id}", search_space_id + ) + + content_hash = generate_content_hash(markdown_content, search_space_id) + + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + + # Extract event times + start = event.get("start", {}) + end = event.get("end", {}) + start_time = start.get("dateTime") or start.get("date", "") + end_time = end.get("dateTime") or end.get("date", "") + location = event.get("location", "") + + if existing_document: + if existing_document.content_hash == content_hash: + documents_skipped += 1 + continue + + # Update existing + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "event_id": event_id, + "summary": summary, + "start_time": start_time, + "document_type": "Google Calendar Event (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" + if location: + summary_content += f"\nLocation: {location}" + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + existing_document.title = f"Calendar: {summary}" + existing_document.content = summary_content + existing_document.content_hash = content_hash + existing_document.embedding = summary_embedding + existing_document.document_metadata = { + "event_id": event_id, + "summary": summary, + "start_time": start_time, + "end_time": end_time, + "location": location, + "connector_id": connector_id, + "source": "composio", + } + existing_document.chunks = chunks + existing_document.updated_at = get_current_timestamp() + + documents_indexed += 1 + + # Batch commit every 10 documents + if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Calendar events processed so far" + ) + await session.commit() + continue + + # Create new document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "event_id": event_id, + "summary": summary, + "start_time": start_time, + "document_type": "Google Calendar Event (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" + ) + if location: + summary_content += f"\nLocation: {location}" + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + document = Document( + search_space_id=search_space_id, + title=f"Calendar: {summary}", + document_type=DocumentType( + TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"] + ), + document_metadata={ + "event_id": event_id, + "summary": summary, + "start_time": start_time, + "end_time": end_time, + "location": location, + "connector_id": connector_id, + "toolkit_id": "googlecalendar", + "source": "composio", + }, + content=summary_content, + content_hash=content_hash, + unique_identifier_hash=unique_identifier_hash, + embedding=summary_embedding, + chunks=chunks, + updated_at=get_current_timestamp(), + ) + session.add(document) + documents_indexed += 1 + + # Batch commit every 10 documents + if documents_indexed % 10 == 0: + logger.info( + f"Committing batch: {documents_indexed} Google Calendar events processed so far" + ) + await session.commit() + + except Exception as e: + logger.error(f"Error processing Calendar event: {e!s}", exc_info=True) + documents_skipped += 1 + continue + + # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs + # This ensures the UI shows "Last indexed" instead of "Never indexed" + await update_connector_last_indexed(session, connector, update_last_indexed) + + # Final commit to ensure all documents are persisted (safety net) + # This matches the pattern used in non-Composio Gmail indexer + logger.info( + f"Final commit: Total {documents_indexed} Google Calendar events processed" + ) + await session.commit() + logger.info( + "Successfully committed all Composio Google Calendar document changes to database" + ) + + await task_logger.log_task_success( + log_entry, + f"Successfully completed Google Calendar indexing via Composio for connector {connector_id}", + { + "documents_indexed": documents_indexed, + "documents_skipped": documents_skipped, + }, + ) + + return documents_indexed, None + + except Exception as e: + logger.error( + f"Failed to index Google Calendar via Composio: {e!s}", exc_info=True + ) + return 0, f"Failed to index Google Calendar via Composio: {e!s}" + diff --git a/surfsense_backend/app/connectors/composio_google_drive_connector.py b/surfsense_backend/app/connectors/composio_google_drive_connector.py new file mode 100644 index 000000000..e19436611 --- /dev/null +++ b/surfsense_backend/app/connectors/composio_google_drive_connector.py @@ -0,0 +1,1162 @@ +""" +Composio Google Drive Connector Module. + +Provides Google Drive specific methods for data retrieval and indexing via Composio. +""" + +import logging +import os +import tempfile +from datetime import UTC, datetime +from pathlib import Path +from typing import Any + +from sqlalchemy.ext.asyncio import AsyncSession +from sqlalchemy.orm.attributes import flag_modified + +from app.config import config +from app.connectors.composio_connector import ComposioConnector +from app.db import Document, DocumentType, Log +from app.services.composio_service import TOOLKIT_TO_DOCUMENT_TYPE +from app.services.llm_service import get_user_long_context_llm +from app.services.task_logging_service import TaskLoggingService +from app.utils.document_converters import ( + create_document_chunks, + generate_content_hash, + generate_document_summary, + generate_unique_identifier_hash, +) + +logger = logging.getLogger(__name__) + + +# Binary file extensions that need file processor +BINARY_FILE_EXTENSIONS = { + ".pdf", + ".doc", + ".docx", + ".xls", + ".xlsx", + ".ppt", + ".pptx", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".tiff", + ".webp", + ".zip", + ".tar", + ".gz", + ".rar", + ".7z", + ".mp3", + ".mp4", + ".wav", + ".avi", + ".mov", + ".exe", + ".dll", + ".so", + ".bin", +} + +# Text file extensions that can be decoded as UTF-8 +TEXT_FILE_EXTENSIONS = { + ".txt", + ".md", + ".markdown", + ".json", + ".xml", + ".html", + ".htm", + ".css", + ".js", + ".ts", + ".py", + ".java", + ".c", + ".cpp", + ".h", + ".yaml", + ".yml", + ".toml", + ".ini", + ".cfg", + ".conf", + ".sh", + ".bash", + ".zsh", + ".fish", + ".sql", + ".csv", + ".tsv", + ".rst", + ".tex", + ".log", +} + + +def get_current_timestamp() -> datetime: + """Get the current timestamp with timezone for updated_at field.""" + return datetime.now(UTC) + + +def _is_binary_file(file_name: str, mime_type: str) -> bool: + """Check if a file is binary based on extension or mime type.""" + extension = Path(file_name).suffix.lower() + + # Check extension first + if extension in BINARY_FILE_EXTENSIONS: + return True + if extension in TEXT_FILE_EXTENSIONS: + return False + + # Check mime type + if mime_type: + if mime_type.startswith(("image/", "audio/", "video/", "application/pdf")): + return True + if mime_type.startswith(("text/", "application/json", "application/xml")): + return False + # Office documents + if ( + "spreadsheet" in mime_type + or "document" in mime_type + or "presentation" in mime_type + ): + return True + + # Default to text for unknown types + return False + + +class ComposioGoogleDriveConnector(ComposioConnector): + """ + Google Drive specific Composio connector. + + Provides methods for listing files, downloading content, and tracking changes + from Google Drive via Composio. + """ + + async def list_drive_files( + self, + folder_id: str | None = None, + page_token: str | None = None, + page_size: int = 100, + ) -> tuple[list[dict[str, Any]], str | None, str | None]: + """ + List files from Google Drive via Composio. + + Args: + folder_id: Optional folder ID to list contents of. + page_token: Pagination token. + page_size: Number of files per page. + + Returns: + Tuple of (files list, next_page_token, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return [], None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_drive_files( + connected_account_id=connected_account_id, + entity_id=entity_id, + folder_id=folder_id, + page_token=page_token, + page_size=page_size, + ) + + async def get_drive_file_content( + self, file_id: str + ) -> tuple[bytes | None, str | None]: + """ + Download file content from Google Drive via Composio. + + Args: + file_id: Google Drive file ID. + + Returns: + Tuple of (file content bytes, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_drive_file_content( + connected_account_id=connected_account_id, + entity_id=entity_id, + file_id=file_id, + ) + + async def get_drive_start_page_token(self) -> tuple[str | None, str | None]: + """ + Get the starting page token for Google Drive change tracking. + + Returns: + Tuple of (start_page_token, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.get_drive_start_page_token( + connected_account_id=connected_account_id, + entity_id=entity_id, + ) + + async def list_drive_changes( + self, + page_token: str | None = None, + page_size: int = 100, + include_removed: bool = True, + ) -> tuple[list[dict[str, Any]], str | None, str | None]: + """ + List changes in Google Drive since the given page token. + + Args: + page_token: Page token from previous sync (optional). + page_size: Number of changes per page. + include_removed: Whether to include removed items. + + Returns: + Tuple of (changes list, new_start_page_token, error message). + """ + connected_account_id = await self.get_connected_account_id() + if not connected_account_id: + return [], None, "No connected account ID found" + + entity_id = await self.get_entity_id() + service = await self._get_service() + return await service.list_drive_changes( + connected_account_id=connected_account_id, + entity_id=entity_id, + page_token=page_token, + page_size=page_size, + include_removed=include_removed, + ) + + +# ============ File Processing Utilities ============ + + +async def _process_file_content( + content: bytes | str, + file_name: str, + file_id: str, + mime_type: str, + search_space_id: int, + user_id: str, + session: AsyncSession, + task_logger: TaskLoggingService, + log_entry: Log, + processing_errors: list[str], +) -> str: + """ + Process file content and return markdown text. + + For binary files (PDFs, images, etc.), uses Surfsense's ETL service. + For text files, decodes as UTF-8. + + Args: + content: File content as bytes or string + file_name: Name of the file + file_id: Google Drive file ID + mime_type: MIME type of the file + search_space_id: Search space ID + user_id: User ID + session: Database session + task_logger: Task logging service + log_entry: Log entry for tracking + processing_errors: List to append errors to + + Returns: + Markdown content string + """ + # Ensure content is bytes + if isinstance(content, str): + content = content.encode("utf-8") + + # Check if this is a binary file + if _is_binary_file(file_name, mime_type): + # Use ETL service for binary files (PDF, Office docs, etc.) + temp_file_path = None + try: + # Get file extension + extension = Path(file_name).suffix or ".bin" + + # Write to temp file + with tempfile.NamedTemporaryFile( + delete=False, suffix=extension + ) as tmp_file: + tmp_file.write(content) + temp_file_path = tmp_file.name + + # Use the configured ETL service to extract text + extracted_text = await _extract_text_with_etl( + temp_file_path, file_name, task_logger, log_entry + ) + + if extracted_text: + return extracted_text + else: + # Fallback if extraction fails + logger.warning(f"Could not extract text from binary file {file_name}") + return f"# {file_name}\n\n[Binary file - text extraction failed]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + + except Exception as e: + error_msg = f"Error processing binary file {file_name}: {e!s}" + logger.error(error_msg) + processing_errors.append(error_msg) + return f"# {file_name}\n\n[Binary file - processing error]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + finally: + # Cleanup temp file + if temp_file_path and os.path.exists(temp_file_path): + try: + os.unlink(temp_file_path) + except Exception as e: + logger.debug(f"Could not delete temp file {temp_file_path}: {e}") + else: + # Text file - try to decode as UTF-8 + try: + return content.decode("utf-8") + except UnicodeDecodeError: + # Try other encodings + for encoding in ["latin-1", "cp1252", "iso-8859-1"]: + try: + return content.decode(encoding) + except UnicodeDecodeError: + continue + + # If all encodings fail, treat as binary + error_msg = f"Could not decode text file {file_name} with any encoding" + logger.warning(error_msg) + processing_errors.append(error_msg) + return f"# {file_name}\n\n[File content could not be decoded]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" + + +async def _extract_text_with_etl( + file_path: str, + file_name: str, + task_logger: TaskLoggingService, + log_entry: Log, +) -> str | None: + """ + Extract text from a file using the configured ETL service. + + Args: + file_path: Path to the file + file_name: Name of the file + task_logger: Task logging service + log_entry: Log entry for tracking + + Returns: + Extracted text as markdown, or None if extraction fails + """ + import warnings + from logging import ERROR, getLogger + + etl_service = config.ETL_SERVICE + + try: + if etl_service == "UNSTRUCTURED": + from langchain_unstructured import UnstructuredLoader + + from app.utils.document_converters import convert_document_to_markdown + + loader = UnstructuredLoader( + file_path, + mode="elements", + post_processors=[], + languages=["eng"], + include_orig_elements=False, + include_metadata=False, + strategy="auto", + ) + + docs = await loader.aload() + if docs: + return await convert_document_to_markdown(docs) + return None + + elif etl_service == "LLAMACLOUD": + from app.tasks.document_processors.file_processors import ( + parse_with_llamacloud_retry, + ) + + # Estimate pages (rough estimate based on file size) + file_size = os.path.getsize(file_path) + estimated_pages = max(1, file_size // (80 * 1024)) + + result = await parse_with_llamacloud_retry( + file_path=file_path, + estimated_pages=estimated_pages, + task_logger=task_logger, + log_entry=log_entry, + ) + + markdown_documents = await result.aget_markdown_documents( + split_by_page=False + ) + if markdown_documents: + return markdown_documents[0].text + return None + + elif etl_service == "DOCLING": + from app.services.docling_service import create_docling_service + + docling_service = create_docling_service() + + # Suppress pdfminer warnings + pdfminer_logger = getLogger("pdfminer") + original_level = pdfminer_logger.level + + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", category=UserWarning, module="pdfminer" + ) + warnings.filterwarnings( + "ignore", message=".*Cannot set gray non-stroke color.*" + ) + warnings.filterwarnings("ignore", message=".*invalid float value.*") + + pdfminer_logger.setLevel(ERROR) + + try: + result = await docling_service.process_document( + file_path, file_name + ) + finally: + pdfminer_logger.setLevel(original_level) + + return result.get("content") + else: + logger.warning(f"Unknown ETL service: {etl_service}") + return None + + except Exception as e: + logger.error(f"ETL extraction failed for {file_name}: {e!s}") + return None + + +# ============ Indexer Functions ============ + + +async def check_document_by_unique_identifier( + session: AsyncSession, unique_identifier_hash: str +) -> Document | None: + """Check if a document with the given unique identifier hash already exists.""" + from sqlalchemy.orm import selectinload + from sqlalchemy.future import select + + existing_doc_result = await session.execute( + select(Document) + .options(selectinload(Document.chunks)) + .where(Document.unique_identifier_hash == unique_identifier_hash) + ) + return existing_doc_result.scalars().first() + + +async def update_connector_last_indexed( + session: AsyncSession, + connector, + update_last_indexed: bool = True, +) -> None: + """Update the last_indexed_at timestamp for a connector.""" + if update_last_indexed: + connector.last_indexed_at = datetime.now( + UTC + ) # Use UTC for timezone consistency + logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") + + +async def index_composio_google_drive( + session: AsyncSession, + connector, + connector_id: int, + search_space_id: int, + user_id: str, + task_logger: TaskLoggingService, + log_entry, + update_last_indexed: bool = True, + max_items: int = 1000, +) -> tuple[int, str]: + """Index Google Drive files via Composio with delta sync support. + + Delta Sync Flow: + 1. First sync: Full scan + get initial page token + 2. Subsequent syncs: Use LIST_CHANGES to process only changed files + + Supports folder/file selection via connector config: + - selected_folders: List of {id, name} for folders to index + - selected_files: List of {id, name} for individual files to index + - indexing_options: {max_files_per_folder, incremental_sync, include_subfolders} + """ + try: + composio_connector = ComposioGoogleDriveConnector(session, connector_id) + connector_config = await composio_connector.get_config() + + # Get folder/file selection configuration + selected_folders = connector_config.get("selected_folders", []) + selected_files = connector_config.get("selected_files", []) + indexing_options = connector_config.get("indexing_options", {}) + + # Check for stored page token for delta sync + stored_page_token = connector_config.get("drive_page_token") + use_delta_sync = stored_page_token and connector.last_indexed_at + + max_files_per_folder = indexing_options.get("max_files_per_folder", 100) + include_subfolders = indexing_options.get("include_subfolders", True) + + # Route to delta sync or full scan + if use_delta_sync: + logger.info(f"Using delta sync for Composio Google Drive connector {connector_id}") + await task_logger.log_task_progress( + log_entry, + f"Starting delta sync for Google Drive via Composio (connector {connector_id})", + {"stage": "delta_sync", "token": stored_page_token[:20] + "..."}, + ) + + documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_delta_sync( + session=session, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + page_token=stored_page_token, + max_items=max_items, + task_logger=task_logger, + log_entry=log_entry, + ) + else: + logger.info(f"Using full scan for Composio Google Drive connector {connector_id} (first sync or no token)") + await task_logger.log_task_progress( + log_entry, + f"Fetching Google Drive files via Composio for connector {connector_id}", + { + "stage": "full_scan", + "selected_folders": len(selected_folders), + "selected_files": len(selected_files), + }, + ) + + documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_full_scan( + session=session, + composio_connector=composio_connector, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + selected_folders=selected_folders, + selected_files=selected_files, + max_files_per_folder=max_files_per_folder, + include_subfolders=include_subfolders, + max_items=max_items, + task_logger=task_logger, + log_entry=log_entry, + ) + + # Get new page token for next sync (always update after successful sync) + new_token, token_error = await composio_connector.get_drive_start_page_token() + if new_token and not token_error: + # Refresh connector to avoid stale state + await session.refresh(connector) + + if not connector.config: + connector.config = {} + connector.config["drive_page_token"] = new_token + flag_modified(connector, "config") + logger.info(f"Updated drive_page_token for connector {connector_id}") + elif token_error: + logger.warning(f"Failed to get new page token: {token_error}") + + # CRITICAL: Always update timestamp so Electric SQL syncs and UI shows indexed status + await update_connector_last_indexed(session, connector, update_last_indexed) + + # Final commit + logger.info(f"Final commit: Total {documents_indexed} Google Drive files processed") + await session.commit() + logger.info("Successfully committed all Composio Google Drive document changes to database") + + # Handle processing errors + error_message = None + if processing_errors: + if len(processing_errors) == 1: + error_message = processing_errors[0] + else: + error_message = f"Failed to process {len(processing_errors)} file(s). First error: {processing_errors[0]}" + await task_logger.log_task_failure( + log_entry, + f"Completed Google Drive indexing with {len(processing_errors)} error(s) for connector {connector_id}", + { + "documents_indexed": documents_indexed, + "documents_skipped": documents_skipped, + "sync_type": "delta" if use_delta_sync else "full", + "errors": processing_errors, + }, + ) + else: + await task_logger.log_task_success( + log_entry, + f"Successfully completed Google Drive indexing via Composio for connector {connector_id}", + { + "documents_indexed": documents_indexed, + "documents_skipped": documents_skipped, + "sync_type": "delta" if use_delta_sync else "full", + }, + ) + + return documents_indexed, error_message + + except Exception as e: + logger.error(f"Failed to index Google Drive via Composio: {e!s}", exc_info=True) + return 0, f"Failed to index Google Drive via Composio: {e!s}" + + +async def _index_composio_drive_delta_sync( + session: AsyncSession, + composio_connector: ComposioGoogleDriveConnector, + connector_id: int, + search_space_id: int, + user_id: str, + page_token: str, + max_items: int, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Index Google Drive files using delta sync (only changed files). + + Uses GOOGLEDRIVE_LIST_CHANGES to fetch only files that changed since last sync. + Handles: new files, modified files, and deleted files. + """ + documents_indexed = 0 + documents_skipped = 0 + processing_errors = [] + + # Fetch all changes with pagination + all_changes = [] + current_token = page_token + + while len(all_changes) < max_items: + changes, next_token, error = await composio_connector.list_drive_changes( + page_token=current_token, + page_size=100, + include_removed=True, + ) + + if error: + logger.error(f"Error fetching Drive changes: {error}") + processing_errors.append(f"Failed to fetch changes: {error}") + break + + all_changes.extend(changes) + + if not next_token or next_token == current_token: + break + current_token = next_token + + if not all_changes: + logger.info("No changes detected since last sync") + return 0, 0, [] + + logger.info(f"Processing {len(all_changes)} changes from delta sync") + + for change in all_changes[:max_items]: + try: + # Handle removed files + is_removed = change.get("removed", False) + file_info = change.get("file", {}) + file_id = change.get("fileId") or file_info.get("id", "") + + if not file_id: + documents_skipped += 1 + continue + + # Check if file was trashed or removed + if is_removed or file_info.get("trashed", False): + # Remove document from database + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"drive_{file_id}", search_space_id + ) + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + if existing_document: + await session.delete(existing_document) + documents_indexed += 1 + logger.info(f"Deleted document for removed/trashed file: {file_id}") + continue + + # Process changed file + file_name = file_info.get("name", "") or "Untitled" + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") + + # Skip folders + if mime_type == "application/vnd.google-apps.folder": + continue + + # Process the file + indexed, skipped, errors = await _process_single_drive_file( + session=session, + composio_connector=composio_connector, + file_id=file_id, + file_name=file_name, + mime_type=mime_type, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + task_logger=task_logger, + log_entry=log_entry, + ) + + documents_indexed += indexed + documents_skipped += skipped + processing_errors.extend(errors) + + # Batch commit every 10 documents + if documents_indexed > 0 and documents_indexed % 10 == 0: + await session.commit() + logger.info(f"Committed batch: {documents_indexed} changes processed") + + except Exception as e: + error_msg = f"Error processing change for file {file_id}: {e!s}" + logger.error(error_msg, exc_info=True) + processing_errors.append(error_msg) + documents_skipped += 1 + + logger.info(f"Delta sync complete: {documents_indexed} indexed, {documents_skipped} skipped") + return documents_indexed, documents_skipped, processing_errors + + +async def _index_composio_drive_full_scan( + session: AsyncSession, + composio_connector: ComposioGoogleDriveConnector, + connector_id: int, + search_space_id: int, + user_id: str, + selected_folders: list[dict], + selected_files: list[dict], + max_files_per_folder: int, + include_subfolders: bool, + max_items: int, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Index Google Drive files using full scan (first sync or when no delta token).""" + documents_indexed = 0 + documents_skipped = 0 + processing_errors = [] + + all_files = [] + + # If specific folders/files are selected, fetch from those + if selected_folders or selected_files: + # Fetch files from selected folders + for folder in selected_folders: + folder_id = folder.get("id") + folder_name = folder.get("name", "Unknown") + + if not folder_id: + continue + + # Handle special case for "root" folder + actual_folder_id = None if folder_id == "root" else folder_id + + logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") + + # Fetch files from this folder + folder_files = [] + page_token = None + + while len(folder_files) < max_files_per_folder: + ( + files, + next_token, + error, + ) = await composio_connector.list_drive_files( + folder_id=actual_folder_id, + page_token=page_token, + page_size=min(100, max_files_per_folder - len(folder_files)), + ) + + if error: + logger.warning( + f"Failed to fetch files from folder {folder_name}: {error}" + ) + break + + # Process files + for file_info in files: + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + + # If it's a folder and include_subfolders is enabled, recursively fetch + if mime_type == "application/vnd.google-apps.folder": + if include_subfolders: + # Add subfolder files recursively + subfolder_files = await _fetch_folder_files_recursively( + composio_connector, + file_info.get("id"), + max_files=max_files_per_folder, + current_count=len(folder_files), + ) + folder_files.extend(subfolder_files) + else: + folder_files.append(file_info) + + if not next_token: + break + page_token = next_token + + all_files.extend(folder_files[:max_files_per_folder]) + logger.info(f"Found {len(folder_files)} files in folder {folder_name}") + + # Add specifically selected files + for selected_file in selected_files: + file_id = selected_file.get("id") + file_name = selected_file.get("name", "Unknown") + + if not file_id: + continue + + # Add file info (we'll fetch content later during indexing) + all_files.append( + { + "id": file_id, + "name": file_name, + "mimeType": "", # Will be determined later + } + ) + else: + # No selection specified - fetch all files (original behavior) + page_token = None + + while len(all_files) < max_items: + files, next_token, error = await composio_connector.list_drive_files( + page_token=page_token, + page_size=min(100, max_items - len(all_files)), + ) + + if error: + return 0, 0, [f"Failed to fetch Drive files: {error}"] + + all_files.extend(files) + + if not next_token: + break + page_token = next_token + + if not all_files: + logger.info("No Google Drive files found") + return 0, 0, [] + + logger.info(f"Found {len(all_files)} Google Drive files to index via Composio (full scan)") + + for file_info in all_files: + try: + # Handle both standard Google API and potential Composio variations + file_id = file_info.get("id", "") or file_info.get("fileId", "") + file_name = ( + file_info.get("name", "") + or file_info.get("fileName", "") + or "Untitled" + ) + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + + if not file_id: + documents_skipped += 1 + continue + + # Skip folders + if mime_type == "application/vnd.google-apps.folder": + continue + + # Process the file + indexed, skipped, errors = await _process_single_drive_file( + session=session, + composio_connector=composio_connector, + file_id=file_id, + file_name=file_name, + mime_type=mime_type, + connector_id=connector_id, + search_space_id=search_space_id, + user_id=user_id, + task_logger=task_logger, + log_entry=log_entry, + ) + + documents_indexed += indexed + documents_skipped += skipped + processing_errors.extend(errors) + + # Batch commit every 10 documents + if documents_indexed > 0 and documents_indexed % 10 == 0: + logger.info(f"Committing batch: {documents_indexed} Google Drive files processed so far") + await session.commit() + + except Exception as e: + error_msg = f"Error processing Drive file {file_name or 'unknown'}: {e!s}" + logger.error(error_msg, exc_info=True) + processing_errors.append(error_msg) + documents_skipped += 1 + + logger.info(f"Full scan complete: {documents_indexed} indexed, {documents_skipped} skipped") + return documents_indexed, documents_skipped, processing_errors + + +async def _process_single_drive_file( + session: AsyncSession, + composio_connector: ComposioGoogleDriveConnector, + file_id: str, + file_name: str, + mime_type: str, + connector_id: int, + search_space_id: int, + user_id: str, + task_logger: TaskLoggingService, + log_entry, +) -> tuple[int, int, list[str]]: + """Process a single Google Drive file for indexing. + + Returns: + Tuple of (documents_indexed, documents_skipped, processing_errors) + """ + processing_errors = [] + + # Generate unique identifier hash + document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) + unique_identifier_hash = generate_unique_identifier_hash( + document_type, f"drive_{file_id}", search_space_id + ) + + # Check if document exists + existing_document = await check_document_by_unique_identifier( + session, unique_identifier_hash + ) + + # Get file content + content, content_error = await composio_connector.get_drive_file_content(file_id) + + if content_error or not content: + logger.warning( + f"Could not get content for file {file_name}: {content_error}" + ) + # Use metadata as content fallback + markdown_content = f"# {file_name}\n\n" + markdown_content += f"**File ID:** {file_id}\n" + markdown_content += f"**Type:** {mime_type}\n" + elif isinstance(content, dict): + # Safety check: if content is still a dict, log error and use fallback + error_msg = f"Unexpected dict content format for file {file_name}: {list(content.keys())}" + logger.error(error_msg) + processing_errors.append(error_msg) + markdown_content = f"# {file_name}\n\n" + markdown_content += f"**File ID:** {file_id}\n" + markdown_content += f"**Type:** {mime_type}\n" + else: + # Process content based on file type + markdown_content = await _process_file_content( + content=content, + file_name=file_name, + file_id=file_id, + mime_type=mime_type, + search_space_id=search_space_id, + user_id=user_id, + session=session, + task_logger=task_logger, + log_entry=log_entry, + processing_errors=processing_errors, + ) + + content_hash = generate_content_hash(markdown_content, search_space_id) + + if existing_document: + if existing_document.content_hash == content_hash: + return 0, 1, processing_errors # Skipped + + # Update existing document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "file_id": file_id, + "file_name": file_name, + "mime_type": mime_type, + "document_type": "Google Drive File (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + existing_document.title = f"Drive: {file_name}" + existing_document.content = summary_content + existing_document.content_hash = content_hash + existing_document.embedding = summary_embedding + existing_document.document_metadata = { + "file_id": file_id, + "file_name": file_name, + "FILE_NAME": file_name, # For compatibility + "mime_type": mime_type, + "connector_id": connector_id, + "source": "composio", + } + existing_document.chunks = chunks + existing_document.updated_at = get_current_timestamp() + + return 1, 0, processing_errors # Indexed + + # Create new document + user_llm = await get_user_long_context_llm( + session, user_id, search_space_id + ) + + if user_llm: + document_metadata = { + "file_id": file_id, + "file_name": file_name, + "mime_type": mime_type, + "document_type": "Google Drive File (Composio)", + } + ( + summary_content, + summary_embedding, + ) = await generate_document_summary( + markdown_content, user_llm, document_metadata + ) + else: + summary_content = ( + f"Google Drive File: {file_name}\n\nType: {mime_type}" + ) + summary_embedding = config.embedding_model_instance.embed( + summary_content + ) + + chunks = await create_document_chunks(markdown_content) + + document = Document( + search_space_id=search_space_id, + title=f"Drive: {file_name}", + document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]), + document_metadata={ + "file_id": file_id, + "file_name": file_name, + "FILE_NAME": file_name, # For compatibility + "mime_type": mime_type, + "connector_id": connector_id, + "toolkit_id": "googledrive", + "source": "composio", + }, + content=summary_content, + content_hash=content_hash, + unique_identifier_hash=unique_identifier_hash, + embedding=summary_embedding, + chunks=chunks, + updated_at=get_current_timestamp(), + ) + session.add(document) + + return 1, 0, processing_errors # Indexed + + +async def _fetch_folder_files_recursively( + composio_connector: ComposioGoogleDriveConnector, + folder_id: str, + max_files: int = 100, + current_count: int = 0, + depth: int = 0, + max_depth: int = 10, +) -> list[dict[str, Any]]: + """ + Recursively fetch files from a Google Drive folder via Composio. + + Args: + composio_connector: The Composio connector instance + folder_id: Google Drive folder ID + max_files: Maximum number of files to fetch + current_count: Current number of files already fetched + depth: Current recursion depth + max_depth: Maximum recursion depth to prevent infinite loops + + Returns: + List of file info dictionaries + """ + if depth >= max_depth: + logger.warning(f"Max recursion depth reached for folder {folder_id}") + return [] + + if current_count >= max_files: + return [] + + all_files = [] + page_token = None + + try: + while len(all_files) + current_count < max_files: + files, next_token, error = await composio_connector.list_drive_files( + folder_id=folder_id, + page_token=page_token, + page_size=min(100, max_files - len(all_files) - current_count), + ) + + if error: + logger.warning( + f"Error fetching files from subfolder {folder_id}: {error}" + ) + break + + for file_info in files: + mime_type = file_info.get("mimeType", "") or file_info.get( + "mime_type", "" + ) + + if mime_type == "application/vnd.google-apps.folder": + # Recursively fetch from subfolders + subfolder_files = await _fetch_folder_files_recursively( + composio_connector, + file_info.get("id"), + max_files=max_files, + current_count=current_count + len(all_files), + depth=depth + 1, + max_depth=max_depth, + ) + all_files.extend(subfolder_files) + else: + all_files.append(file_info) + + if len(all_files) + current_count >= max_files: + break + + if not next_token: + break + page_token = next_token + + return all_files[: max_files - current_count] + + except Exception as e: + logger.error(f"Error in recursive folder fetch: {e!s}") + return all_files + diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 5af332760..5ad2266b7 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -46,6 +46,13 @@ logger = logging.getLogger(__name__) router = APIRouter() +# Map toolkit_id to frontend connector ID +TOOLKIT_TO_FRONTEND_CONNECTOR_ID = { + "googledrive": "composio-googledrive", + "gmail": "composio-gmail", + "googlecalendar": "composio-googlecalendar", +} + # Initialize security utilities _state_manager = None @@ -327,8 +334,12 @@ async def composio_callback( await session.commit() await session.refresh(existing_connector) + # Get the frontend connector ID based on toolkit_id + frontend_connector_id = TOOLKIT_TO_FRONTEND_CONNECTOR_ID.get( + toolkit_id, "composio-connector" + ) return RedirectResponse( - url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&success=true&connector=composio-connector&connectorId={existing_connector.id}" + url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&success=true&connector={frontend_connector_id}&connectorId={existing_connector.id}" ) try: @@ -358,8 +369,12 @@ async def composio_callback( f"Successfully created Composio connector {db_connector.id} for user {user_id}, toolkit {toolkit_id}" ) + # Get the frontend connector ID based on toolkit_id + frontend_connector_id = TOOLKIT_TO_FRONTEND_CONNECTOR_ID.get( + toolkit_id, "composio-connector" + ) return RedirectResponse( - url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&success=true&connector=composio-connector&connectorId={db_connector.id}" + url=f"{config.NEXT_FRONTEND_URL}/dashboard/{space_id}/new-chat?modal=connectors&tab=all&success=true&connector={frontend_connector_id}&connectorId={db_connector.id}" ) except IntegrityError as e: diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 3810f03a4..3ea2d1bf2 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -53,6 +53,27 @@ TOOLKIT_TO_DOCUMENT_TYPE = { "googlecalendar": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", } +# Mapping of toolkit IDs to their indexer functions +# Format: toolkit_id -> (module_path, function_name, supports_date_filter) +# supports_date_filter: True if the indexer accepts start_date/end_date params +TOOLKIT_TO_INDEXER = { + "googledrive": ( + "app.connectors.composio_google_drive_connector", + "index_composio_google_drive", + False, # Google Drive doesn't use date filtering + ), + "gmail": ( + "app.connectors.composio_gmail_connector", + "index_composio_gmail", + True, # Gmail uses date filtering + ), + "googlecalendar": ( + "app.connectors.composio_google_calendar_connector", + "index_composio_google_calendar", + True, # Calendar uses date filtering + ), +} + class ComposioService: """Service for interacting with Composio API.""" diff --git a/surfsense_backend/app/tasks/composio_indexer.py b/surfsense_backend/app/tasks/composio_indexer.py index 3eed8470e..f97652114 100644 --- a/surfsense_backend/app/tasks/composio_indexer.py +++ b/surfsense_backend/app/tasks/composio_indexer.py @@ -2,65 +2,39 @@ Composio connector indexer. Routes indexing requests to toolkit-specific handlers (Google Drive, Gmail, Calendar). +Uses a registry pattern for clean, extensible connector routing. Note: This module is intentionally placed in app/tasks/ (not in connector_indexers/) to avoid circular import issues with the connector_indexers package. """ import logging -import os -import tempfile -from datetime import UTC, datetime -from pathlib import Path -from typing import Any +from importlib import import_module from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select -from sqlalchemy.orm import selectinload -from app.config import config -from app.connectors.composio_connector import ComposioConnector from app.db import ( - Document, - DocumentType, - Log, SearchSourceConnector, SearchSourceConnectorType, ) -from app.services.composio_service import INDEXABLE_TOOLKITS, TOOLKIT_TO_DOCUMENT_TYPE -from app.services.llm_service import get_user_long_context_llm +from app.services.composio_service import INDEXABLE_TOOLKITS, TOOLKIT_TO_INDEXER from app.services.task_logging_service import TaskLoggingService -from app.tasks.connector_indexers.base import calculate_date_range -from app.utils.document_converters import ( - create_document_chunks, - generate_content_hash, - generate_document_summary, - generate_unique_identifier_hash, -) # Set up logging logger = logging.getLogger(__name__) -# ============ Utility functions (copied from connector_indexers.base to avoid circular imports) ============ +# Valid Composio connector types +COMPOSIO_CONNECTOR_TYPES = { + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, +} -def get_current_timestamp() -> datetime: - """Get the current timestamp with timezone for updated_at field.""" - return datetime.now(UTC) - - -async def check_document_by_unique_identifier( - session: AsyncSession, unique_identifier_hash: str -) -> Document | None: - """Check if a document with the given unique identifier hash already exists.""" - existing_doc_result = await session.execute( - select(Document) - .options(selectinload(Document.chunks)) - .where(Document.unique_identifier_hash == unique_identifier_hash) - ) - return existing_doc_result.scalars().first() +# ============ Utility functions ============ async def get_connector_by_id( @@ -78,312 +52,26 @@ async def get_connector_by_id( return result.scalars().first() -async def update_connector_last_indexed( - session: AsyncSession, - connector: SearchSourceConnector, - update_last_indexed: bool = True, -) -> None: - """Update the last_indexed_at timestamp for a connector.""" - if update_last_indexed: - connector.last_indexed_at = datetime.now( - UTC - ) # Use UTC for timezone consistency - logger.info(f"Updated last_indexed_at to {connector.last_indexed_at}") - - -# Binary file extensions that need file processor -BINARY_FILE_EXTENSIONS = { - ".pdf", - ".doc", - ".docx", - ".xls", - ".xlsx", - ".ppt", - ".pptx", - ".png", - ".jpg", - ".jpeg", - ".gif", - ".bmp", - ".tiff", - ".webp", - ".zip", - ".tar", - ".gz", - ".rar", - ".7z", - ".mp3", - ".mp4", - ".wav", - ".avi", - ".mov", - ".exe", - ".dll", - ".so", - ".bin", -} - -# Text file extensions that can be decoded as UTF-8 -TEXT_FILE_EXTENSIONS = { - ".txt", - ".md", - ".markdown", - ".json", - ".xml", - ".html", - ".htm", - ".css", - ".js", - ".ts", - ".py", - ".java", - ".c", - ".cpp", - ".h", - ".yaml", - ".yml", - ".toml", - ".ini", - ".cfg", - ".conf", - ".sh", - ".bash", - ".zsh", - ".fish", - ".sql", - ".csv", - ".tsv", - ".rst", - ".tex", - ".log", -} - - -def _is_binary_file(file_name: str, mime_type: str) -> bool: - """Check if a file is binary based on extension or mime type.""" - extension = Path(file_name).suffix.lower() - - # Check extension first - if extension in BINARY_FILE_EXTENSIONS: - return True - if extension in TEXT_FILE_EXTENSIONS: - return False - - # Check mime type - if mime_type: - if mime_type.startswith(("image/", "audio/", "video/", "application/pdf")): - return True - if mime_type.startswith(("text/", "application/json", "application/xml")): - return False - # Office documents - if ( - "spreadsheet" in mime_type - or "document" in mime_type - or "presentation" in mime_type - ): - return True - - # Default to text for unknown types - return False - - -async def _process_file_content( - content: bytes | str, - file_name: str, - file_id: str, - mime_type: str, - search_space_id: int, - user_id: str, - session: AsyncSession, - task_logger: TaskLoggingService, - log_entry: Log, - processing_errors: list[str], -) -> str: +def get_indexer_function(toolkit_id: str): """ - Process file content and return markdown text. - - For binary files (PDFs, images, etc.), uses Surfsense's ETL service. - For text files, decodes as UTF-8. + Dynamically import and return the indexer function for a toolkit. Args: - content: File content as bytes or string - file_name: Name of the file - file_id: Google Drive file ID - mime_type: MIME type of the file - search_space_id: Search space ID - user_id: User ID - session: Database session - task_logger: Task logging service - log_entry: Log entry for tracking - processing_errors: List to append errors to + toolkit_id: The toolkit ID (e.g., "googledrive", "gmail") Returns: - Markdown content string + Tuple of (indexer_function, supports_date_filter) + + Raises: + ValueError: If toolkit not found in registry """ - # Ensure content is bytes - if isinstance(content, str): - content = content.encode("utf-8") + if toolkit_id not in TOOLKIT_TO_INDEXER: + raise ValueError(f"No indexer registered for toolkit: {toolkit_id}") - # Check if this is a binary file - if _is_binary_file(file_name, mime_type): - # Use ETL service for binary files (PDF, Office docs, etc.) - temp_file_path = None - try: - # Get file extension - extension = Path(file_name).suffix or ".bin" - - # Write to temp file - with tempfile.NamedTemporaryFile( - delete=False, suffix=extension - ) as tmp_file: - tmp_file.write(content) - temp_file_path = tmp_file.name - - # Use the configured ETL service to extract text - extracted_text = await _extract_text_with_etl( - temp_file_path, file_name, task_logger, log_entry - ) - - if extracted_text: - return extracted_text - else: - # Fallback if extraction fails - logger.warning(f"Could not extract text from binary file {file_name}") - return f"# {file_name}\n\n[Binary file - text extraction failed]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" - - except Exception as e: - error_msg = f"Error processing binary file {file_name}: {e!s}" - logger.error(error_msg) - processing_errors.append(error_msg) - return f"# {file_name}\n\n[Binary file - processing error]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" - finally: - # Cleanup temp file - if temp_file_path and os.path.exists(temp_file_path): - try: - os.unlink(temp_file_path) - except Exception as e: - logger.debug(f"Could not delete temp file {temp_file_path}: {e}") - else: - # Text file - try to decode as UTF-8 - try: - return content.decode("utf-8") - except UnicodeDecodeError: - # Try other encodings - for encoding in ["latin-1", "cp1252", "iso-8859-1"]: - try: - return content.decode(encoding) - except UnicodeDecodeError: - continue - - # If all encodings fail, treat as binary - error_msg = f"Could not decode text file {file_name} with any encoding" - logger.warning(error_msg) - processing_errors.append(error_msg) - return f"# {file_name}\n\n[File content could not be decoded]\n\n**File ID:** {file_id}\n**Type:** {mime_type}\n" - - -async def _extract_text_with_etl( - file_path: str, - file_name: str, - task_logger: TaskLoggingService, - log_entry: Log, -) -> str | None: - """ - Extract text from a file using the configured ETL service. - - Args: - file_path: Path to the file - file_name: Name of the file - task_logger: Task logging service - log_entry: Log entry for tracking - - Returns: - Extracted text as markdown, or None if extraction fails - """ - import warnings - from logging import ERROR, getLogger - - etl_service = config.ETL_SERVICE - - try: - if etl_service == "UNSTRUCTURED": - from langchain_unstructured import UnstructuredLoader - - from app.utils.document_converters import convert_document_to_markdown - - loader = UnstructuredLoader( - file_path, - mode="elements", - post_processors=[], - languages=["eng"], - include_orig_elements=False, - include_metadata=False, - strategy="auto", - ) - - docs = await loader.aload() - if docs: - return await convert_document_to_markdown(docs) - return None - - elif etl_service == "LLAMACLOUD": - from app.tasks.document_processors.file_processors import ( - parse_with_llamacloud_retry, - ) - - # Estimate pages (rough estimate based on file size) - file_size = os.path.getsize(file_path) - estimated_pages = max(1, file_size // (80 * 1024)) - - result = await parse_with_llamacloud_retry( - file_path=file_path, - estimated_pages=estimated_pages, - task_logger=task_logger, - log_entry=log_entry, - ) - - markdown_documents = await result.aget_markdown_documents( - split_by_page=False - ) - if markdown_documents: - return markdown_documents[0].text - return None - - elif etl_service == "DOCLING": - from app.services.docling_service import create_docling_service - - docling_service = create_docling_service() - - # Suppress pdfminer warnings - pdfminer_logger = getLogger("pdfminer") - original_level = pdfminer_logger.level - - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", category=UserWarning, module="pdfminer" - ) - warnings.filterwarnings( - "ignore", message=".*Cannot set gray non-stroke color.*" - ) - warnings.filterwarnings("ignore", message=".*invalid float value.*") - - pdfminer_logger.setLevel(ERROR) - - try: - result = await docling_service.process_document( - file_path, file_name - ) - finally: - pdfminer_logger.setLevel(original_level) - - return result.get("content") - else: - logger.warning(f"Unknown ETL service: {etl_service}") - return None - - except Exception as e: - logger.error(f"ETL extraction failed for {file_name}: {e!s}") - return None + module_path, function_name, supports_date_filter = TOOLKIT_TO_INDEXER[toolkit_id] + module = import_module(module_path) + indexer_func = getattr(module, function_name) + return indexer_func, supports_date_filter # ============ Main indexer function ============ @@ -403,6 +91,7 @@ async def index_composio_connector( Index content from a Composio connector. Routes to toolkit-specific indexing based on the connector's toolkit_id. + Uses a registry pattern for clean, extensible connector routing. Args: session: Database session @@ -435,19 +124,10 @@ async def index_composio_connector( try: # Get connector by id - accept any Composio connector type - # We'll check the actual type after loading - connector = await get_connector_by_id( - session, - connector_id, - None, # Don't filter by type, we'll validate after - ) + connector = await get_connector_by_id(session, connector_id, None) # Validate it's a Composio connector - if connector and connector.connector_type not in [ - SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR, - SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR, - SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, - ]: + if connector and connector.connector_type not in COMPOSIO_CONNECTOR_TYPES: error_msg = f"Connector {connector_id} is not a Composio connector" await task_logger.log_task_failure( log_entry, error_msg, {"error_type": "InvalidConnectorType"} @@ -480,53 +160,35 @@ async def index_composio_connector( ) return 0, error_msg - # Route to toolkit-specific indexer - if toolkit_id == "googledrive": - return await _index_composio_google_drive( - session=session, - connector=connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - task_logger=task_logger, - log_entry=log_entry, - update_last_indexed=update_last_indexed, - max_items=max_items, - ) - elif toolkit_id == "gmail": - return await _index_composio_gmail( - session=session, - connector=connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - start_date=start_date, - end_date=end_date, - task_logger=task_logger, - log_entry=log_entry, - update_last_indexed=update_last_indexed, - max_items=max_items, - ) - elif toolkit_id == "googlecalendar": - return await _index_composio_google_calendar( - session=session, - connector=connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - start_date=start_date, - end_date=end_date, - task_logger=task_logger, - log_entry=log_entry, - update_last_indexed=update_last_indexed, - max_items=max_items, - ) - else: - error_msg = f"No indexer implemented for toolkit: {toolkit_id}" + # Get indexer function from registry + try: + indexer_func, supports_date_filter = get_indexer_function(toolkit_id) + except ValueError as e: await task_logger.log_task_failure( - log_entry, error_msg, {"error_type": "NoIndexerImplemented"} + log_entry, str(e), {"error_type": "NoIndexerImplemented"} ) - return 0, error_msg + return 0, str(e) + + # Build kwargs for the indexer function + kwargs = { + "session": session, + "connector": connector, + "connector_id": connector_id, + "search_space_id": search_space_id, + "user_id": user_id, + "task_logger": task_logger, + "log_entry": log_entry, + "update_last_indexed": update_last_indexed, + "max_items": max_items, + } + + # Add date params for toolkits that support them + if supports_date_filter: + kwargs["start_date"] = start_date + kwargs["end_date"] = end_date + + # Call the toolkit-specific indexer + return await indexer_func(**kwargs) except SQLAlchemyError as db_error: await session.rollback() @@ -548,1378 +210,3 @@ async def index_composio_connector( ) logger.error(f"Failed to index Composio connector: {e!s}", exc_info=True) return 0, f"Failed to index Composio connector: {e!s}" - - -async def _index_composio_google_drive( - session: AsyncSession, - connector, - connector_id: int, - search_space_id: int, - user_id: str, - task_logger: TaskLoggingService, - log_entry, - update_last_indexed: bool = True, - max_items: int = 1000, -) -> tuple[int, str]: - """Index Google Drive files via Composio with delta sync support. - - Delta Sync Flow: - 1. First sync: Full scan + get initial page token - 2. Subsequent syncs: Use LIST_CHANGES to process only changed files - - Supports folder/file selection via connector config: - - selected_folders: List of {id, name} for folders to index - - selected_files: List of {id, name} for individual files to index - - indexing_options: {max_files_per_folder, incremental_sync, include_subfolders} - """ - try: - composio_connector = ComposioConnector(session, connector_id) - connector_config = await composio_connector.get_config() - - # Get folder/file selection configuration - selected_folders = connector_config.get("selected_folders", []) - selected_files = connector_config.get("selected_files", []) - indexing_options = connector_config.get("indexing_options", {}) - - # Check for stored page token for delta sync - stored_page_token = connector_config.get("drive_page_token") - use_delta_sync = stored_page_token and connector.last_indexed_at - - max_files_per_folder = indexing_options.get("max_files_per_folder", 100) - include_subfolders = indexing_options.get("include_subfolders", True) - - # Route to delta sync or full scan - if use_delta_sync: - logger.info(f"Using delta sync for Composio Google Drive connector {connector_id}") - await task_logger.log_task_progress( - log_entry, - f"Starting delta sync for Google Drive via Composio (connector {connector_id})", - {"stage": "delta_sync", "token": stored_page_token[:20] + "..."}, - ) - - documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_delta_sync( - session=session, - composio_connector=composio_connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - page_token=stored_page_token, - max_items=max_items, - task_logger=task_logger, - log_entry=log_entry, - ) - else: - logger.info(f"Using full scan for Composio Google Drive connector {connector_id} (first sync or no token)") - await task_logger.log_task_progress( - log_entry, - f"Fetching Google Drive files via Composio for connector {connector_id}", - { - "stage": "full_scan", - "selected_folders": len(selected_folders), - "selected_files": len(selected_files), - }, - ) - - documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_full_scan( - session=session, - composio_connector=composio_connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - selected_folders=selected_folders, - selected_files=selected_files, - max_files_per_folder=max_files_per_folder, - include_subfolders=include_subfolders, - max_items=max_items, - task_logger=task_logger, - log_entry=log_entry, - ) - - # Get new page token for next sync (always update after successful sync) - new_token, token_error = await composio_connector.get_drive_start_page_token() - if new_token and not token_error: - from sqlalchemy.orm.attributes import flag_modified - - # Refresh connector to avoid stale state - await session.refresh(connector) - - if not connector.config: - connector.config = {} - connector.config["drive_page_token"] = new_token - flag_modified(connector, "config") - logger.info(f"Updated drive_page_token for connector {connector_id}") - elif token_error: - logger.warning(f"Failed to get new page token: {token_error}") - - # CRITICAL: Always update timestamp so Electric SQL syncs and UI shows indexed status - await update_connector_last_indexed(session, connector, update_last_indexed) - - # Final commit - logger.info(f"Final commit: Total {documents_indexed} Google Drive files processed") - await session.commit() - logger.info("Successfully committed all Composio Google Drive document changes to database") - - # Handle processing errors - error_message = None - if processing_errors: - if len(processing_errors) == 1: - error_message = processing_errors[0] - else: - error_message = f"Failed to process {len(processing_errors)} file(s). First error: {processing_errors[0]}" - await task_logger.log_task_failure( - log_entry, - f"Completed Google Drive indexing with {len(processing_errors)} error(s) for connector {connector_id}", - { - "documents_indexed": documents_indexed, - "documents_skipped": documents_skipped, - "sync_type": "delta" if use_delta_sync else "full", - "errors": processing_errors, - }, - ) - else: - await task_logger.log_task_success( - log_entry, - f"Successfully completed Google Drive indexing via Composio for connector {connector_id}", - { - "documents_indexed": documents_indexed, - "documents_skipped": documents_skipped, - "sync_type": "delta" if use_delta_sync else "full", - }, - ) - - return documents_indexed, error_message - - except Exception as e: - logger.error(f"Failed to index Google Drive via Composio: {e!s}", exc_info=True) - return 0, f"Failed to index Google Drive via Composio: {e!s}" - - -async def _index_composio_drive_delta_sync( - session: AsyncSession, - composio_connector: ComposioConnector, - connector_id: int, - search_space_id: int, - user_id: str, - page_token: str, - max_items: int, - task_logger: TaskLoggingService, - log_entry, -) -> tuple[int, int, list[str]]: - """Index Google Drive files using delta sync (only changed files). - - Uses GOOGLEDRIVE_LIST_CHANGES to fetch only files that changed since last sync. - Handles: new files, modified files, and deleted files. - """ - documents_indexed = 0 - documents_skipped = 0 - processing_errors = [] - - # Fetch all changes with pagination - all_changes = [] - current_token = page_token - - while len(all_changes) < max_items: - changes, next_token, error = await composio_connector.list_drive_changes( - page_token=current_token, - page_size=100, - include_removed=True, - ) - - if error: - logger.error(f"Error fetching Drive changes: {error}") - processing_errors.append(f"Failed to fetch changes: {error}") - break - - all_changes.extend(changes) - - if not next_token or next_token == current_token: - break - current_token = next_token - - if not all_changes: - logger.info("No changes detected since last sync") - return 0, 0, [] - - logger.info(f"Processing {len(all_changes)} changes from delta sync") - - for change in all_changes[:max_items]: - try: - # Handle removed files - is_removed = change.get("removed", False) - file_info = change.get("file", {}) - file_id = change.get("fileId") or file_info.get("id", "") - - if not file_id: - documents_skipped += 1 - continue - - # Check if file was trashed or removed - if is_removed or file_info.get("trashed", False): - # Remove document from database - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"drive_{file_id}", search_space_id - ) - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - if existing_document: - await session.delete(existing_document) - documents_indexed += 1 - logger.info(f"Deleted document for removed/trashed file: {file_id}") - continue - - # Process changed file - file_name = file_info.get("name", "") or "Untitled" - mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") - - # Skip folders - if mime_type == "application/vnd.google-apps.folder": - continue - - # Process the file - indexed, skipped, errors = await _process_single_drive_file( - session=session, - composio_connector=composio_connector, - file_id=file_id, - file_name=file_name, - mime_type=mime_type, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - task_logger=task_logger, - log_entry=log_entry, - ) - - documents_indexed += indexed - documents_skipped += skipped - processing_errors.extend(errors) - - # Batch commit every 10 documents - if documents_indexed > 0 and documents_indexed % 10 == 0: - await session.commit() - logger.info(f"Committed batch: {documents_indexed} changes processed") - - except Exception as e: - error_msg = f"Error processing change for file {file_id}: {e!s}" - logger.error(error_msg, exc_info=True) - processing_errors.append(error_msg) - documents_skipped += 1 - - logger.info(f"Delta sync complete: {documents_indexed} indexed, {documents_skipped} skipped") - return documents_indexed, documents_skipped, processing_errors - - -async def _index_composio_drive_full_scan( - session: AsyncSession, - composio_connector: ComposioConnector, - connector_id: int, - search_space_id: int, - user_id: str, - selected_folders: list[dict], - selected_files: list[dict], - max_files_per_folder: int, - include_subfolders: bool, - max_items: int, - task_logger: TaskLoggingService, - log_entry, -) -> tuple[int, int, list[str]]: - """Index Google Drive files using full scan (first sync or when no delta token).""" - documents_indexed = 0 - documents_skipped = 0 - processing_errors = [] - - all_files = [] - - # If specific folders/files are selected, fetch from those - if selected_folders or selected_files: - # Fetch files from selected folders - for folder in selected_folders: - folder_id = folder.get("id") - folder_name = folder.get("name", "Unknown") - - if not folder_id: - continue - - # Handle special case for "root" folder - actual_folder_id = None if folder_id == "root" else folder_id - - logger.info(f"Fetching files from folder: {folder_name} ({folder_id})") - - # Fetch files from this folder - folder_files = [] - page_token = None - - while len(folder_files) < max_files_per_folder: - ( - files, - next_token, - error, - ) = await composio_connector.list_drive_files( - folder_id=actual_folder_id, - page_token=page_token, - page_size=min(100, max_files_per_folder - len(folder_files)), - ) - - if error: - logger.warning( - f"Failed to fetch files from folder {folder_name}: {error}" - ) - break - - # Process files - for file_info in files: - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" - ) - - # If it's a folder and include_subfolders is enabled, recursively fetch - if mime_type == "application/vnd.google-apps.folder": - if include_subfolders: - # Add subfolder files recursively - subfolder_files = await _fetch_folder_files_recursively( - composio_connector, - file_info.get("id"), - max_files=max_files_per_folder, - current_count=len(folder_files), - ) - folder_files.extend(subfolder_files) - else: - folder_files.append(file_info) - - if not next_token: - break - page_token = next_token - - all_files.extend(folder_files[:max_files_per_folder]) - logger.info(f"Found {len(folder_files)} files in folder {folder_name}") - - # Add specifically selected files - for selected_file in selected_files: - file_id = selected_file.get("id") - file_name = selected_file.get("name", "Unknown") - - if not file_id: - continue - - # Add file info (we'll fetch content later during indexing) - all_files.append( - { - "id": file_id, - "name": file_name, - "mimeType": "", # Will be determined later - } - ) - else: - # No selection specified - fetch all files (original behavior) - page_token = None - - while len(all_files) < max_items: - files, next_token, error = await composio_connector.list_drive_files( - page_token=page_token, - page_size=min(100, max_items - len(all_files)), - ) - - if error: - return 0, 0, [f"Failed to fetch Drive files: {error}"] - - all_files.extend(files) - - if not next_token: - break - page_token = next_token - - if not all_files: - logger.info("No Google Drive files found") - return 0, 0, [] - - logger.info(f"Found {len(all_files)} Google Drive files to index via Composio (full scan)") - - for file_info in all_files: - try: - # Handle both standard Google API and potential Composio variations - file_id = file_info.get("id", "") or file_info.get("fileId", "") - file_name = ( - file_info.get("name", "") - or file_info.get("fileName", "") - or "Untitled" - ) - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" - ) - - if not file_id: - documents_skipped += 1 - continue - - # Skip folders - if mime_type == "application/vnd.google-apps.folder": - continue - - # Process the file - indexed, skipped, errors = await _process_single_drive_file( - session=session, - composio_connector=composio_connector, - file_id=file_id, - file_name=file_name, - mime_type=mime_type, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - task_logger=task_logger, - log_entry=log_entry, - ) - - documents_indexed += indexed - documents_skipped += skipped - processing_errors.extend(errors) - - # Batch commit every 10 documents - if documents_indexed > 0 and documents_indexed % 10 == 0: - logger.info(f"Committing batch: {documents_indexed} Google Drive files processed so far") - await session.commit() - - except Exception as e: - error_msg = f"Error processing Drive file {file_name or 'unknown'}: {e!s}" - logger.error(error_msg, exc_info=True) - processing_errors.append(error_msg) - documents_skipped += 1 - - logger.info(f"Full scan complete: {documents_indexed} indexed, {documents_skipped} skipped") - return documents_indexed, documents_skipped, processing_errors - - -async def _process_single_drive_file( - session: AsyncSession, - composio_connector: ComposioConnector, - file_id: str, - file_name: str, - mime_type: str, - connector_id: int, - search_space_id: int, - user_id: str, - task_logger: TaskLoggingService, - log_entry, -) -> tuple[int, int, list[str]]: - """Process a single Google Drive file for indexing. - - Returns: - Tuple of (documents_indexed, documents_skipped, processing_errors) - """ - processing_errors = [] - - # Generate unique identifier hash - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"drive_{file_id}", search_space_id - ) - - # Check if document exists - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - - # Get file content - content, content_error = await composio_connector.get_drive_file_content(file_id) - - if content_error or not content: - logger.warning( - f"Could not get content for file {file_name}: {content_error}" - ) - # Use metadata as content fallback - markdown_content = f"# {file_name}\n\n" - markdown_content += f"**File ID:** {file_id}\n" - markdown_content += f"**Type:** {mime_type}\n" - elif isinstance(content, dict): - # Safety check: if content is still a dict, log error and use fallback - error_msg = f"Unexpected dict content format for file {file_name}: {list(content.keys())}" - logger.error(error_msg) - processing_errors.append(error_msg) - markdown_content = f"# {file_name}\n\n" - markdown_content += f"**File ID:** {file_id}\n" - markdown_content += f"**Type:** {mime_type}\n" - else: - # Process content based on file type - markdown_content = await _process_file_content( - content=content, - file_name=file_name, - file_id=file_id, - mime_type=mime_type, - search_space_id=search_space_id, - user_id=user_id, - session=session, - task_logger=task_logger, - log_entry=log_entry, - processing_errors=processing_errors, - ) - - content_hash = generate_content_hash(markdown_content, search_space_id) - - if existing_document: - if existing_document.content_hash == content_hash: - return 0, 1, processing_errors # Skipped - - # Update existing document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "document_type": "Google Drive File (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - existing_document.title = f"Drive: {file_name}" - existing_document.content = summary_content - existing_document.content_hash = content_hash - existing_document.embedding = summary_embedding - existing_document.document_metadata = { - "file_id": file_id, - "file_name": file_name, - "FILE_NAME": file_name, # For compatibility - "mime_type": mime_type, - "connector_id": connector_id, - "source": "composio", - } - existing_document.chunks = chunks - existing_document.updated_at = get_current_timestamp() - - return 1, 0, processing_errors # Indexed - - # Create new document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "file_id": file_id, - "file_name": file_name, - "mime_type": mime_type, - "document_type": "Google Drive File (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - document = Document( - search_space_id=search_space_id, - title=f"Drive: {file_name}", - document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googledrive"]), - document_metadata={ - "file_id": file_id, - "file_name": file_name, - "FILE_NAME": file_name, # For compatibility - "mime_type": mime_type, - "connector_id": connector_id, - "toolkit_id": "googledrive", - "source": "composio", - }, - content=summary_content, - content_hash=content_hash, - unique_identifier_hash=unique_identifier_hash, - embedding=summary_embedding, - chunks=chunks, - updated_at=get_current_timestamp(), - ) - session.add(document) - - return 1, 0, processing_errors # Indexed - - -async def _fetch_folder_files_recursively( - composio_connector: ComposioConnector, - folder_id: str, - max_files: int = 100, - current_count: int = 0, - depth: int = 0, - max_depth: int = 10, -) -> list[dict[str, Any]]: - """ - Recursively fetch files from a Google Drive folder via Composio. - - Args: - composio_connector: The Composio connector instance - folder_id: Google Drive folder ID - max_files: Maximum number of files to fetch - current_count: Current number of files already fetched - depth: Current recursion depth - max_depth: Maximum recursion depth to prevent infinite loops - - Returns: - List of file info dictionaries - """ - if depth >= max_depth: - logger.warning(f"Max recursion depth reached for folder {folder_id}") - return [] - - if current_count >= max_files: - return [] - - all_files = [] - page_token = None - - try: - while len(all_files) + current_count < max_files: - files, next_token, error = await composio_connector.list_drive_files( - folder_id=folder_id, - page_token=page_token, - page_size=min(100, max_files - len(all_files) - current_count), - ) - - if error: - logger.warning( - f"Error fetching files from subfolder {folder_id}: {error}" - ) - break - - for file_info in files: - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" - ) - - if mime_type == "application/vnd.google-apps.folder": - # Recursively fetch from subfolders - subfolder_files = await _fetch_folder_files_recursively( - composio_connector, - file_info.get("id"), - max_files=max_files, - current_count=current_count + len(all_files), - depth=depth + 1, - max_depth=max_depth, - ) - all_files.extend(subfolder_files) - else: - all_files.append(file_info) - - if len(all_files) + current_count >= max_files: - break - - if not next_token: - break - page_token = next_token - - return all_files[: max_files - current_count] - - except Exception as e: - logger.error(f"Error in recursive folder fetch: {e!s}") - return all_files - - -async def _process_gmail_message_batch( - session: AsyncSession, - messages: list[dict[str, Any]], - composio_connector: ComposioConnector, - connector_id: int, - search_space_id: int, - user_id: str, - total_documents_indexed: int = 0, -) -> tuple[int, int]: - """ - Process a batch of Gmail messages and index them. - - Args: - total_documents_indexed: Running total of documents indexed so far (for batch commits). - - Returns: - Tuple of (documents_indexed, documents_skipped) - """ - documents_indexed = 0 - documents_skipped = 0 - - for message in messages: - try: - # Composio uses 'messageId' (camelCase), not 'id' - message_id = message.get("messageId", "") or message.get("id", "") - if not message_id: - documents_skipped += 1 - continue - - # Composio's GMAIL_FETCH_EMAILS already returns full message content - # No need for a separate detail API call - - # Extract message info from Composio response - # Composio structure: messageId, messageText, messageTimestamp, payload.headers, labelIds - payload = message.get("payload", {}) - headers = payload.get("headers", []) - - subject = "No Subject" - sender = "Unknown Sender" - date_str = message.get("messageTimestamp", "Unknown Date") - - for header in headers: - name = header.get("name", "").lower() - value = header.get("value", "") - if name == "subject": - subject = value - elif name == "from": - sender = value - elif name == "date": - date_str = value - - # Format to markdown using the full message data - markdown_content = composio_connector.format_gmail_message_to_markdown( - message - ) - - # Check for empty content (defensive parsing per Composio best practices) - if not markdown_content.strip(): - logger.warning(f"Skipping Gmail message with no content: {subject}") - documents_skipped += 1 - continue - - # Generate unique identifier - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"gmail_{message_id}", search_space_id - ) - - content_hash = generate_content_hash(markdown_content, search_space_id) - - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - - # Get label IDs from Composio response - label_ids = message.get("labelIds", []) - # Extract thread_id if available (for consistency with non-Composio implementation) - thread_id = message.get("threadId", "") or message.get("thread_id", "") - - if existing_document: - if existing_document.content_hash == content_hash: - documents_skipped += 1 - continue - - # Update existing - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "message_id": message_id, - "thread_id": thread_id, - "subject": subject, - "sender": sender, - "document_type": "Gmail Message (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - existing_document.title = f"Gmail: {subject}" - existing_document.content = summary_content - existing_document.content_hash = content_hash - existing_document.embedding = summary_embedding - existing_document.document_metadata = { - "message_id": message_id, - "thread_id": thread_id, - "subject": subject, - "sender": sender, - "date": date_str, - "labels": label_ids, - "connector_id": connector_id, - "source": "composio", - } - existing_document.chunks = chunks - existing_document.updated_at = get_current_timestamp() - - documents_indexed += 1 - - # Batch commit every 10 documents - current_total = total_documents_indexed + documents_indexed - if current_total % 10 == 0: - logger.info( - f"Committing batch: {current_total} Gmail messages processed so far" - ) - await session.commit() - continue - - # Create new document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "message_id": message_id, - "thread_id": thread_id, - "subject": subject, - "sender": sender, - "document_type": "Gmail Message (Composio)", - } - summary_content, summary_embedding = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Gmail: {subject}\n\nFrom: {sender}\nDate: {date_str}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - document = Document( - search_space_id=search_space_id, - title=f"Gmail: {subject}", - document_type=DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["gmail"]), - document_metadata={ - "message_id": message_id, - "thread_id": thread_id, - "subject": subject, - "sender": sender, - "date": date_str, - "labels": label_ids, - "connector_id": connector_id, - "toolkit_id": "gmail", - "source": "composio", - }, - content=summary_content, - content_hash=content_hash, - unique_identifier_hash=unique_identifier_hash, - embedding=summary_embedding, - chunks=chunks, - updated_at=get_current_timestamp(), - ) - session.add(document) - documents_indexed += 1 - - # Batch commit every 10 documents - current_total = total_documents_indexed + documents_indexed - if current_total % 10 == 0: - logger.info( - f"Committing batch: {current_total} Gmail messages processed so far" - ) - await session.commit() - - except Exception as e: - logger.error(f"Error processing Gmail message: {e!s}", exc_info=True) - documents_skipped += 1 - # Rollback on error to avoid partial state (per Composio best practices) - try: - await session.rollback() - except Exception as rollback_error: - logger.error( - f"Error during rollback: {rollback_error!s}", exc_info=True - ) - continue - - return documents_indexed, documents_skipped - - -async def _index_composio_gmail( - session: AsyncSession, - connector, - connector_id: int, - search_space_id: int, - user_id: str, - start_date: str | None, - end_date: str | None, - task_logger: TaskLoggingService, - log_entry, - update_last_indexed: bool = True, - max_items: int = 1000, -) -> tuple[int, str]: - """Index Gmail messages via Composio with pagination and incremental processing.""" - try: - composio_connector = ComposioConnector(session, connector_id) - - # Normalize date values - handle "undefined" strings from frontend - if start_date == "undefined" or start_date == "": - start_date = None - if end_date == "undefined" or end_date == "": - end_date = None - - # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at - # This ensures user-selected dates are respected (matching non-Composio Gmail connector behavior) - if start_date is not None and end_date is not None: - # User provided both dates - use them directly - start_date_str = start_date - end_date_str = end_date - else: - # Calculate date range with defaults (uses last_indexed_at or 365 days back) - # This ensures indexing works even when user doesn't specify dates - start_date_str, end_date_str = calculate_date_range( - connector, start_date, end_date, default_days_back=365 - ) - - # Build query with date range - query_parts = [] - if start_date_str: - query_parts.append(f"after:{start_date_str.replace('-', '/')}") - if end_date_str: - query_parts.append(f"before:{end_date_str.replace('-', '/')}") - query = " ".join(query_parts) if query_parts else "" - - logger.info( - f"Gmail query for connector {connector_id}: '{query}' " - f"(start_date={start_date_str}, end_date={end_date_str})" - ) - - # Use smaller batch size to avoid 413 payload too large errors - batch_size = 50 - page_token = None - total_documents_indexed = 0 - total_documents_skipped = 0 - total_messages_fetched = 0 - result_size_estimate = None # Will be set from first API response - - while total_messages_fetched < max_items: - # Calculate how many messages to fetch in this batch - remaining = max_items - total_messages_fetched - current_batch_size = min(batch_size, remaining) - - # Use result_size_estimate if available, otherwise fall back to max_items - estimated_total = ( - result_size_estimate if result_size_estimate is not None else max_items - ) - # Cap estimated_total at max_items to avoid showing misleading progress - estimated_total = min(estimated_total, max_items) - - await task_logger.log_task_progress( - log_entry, - f"Fetching Gmail messages batch via Composio for connector {connector_id} " - f"({total_messages_fetched}/{estimated_total} fetched, {total_documents_indexed} indexed)", - { - "stage": "fetching_messages", - "batch_size": current_batch_size, - "total_fetched": total_messages_fetched, - "total_indexed": total_documents_indexed, - "estimated_total": estimated_total, - }, - ) - - # Fetch batch of messages - ( - messages, - next_token, - result_size_estimate_batch, - error, - ) = await composio_connector.list_gmail_messages( - query=query, - max_results=current_batch_size, - page_token=page_token, - ) - - if error: - await task_logger.log_task_failure( - log_entry, f"Failed to fetch Gmail messages: {error}", {} - ) - return 0, f"Failed to fetch Gmail messages: {error}" - - if not messages: - # No more messages available - break - - # Update result_size_estimate from first response (Gmail provides this estimate) - if result_size_estimate is None and result_size_estimate_batch is not None: - result_size_estimate = result_size_estimate_batch - logger.info( - f"Gmail API estimated {result_size_estimate} total messages for query: '{query}'" - ) - - total_messages_fetched += len(messages) - # Recalculate estimated_total after potentially updating result_size_estimate - estimated_total = ( - result_size_estimate if result_size_estimate is not None else max_items - ) - estimated_total = min(estimated_total, max_items) - - logger.info( - f"Fetched batch of {len(messages)} Gmail messages " - f"(total: {total_messages_fetched}/{estimated_total})" - ) - - # Process batch incrementally - batch_indexed, batch_skipped = await _process_gmail_message_batch( - session=session, - messages=messages, - composio_connector=composio_connector, - connector_id=connector_id, - search_space_id=search_space_id, - user_id=user_id, - total_documents_indexed=total_documents_indexed, - ) - - total_documents_indexed += batch_indexed - total_documents_skipped += batch_skipped - - logger.info( - f"Processed batch: {batch_indexed} indexed, {batch_skipped} skipped " - f"(total: {total_documents_indexed} indexed, {total_documents_skipped} skipped)" - ) - - # Batch commits happen in _process_gmail_message_batch every 10 documents - # This ensures progress is saved incrementally, preventing data loss on crashes - - # Check if we should continue - if not next_token: - # No more pages available - break - - if len(messages) < current_batch_size: - # Last page had fewer items than requested, we're done - break - - # Continue with next page - page_token = next_token - - if total_messages_fetched == 0: - success_msg = "No Gmail messages found in the specified date range" - await task_logger.log_task_success( - log_entry, success_msg, {"messages_count": 0} - ) - # CRITICAL: Update timestamp even when no messages found so Electric SQL syncs and UI shows indexed status - await update_connector_last_indexed(session, connector, update_last_indexed) - await session.commit() - return 0, None # Return None (not error) when no items found - - # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs - # This ensures the UI shows "Last indexed" instead of "Never indexed" - await update_connector_last_indexed(session, connector, update_last_indexed) - - # Final commit to ensure all documents are persisted (safety net) - # This matches the pattern used in non-Composio Gmail indexer - logger.info( - f"Final commit: Total {total_documents_indexed} Gmail messages processed" - ) - await session.commit() - logger.info( - "Successfully committed all Composio Gmail document changes to database" - ) - - await task_logger.log_task_success( - log_entry, - f"Successfully completed Gmail indexing via Composio for connector {connector_id}", - { - "documents_indexed": total_documents_indexed, - "documents_skipped": total_documents_skipped, - "messages_fetched": total_messages_fetched, - }, - ) - - return total_documents_indexed, None - - except Exception as e: - logger.error(f"Failed to index Gmail via Composio: {e!s}", exc_info=True) - return 0, f"Failed to index Gmail via Composio: {e!s}" - - -async def _index_composio_google_calendar( - session: AsyncSession, - connector, - connector_id: int, - search_space_id: int, - user_id: str, - start_date: str | None, - end_date: str | None, - task_logger: TaskLoggingService, - log_entry, - update_last_indexed: bool = True, - max_items: int = 2500, -) -> tuple[int, str]: - """Index Google Calendar events via Composio.""" - try: - composio_connector = ComposioConnector(session, connector_id) - - await task_logger.log_task_progress( - log_entry, - f"Fetching Google Calendar events via Composio for connector {connector_id}", - {"stage": "fetching_events"}, - ) - - # Normalize date values - handle "undefined" strings from frontend - if start_date == "undefined" or start_date == "": - start_date = None - if end_date == "undefined" or end_date == "": - end_date = None - - # Use provided dates directly if both are provided, otherwise calculate from last_indexed_at - # This ensures user-selected dates are respected (matching non-Composio Calendar connector behavior) - if start_date is not None and end_date is not None: - # User provided both dates - use them directly - start_date_str = start_date - end_date_str = end_date - else: - # Calculate date range with defaults (uses last_indexed_at or 365 days back) - # This ensures indexing works even when user doesn't specify dates - start_date_str, end_date_str = calculate_date_range( - connector, start_date, end_date, default_days_back=365 - ) - - # Build time range for API call - time_min = f"{start_date_str}T00:00:00Z" - time_max = f"{end_date_str}T23:59:59Z" - - logger.info( - f"Google Calendar query for connector {connector_id}: " - f"(start_date={start_date_str}, end_date={end_date_str})" - ) - - events, error = await composio_connector.list_calendar_events( - time_min=time_min, - time_max=time_max, - max_results=max_items, - ) - - if error: - await task_logger.log_task_failure( - log_entry, f"Failed to fetch Calendar events: {error}", {} - ) - return 0, f"Failed to fetch Calendar events: {error}" - - if not events: - success_msg = "No Google Calendar events found in the specified date range" - await task_logger.log_task_success( - log_entry, success_msg, {"events_count": 0} - ) - # CRITICAL: Update timestamp even when no events found so Electric SQL syncs and UI shows indexed status - await update_connector_last_indexed(session, connector, update_last_indexed) - await session.commit() - return ( - 0, - None, - ) # Return None (not error) when no items found - this is success with 0 items - - logger.info(f"Found {len(events)} Google Calendar events to index via Composio") - - documents_indexed = 0 - documents_skipped = 0 - - for event in events: - try: - # Handle both standard Google API and potential Composio variations - event_id = event.get("id", "") or event.get("eventId", "") - summary = ( - event.get("summary", "") or event.get("title", "") or "No Title" - ) - - if not event_id: - documents_skipped += 1 - continue - - # Format to markdown - markdown_content = composio_connector.format_calendar_event_to_markdown( - event - ) - - # Generate unique identifier - document_type = DocumentType(TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"]) - unique_identifier_hash = generate_unique_identifier_hash( - document_type, f"calendar_{event_id}", search_space_id - ) - - content_hash = generate_content_hash(markdown_content, search_space_id) - - existing_document = await check_document_by_unique_identifier( - session, unique_identifier_hash - ) - - # Extract event times - start = event.get("start", {}) - end = event.get("end", {}) - start_time = start.get("dateTime") or start.get("date", "") - end_time = end.get("dateTime") or end.get("date", "") - location = event.get("location", "") - - if existing_document: - if existing_document.content_hash == content_hash: - documents_skipped += 1 - continue - - # Update existing - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "event_id": event_id, - "summary": summary, - "start_time": start_time, - "document_type": "Google Calendar Event (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" - if location: - summary_content += f"\nLocation: {location}" - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - existing_document.title = f"Calendar: {summary}" - existing_document.content = summary_content - existing_document.content_hash = content_hash - existing_document.embedding = summary_embedding - existing_document.document_metadata = { - "event_id": event_id, - "summary": summary, - "start_time": start_time, - "end_time": end_time, - "location": location, - "connector_id": connector_id, - "source": "composio", - } - existing_document.chunks = chunks - existing_document.updated_at = get_current_timestamp() - - documents_indexed += 1 - - # Batch commit every 10 documents - if documents_indexed % 10 == 0: - logger.info( - f"Committing batch: {documents_indexed} Google Calendar events processed so far" - ) - await session.commit() - continue - - # Create new document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) - - if user_llm: - document_metadata = { - "event_id": event_id, - "summary": summary, - "start_time": start_time, - "document_type": "Google Calendar Event (Composio)", - } - ( - summary_content, - summary_embedding, - ) = await generate_document_summary( - markdown_content, user_llm, document_metadata - ) - else: - summary_content = ( - f"Calendar: {summary}\n\nStart: {start_time}\nEnd: {end_time}" - ) - if location: - summary_content += f"\nLocation: {location}" - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) - - chunks = await create_document_chunks(markdown_content) - - document = Document( - search_space_id=search_space_id, - title=f"Calendar: {summary}", - document_type=DocumentType( - TOOLKIT_TO_DOCUMENT_TYPE["googlecalendar"] - ), - document_metadata={ - "event_id": event_id, - "summary": summary, - "start_time": start_time, - "end_time": end_time, - "location": location, - "connector_id": connector_id, - "toolkit_id": "googlecalendar", - "source": "composio", - }, - content=summary_content, - content_hash=content_hash, - unique_identifier_hash=unique_identifier_hash, - embedding=summary_embedding, - chunks=chunks, - updated_at=get_current_timestamp(), - ) - session.add(document) - documents_indexed += 1 - - # Batch commit every 10 documents - if documents_indexed % 10 == 0: - logger.info( - f"Committing batch: {documents_indexed} Google Calendar events processed so far" - ) - await session.commit() - - except Exception as e: - logger.error(f"Error processing Calendar event: {e!s}", exc_info=True) - documents_skipped += 1 - continue - - # CRITICAL: Always update timestamp (even if 0 documents indexed) so Electric SQL syncs - # This ensures the UI shows "Last indexed" instead of "Never indexed" - await update_connector_last_indexed(session, connector, update_last_indexed) - - # Final commit to ensure all documents are persisted (safety net) - # This matches the pattern used in non-Composio Gmail indexer - logger.info( - f"Final commit: Total {documents_indexed} Google Calendar events processed" - ) - await session.commit() - logger.info( - "Successfully committed all Composio Google Calendar document changes to database" - ) - - await task_logger.log_task_success( - log_entry, - f"Successfully completed Google Calendar indexing via Composio for connector {connector_id}", - { - "documents_indexed": documents_indexed, - "documents_skipped": documents_skipped, - }, - ) - - return documents_indexed, None - - except Exception as e: - logger.error( - f"Failed to index Google Calendar via Composio: {e!s}", exc_info=True - ) - return 0, f"Failed to index Google Calendar via Composio: {e!s}" diff --git a/surfsense_web/components/assistant-ui/connector-popup/components/composio-connector-card.tsx b/surfsense_web/components/assistant-ui/connector-popup/components/composio-connector-card.tsx deleted file mode 100644 index 671fc3ce6..000000000 --- a/surfsense_web/components/assistant-ui/connector-popup/components/composio-connector-card.tsx +++ /dev/null @@ -1,78 +0,0 @@ -"use client"; - -import { Zap } from "lucide-react"; -import Image from "next/image"; -import type { FC } from "react"; -import { Button } from "@/components/ui/button"; -import { cn } from "@/lib/utils"; - -interface ComposioConnectorCardProps { - id: string; - title: string; - description: string; - connectorCount?: number; - onConnect: () => void; -} - -export const ComposioConnectorCard: FC = ({ - id, - title, - description, - connectorCount = 0, - onConnect, -}) => { - const hasConnections = connectorCount > 0; - - return ( -
-
- Composio -
-
-
- {title} - -
- {hasConnections ? ( -

- - {connectorCount} {connectorCount === 1 ? "connection" : "connections"} - -

- ) : ( -

{description}

- )} -
- -
- ); -}; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx new file mode 100644 index 000000000..6e7a06073 --- /dev/null +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx @@ -0,0 +1,220 @@ +"use client"; + +import { Calendar, Clock } from "lucide-react"; +import type { FC } from "react"; +import { useEffect, useState } from "react"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; +import type { SearchSourceConnector } from "@/contracts/types/connector.types"; + +interface ComposioCalendarConfigProps { + connector: SearchSourceConnector; + onConfigChange?: (config: Record) => void; + onNameChange?: (name: string) => void; +} + +interface CalendarIndexingOptions { + max_events: number; + include_recurring: boolean; + include_past_events: boolean; + days_ahead: number; +} + +const DEFAULT_CALENDAR_OPTIONS: CalendarIndexingOptions = { + max_events: 500, + include_recurring: true, + include_past_events: true, + days_ahead: 365, +}; + +export const ComposioCalendarConfig: FC = ({ connector, onConfigChange }) => { + const isIndexable = connector.config?.is_indexable as boolean; + + // Initialize with existing options from connector config + const existingOptions = + (connector.config?.calendar_options as CalendarIndexingOptions | undefined) || DEFAULT_CALENDAR_OPTIONS; + + const [calendarOptions, setCalendarOptions] = useState(existingOptions); + + // Update options when connector config changes + useEffect(() => { + const options = + (connector.config?.calendar_options as CalendarIndexingOptions | undefined) || + DEFAULT_CALENDAR_OPTIONS; + setCalendarOptions(options); + }, [connector.config]); + + const updateConfig = (options: CalendarIndexingOptions) => { + if (onConfigChange) { + onConfigChange({ + ...connector.config, + calendar_options: options, + }); + } + }; + + const handleOptionChange = (key: keyof CalendarIndexingOptions, value: number | boolean) => { + const newOptions = { ...calendarOptions, [key]: value }; + setCalendarOptions(newOptions); + updateConfig(newOptions); + }; + + // Only show configuration if the connector is indexable + if (!isIndexable) { + return
; + } + + return ( +
+ {/* Calendar Indexing Options */} +
+
+
+ +

Calendar Indexing Options

+
+

+ Configure how events are indexed from your Google Calendar. +

+
+ + {/* Max events to index */} +
+
+
+ +

+ Maximum number of events to index per sync +

+
+ +
+
+ + {/* Days ahead */} +
+
+
+
+ + +
+

+ How far ahead to index future events +

+
+ +
+
+ + {/* Include recurring events toggle */} +
+
+ +

+ Index individual instances of recurring events +

+
+ + handleOptionChange("include_recurring", checked) + } + /> +
+ + {/* Include past events toggle */} +
+
+ +

+ Index events from before the selected date range +

+
+ + handleOptionChange("include_past_events", checked) + } + /> +
+
+
+ ); +}; + diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx deleted file mode 100644 index fdff956e5..000000000 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-config.tsx +++ /dev/null @@ -1,353 +0,0 @@ -"use client"; - -import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation } from "lucide-react"; -import type { FC } from "react"; -import { useEffect, useState } from "react"; -import { ComposioDriveFolderTree } from "@/components/connectors/composio-drive-folder-tree"; -import { Badge } from "@/components/ui/badge"; -import { Button } from "@/components/ui/button"; -import { Label } from "@/components/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { Switch } from "@/components/ui/switch"; -import type { SearchSourceConnector } from "@/contracts/types/connector.types"; -import { cn } from "@/lib/utils"; - -interface ComposioConfigProps { - connector: SearchSourceConnector; - onConfigChange?: (config: Record) => void; - onNameChange?: (name: string) => void; -} - -interface SelectedFolder { - id: string; - name: string; -} - -interface IndexingOptions { - max_files_per_folder: number; - incremental_sync: boolean; - include_subfolders: boolean; -} - -const DEFAULT_INDEXING_OPTIONS: IndexingOptions = { - max_files_per_folder: 100, - incremental_sync: true, - include_subfolders: true, -}; - -// Helper to get appropriate icon for file type based on file name -function getFileIconFromName(fileName: string, className: string = "size-3.5 shrink-0") { - const lowerName = fileName.toLowerCase(); - // Spreadsheets - if ( - lowerName.endsWith(".xlsx") || - lowerName.endsWith(".xls") || - lowerName.endsWith(".csv") || - lowerName.includes("spreadsheet") - ) { - return ; - } - // Presentations - if ( - lowerName.endsWith(".pptx") || - lowerName.endsWith(".ppt") || - lowerName.includes("presentation") - ) { - return ; - } - // Documents (word, text only - not PDF) - if ( - lowerName.endsWith(".docx") || - lowerName.endsWith(".doc") || - lowerName.endsWith(".txt") || - lowerName.includes("document") || - lowerName.includes("word") || - lowerName.includes("text") - ) { - return ; - } - // Images - if ( - lowerName.endsWith(".png") || - lowerName.endsWith(".jpg") || - lowerName.endsWith(".jpeg") || - lowerName.endsWith(".gif") || - lowerName.endsWith(".webp") || - lowerName.endsWith(".svg") - ) { - return ; - } - // Default (including PDF) - return ; -} - -export const ComposioConfig: FC = ({ connector, onConfigChange }) => { - const toolkitId = connector.config?.toolkit_id as string; - const isIndexable = connector.config?.is_indexable as boolean; - const composioAccountId = connector.config?.composio_connected_account_id as string; - - // Check if this is a Google Drive Composio connector - const isGoogleDrive = toolkitId === "googledrive"; - - // Initialize with existing selected folders and files from connector config - const existingFolders = - (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; - const existingFiles = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; - const existingIndexingOptions = - (connector.config?.indexing_options as IndexingOptions | undefined) || DEFAULT_INDEXING_OPTIONS; - - const [selectedFolders, setSelectedFolders] = useState(existingFolders); - const [selectedFiles, setSelectedFiles] = useState(existingFiles); - const [showFolderSelector, setShowFolderSelector] = useState(false); - const [indexingOptions, setIndexingOptions] = useState(existingIndexingOptions); - - // Update selected folders and files when connector config changes - useEffect(() => { - const folders = (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; - const files = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; - const options = - (connector.config?.indexing_options as IndexingOptions | undefined) || - DEFAULT_INDEXING_OPTIONS; - setSelectedFolders(folders); - setSelectedFiles(files); - setIndexingOptions(options); - }, [connector.config]); - - const updateConfig = ( - folders: SelectedFolder[], - files: SelectedFolder[], - options: IndexingOptions - ) => { - if (onConfigChange) { - onConfigChange({ - ...connector.config, - selected_folders: folders, - selected_files: files, - indexing_options: options, - }); - } - }; - - const handleSelectFolders = (folders: SelectedFolder[]) => { - setSelectedFolders(folders); - updateConfig(folders, selectedFiles, indexingOptions); - }; - - const handleSelectFiles = (files: SelectedFolder[]) => { - setSelectedFiles(files); - updateConfig(selectedFolders, files, indexingOptions); - }; - - const handleIndexingOptionChange = (key: keyof IndexingOptions, value: number | boolean) => { - const newOptions = { ...indexingOptions, [key]: value }; - setIndexingOptions(newOptions); - updateConfig(selectedFolders, selectedFiles, newOptions); - }; - - const totalSelected = selectedFolders.length + selectedFiles.length; - - return ( -
- {/* Connection Details */} -
-

- Connection Details -

-
-
- Toolkit - {toolkitId} -
-
- Indexing Supported - - {isIndexable ? "Yes" : "Coming Soon"} - -
- {composioAccountId && ( -
- Account ID - - {composioAccountId} - -
- )} -
-
- - {/* Google Drive specific: Folder & File Selection */} - {isGoogleDrive && isIndexable && ( - <> -
-
-

Folder & File Selection

-

- Select specific folders and/or individual files to index. -

-
- - {totalSelected > 0 && ( -
-

- Selected {totalSelected} item{totalSelected > 1 ? "s" : ""}: {(() => { - const parts: string[] = []; - if (selectedFolders.length > 0) { - parts.push( - `${selectedFolders.length} folder${selectedFolders.length > 1 ? "s" : ""}` - ); - } - if (selectedFiles.length > 0) { - parts.push( - `${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}` - ); - } - return parts.length > 0 ? `(${parts.join(" ")})` : ""; - })()} -

-
- {selectedFolders.map((folder) => ( -

- - {folder.name} -

- ))} - {selectedFiles.map((file) => ( -

- {getFileIconFromName(file.name)} - {file.name} -

- ))} -
-
- )} - - {showFolderSelector ? ( -
- - -
- ) : ( - - )} -
- - {/* Indexing Options */} -
-
-

Indexing Options

-

- Configure how files are indexed from your Google Drive. -

-
- - {/* Max files per folder */} -
-
-
- -

- Maximum number of files to index from each folder -

-
- -
-
- - {/* Include subfolders toggle */} -
-
- -

- Recursively index files in subfolders of selected folders -

-
- - handleIndexingOptionChange("include_subfolders", checked) - } - /> -
-
- - )} -
- ); -}; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx new file mode 100644 index 000000000..755b91a5a --- /dev/null +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx @@ -0,0 +1,313 @@ +"use client"; + +import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation } from "lucide-react"; +import type { FC } from "react"; +import { useEffect, useState } from "react"; +import { ComposioDriveFolderTree } from "@/components/connectors/composio-drive-folder-tree"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; +import type { SearchSourceConnector } from "@/contracts/types/connector.types"; + +interface ComposioDriveConfigProps { + connector: SearchSourceConnector; + onConfigChange?: (config: Record) => void; + onNameChange?: (name: string) => void; +} + +interface SelectedFolder { + id: string; + name: string; +} + +interface IndexingOptions { + max_files_per_folder: number; + incremental_sync: boolean; + include_subfolders: boolean; +} + +const DEFAULT_INDEXING_OPTIONS: IndexingOptions = { + max_files_per_folder: 100, + incremental_sync: true, + include_subfolders: true, +}; + +// Helper to get appropriate icon for file type based on file name +function getFileIconFromName(fileName: string, className: string = "size-3.5 shrink-0") { + const lowerName = fileName.toLowerCase(); + // Spreadsheets + if ( + lowerName.endsWith(".xlsx") || + lowerName.endsWith(".xls") || + lowerName.endsWith(".csv") || + lowerName.includes("spreadsheet") + ) { + return ; + } + // Presentations + if ( + lowerName.endsWith(".pptx") || + lowerName.endsWith(".ppt") || + lowerName.includes("presentation") + ) { + return ; + } + // Documents (word, text only - not PDF) + if ( + lowerName.endsWith(".docx") || + lowerName.endsWith(".doc") || + lowerName.endsWith(".txt") || + lowerName.includes("document") || + lowerName.includes("word") || + lowerName.includes("text") + ) { + return ; + } + // Images + if ( + lowerName.endsWith(".png") || + lowerName.endsWith(".jpg") || + lowerName.endsWith(".jpeg") || + lowerName.endsWith(".gif") || + lowerName.endsWith(".webp") || + lowerName.endsWith(".svg") + ) { + return ; + } + // Default (including PDF) + return ; +} + +export const ComposioDriveConfig: FC = ({ connector, onConfigChange }) => { + const isIndexable = connector.config?.is_indexable as boolean; + + // Initialize with existing selected folders and files from connector config + const existingFolders = + (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; + const existingFiles = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; + const existingIndexingOptions = + (connector.config?.indexing_options as IndexingOptions | undefined) || DEFAULT_INDEXING_OPTIONS; + + const [selectedFolders, setSelectedFolders] = useState(existingFolders); + const [selectedFiles, setSelectedFiles] = useState(existingFiles); + const [showFolderSelector, setShowFolderSelector] = useState(false); + const [indexingOptions, setIndexingOptions] = useState(existingIndexingOptions); + + // Update selected folders and files when connector config changes + useEffect(() => { + const folders = (connector.config?.selected_folders as SelectedFolder[] | undefined) || []; + const files = (connector.config?.selected_files as SelectedFolder[] | undefined) || []; + const options = + (connector.config?.indexing_options as IndexingOptions | undefined) || + DEFAULT_INDEXING_OPTIONS; + setSelectedFolders(folders); + setSelectedFiles(files); + setIndexingOptions(options); + }, [connector.config]); + + const updateConfig = ( + folders: SelectedFolder[], + files: SelectedFolder[], + options: IndexingOptions + ) => { + if (onConfigChange) { + onConfigChange({ + ...connector.config, + selected_folders: folders, + selected_files: files, + indexing_options: options, + }); + } + }; + + const handleSelectFolders = (folders: SelectedFolder[]) => { + setSelectedFolders(folders); + updateConfig(folders, selectedFiles, indexingOptions); + }; + + const handleSelectFiles = (files: SelectedFolder[]) => { + setSelectedFiles(files); + updateConfig(selectedFolders, files, indexingOptions); + }; + + const handleIndexingOptionChange = (key: keyof IndexingOptions, value: number | boolean) => { + const newOptions = { ...indexingOptions, [key]: value }; + setIndexingOptions(newOptions); + updateConfig(selectedFolders, selectedFiles, newOptions); + }; + + const totalSelected = selectedFolders.length + selectedFiles.length; + + // Only show configuration if the connector is indexable + if (!isIndexable) { + return
; + } + + return ( +
+ {/* Folder & File Selection */} +
+
+

Folder & File Selection

+

+ Select specific folders and/or individual files to index from your Google Drive. +

+
+ + {totalSelected > 0 && ( +
+

+ Selected {totalSelected} item{totalSelected > 1 ? "s" : ""}: {(() => { + const parts: string[] = []; + if (selectedFolders.length > 0) { + parts.push( + `${selectedFolders.length} folder${selectedFolders.length > 1 ? "s" : ""}` + ); + } + if (selectedFiles.length > 0) { + parts.push( + `${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}` + ); + } + return parts.length > 0 ? `(${parts.join(" ")})` : ""; + })()} +

+
+ {selectedFolders.map((folder) => ( +

+ + {folder.name} +

+ ))} + {selectedFiles.map((file) => ( +

+ {getFileIconFromName(file.name)} + {file.name} +

+ ))} +
+
+ )} + + {showFolderSelector ? ( +
+ + +
+ ) : ( + + )} +
+ + {/* Indexing Options */} +
+
+

Indexing Options

+

+ Configure how files are indexed from your Google Drive. +

+
+ + {/* Max files per folder */} +
+
+
+ +

+ Maximum number of files to index from each folder +

+
+ +
+
+ + {/* Include subfolders toggle */} +
+
+ +

+ Recursively index files in subfolders of selected folders +

+
+ + handleIndexingOptionChange("include_subfolders", checked) + } + /> +
+
+
+ ); +}; + diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx new file mode 100644 index 000000000..963753ab3 --- /dev/null +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx @@ -0,0 +1,174 @@ +"use client"; + +import { Mail, Tag } from "lucide-react"; +import type { FC } from "react"; +import { useEffect, useState } from "react"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import type { SearchSourceConnector } from "@/contracts/types/connector.types"; + +interface ComposioGmailConfigProps { + connector: SearchSourceConnector; + onConfigChange?: (config: Record) => void; + onNameChange?: (name: string) => void; +} + +interface GmailIndexingOptions { + max_emails: number; + label_filter: string; + search_query: string; +} + +const DEFAULT_GMAIL_OPTIONS: GmailIndexingOptions = { + max_emails: 500, + label_filter: "", + search_query: "", +}; + +export const ComposioGmailConfig: FC = ({ connector, onConfigChange }) => { + const isIndexable = connector.config?.is_indexable as boolean; + + // Initialize with existing options from connector config + const existingOptions = + (connector.config?.gmail_options as GmailIndexingOptions | undefined) || DEFAULT_GMAIL_OPTIONS; + + const [gmailOptions, setGmailOptions] = useState(existingOptions); + + // Update options when connector config changes + useEffect(() => { + const options = + (connector.config?.gmail_options as GmailIndexingOptions | undefined) || + DEFAULT_GMAIL_OPTIONS; + setGmailOptions(options); + }, [connector.config]); + + const updateConfig = (options: GmailIndexingOptions) => { + if (onConfigChange) { + onConfigChange({ + ...connector.config, + gmail_options: options, + }); + } + }; + + const handleOptionChange = (key: keyof GmailIndexingOptions, value: number | string) => { + const newOptions = { ...gmailOptions, [key]: value }; + setGmailOptions(newOptions); + updateConfig(newOptions); + }; + + // Only show configuration if the connector is indexable + if (!isIndexable) { + return
; + } + + return ( +
+ {/* Gmail Indexing Options */} +
+
+
+ +

Gmail Indexing Options

+
+

+ Configure how emails are indexed from your Gmail account. +

+
+ + {/* Max emails to index */} +
+
+
+ +

+ Maximum number of emails to index per sync +

+
+ +
+
+ + {/* Label filter */} +
+
+
+ + +
+

+ Only index emails with this label (e.g., "INBOX", "IMPORTANT", "work") +

+
+ handleOptionChange("label_filter", e.target.value)} + placeholder="Enter label name..." + className="bg-slate-400/5 dark:bg-slate-400/5 border-slate-400/20 text-xs sm:text-sm" + /> +
+ + {/* Search query */} +
+
+ +

+ Gmail search query to filter emails (e.g., "from:boss@company.com", "has:attachment") +

+
+ handleOptionChange("search_query", e.target.value)} + placeholder="Enter Gmail search query..." + className="bg-slate-400/5 dark:bg-slate-400/5 border-slate-400/20 text-xs sm:text-sm" + /> +
+
+
+ ); +}; + diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx index 1a713a5a0..6b4d86b5a 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/index.tsx @@ -6,7 +6,9 @@ import { BaiduSearchApiConfig } from "./components/baidu-search-api-config"; import { BookStackConfig } from "./components/bookstack-config"; import { CirclebackConfig } from "./components/circleback-config"; import { ClickUpConfig } from "./components/clickup-config"; -import { ComposioConfig } from "./components/composio-config"; +import { ComposioCalendarConfig } from "./components/composio-calendar-config"; +import { ComposioDriveConfig } from "./components/composio-drive-config"; +import { ComposioGmailConfig } from "./components/composio-gmail-config"; import { ConfluenceConfig } from "./components/confluence-config"; import { DiscordConfig } from "./components/discord-config"; import { ElasticsearchConfig } from "./components/elasticsearch-config"; @@ -78,9 +80,11 @@ export function getConnectorConfigComponent( case "OBSIDIAN_CONNECTOR": return ObsidianConfig; case "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": + return ComposioDriveConfig; case "COMPOSIO_GMAIL_CONNECTOR": + return ComposioGmailConfig; case "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": - return ComposioConfig; + return ComposioCalendarConfig; // OAuth connectors (Gmail, Calendar, Airtable, Notion) and others don't need special config UI default: return null; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index fbdffed7a..6b1a8c92b 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -206,8 +206,9 @@ export const ConnectorEditView: FC = ({ {/* Date range selector and periodic sync - only shown for indexable connectors */} {connector.is_indexable && ( <> - {/* Date range selector - not shown for Google Drive, Webcrawler, or GitHub (indexes full repo snapshots) */} + {/* Date range selector - not shown for Google Drive (regular and Composio), Webcrawler, or GitHub (indexes full repo snapshots) */} {connector.connector_type !== "GOOGLE_DRIVE_CONNECTOR" && + connector.connector_type !== "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" && connector.connector_type !== "WEBCRAWLER_CONNECTOR" && connector.connector_type !== "GITHUB_CONNECTOR" && ( = ({ onEndDateChange={onEndDateChange} allowFutureDates={ connector.connector_type === "GOOGLE_CALENDAR_CONNECTOR" || + connector.connector_type === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" || connector.connector_type === "LUMA_CONNECTOR" } /> diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx index 68fc688c3..17995fdfa 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx @@ -9,11 +9,7 @@ import { getConnectorTypeDisplay } from "@/lib/connectors/utils"; import { cn } from "@/lib/utils"; import { DateRangeSelector } from "../../components/date-range-selector"; import { PeriodicSyncConfig } from "../../components/periodic-sync-config"; -import { - COMPOSIO_CONNECTORS, - type IndexingConfigState, - OAUTH_CONNECTORS, -} from "../../constants/connector-constants"; +import type { IndexingConfigState } from "../../constants/connector-constants"; import { getConnectorDisplayName } from "../../tabs/all-connectors-tab"; import { getConnectorConfigComponent } from "../index"; @@ -95,11 +91,6 @@ export const IndexingConfigurationView: FC = ({ }; }, [checkScrollState]); - // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS - const authConnector = - OAUTH_CONNECTORS.find((c) => c.connectorType === connector?.connector_type) || - COMPOSIO_CONNECTORS.find((c) => c.connectorType === connector?.connector_type); - return (
{/* Fixed Header */} @@ -158,8 +149,9 @@ export const IndexingConfigurationView: FC = ({ {/* Date range selector and periodic sync - only shown for indexable connectors */} {connector?.is_indexable && ( <> - {/* Date range selector - not shown for Google Drive, Webcrawler, or GitHub (indexes full repo snapshots) */} + {/* Date range selector - not shown for Google Drive (regular and Composio), Webcrawler, or GitHub (indexes full repo snapshots) */} {config.connectorType !== "GOOGLE_DRIVE_CONNECTOR" && + config.connectorType !== "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" && config.connectorType !== "WEBCRAWLER_CONNECTOR" && config.connectorType !== "GITHUB_CONNECTOR" && ( = ({ onEndDateChange={onEndDateChange} allowFutureDates={ config.connectorType === "GOOGLE_CALENDAR_CONNECTOR" || + config.connectorType === "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR" || config.connectorType === "LUMA_CONNECTOR" } /> )} - {/* Periodic sync - not shown for Google Drive */} - {config.connectorType !== "GOOGLE_DRIVE_CONNECTOR" && ( + {/* Periodic sync - not shown for Google Drive (regular and Composio) */} + {config.connectorType !== "GOOGLE_DRIVE_CONNECTOR" && + config.connectorType !== "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" && ( { if ( params.success === "true" && - params.connector && searchSpaceId && params.modal === "connectors" ) { - const oauthConnector = OAUTH_CONNECTORS.find((c) => c.id === params.connector); - if (oauthConnector) { - refetchAllConnectors().then((result) => { - if (!result.data) return; + refetchAllConnectors().then((result) => { + if (!result.data) return; - let newConnector: SearchSourceConnector | undefined; - if (params.connectorId) { - const connectorId = parseInt(params.connectorId, 10); - newConnector = result.data.find((c: SearchSourceConnector) => c.id === connectorId); - } else { + let newConnector: SearchSourceConnector | undefined; + let oauthConnector: + | (typeof OAUTH_CONNECTORS)[number] + | (typeof COMPOSIO_CONNECTORS)[number] + | undefined; + + // First, try to find connector by connectorId if provided + if (params.connectorId) { + const connectorId = parseInt(params.connectorId, 10); + newConnector = result.data.find((c: SearchSourceConnector) => c.id === connectorId); + + // If we found the connector, find the matching OAuth/Composio connector by type + if (newConnector) { + oauthConnector = + OAUTH_CONNECTORS.find( + (c) => c.connectorType === newConnector!.connector_type + ) || + COMPOSIO_CONNECTORS.find( + (c) => c.connectorType === newConnector!.connector_type + ); + } + } + + // If we don't have a connector yet, try to find by connector param + if (!newConnector && params.connector) { + oauthConnector = + OAUTH_CONNECTORS.find((c) => c.id === params.connector) || + COMPOSIO_CONNECTORS.find((c) => c.id === params.connector); + + if (oauthConnector) { newConnector = result.data.find( - (c: SearchSourceConnector) => c.connector_type === oauthConnector.connectorType + (c: SearchSourceConnector) => c.connector_type === oauthConnector!.connectorType ); } + } - if (newConnector) { - const connectorValidation = searchSourceConnector.safeParse(newConnector); - if (connectorValidation.success) { - // Track connector connected event for OAuth connectors - trackConnectorConnected( - Number(searchSpaceId), - oauthConnector.connectorType, - newConnector.id - ); + if (newConnector && oauthConnector) { + const connectorValidation = searchSourceConnector.safeParse(newConnector); + if (connectorValidation.success) { + // Track connector connected event for OAuth/Composio connectors + trackConnectorConnected( + Number(searchSpaceId), + oauthConnector.connectorType, + newConnector.id + ); - const config = validateIndexingConfigState({ - connectorType: oauthConnector.connectorType, - connectorId: newConnector.id, - connectorTitle: oauthConnector.title, - }); - setIndexingConfig(config); - setIndexingConnector(newConnector); - setIndexingConnectorConfig(newConnector.config); - setIsOpen(true); - const url = new URL(window.location.href); - url.searchParams.delete("success"); - url.searchParams.set("connectorId", newConnector.id.toString()); - url.searchParams.set("view", "configure"); - window.history.replaceState({}, "", url.toString()); - } else { - console.warn("Invalid connector data after OAuth:", connectorValidation.error); - toast.error("Failed to validate connector data"); - } + const config = validateIndexingConfigState({ + connectorType: oauthConnector.connectorType, + connectorId: newConnector.id, + connectorTitle: oauthConnector.title, + }); + setIndexingConfig(config); + setIndexingConnector(newConnector); + setIndexingConnectorConfig(newConnector.config); + setIsOpen(true); + const url = new URL(window.location.href); + url.searchParams.delete("success"); + url.searchParams.set("connectorId", newConnector.id.toString()); + url.searchParams.set("view", "configure"); + window.history.replaceState({}, "", url.toString()); + } else { + console.warn("Invalid connector data after OAuth:", connectorValidation.error); + toast.error("Failed to validate connector data"); } - }); - } + } + }); } } catch (error) { // Invalid query params - log but don't crash @@ -863,9 +885,10 @@ export const useConnectorDialog = () => { async (refreshConnectors: () => void) => { if (!indexingConfig || !searchSpaceId) return; - // Validate date range (skip for Google Drive and Webcrawler) + // Validate date range (skip for Google Drive, Composio Drive, and Webcrawler) if ( indexingConfig.connectorType !== "GOOGLE_DRIVE_CONNECTOR" && + indexingConfig.connectorType !== "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" && indexingConfig.connectorType !== "WEBCRAWLER_CONNECTOR" ) { const dateRangeValidation = dateRangeSchema.safeParse({ startDate, endDate }); @@ -910,8 +933,12 @@ export const useConnectorDialog = () => { }); } - // Handle Google Drive folder selection - if (indexingConfig.connectorType === "GOOGLE_DRIVE_CONNECTOR" && indexingConnectorConfig) { + // Handle Google Drive folder selection (regular and Composio) + if ( + (indexingConfig.connectorType === "GOOGLE_DRIVE_CONNECTOR" || + indexingConfig.connectorType === "COMPOSIO_GOOGLE_DRIVE_CONNECTOR") && + indexingConnectorConfig + ) { const selectedFolders = indexingConnectorConfig.selected_folders as | Array<{ id: string; name: string }> | undefined; diff --git a/surfsense_web/lib/connectors/utils.ts b/surfsense_web/lib/connectors/utils.ts index 34721a6aa..0ca1c1ea9 100644 --- a/surfsense_web/lib/connectors/utils.ts +++ b/surfsense_web/lib/connectors/utils.ts @@ -16,6 +16,9 @@ export const getConnectorTypeDisplay = (type: string): string => { GOOGLE_CALENDAR_CONNECTOR: "Google Calendar", GOOGLE_GMAIL_CONNECTOR: "Google Gmail", GOOGLE_DRIVE_CONNECTOR: "Google Drive", + COMPOSIO_GOOGLE_DRIVE_CONNECTOR: "Google Drive", + COMPOSIO_GMAIL_CONNECTOR: "Gmail", + COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: "Google Calendar", AIRTABLE_CONNECTOR: "Airtable", LUMA_CONNECTOR: "Luma", ELASTICSEARCH_CONNECTOR: "Elasticsearch", From 12f45e1bd3a1d9c47b1543caf37558d76dbdec77 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:19:04 +0530 Subject: [PATCH 13/51] feat: streamline Composio connector configurations and enhance UI interactions - Refactored Composio connector configuration components to improve modularity and maintainability. - Simplified the ComposioCalendarConfig, ComposioGmailConfig, and ComposioDriveConfig components by removing unnecessary state management and UI elements. - Added functionality to remove selected folders and files in the Google Drive and Composio Drive configurations, enhancing user experience. - Updated connector display names for better clarity in the UI. - Improved the overall structure of the connector edit view for better readability and usability. --- .../app/routes/composio_routes.py | 7 +- .../assistant-ui/connector-popup.tsx | 3 +- .../components/composio-calendar-config.tsx | 209 +----------------- .../components/composio-drive-config.tsx | 44 +++- .../components/composio-gmail-config.tsx | 163 +------------- .../components/google-drive-config.tsx | 44 +++- .../views/connector-edit-view.tsx | 3 +- .../tabs/active-connectors-tab.tsx | 5 +- 8 files changed, 88 insertions(+), 390 deletions(-) diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 5ad2266b7..9e9b59f82 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -344,13 +344,16 @@ async def composio_callback( try: # Generate a unique, user-friendly connector name - connector_name = await generate_unique_connector_name( + # Pass just toolkit_name (without "(Composio)") to avoid redundancy + base_name = await generate_unique_connector_name( session, connector_type, space_id, user_id, - f"{toolkit_name} (Composio)", + toolkit_name, ) + # Append "(Composio)" suffix for identification + connector_name = f"{base_name} (Composio)" db_connector = SearchSourceConnector( name=connector_name, diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index a04e2a9fd..1ec8fad73 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -7,7 +7,7 @@ import type { FC } from "react"; import { activeSearchSpaceIdAtom } from "@/atoms/search-spaces/search-space-query.atoms"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; import { TooltipIconButton } from "@/components/assistant-ui/tooltip-icon-button"; -import { Dialog, DialogContent } from "@/components/ui/dialog"; +import { Dialog, DialogContent, DialogTitle } from "@/components/ui/dialog"; import { Tabs, TabsContent } from "@/components/ui/tabs"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; import { useConnectorsElectric } from "@/hooks/use-connectors-electric"; @@ -185,6 +185,7 @@ export const ConnectorIndicator: FC = () => { + Manage Connectors {/* YouTube Crawler View - shown when adding YouTube videos */} {isYouTubeView && searchSpaceId ? ( diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx index 6e7a06073..ce5133a9d 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx @@ -1,17 +1,6 @@ "use client"; -import { Calendar, Clock } from "lucide-react"; import type { FC } from "react"; -import { useEffect, useState } from "react"; -import { Label } from "@/components/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { Switch } from "@/components/ui/switch"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; interface ComposioCalendarConfigProps { @@ -20,201 +9,7 @@ interface ComposioCalendarConfigProps { onNameChange?: (name: string) => void; } -interface CalendarIndexingOptions { - max_events: number; - include_recurring: boolean; - include_past_events: boolean; - days_ahead: number; -} - -const DEFAULT_CALENDAR_OPTIONS: CalendarIndexingOptions = { - max_events: 500, - include_recurring: true, - include_past_events: true, - days_ahead: 365, -}; - -export const ComposioCalendarConfig: FC = ({ connector, onConfigChange }) => { - const isIndexable = connector.config?.is_indexable as boolean; - - // Initialize with existing options from connector config - const existingOptions = - (connector.config?.calendar_options as CalendarIndexingOptions | undefined) || DEFAULT_CALENDAR_OPTIONS; - - const [calendarOptions, setCalendarOptions] = useState(existingOptions); - - // Update options when connector config changes - useEffect(() => { - const options = - (connector.config?.calendar_options as CalendarIndexingOptions | undefined) || - DEFAULT_CALENDAR_OPTIONS; - setCalendarOptions(options); - }, [connector.config]); - - const updateConfig = (options: CalendarIndexingOptions) => { - if (onConfigChange) { - onConfigChange({ - ...connector.config, - calendar_options: options, - }); - } - }; - - const handleOptionChange = (key: keyof CalendarIndexingOptions, value: number | boolean) => { - const newOptions = { ...calendarOptions, [key]: value }; - setCalendarOptions(newOptions); - updateConfig(newOptions); - }; - - // Only show configuration if the connector is indexable - if (!isIndexable) { - return
; - } - - return ( -
- {/* Calendar Indexing Options */} -
-
-
- -

Calendar Indexing Options

-
-

- Configure how events are indexed from your Google Calendar. -

-
- - {/* Max events to index */} -
-
-
- -

- Maximum number of events to index per sync -

-
- -
-
- - {/* Days ahead */} -
-
-
-
- - -
-

- How far ahead to index future events -

-
- -
-
- - {/* Include recurring events toggle */} -
-
- -

- Index individual instances of recurring events -

-
- - handleOptionChange("include_recurring", checked) - } - /> -
- - {/* Include past events toggle */} -
-
- -

- Index events from before the selected date range -

-
- - handleOptionChange("include_past_events", checked) - } - /> -
-
-
- ); +export const ComposioCalendarConfig: FC = () => { + return
; }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx index 755b91a5a..0ab0869ff 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx @@ -1,6 +1,6 @@ "use client"; -import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation } from "lucide-react"; +import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation, X } from "lucide-react"; import type { FC } from "react"; import { useEffect, useState } from "react"; import { ComposioDriveFolderTree } from "@/components/connectors/composio-drive-folder-tree"; @@ -143,6 +143,18 @@ export const ComposioDriveConfig: FC = ({ connector, o updateConfig(selectedFolders, selectedFiles, newOptions); }; + const handleRemoveFolder = (folderId: string) => { + const newFolders = selectedFolders.filter((folder) => folder.id !== folderId); + setSelectedFolders(newFolders); + updateConfig(newFolders, selectedFiles, indexingOptions); + }; + + const handleRemoveFile = (fileId: string) => { + const newFiles = selectedFiles.filter((file) => file.id !== fileId); + setSelectedFiles(newFiles); + updateConfig(selectedFolders, newFiles, indexingOptions); + }; + const totalSelected = selectedFolders.length + selectedFiles.length; // Only show configuration if the connector is indexable @@ -176,29 +188,45 @@ export const ComposioDriveConfig: FC = ({ connector, o `${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}` ); } - return parts.length > 0 ? `(${parts.join(" ")})` : ""; + return parts.length > 0 ? `(${parts.join(", ")})` : ""; })()}

{selectedFolders.map((folder) => ( -

- {folder.name} -

+ {folder.name} + +
))} {selectedFiles.map((file) => ( -

{getFileIconFromName(file.name)} - {file.name} -

+ {file.name} + +
))}
diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx index 963753ab3..4664e3e64 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx @@ -1,17 +1,6 @@ "use client"; -import { Mail, Tag } from "lucide-react"; import type { FC } from "react"; -import { useEffect, useState } from "react"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; import type { SearchSourceConnector } from "@/contracts/types/connector.types"; interface ComposioGmailConfigProps { @@ -20,155 +9,7 @@ interface ComposioGmailConfigProps { onNameChange?: (name: string) => void; } -interface GmailIndexingOptions { - max_emails: number; - label_filter: string; - search_query: string; -} - -const DEFAULT_GMAIL_OPTIONS: GmailIndexingOptions = { - max_emails: 500, - label_filter: "", - search_query: "", -}; - -export const ComposioGmailConfig: FC = ({ connector, onConfigChange }) => { - const isIndexable = connector.config?.is_indexable as boolean; - - // Initialize with existing options from connector config - const existingOptions = - (connector.config?.gmail_options as GmailIndexingOptions | undefined) || DEFAULT_GMAIL_OPTIONS; - - const [gmailOptions, setGmailOptions] = useState(existingOptions); - - // Update options when connector config changes - useEffect(() => { - const options = - (connector.config?.gmail_options as GmailIndexingOptions | undefined) || - DEFAULT_GMAIL_OPTIONS; - setGmailOptions(options); - }, [connector.config]); - - const updateConfig = (options: GmailIndexingOptions) => { - if (onConfigChange) { - onConfigChange({ - ...connector.config, - gmail_options: options, - }); - } - }; - - const handleOptionChange = (key: keyof GmailIndexingOptions, value: number | string) => { - const newOptions = { ...gmailOptions, [key]: value }; - setGmailOptions(newOptions); - updateConfig(newOptions); - }; - - // Only show configuration if the connector is indexable - if (!isIndexable) { - return
; - } - - return ( -
- {/* Gmail Indexing Options */} -
-
-
- -

Gmail Indexing Options

-
-

- Configure how emails are indexed from your Gmail account. -

-
- - {/* Max emails to index */} -
-
-
- -

- Maximum number of emails to index per sync -

-
- -
-
- - {/* Label filter */} -
-
-
- - -
-

- Only index emails with this label (e.g., "INBOX", "IMPORTANT", "work") -

-
- handleOptionChange("label_filter", e.target.value)} - placeholder="Enter label name..." - className="bg-slate-400/5 dark:bg-slate-400/5 border-slate-400/20 text-xs sm:text-sm" - /> -
- - {/* Search query */} -
-
- -

- Gmail search query to filter emails (e.g., "from:boss@company.com", "has:attachment") -

-
- handleOptionChange("search_query", e.target.value)} - placeholder="Enter Gmail search query..." - className="bg-slate-400/5 dark:bg-slate-400/5 border-slate-400/20 text-xs sm:text-sm" - /> -
-
-
- ); +export const ComposioGmailConfig: FC = () => { + return
; }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx index 17f4a49a5..b6cfb39ae 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx @@ -1,6 +1,6 @@ "use client"; -import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation } from "lucide-react"; +import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation, X } from "lucide-react"; import type { FC } from "react"; import { useEffect, useState } from "react"; import { GoogleDriveFolderTree } from "@/components/connectors/google-drive-folder-tree"; @@ -135,6 +135,18 @@ export const GoogleDriveConfig: FC = ({ connector, onConfi updateConfig(selectedFolders, selectedFiles, newOptions); }; + const handleRemoveFolder = (folderId: string) => { + const newFolders = selectedFolders.filter((folder) => folder.id !== folderId); + setSelectedFolders(newFolders); + updateConfig(newFolders, selectedFiles, indexingOptions); + }; + + const handleRemoveFile = (fileId: string) => { + const newFiles = selectedFiles.filter((file) => file.id !== fileId); + setSelectedFiles(newFiles); + updateConfig(selectedFolders, newFiles, indexingOptions); + }; + const totalSelected = selectedFolders.length + selectedFiles.length; return ( @@ -161,29 +173,45 @@ export const GoogleDriveConfig: FC = ({ connector, onConfi if (selectedFiles.length > 0) { parts.push(`${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}`); } - return parts.length > 0 ? `(${parts.join(" ")})` : ""; + return parts.length > 0 ? `(${parts.join(", ")})` : ""; })()}

{selectedFolders.map((folder) => ( -

- {folder.name} -

+ {folder.name} + +
))} {selectedFiles.map((file) => ( -

{getFileIconFromName(file.name)} - {file.name} -

+ {file.name} + +
))}
diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 6b1a8c92b..8951336c5 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -9,6 +9,7 @@ import { cn } from "@/lib/utils"; import { DateRangeSelector } from "../../components/date-range-selector"; import { PeriodicSyncConfig } from "../../components/periodic-sync-config"; import { getConnectorConfigComponent } from "../index"; +import { getConnectorDisplayName } from "../../tabs/all-connectors-tab"; interface ConnectorEditViewProps { connector: SearchSourceConnector; @@ -151,7 +152,7 @@ export const ConnectorEditView: FC = ({

- {connector.name} + {getConnectorDisplayName(connector.name)}

Manage your connector settings and sync configuration diff --git a/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx b/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx index e45888bb1..2067ca9ad 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/tabs/active-connectors-tab.tsx @@ -15,6 +15,7 @@ import { connectorsApiService } from "@/lib/apis/connectors-api.service"; import { cn } from "@/lib/utils"; import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS } from "../constants/connector-constants"; import { getDocumentCountForConnector } from "../utils/connector-document-mapping"; +import { getConnectorDisplayName } from "./all-connectors-tab"; interface ActiveConnectorsTabProps { searchQuery: string; @@ -263,8 +264,8 @@ export const ActiveConnectorsTab: FC = ({

-

- {connector.name} +

+ {getConnectorDisplayName(connector.name)}

{isIndexing ? ( From 08f16b43d72edff44bcd4621a43cad79a61ed103 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 20:36:00 +0530 Subject: [PATCH 14/51] feat: enhance Composio connector naming logic and improve UI focus - Updated the Composio connector naming logic to dynamically generate user-friendly names based on existing connectors. - Introduced new utility functions for counting connectors and retrieving base names for specific connector types. - Enhanced the UI components to improve accessibility and focus management, ensuring a better user experience when interacting with connector dialogs. --- .../app/routes/composio_routes.py | 27 +++++++++++-------- .../app/utils/connector_naming.py | 3 +++ .../assistant-ui/connector-popup.tsx | 2 +- surfsense_web/components/ui/dialog.tsx | 2 +- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 9e9b59f82..14ef9efcf 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -35,7 +35,10 @@ from app.services.composio_service import ( ComposioService, ) from app.users import current_active_user -from app.utils.connector_naming import generate_unique_connector_name +from app.utils.connector_naming import ( + count_connectors_of_type, + get_base_name_for_type, +) from app.utils.oauth_security import OAuthStateManager # Note: We no longer use check_duplicate_connector for Composio connectors because @@ -343,17 +346,19 @@ async def composio_callback( ) try: - # Generate a unique, user-friendly connector name - # Pass just toolkit_name (without "(Composio)") to avoid redundancy - base_name = await generate_unique_connector_name( - session, - connector_type, - space_id, - user_id, - toolkit_name, + # Count existing connectors of this type to determine the number + count = await count_connectors_of_type( + session, connector_type, space_id, user_id ) - # Append "(Composio)" suffix for identification - connector_name = f"{base_name} (Composio)" + + # Generate base name (e.g., "Gmail", "Google Drive") + base_name = get_base_name_for_type(connector_type) + + # Format: "Gmail (Composio) 1", "Gmail (Composio) 2", etc. + if count == 0: + connector_name = f"{base_name} (Composio) 1" + else: + connector_name = f"{base_name} (Composio) {count + 1}" db_connector = SearchSourceConnector( name=connector_name, diff --git a/surfsense_backend/app/utils/connector_naming.py b/surfsense_backend/app/utils/connector_naming.py index a2b748a3a..7d3efc001 100644 --- a/surfsense_backend/app/utils/connector_naming.py +++ b/surfsense_backend/app/utils/connector_naming.py @@ -28,6 +28,9 @@ BASE_NAME_FOR_TYPE = { SearchSourceConnectorType.CONFLUENCE_CONNECTOR: "Confluence", SearchSourceConnectorType.AIRTABLE_CONNECTOR: "Airtable", SearchSourceConnectorType.MCP_CONNECTOR: "Model Context Protocol (MCP)", + SearchSourceConnectorType.COMPOSIO_GMAIL_CONNECTOR: "Gmail", + SearchSourceConnectorType.COMPOSIO_GOOGLE_DRIVE_CONNECTOR: "Google Drive", + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR: "Google Calendar", } diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 1ec8fad73..e656c06d6 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -184,7 +184,7 @@ export const ConnectorIndicator: FC = () => { )} - + Manage Connectors {/* YouTube Crawler View - shown when adding YouTube videos */} {isYouTubeView && searchSpaceId ? ( diff --git a/surfsense_web/components/ui/dialog.tsx b/surfsense_web/components/ui/dialog.tsx index d04d76520..f3fa856d3 100644 --- a/surfsense_web/components/ui/dialog.tsx +++ b/surfsense_web/components/ui/dialog.tsx @@ -38,7 +38,7 @@ const DialogContent = React.forwardRef< Date: Fri, 23 Jan 2026 10:48:43 -0500 Subject: [PATCH 15/51] Reworded README.md around LLM compatibility (Based on discussion with Sid) --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7f50b924c..0c5f06029 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,10 @@ https://github.com/user-attachments/assets/a0a16566-6967-4374-ac51-9b3e07fbecd7 - Interact in Natural Language and get cited answers. ### 📄 **Cited Answers** - Get Cited answers just like Perplexity. +### 🧩 **Universal Compatibility** +- Connect virtually any inference provider via the OpenAI spec and LiteLLM. ### 🔔 **Privacy & Local LLM Support** -- Works Flawlessly with Ollama local LLMs. +- Works Flawlessly with local LLMs like vLLM and Ollama. ### 🏠 **Self Hostable** - Open source and easy to deploy locally. ### 👥 **Team Collaboration with RBAC** @@ -61,6 +63,7 @@ https://github.com/user-attachments/assets/a0a16566-6967-4374-ac51-9b3e07fbecd7 - Invite team members with customizable roles (Owner, Admin, Editor, Viewer) - Granular permissions for documents, chats, connectors, and settings - Share knowledge bases securely within your organization +- Team chats update in real-time and "Chat about the chat" in comment threads ### 🎙️ Podcasts - Blazingly fast podcast generation agent. (Creates a 3-minute podcast in under 20 seconds.) - Convert your chat conversations into engaging audio content @@ -237,6 +240,8 @@ Before self-hosting installation, make sure to complete the [prerequisite setup ### **BackEnd** +- **LiteLLM**: Universal LLM integration supporting 100+ models (OpenAI, Anthropic, Ollama, etc.) + - **FastAPI**: Modern, fast web framework for building APIs with Python - **PostgreSQL with pgvector**: Database with vector search capabilities for similarity searches @@ -253,8 +258,6 @@ Before self-hosting installation, make sure to complete the [prerequisite setup - **LangChain**: Framework for developing AI-powered applications. -- **LiteLLM**: Universal LLM integration supporting 100+ models (OpenAI, Anthropic, Ollama, etc.) - - **Rerankers**: Advanced result ranking for improved search relevance - **Hybrid Search**: Combines vector similarity and full-text search for optimal results using Reciprocal Rank Fusion (RRF) From d20bb385b5439abc1c1a0dd4e73c275970c68bea Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:03:29 +0530 Subject: [PATCH 16/51] feat: enhance date handling and indexing logic across connectors - Added normalization for "undefined" strings to None in date parameters to prevent parsing errors. - Improved date range validation to ensure start_date is strictly before end_date, adjusting end_date if necessary. - Updated Google Calendar and Composio connector indexing logic to handle duplicate content more effectively, logging warnings for skipped events. - Enhanced error handling during final commits to manage integrity errors gracefully. - Refactored date handling in various connector indexers for consistency and reliability. --- .../app/connectors/google_gmail_connector.py | 7 +++++ .../routes/search_source_connectors_routes.py | 26 ++++++++++++++----- .../app/tasks/connector_indexers/base.py | 7 +++++ .../google_calendar_indexer.py | 19 ++++++++++++++ .../tasks/connector_indexers/luma_indexer.py | 7 +++++ .../assistant-ui/connector-popup.tsx | 8 +++++- .../views/connector-edit-view.tsx | 3 +-- .../views/indexing-configuration-view.tsx | 3 +-- .../hooks/use-connector-dialog.ts | 16 ++++++++++-- 9 files changed, 83 insertions(+), 13 deletions(-) diff --git a/surfsense_backend/app/connectors/google_gmail_connector.py b/surfsense_backend/app/connectors/google_gmail_connector.py index 8c0e4690e..c86a96413 100644 --- a/surfsense_backend/app/connectors/google_gmail_connector.py +++ b/surfsense_backend/app/connectors/google_gmail_connector.py @@ -285,6 +285,13 @@ class GoogleGmailConnector: try: from datetime import datetime, timedelta + # Normalize date values - handle "undefined" strings from frontend + # This prevents "time data 'undefined' does not match format" errors + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + # Build date query query_parts = [] diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 82f452c61..928327d9a 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -644,20 +644,30 @@ async def index_connector_content( # Handle different connector types response_message = "" - today_str = datetime.now().strftime("%Y-%m-%d") + # Use UTC for consistency with last_indexed_at storage + today_str = datetime.now(UTC).strftime("%Y-%m-%d") # Determine the actual date range to use if start_date is None: # Use last_indexed_at or default to 365 days ago if connector.last_indexed_at: - today = datetime.now().date() - if connector.last_indexed_at.date() == today: + # Convert last_indexed_at to timezone-naive for comparison (like calculate_date_range does) + last_indexed_naive = ( + connector.last_indexed_at.replace(tzinfo=None) + if connector.last_indexed_at.tzinfo + else connector.last_indexed_at + ) + # Use UTC for "today" to match how last_indexed_at is stored + today_utc = datetime.now(UTC).replace(tzinfo=None).date() + last_indexed_date = last_indexed_naive.date() + + if last_indexed_date == today_utc: # If last indexed today, go back 1 day to ensure we don't miss anything - indexing_from = (today - timedelta(days=1)).strftime("%Y-%m-%d") + indexing_from = (today_utc - timedelta(days=1)).strftime("%Y-%m-%d") else: - indexing_from = connector.last_indexed_at.strftime("%Y-%m-%d") + indexing_from = last_indexed_naive.strftime("%Y-%m-%d") else: - indexing_from = (datetime.now() - timedelta(days=365)).strftime( + indexing_from = (datetime.now(UTC).replace(tzinfo=None) - timedelta(days=365)).strftime( "%Y-%m-%d" ) else: @@ -666,6 +676,7 @@ async def index_connector_content( # For calendar connectors, default to today but allow future dates if explicitly provided if connector.connector_type in [ SearchSourceConnectorType.GOOGLE_CALENDAR_CONNECTOR, + SearchSourceConnectorType.COMPOSIO_GOOGLE_CALENDAR_CONNECTOR, SearchSourceConnectorType.LUMA_CONNECTOR, ]: # Default to today if no end_date provided (users can manually select future dates) @@ -977,6 +988,9 @@ async def index_connector_content( index_composio_connector_task, ) + # For Composio Gmail and Calendar, use the same date calculation logic as normal connectors + # This ensures consistent behavior and uses last_indexed_at to reduce API calls + # (includes special case: if indexed today, go back 1 day to avoid missing data) logger.info( f"Triggering Composio connector indexing for connector {connector_id} into search space {search_space_id} from {indexing_from} to {indexing_to}" ) diff --git a/surfsense_backend/app/tasks/connector_indexers/base.py b/surfsense_backend/app/tasks/connector_indexers/base.py index b9a99808e..b390937f0 100644 --- a/surfsense_backend/app/tasks/connector_indexers/base.py +++ b/surfsense_backend/app/tasks/connector_indexers/base.py @@ -112,6 +112,13 @@ def calculate_date_range( Returns: Tuple of (start_date_str, end_date_str) """ + # Normalize "undefined" strings to None (from frontend) + # This prevents parsing errors and ensures consistent behavior across all indexers + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + if start_date is not None and end_date is not None: return start_date, end_date diff --git a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py index 09bb8de4b..7787560fa 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py @@ -4,6 +4,8 @@ Google Calendar connector indexer. from datetime import datetime, timedelta +import pytz +from dateutil.parser import isoparse from google.oauth2.credentials import Credentials from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.ext.asyncio import AsyncSession @@ -205,6 +207,23 @@ async def index_google_calendar_events( # Use provided dates (including future dates) start_date_str = start_date end_date_str = end_date + + # If start_date and end_date are the same, adjust end_date to be one day later + # to ensure valid date range (start_date must be strictly before end_date) + if start_date_str == end_date_str: + # Parse the date and add one day to ensure valid range + dt = isoparse(end_date_str) + if dt.tzinfo is None: + dt = dt.replace(tzinfo=pytz.UTC) + else: + dt = dt.astimezone(pytz.UTC) + # Add one day to end_date to make it strictly after start_date + dt_end = dt + timedelta(days=1) + end_date_str = dt_end.strftime("%Y-%m-%d") + logger.info( + f"Adjusted end_date from {end_date} to {end_date_str} " + f"to ensure valid date range (start_date must be strictly before end_date)" + ) await task_logger.log_task_progress( log_entry, diff --git a/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py b/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py index 91f81ac20..0d7a979be 100644 --- a/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py @@ -116,6 +116,13 @@ async def index_luma_events( luma_client = LumaConnector(api_key=api_key) + # Handle 'undefined' string from frontend (treat as None) + # This prevents "time data 'undefined' does not match format" errors + if start_date == "undefined" or start_date == "": + start_date = None + if end_date == "undefined" or end_date == "": + end_date = None + # Calculate date range # For calendar connectors, allow future dates to index upcoming events if start_date is None or end_date is None: diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index e656c06d6..68a548409 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -259,7 +259,13 @@ export const ConnectorIndicator: FC = () => { editingConnector.connector_type !== "GOOGLE_DRIVE_CONNECTOR" ? () => { startIndexing(editingConnector.id); - handleQuickIndexConnector(editingConnector.id, editingConnector.connector_type, stopIndexing); + handleQuickIndexConnector( + editingConnector.id, + editingConnector.connector_type, + stopIndexing, + startDate, + endDate + ); } : undefined } diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 8951336c5..d12264fbd 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -272,8 +272,7 @@ export const ConnectorEditView: FC = ({ Re-indexing runs in the background

- You can continue using SurfSense while we sync your data. Check the Active tab - to see progress. + You can continue using SurfSense while we sync your data. Check inbox for updates.

diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx index 17995fdfa..019e6b37f 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx @@ -189,8 +189,7 @@ export const IndexingConfigurationView: FC = ({

Indexing runs in the background

- You can continue using SurfSense while we sync your data. Check the Active tab - to see progress. + You can continue using SurfSense while we sync your data. Check inbox for updates.

diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 3e9e1d930..1bcbd4263 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -1400,9 +1400,15 @@ export const useConnectorDialog = () => { [editingConnector, searchSpaceId, deleteConnector, router, cameFromMCPList] ); - // Handle quick index (index without date picker, uses backend defaults) + // Handle quick index (index with selected date range, or backend defaults if none selected) const handleQuickIndexConnector = useCallback( - async (connectorId: number, connectorType?: string, stopIndexing?: (id: number) => void) => { + async ( + connectorId: number, + connectorType?: string, + stopIndexing?: (id: number) => void, + startDate?: Date, + endDate?: Date + ) => { if (!searchSpaceId) return; // Track quick index clicked event @@ -1411,10 +1417,16 @@ export const useConnectorDialog = () => { } try { + // Format dates if provided, otherwise pass undefined (backend will use defaults) + const startDateStr = startDate ? format(startDate, "yyyy-MM-dd") : undefined; + const endDateStr = endDate ? format(endDate, "yyyy-MM-dd") : undefined; + await indexConnector({ connector_id: connectorId, queryParams: { search_space_id: searchSpaceId, + start_date: startDateStr, + end_date: endDateStr, }, }); toast.success("Indexing started", { From c48ba36fa47ccffb10f68a76231ab017321c5dbe Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 23 Jan 2026 23:36:14 +0530 Subject: [PATCH 17/51] feat: improve indexing logic and duplicate handling in connectors - Enhanced Google Calendar and Composio connector indexing to track and log duplicate content, preventing re-indexing of already processed events. - Implemented robust error handling during final commits to manage integrity errors gracefully, ensuring successful indexing despite potential duplicates. - Updated notification service to differentiate between actual errors and warnings for duplicate content, improving user feedback. - Refactored date handling to ensure valid date ranges and adjusted end dates when necessary for better indexing accuracy. --- .../composio_google_calendar_connector.py | 59 +++++++++++++-- .../routes/search_source_connectors_routes.py | 72 +++++++++++++++---- .../app/services/notification_service.py | 28 ++++++-- .../google_calendar_indexer.py | 49 ++++++++++++- .../views/connector-edit-view.tsx | 14 ++-- .../hooks/use-connector-dialog.ts | 11 ++- 6 files changed, 198 insertions(+), 35 deletions(-) diff --git a/surfsense_backend/app/connectors/composio_google_calendar_connector.py b/surfsense_backend/app/connectors/composio_google_calendar_connector.py index ab8bde53c..3ac235848 100644 --- a/surfsense_backend/app/connectors/composio_google_calendar_connector.py +++ b/surfsense_backend/app/connectors/composio_google_calendar_connector.py @@ -18,7 +18,10 @@ from app.db import Document, DocumentType from app.services.composio_service import TOOLKIT_TO_DOCUMENT_TYPE from app.services.llm_service import get_user_long_context_llm from app.services.task_logging_service import TaskLoggingService -from app.tasks.connector_indexers.base import calculate_date_range +from app.tasks.connector_indexers.base import ( + calculate_date_range, + check_duplicate_document_by_hash, +) from app.utils.document_converters import ( create_document_chunks, generate_content_hash, @@ -256,6 +259,7 @@ async def index_composio_google_calendar( documents_indexed = 0 documents_skipped = 0 + duplicate_content_count = 0 # Track events skipped due to duplicate content_hash for event in events: try: @@ -349,7 +353,25 @@ async def index_composio_google_calendar( logger.info( f"Committing batch: {documents_indexed} Google Calendar events processed so far" ) - await session.commit() + await session.commit( ) + continue + + # Document doesn't exist by unique_identifier_hash + # Check if a document with the same content_hash exists (from standard connector) + with session.no_autoflush: + duplicate_by_content = await check_duplicate_document_by_hash( + session, content_hash + ) + + if duplicate_by_content: + # A document with the same content already exists (likely from standard connector) + logger.info( + f"Event {summary} already indexed by another connector " + f"(existing document ID: {duplicate_by_content.id}, " + f"type: {duplicate_by_content.document_type}). Skipping to avoid duplicate content." + ) + duplicate_content_count += 1 + documents_skipped += 1 continue # Create new document @@ -429,10 +451,28 @@ async def index_composio_google_calendar( logger.info( f"Final commit: Total {documents_indexed} Google Calendar events processed" ) - await session.commit() - logger.info( - "Successfully committed all Composio Google Calendar document changes to database" - ) + try: + await session.commit() + logger.info( + "Successfully committed all Composio Google Calendar document changes to database" + ) + except Exception as e: + # Handle any remaining integrity errors gracefully (race conditions, etc.) + if "duplicate key value violates unique constraint" in str(e).lower() or "uniqueviolationerror" in str(e).lower(): + logger.warning( + f"Duplicate content_hash detected during final commit. " + f"This may occur if the same event was indexed by multiple connectors. " + f"Rolling back and continuing. Error: {e!s}" + ) + await session.rollback() + # Don't fail the entire task - some documents may have been successfully indexed + else: + raise + + # Build warning message if duplicates were found + warning_message = None + if duplicate_content_count > 0: + warning_message = f"{duplicate_content_count} skipped (duplicate)" await task_logger.log_task_success( log_entry, @@ -440,10 +480,15 @@ async def index_composio_google_calendar( { "documents_indexed": documents_indexed, "documents_skipped": documents_skipped, + "duplicate_content_count": duplicate_content_count, }, ) - return documents_indexed, None + logger.info( + f"Composio Google Calendar indexing completed: {documents_indexed} new events, {documents_skipped} skipped " + f"({duplicate_content_count} due to duplicate content from other connectors)" + ) + return documents_indexed, warning_message except Exception as e: logger.error( diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 928327d9a..3b98d7d7c 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -22,6 +22,8 @@ import logging from datetime import UTC, datetime, timedelta from typing import Any +import pytz +from dateutil.parser import isoparse from fastapi import APIRouter, Body, Depends, HTTPException, Query from pydantic import BaseModel, Field, ValidationError from sqlalchemy.exc import IntegrityError @@ -681,6 +683,22 @@ async def index_connector_content( ]: # Default to today if no end_date provided (users can manually select future dates) indexing_to = today_str if end_date is None else end_date + + # If start_date and end_date are the same, adjust end_date to be one day later + # to ensure valid date range (start_date must be strictly before end_date) + if indexing_from == indexing_to: + dt = isoparse(indexing_to) + if dt.tzinfo is None: + dt = dt.replace(tzinfo=pytz.UTC) + else: + dt = dt.astimezone(pytz.UTC) + # Add one day to end_date to make it strictly after start_date + dt_end = dt + timedelta(days=1) + indexing_to = dt_end.strftime("%Y-%m-%d") + logger.info( + f"Adjusted end_date from {end_date} to {indexing_to} " + f"to ensure valid date range (start_date must be strictly before end_date)" + ) else: # For non-calendar connectors, cap at today indexing_to = end_date if end_date else today_str @@ -1231,20 +1249,48 @@ async def _run_indexing_with_notifications( else: # No new documents processed - check if this is an error or just no changes if error_or_warning: - # Actual failure - logger.error(f"Indexing failed: {error_or_warning}") - if notification: - # Refresh notification to ensure it's not stale after indexing function commits - await session.refresh(notification) - await NotificationService.connector_indexing.notify_indexing_completed( - session=session, - notification=notification, - indexed_count=0, - error_message=error_or_warning, + # Check if this is a duplicate warning (success case) or an actual error + # Handle both normal and Composio calendar connectors + error_or_warning_lower = str(error_or_warning).lower() if error_or_warning else "" + is_duplicate_warning = "skipped (duplicate)" in error_or_warning_lower + + if is_duplicate_warning: + # Duplicate warnings are success cases - sync worked, just found duplicates + logger.info( + f"Indexing completed successfully: {error_or_warning}" ) - await ( - session.commit() - ) # Commit to ensure Electric SQL syncs the notification update + # Still update timestamp so ElectricSQL syncs and clears "Syncing" UI + if update_timestamp_func: + await update_timestamp_func(session, connector_id) + await session.commit() # Commit timestamp update + if notification: + # Refresh notification to ensure it's not stale after timestamp update commit + await session.refresh(notification) + await NotificationService.connector_indexing.notify_indexing_completed( + session=session, + notification=notification, + indexed_count=0, + error_message=error_or_warning, # Pass as warning, not error + is_warning=True, # Flag to indicate this is a warning, not an error + ) + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update + else: + # Actual failure + logger.error(f"Indexing failed: {error_or_warning}") + if notification: + # Refresh notification to ensure it's not stale after indexing function commits + await session.refresh(notification) + await NotificationService.connector_indexing.notify_indexing_completed( + session=session, + notification=notification, + indexed_count=0, + error_message=error_or_warning, + ) + await ( + session.commit() + ) # Commit to ensure Electric SQL syncs the notification update else: # Success - just no new documents to index (all skipped/unchanged) logger.info( diff --git a/surfsense_backend/app/services/notification_service.py b/surfsense_backend/app/services/notification_service.py index 836daeb9e..9fcf807e7 100644 --- a/surfsense_backend/app/services/notification_service.py +++ b/surfsense_backend/app/services/notification_service.py @@ -335,6 +335,7 @@ class ConnectorIndexingNotificationHandler(BaseNotificationHandler): notification: Notification, indexed_count: int, error_message: str | None = None, + is_warning: bool = False, ) -> Notification: """ Update notification when connector indexing completes. @@ -343,7 +344,8 @@ class ConnectorIndexingNotificationHandler(BaseNotificationHandler): session: Database session notification: Notification to update indexed_count: Total number of items indexed - error_message: Error message if indexing failed (optional) + error_message: Error message if indexing failed, or warning message (optional) + is_warning: If True, treat error_message as a warning (success case) rather than an error Returns: Updated notification @@ -352,10 +354,26 @@ class ConnectorIndexingNotificationHandler(BaseNotificationHandler): "connector_name", "Connector" ) + # If there's an error message but items were indexed, treat it as a warning (partial success) + # If is_warning is True, treat it as success even with 0 items (e.g., duplicates found) + # Otherwise, treat it as a failure if error_message: - title = f"Failed: {connector_name}" - message = f"Sync failed: {error_message}" - status = "failed" + if indexed_count > 0: + # Partial success with warnings (e.g., duplicate content from other connectors) + title = f"Ready: {connector_name}" + item_text = "item" if indexed_count == 1 else "items" + message = f"Now searchable! {indexed_count} {item_text} synced. Note: {error_message}" + status = "completed" + elif is_warning: + # Warning case (e.g., duplicates found) - treat as success + title = f"Ready: {connector_name}" + message = f"Sync completed. {error_message}" + status = "completed" + else: + # Complete failure + title = f"Failed: {connector_name}" + message = f"Sync failed: {error_message}" + status = "failed" else: title = f"Ready: {connector_name}" if indexed_count == 0: @@ -367,7 +385,7 @@ class ConnectorIndexingNotificationHandler(BaseNotificationHandler): metadata_updates = { "indexed_count": indexed_count, - "sync_stage": "completed" if not error_message else "failed", + "sync_stage": "completed" if (not error_message or is_warning or indexed_count > 0) else "failed", "error_message": error_message, } diff --git a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py index 7787560fa..5bc805549 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py @@ -23,6 +23,7 @@ from app.utils.document_converters import ( from .base import ( check_document_by_unique_identifier, + check_duplicate_document_by_hash, get_connector_by_id, get_current_timestamp, logger, @@ -289,6 +290,7 @@ async def index_google_calendar_events( documents_indexed = 0 documents_skipped = 0 skipped_events = [] + duplicate_content_count = 0 # Track events skipped due to duplicate content_hash for event in events: try: @@ -409,6 +411,27 @@ async def index_google_calendar_events( ) continue + # Document doesn't exist by unique_identifier_hash + # Check if a document with the same content_hash exists (from another connector) + with session.no_autoflush: + duplicate_by_content = await check_duplicate_document_by_hash( + session, content_hash + ) + + if duplicate_by_content: + # A document with the same content already exists (likely from Composio connector) + logger.info( + f"Event {event_summary} already indexed by another connector " + f"(existing document ID: {duplicate_by_content.id}, " + f"type: {duplicate_by_content.document_type}). Skipping to avoid duplicate content." + ) + duplicate_content_count += 1 + documents_skipped += 1 + skipped_events.append( + f"{event_summary} (already indexed by another connector)" + ) + continue + # Document doesn't exist - create new one # Generate summary with metadata user_llm = await get_user_long_context_llm( @@ -501,7 +524,25 @@ async def index_google_calendar_events( logger.info( f"Final commit: Total {documents_indexed} Google Calendar events processed" ) - await session.commit() + try: + await session.commit() + except Exception as e: + # Handle any remaining integrity errors gracefully (race conditions, etc.) + if "duplicate key value violates unique constraint" in str(e).lower() or "uniqueviolationerror" in str(e).lower(): + logger.warning( + f"Duplicate content_hash detected during final commit. " + f"This may occur if the same event was indexed by multiple connectors. " + f"Rolling back and continuing. Error: {e!s}" + ) + await session.rollback() + # Don't fail the entire task - some documents may have been successfully indexed + else: + raise + + # Build warning message if duplicates were found + warning_message = None + if duplicate_content_count > 0: + warning_message = f"{duplicate_content_count} skipped (duplicate)" await task_logger.log_task_success( log_entry, @@ -510,14 +551,16 @@ async def index_google_calendar_events( "events_processed": total_processed, "documents_indexed": documents_indexed, "documents_skipped": documents_skipped, + "duplicate_content_count": duplicate_content_count, "skipped_events_count": len(skipped_events), }, ) logger.info( - f"Google Calendar indexing completed: {documents_indexed} new events, {documents_skipped} skipped" + f"Google Calendar indexing completed: {documents_indexed} new events, {documents_skipped} skipped " + f"({duplicate_content_count} due to duplicate content from other connectors)" ) - return total_processed, None + return total_processed, warning_message except SQLAlchemyError as db_error: await session.rollback() diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index d12264fbd..8f58db542 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -100,10 +100,14 @@ export const ConnectorEditView: FC = ({ // Reset local quick indexing state when indexing completes or fails useEffect(() => { - if (!isIndexing) { - setIsQuickIndexing(false); + if (!isIndexing && isQuickIndexing) { + // Small delay to ensure smooth transition + const timer = setTimeout(() => { + setIsQuickIndexing(false); + }, 100); + return () => clearTimeout(timer); } - }, [isIndexing]); + }, [isIndexing, isQuickIndexing]); const handleDisconnectClick = () => { setShowDisconnectConfirm(true); @@ -119,11 +123,11 @@ export const ConnectorEditView: FC = ({ }; const handleQuickIndex = useCallback(() => { - if (onQuickIndex) { + if (onQuickIndex && !isQuickIndexing && !isIndexing) { setIsQuickIndexing(true); onQuickIndex(); } - }, [onQuickIndex]); + }, [onQuickIndex, isQuickIndexing, isIndexing]); return (
diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 1bcbd4263..9a7f15b0c 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -1409,7 +1409,12 @@ export const useConnectorDialog = () => { startDate?: Date, endDate?: Date ) => { - if (!searchSpaceId) return; + if (!searchSpaceId) { + if (stopIndexing) { + stopIndexing(connectorId); + } + return; + } // Track quick index clicked event if (connectorType) { @@ -1437,6 +1442,8 @@ export const useConnectorDialog = () => { queryClient.invalidateQueries({ queryKey: cacheKeys.logs.summary(Number(searchSpaceId)), }); + // Note: Don't call stopIndexing here - let useIndexingConnectors hook + // detect when last_indexed_at changes via Electric SQL } catch (error) { console.error("Error indexing connector content:", error); toast.error(error instanceof Error ? error.message : "Failed to start indexing"); @@ -1446,7 +1453,7 @@ export const useConnectorDialog = () => { } } }, - [searchSpaceId, indexConnector] + [searchSpaceId, indexConnector, queryClient] ); // Handle going back from edit view From a7333853a283e040515188a481a8c8f935861ee6 Mon Sep 17 00:00:00 2001 From: Eric Lammertsma Date: Fri, 23 Jan 2026 13:14:23 -0500 Subject: [PATCH 18/51] Swapped Inbox and Documents in sidebar --- .../layout/providers/LayoutDataProvider.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index 52dc7196a..1761c74a1 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -161,12 +161,6 @@ export function LayoutDataProvider({ // Navigation items const navItems: NavItem[] = useMemo( () => [ - { - title: "Documents", - url: `/dashboard/${searchSpaceId}/documents`, - icon: SquareLibrary, - isActive: pathname?.includes("/documents"), - }, { title: "Inbox", url: "#inbox", // Special URL to indicate this is handled differently @@ -174,6 +168,12 @@ export function LayoutDataProvider({ isActive: isInboxSidebarOpen, badge: unreadCount > 0 ? (unreadCount > 99 ? "99+" : unreadCount) : undefined, }, + { + title: "Documents", + url: `/dashboard/${searchSpaceId}/documents`, + icon: SquareLibrary, + isActive: pathname?.includes("/documents"), + }, ], [searchSpaceId, pathname, isInboxSidebarOpen, unreadCount] ); From 417ff58fad6ba8221c1a561a00ec3f44a99a93cc Mon Sep 17 00:00:00 2001 From: Eric Lammertsma Date: Fri, 23 Jan 2026 13:27:14 -0500 Subject: [PATCH 19/51] Fixed a bug where new chats weren't auto selected when created This additionally fixes a bug where the New Chat button wasn't working properly after creating a new chat --- .../layout/providers/LayoutDataProvider.tsx | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index 1761c74a1..37cb468ec 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -1,12 +1,13 @@ "use client"; import { useQuery, useQueryClient } from "@tanstack/react-query"; -import { useAtomValue } from "jotai"; +import { useAtomValue, useSetAtom } from "jotai"; import { Inbox, LogOut, SquareLibrary, Trash2 } from "lucide-react"; import { useParams, usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useTheme } from "next-themes"; -import { useCallback, useMemo, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; +import { currentThreadAtom, resetCurrentThreadAtom } from "@/atoms/chat/current-thread.atom"; import { deleteSearchSpaceMutationAtom } from "@/atoms/search-spaces/search-space-mutation.atoms"; import { searchSpacesAtom } from "@/atoms/search-spaces/search-space-query.atoms"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; @@ -55,11 +56,16 @@ export function LayoutDataProvider({ const { data: user } = useAtomValue(currentUserAtom); const { data: searchSpacesData, refetch: refetchSearchSpaces } = useAtomValue(searchSpacesAtom); const { mutateAsync: deleteSearchSpace } = useAtomValue(deleteSearchSpaceMutationAtom); + const currentThreadState = useAtomValue(currentThreadAtom); + const resetCurrentThread = useSetAtom(resetCurrentThreadAtom); - // Current IDs from URL + // State for handling new chat navigation when router is out of sync + const [pendingNewChat, setPendingNewChat] = useState(false); + + // Current IDs from URL, with fallback to atom for replaceState updates const currentChatId = params?.chat_id ? Number(Array.isArray(params.chat_id) ? params.chat_id[0] : params.chat_id) - : null; + : currentThreadState.id; // Fetch current search space (for caching purposes) useQuery({ @@ -111,6 +117,17 @@ export function LayoutDataProvider({ const [isDeletingSearchSpace, setIsDeletingSearchSpace] = useState(false); const [isLeavingSearchSpace, setIsLeavingSearchSpace] = useState(false); + // Effect to complete new chat navigation after router syncs + // This runs when handleNewChat detected an out-of-sync state and triggered a sync + useEffect(() => { + if (pendingNewChat && params?.chat_id) { + // Router is now synced (chat_id is in params), complete navigation to new-chat + resetCurrentThread(); + router.push(`/dashboard/${searchSpaceId}/new-chat`); + setPendingNewChat(false); + } + }, [pendingNewChat, params?.chat_id, router, searchSpaceId, resetCurrentThread]); + const searchSpaces: SearchSpace[] = useMemo(() => { if (!searchSpacesData || !Array.isArray(searchSpacesData)) return []; return searchSpacesData.map((space) => ({ @@ -278,8 +295,20 @@ export function LayoutDataProvider({ ); const handleNewChat = useCallback(() => { - router.push(`/dashboard/${searchSpaceId}/new-chat`); - }, [router, searchSpaceId]); + // Check if router is out of sync (thread created via replaceState but params don't have chat_id) + const isOutOfSync = currentThreadState.id !== null && !params?.chat_id; + + if (isOutOfSync) { + // First sync Next.js router by navigating to the current chat's actual URL + // This updates the router's internal state to match the browser URL + router.replace(`/dashboard/${searchSpaceId}/new-chat/${currentThreadState.id}`); + // Set flag to trigger navigation to new-chat after params update + setPendingNewChat(true); + } else { + // Normal navigation - router is in sync + router.push(`/dashboard/${searchSpaceId}/new-chat`); + } + }, [router, searchSpaceId, currentThreadState.id, params?.chat_id]); const handleChatSelect = useCallback( (chat: ChatItem) => { From 6d14b49d3f4fb39994be6ba96bc93af3f1031831 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 01:20:51 +0530 Subject: [PATCH 20/51] feat: enhance indexing state management and inbox count formatting - Improved indexing state management by refining the logic for handling notifications, ensuring accurate updates for in-progress, completed, and failed states. - Introduced a new utility function to format inbox counts, displaying numbers up to 999 and using "k+" for larger counts, enhancing user interface clarity. - Updated sidebar components to utilize the new inbox count formatting, improving the overall user experience. --- .../hooks/use-indexing-connectors.ts | 87 ++++++++++--------- .../layout/providers/LayoutDataProvider.tsx | 13 ++- .../layout/ui/sidebar/InboxSidebar.tsx | 15 +++- .../layout/ui/sidebar/NavSection.tsx | 4 +- 4 files changed, 75 insertions(+), 44 deletions(-) diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts index e82a8eb29..289da475d 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts @@ -10,8 +10,9 @@ import { isConnectorIndexingMetadata } from "@/contracts/types/inbox.types"; * * This provides a better UX than polling by: * 1. Setting indexing state immediately when user triggers indexing (optimistic) - * 2. Clearing indexing state when Electric SQL detects last_indexed_at changed - * 3. Clearing indexing state when a failed notification is detected + * 2. Detecting in_progress notifications from Electric SQL to restore state after remounts + * 3. Clearing indexing state when notifications become completed or failed + * 4. Clearing indexing state when Electric SQL detects last_indexed_at changed * * The actual `last_indexed_at` value comes from Electric SQL/PGlite, not local state. */ @@ -28,65 +29,73 @@ export function useIndexingConnectors( // Detect when last_indexed_at changes (indexing completed) via Electric SQL useEffect(() => { const previousValues = previousLastIndexedAtRef.current; - const newIndexingIds = new Set(indexingConnectorIds); - let hasChanges = false; for (const connector of connectors) { const previousValue = previousValues.get(connector.id); const currentValue = connector.last_indexed_at; - // If last_indexed_at changed and connector was in indexing state, clear it + // If last_indexed_at changed, clear it from indexing state if ( previousValue !== undefined && // We've seen this connector before - previousValue !== currentValue && // Value changed - indexingConnectorIds.has(connector.id) // It was marked as indexing + previousValue !== currentValue // Value changed ) { - newIndexingIds.delete(connector.id); - hasChanges = true; + // Use functional update to access current state + setIndexingConnectorIds((prev) => { + if (prev.has(connector.id)) { + const next = new Set(prev); + next.delete(connector.id); + return next; + } + return prev; + }); } // Update previous value tracking previousValues.set(connector.id, currentValue); } + }, [connectors]); - if (hasChanges) { - setIndexingConnectorIds(newIndexingIds); - } - }, [connectors, indexingConnectorIds]); - - // Detect failed notifications and stop indexing state + // Detect notification status changes and update indexing state accordingly + // This restores spinner state after component remounts and handles all status transitions useEffect(() => { if (!inboxItems || inboxItems.length === 0) return; - const newIndexingIds = new Set(indexingConnectorIds); - let hasChanges = false; + setIndexingConnectorIds((prev) => { + const newIndexingIds = new Set(prev); + let hasChanges = false; - for (const item of inboxItems) { - // Only check connector_indexing notifications - if (item.type !== "connector_indexing") continue; + for (const item of inboxItems) { + // Only check connector_indexing notifications + if (item.type !== "connector_indexing") continue; - // Check if this notification indicates a failure - const metadata = isConnectorIndexingMetadata(item.metadata) - ? item.metadata - : null; - if (!metadata) continue; + const metadata = isConnectorIndexingMetadata(item.metadata) + ? item.metadata + : null; + if (!metadata) continue; - // Check if status is "failed" or if there's an error_message - const isFailed = - metadata.status === "failed" || - (metadata.error_message && metadata.error_message.trim().length > 0); - - // If failed and connector is in indexing state, clear it - if (isFailed && indexingConnectorIds.has(metadata.connector_id)) { - newIndexingIds.delete(metadata.connector_id); - hasChanges = true; + // If status is "in_progress", add connector to indexing set + if (metadata.status === "in_progress") { + if (!newIndexingIds.has(metadata.connector_id)) { + newIndexingIds.add(metadata.connector_id); + hasChanges = true; + } + } + // If status is "completed" or "failed", remove connector from indexing set + else if ( + metadata.status === "completed" || + metadata.status === "failed" || + (metadata.error_message && metadata.error_message.trim().length > 0) + ) { + if (newIndexingIds.has(metadata.connector_id)) { + newIndexingIds.delete(metadata.connector_id); + hasChanges = true; + } + } } - } - if (hasChanges) { - setIndexingConnectorIds(newIndexingIds); - } - }, [inboxItems, indexingConnectorIds]); + return hasChanges ? newIndexingIds : prev; + }); + }, [inboxItems]); // Add a connector to the indexing set (called when indexing starts) const startIndexing = useCallback((connectorId: number) => { diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index 52dc7196a..9e3f55c97 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -38,6 +38,17 @@ interface LayoutDataProviderProps { breadcrumb?: React.ReactNode; } +/** + * Format count for display: shows numbers up to 999, then "1k+", "2k+", etc. + */ +function formatInboxCount(count: number): string { + if (count <= 999) { + return count.toString(); + } + const thousands = Math.floor(count / 1000); + return `${thousands}k+`; +} + export function LayoutDataProvider({ searchSpaceId, children, @@ -172,7 +183,7 @@ export function LayoutDataProvider({ url: "#inbox", // Special URL to indicate this is handled differently icon: Inbox, isActive: isInboxSidebarOpen, - badge: unreadCount > 0 ? (unreadCount > 99 ? "99+" : unreadCount) : undefined, + badge: unreadCount > 0 ? formatInboxCount(unreadCount) : undefined, }, ], [searchSpaceId, pathname, isInboxSidebarOpen, unreadCount] diff --git a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx index bb06d6a56..e80c6e62d 100644 --- a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx @@ -70,6 +70,17 @@ function getInitials(name: string | null | undefined, email: string | null | und return "U"; } +/** + * Format count for display: shows numbers up to 999, then "1k+", "2k+", etc. + */ +function formatInboxCount(count: number): string { + if (count <= 999) { + return count.toString(); + } + const thousands = Math.floor(count / 1000); + return `${thousands}k+`; +} + /** * Get display name for connector type */ @@ -732,7 +743,7 @@ export function InboxSidebar({ {t("mentions") || "Mentions"} - {unreadMentionsCount} + {formatInboxCount(unreadMentionsCount)} @@ -744,7 +755,7 @@ export function InboxSidebar({ {t("status") || "Status"} - {unreadStatusCount} + {formatInboxCount(unreadStatusCount)} diff --git a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx index d2d926de8..742a27bbc 100644 --- a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx +++ b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx @@ -39,7 +39,7 @@ export function NavSection({ items, onItemClick, isCollapsed = false }: NavSecti > {item.badge && ( - + {item.badge} )} @@ -70,7 +70,7 @@ export function NavSection({ items, onItemClick, isCollapsed = false }: NavSecti {item.title} {item.badge && ( - + {item.badge} )} From f4b1192a063e71437bb24340342fcee2a69f6a1f Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 03:51:57 +0530 Subject: [PATCH 21/51] feat: refine indexing success case handling and notification messaging - Enhanced the logic for determining success cases during indexing by distinguishing between duplicate warnings and empty results. - Updated notification messages to provide clearer feedback for empty results, improving user understanding of indexing outcomes. - Ensured that notifications reflect accurate statuses, maintaining consistency in user feedback during the indexing process. --- .../app/routes/search_source_connectors_routes.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 3b98d7d7c..487a689dc 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -1249,13 +1249,15 @@ async def _run_indexing_with_notifications( else: # No new documents processed - check if this is an error or just no changes if error_or_warning: - # Check if this is a duplicate warning (success case) or an actual error + # Check if this is a duplicate warning or empty result (success cases) or an actual error # Handle both normal and Composio calendar connectors error_or_warning_lower = str(error_or_warning).lower() if error_or_warning else "" is_duplicate_warning = "skipped (duplicate)" in error_or_warning_lower + # "No X found" messages are success cases - sync worked, just found nothing in date range + is_empty_result = ("no " in error_or_warning_lower and "found" in error_or_warning_lower) - if is_duplicate_warning: - # Duplicate warnings are success cases - sync worked, just found duplicates + if is_duplicate_warning or is_empty_result: + # These are success cases - sync worked, just found nothing new logger.info( f"Indexing completed successfully: {error_or_warning}" ) @@ -1266,11 +1268,13 @@ async def _run_indexing_with_notifications( if notification: # Refresh notification to ensure it's not stale after timestamp update commit await session.refresh(notification) + # For empty results, use a cleaner message + notification_message = "No new items found in date range" if is_empty_result else error_or_warning await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, indexed_count=0, - error_message=error_or_warning, # Pass as warning, not error + error_message=notification_message, # Pass as warning, not error is_warning=True, # Flag to indicate this is a warning, not an error ) await ( From 5cf6fb15ed9c0f875c584ac4af216d279ae9eb36 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 03:59:17 +0530 Subject: [PATCH 22/51] fix: improve error logging for indexing tasks across multiple connectors - Updated error handling in the indexing functions for BookStack, Confluence, Google Calendar, Jira, Linear, and Luma connectors to log specific error messages when failures occur. - Enhanced logging for cases where no pages or events are found, providing clearer informational messages instead of treating them as critical errors. - Ensured consistent error reporting across all connector indexers, improving debugging and user feedback during indexing operations. --- .../app/tasks/connector_indexers/bookstack_indexer.py | 4 ++-- .../app/tasks/connector_indexers/confluence_indexer.py | 4 ++-- .../app/tasks/connector_indexers/google_calendar_indexer.py | 4 ++-- .../app/tasks/connector_indexers/jira_indexer.py | 4 ++-- .../app/tasks/connector_indexers/linear_indexer.py | 4 ++-- .../app/tasks/connector_indexers/luma_indexer.py | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/surfsense_backend/app/tasks/connector_indexers/bookstack_indexer.py b/surfsense_backend/app/tasks/connector_indexers/bookstack_indexer.py index 2793f78db..a1067255d 100644 --- a/surfsense_backend/app/tasks/connector_indexers/bookstack_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/bookstack_indexer.py @@ -136,10 +136,9 @@ async def index_bookstack_pages( ) if error: - logger.error(f"Failed to get BookStack pages: {error}") - # Don't treat "No pages found" as an error that should stop indexing if "No pages found" in error: + logger.info(f"No BookStack pages found: {error}") logger.info( "No pages found is not a critical error, continuing with update" ) @@ -159,6 +158,7 @@ async def index_bookstack_pages( ) return 0, None else: + logger.error(f"Failed to get BookStack pages: {error}") await task_logger.log_task_failure( log_entry, f"Failed to get BookStack pages: {error}", diff --git a/surfsense_backend/app/tasks/connector_indexers/confluence_indexer.py b/surfsense_backend/app/tasks/connector_indexers/confluence_indexer.py index 7289b0ccd..ddbefafb9 100644 --- a/surfsense_backend/app/tasks/connector_indexers/confluence_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/confluence_indexer.py @@ -120,10 +120,9 @@ async def index_confluence_pages( ) if error: - logger.error(f"Failed to get Confluence pages: {error}") - # Don't treat "No pages found" as an error that should stop indexing if "No pages found" in error: + logger.info(f"No Confluence pages found: {error}") logger.info( "No pages found is not a critical error, continuing with update" ) @@ -147,6 +146,7 @@ async def index_confluence_pages( await confluence_client.close() return 0, None else: + logger.error(f"Failed to get Confluence pages: {error}") await task_logger.log_task_failure( log_entry, f"Failed to get Confluence pages: {error}", diff --git a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py index 5bc805549..ef1f821d2 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py @@ -243,10 +243,9 @@ async def index_google_calendar_events( ) if error: - logger.error(f"Failed to get Google Calendar events: {error}") - # Don't treat "No events found" as an error that should stop indexing if "No events found" in error: + logger.info(f"No Google Calendar events found: {error}") logger.info( "No events found is not a critical error, continuing with update" ) @@ -266,6 +265,7 @@ async def index_google_calendar_events( ) return 0, None else: + logger.error(f"Failed to get Google Calendar events: {error}") # Check if this is an authentication error that requires re-authentication error_message = error error_type = "APIError" diff --git a/surfsense_backend/app/tasks/connector_indexers/jira_indexer.py b/surfsense_backend/app/tasks/connector_indexers/jira_indexer.py index fdbeb93b0..4851a6466 100644 --- a/surfsense_backend/app/tasks/connector_indexers/jira_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/jira_indexer.py @@ -126,10 +126,9 @@ async def index_jira_issues( ) if error: - logger.error(f"Failed to get Jira issues: {error}") - # Don't treat "No issues found" as an error that should stop indexing if "No issues found" in error: + logger.info(f"No Jira issues found: {error}") logger.info( "No issues found is not a critical error, continuing with update" ) @@ -149,6 +148,7 @@ async def index_jira_issues( ) return 0, None else: + logger.error(f"Failed to get Jira issues: {error}") await task_logger.log_task_failure( log_entry, f"Failed to get Jira issues: {error}", diff --git a/surfsense_backend/app/tasks/connector_indexers/linear_indexer.py b/surfsense_backend/app/tasks/connector_indexers/linear_indexer.py index f1bfd42e8..7d8e0c30e 100644 --- a/surfsense_backend/app/tasks/connector_indexers/linear_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/linear_indexer.py @@ -145,10 +145,9 @@ async def index_linear_issues( ) if error: - logger.error(f"Failed to get Linear issues: {error}") - # Don't treat "No issues found" as an error that should stop indexing if "No issues found" in error: + logger.info(f"No Linear issues found: {error}") logger.info( "No issues found is not a critical error, continuing with update" ) @@ -162,6 +161,7 @@ async def index_linear_issues( ) return 0, None else: + logger.error(f"Failed to get Linear issues: {error}") return 0, f"Failed to get Linear issues: {error}" logger.info(f"Retrieved {len(issues)} issues from Linear API") diff --git a/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py b/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py index 0d7a979be..ead259a44 100644 --- a/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/luma_indexer.py @@ -179,10 +179,9 @@ async def index_luma_events( ) if error: - logger.error(f"Failed to get Luma events: {error}") - # Don't treat "No events found" as an error that should stop indexing if "No events found" in error or "no events" in error.lower(): + logger.info(f"No Luma events found: {error}") logger.info( "No events found is not a critical error, continuing with update" ) @@ -202,6 +201,7 @@ async def index_luma_events( ) return 0, None else: + logger.error(f"Failed to get Luma events: {error}") await task_logger.log_task_failure( log_entry, f"Failed to get Luma events: {error}", From 97d7207bd4e76a5c76b1d6ed88a0784ea76f0445 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 04:33:10 +0530 Subject: [PATCH 23/51] fix: update Google Drive indexer to use SQLAlchemy casting for metadata queries - Modified the Google Drive indexer to use SQLAlchemy's cast function for querying document metadata, ensuring proper type handling for file IDs. - Improved the consistency of metadata queries across the indexing functions, enhancing reliability in document retrieval and processing. --- .../app/tasks/connector_indexers/google_drive_indexer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py index 48282a1af..af180c36b 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py @@ -578,7 +578,7 @@ async def _check_rename_only_update( - (True, message): Only filename changed, document was updated - (False, None): Content changed or new file, needs full processing """ - from sqlalchemy import select + from sqlalchemy import cast, select, String from sqlalchemy.orm.attributes import flag_modified from app.db import Document @@ -603,7 +603,7 @@ async def _check_rename_only_update( select(Document).where( Document.search_space_id == search_space_id, Document.document_type == DocumentType.GOOGLE_DRIVE_FILE, - Document.document_metadata["google_drive_file_id"].astext == file_id, + cast(Document.document_metadata["google_drive_file_id"], String) == file_id, ) ) existing_document = result.scalar_one_or_none() @@ -755,7 +755,7 @@ async def _remove_document(session: AsyncSession, file_id: str, search_space_id: Handles both new (file_id-based) and legacy (filename-based) hash schemes. """ - from sqlalchemy import select + from sqlalchemy import cast, select, String from app.db import Document @@ -774,7 +774,7 @@ async def _remove_document(session: AsyncSession, file_id: str, search_space_id: select(Document).where( Document.search_space_id == search_space_id, Document.document_type == DocumentType.GOOGLE_DRIVE_FILE, - Document.document_metadata["google_drive_file_id"].astext == file_id, + cast(Document.document_metadata["google_drive_file_id"], String) == file_id, ) ) existing_document = result.scalar_one_or_none() From a5103da3d74fded873e311108b601d8b36740fce Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 04:36:34 +0530 Subject: [PATCH 24/51] chore: ran linting --- .../connectors/composio_gmail_connector.py | 1 - .../composio_google_calendar_connector.py | 14 +- .../composio_google_drive_connector.py | 83 +++++----- .../connectors/google_calendar_connector.py | 17 ++- .../app/connectors/google_gmail_connector.py | 17 ++- .../app/routes/composio_routes.py | 4 +- .../routes/search_source_connectors_routes.py | 31 ++-- .../app/services/composio_service.py | 142 ++++++++++-------- .../app/services/notification_service.py | 4 +- .../google_calendar_indexer.py | 21 ++- .../google_drive_indexer.py | 10 +- .../google_gmail_indexer.py | 13 +- .../assistant-ui/connector-popup.tsx | 5 +- .../components/composio-calendar-config.tsx | 1 - .../components/composio-drive-config.tsx | 24 +-- .../components/composio-gmail-config.tsx | 1 - .../components/google-drive-config.tsx | 10 +- .../views/connector-edit-view.tsx | 3 +- .../views/indexing-configuration-view.tsx | 17 ++- .../hooks/use-connector-dialog.ts | 18 +-- .../hooks/use-indexing-connectors.ts | 4 +- 21 files changed, 259 insertions(+), 181 deletions(-) diff --git a/surfsense_backend/app/connectors/composio_gmail_connector.py b/surfsense_backend/app/connectors/composio_gmail_connector.py index 5a9645a66..953e2e8fc 100644 --- a/surfsense_backend/app/connectors/composio_gmail_connector.py +++ b/surfsense_backend/app/connectors/composio_gmail_connector.py @@ -611,4 +611,3 @@ async def index_composio_gmail( except Exception as e: logger.error(f"Failed to index Gmail via Composio: {e!s}", exc_info=True) return 0, f"Failed to index Gmail via Composio: {e!s}" - diff --git a/surfsense_backend/app/connectors/composio_google_calendar_connector.py b/surfsense_backend/app/connectors/composio_google_calendar_connector.py index 3ac235848..ec5b22b7f 100644 --- a/surfsense_backend/app/connectors/composio_google_calendar_connector.py +++ b/surfsense_backend/app/connectors/composio_google_calendar_connector.py @@ -259,7 +259,9 @@ async def index_composio_google_calendar( documents_indexed = 0 documents_skipped = 0 - duplicate_content_count = 0 # Track events skipped due to duplicate content_hash + duplicate_content_count = ( + 0 # Track events skipped due to duplicate content_hash + ) for event in events: try: @@ -353,7 +355,7 @@ async def index_composio_google_calendar( logger.info( f"Committing batch: {documents_indexed} Google Calendar events processed so far" ) - await session.commit( ) + await session.commit() continue # Document doesn't exist by unique_identifier_hash @@ -362,7 +364,7 @@ async def index_composio_google_calendar( duplicate_by_content = await check_duplicate_document_by_hash( session, content_hash ) - + if duplicate_by_content: # A document with the same content already exists (likely from standard connector) logger.info( @@ -458,7 +460,10 @@ async def index_composio_google_calendar( ) except Exception as e: # Handle any remaining integrity errors gracefully (race conditions, etc.) - if "duplicate key value violates unique constraint" in str(e).lower() or "uniqueviolationerror" in str(e).lower(): + if ( + "duplicate key value violates unique constraint" in str(e).lower() + or "uniqueviolationerror" in str(e).lower() + ): logger.warning( f"Duplicate content_hash detected during final commit. " f"This may occur if the same event was indexed by multiple connectors. " @@ -495,4 +500,3 @@ async def index_composio_google_calendar( f"Failed to index Google Calendar via Composio: {e!s}", exc_info=True ) return 0, f"Failed to index Google Calendar via Composio: {e!s}" - diff --git a/surfsense_backend/app/connectors/composio_google_drive_connector.py b/surfsense_backend/app/connectors/composio_google_drive_connector.py index e19436611..e3b988676 100644 --- a/surfsense_backend/app/connectors/composio_google_drive_connector.py +++ b/surfsense_backend/app/connectors/composio_google_drive_connector.py @@ -453,8 +453,8 @@ async def check_document_by_unique_identifier( session: AsyncSession, unique_identifier_hash: str ) -> Document | None: """Check if a document with the given unique identifier hash already exists.""" - from sqlalchemy.orm import selectinload from sqlalchemy.future import select + from sqlalchemy.orm import selectinload existing_doc_result = await session.execute( select(Document) @@ -517,14 +517,20 @@ async def index_composio_google_drive( # Route to delta sync or full scan if use_delta_sync: - logger.info(f"Using delta sync for Composio Google Drive connector {connector_id}") + logger.info( + f"Using delta sync for Composio Google Drive connector {connector_id}" + ) await task_logger.log_task_progress( log_entry, f"Starting delta sync for Google Drive via Composio (connector {connector_id})", {"stage": "delta_sync", "token": stored_page_token[:20] + "..."}, ) - documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_delta_sync( + ( + documents_indexed, + documents_skipped, + processing_errors, + ) = await _index_composio_drive_delta_sync( session=session, composio_connector=composio_connector, connector_id=connector_id, @@ -536,7 +542,9 @@ async def index_composio_google_drive( log_entry=log_entry, ) else: - logger.info(f"Using full scan for Composio Google Drive connector {connector_id} (first sync or no token)") + logger.info( + f"Using full scan for Composio Google Drive connector {connector_id} (first sync or no token)" + ) await task_logger.log_task_progress( log_entry, f"Fetching Google Drive files via Composio for connector {connector_id}", @@ -547,7 +555,11 @@ async def index_composio_google_drive( }, ) - documents_indexed, documents_skipped, processing_errors = await _index_composio_drive_full_scan( + ( + documents_indexed, + documents_skipped, + processing_errors, + ) = await _index_composio_drive_full_scan( session=session, composio_connector=composio_connector, connector_id=connector_id, @@ -580,9 +592,13 @@ async def index_composio_google_drive( await update_connector_last_indexed(session, connector, update_last_indexed) # Final commit - logger.info(f"Final commit: Total {documents_indexed} Google Drive files processed") + logger.info( + f"Final commit: Total {documents_indexed} Google Drive files processed" + ) await session.commit() - logger.info("Successfully committed all Composio Google Drive document changes to database") + logger.info( + "Successfully committed all Composio Google Drive document changes to database" + ) # Handle processing errors error_message = None @@ -731,7 +747,9 @@ async def _index_composio_drive_delta_sync( processing_errors.append(error_msg) documents_skipped += 1 - logger.info(f"Delta sync complete: {documents_indexed} indexed, {documents_skipped} skipped") + logger.info( + f"Delta sync complete: {documents_indexed} indexed, {documents_skipped} skipped" + ) return documents_indexed, documents_skipped, processing_errors @@ -858,20 +876,18 @@ async def _index_composio_drive_full_scan( logger.info("No Google Drive files found") return 0, 0, [] - logger.info(f"Found {len(all_files)} Google Drive files to index via Composio (full scan)") + logger.info( + f"Found {len(all_files)} Google Drive files to index via Composio (full scan)" + ) for file_info in all_files: try: # Handle both standard Google API and potential Composio variations file_id = file_info.get("id", "") or file_info.get("fileId", "") file_name = ( - file_info.get("name", "") - or file_info.get("fileName", "") - or "Untitled" - ) - mime_type = file_info.get("mimeType", "") or file_info.get( - "mime_type", "" + file_info.get("name", "") or file_info.get("fileName", "") or "Untitled" ) + mime_type = file_info.get("mimeType", "") or file_info.get("mime_type", "") if not file_id: documents_skipped += 1 @@ -901,7 +917,9 @@ async def _index_composio_drive_full_scan( # Batch commit every 10 documents if documents_indexed > 0 and documents_indexed % 10 == 0: - logger.info(f"Committing batch: {documents_indexed} Google Drive files processed so far") + logger.info( + f"Committing batch: {documents_indexed} Google Drive files processed so far" + ) await session.commit() except Exception as e: @@ -910,7 +928,9 @@ async def _index_composio_drive_full_scan( processing_errors.append(error_msg) documents_skipped += 1 - logger.info(f"Full scan complete: {documents_indexed} indexed, {documents_skipped} skipped") + logger.info( + f"Full scan complete: {documents_indexed} indexed, {documents_skipped} skipped" + ) return documents_indexed, documents_skipped, processing_errors @@ -948,9 +968,7 @@ async def _process_single_drive_file( content, content_error = await composio_connector.get_drive_file_content(file_id) if content_error or not content: - logger.warning( - f"Could not get content for file {file_name}: {content_error}" - ) + logger.warning(f"Could not get content for file {file_name}: {content_error}") # Use metadata as content fallback markdown_content = f"# {file_name}\n\n" markdown_content += f"**File ID:** {file_id}\n" @@ -985,9 +1003,7 @@ async def _process_single_drive_file( return 0, 1, processing_errors # Skipped # Update existing document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) + user_llm = await get_user_long_context_llm(session, user_id, search_space_id) if user_llm: document_metadata = { @@ -1003,12 +1019,8 @@ async def _process_single_drive_file( markdown_content, user_llm, document_metadata ) else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) + summary_content = f"Google Drive File: {file_name}\n\nType: {mime_type}" + summary_embedding = config.embedding_model_instance.embed(summary_content) chunks = await create_document_chunks(markdown_content) @@ -1030,9 +1042,7 @@ async def _process_single_drive_file( return 1, 0, processing_errors # Indexed # Create new document - user_llm = await get_user_long_context_llm( - session, user_id, search_space_id - ) + user_llm = await get_user_long_context_llm(session, user_id, search_space_id) if user_llm: document_metadata = { @@ -1048,12 +1058,8 @@ async def _process_single_drive_file( markdown_content, user_llm, document_metadata ) else: - summary_content = ( - f"Google Drive File: {file_name}\n\nType: {mime_type}" - ) - summary_embedding = config.embedding_model_instance.embed( - summary_content - ) + summary_content = f"Google Drive File: {file_name}\n\nType: {mime_type}" + summary_embedding = config.embedding_model_instance.embed(summary_content) chunks = await create_document_chunks(markdown_content) @@ -1159,4 +1165,3 @@ async def _fetch_folder_files_recursively( except Exception as e: logger.error(f"Error in recursive folder fetch: {e!s}") return all_files - diff --git a/surfsense_backend/app/connectors/google_calendar_connector.py b/surfsense_backend/app/connectors/google_calendar_connector.py index ac60b02a8..d8160cf25 100644 --- a/surfsense_backend/app/connectors/google_calendar_connector.py +++ b/surfsense_backend/app/connectors/google_calendar_connector.py @@ -144,7 +144,10 @@ class GoogleCalendarConnector: except Exception as e: error_str = str(e) # Check if this is an invalid_grant error (token expired/revoked) - if "invalid_grant" in error_str.lower() or "token has been expired or revoked" in error_str.lower(): + if ( + "invalid_grant" in error_str.lower() + or "token has been expired or revoked" in error_str.lower() + ): raise Exception( "Google Calendar authentication failed. Please re-authenticate." ) from e @@ -173,7 +176,11 @@ class GoogleCalendarConnector: except Exception as e: error_str = str(e) # If the error already contains a user-friendly re-authentication message, preserve it - if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + if ( + "re-authenticate" in error_str.lower() + or "expired or been revoked" in error_str.lower() + or "authentication failed" in error_str.lower() + ): raise Exception(error_str) from e raise Exception(f"Failed to create Google Calendar service: {e!s}") from e @@ -283,7 +290,11 @@ class GoogleCalendarConnector: except Exception as e: error_str = str(e) # If the error already contains a user-friendly re-authentication message, preserve it - if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + if ( + "re-authenticate" in error_str.lower() + or "expired or been revoked" in error_str.lower() + or "authentication failed" in error_str.lower() + ): return [], error_str return [], f"Error fetching events: {e!s}" diff --git a/surfsense_backend/app/connectors/google_gmail_connector.py b/surfsense_backend/app/connectors/google_gmail_connector.py index c86a96413..7c7262bff 100644 --- a/surfsense_backend/app/connectors/google_gmail_connector.py +++ b/surfsense_backend/app/connectors/google_gmail_connector.py @@ -143,7 +143,10 @@ class GoogleGmailConnector: except Exception as e: error_str = str(e) # Check if this is an invalid_grant error (token expired/revoked) - if "invalid_grant" in error_str.lower() or "token has been expired or revoked" in error_str.lower(): + if ( + "invalid_grant" in error_str.lower() + or "token has been expired or revoked" in error_str.lower() + ): raise Exception( "Gmail authentication failed. Please re-authenticate." ) from e @@ -172,7 +175,11 @@ class GoogleGmailConnector: except Exception as e: error_str = str(e) # If the error already contains a user-friendly re-authentication message, preserve it - if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + if ( + "re-authenticate" in error_str.lower() + or "expired or been revoked" in error_str.lower() + or "authentication failed" in error_str.lower() + ): raise Exception(error_str) from e raise Exception(f"Failed to create Gmail service: {e!s}") from e @@ -237,7 +244,11 @@ class GoogleGmailConnector: except Exception as e: error_str = str(e) # If the error already contains a user-friendly re-authentication message, preserve it - if "re-authenticate" in error_str.lower() or "expired or been revoked" in error_str.lower() or "authentication failed" in error_str.lower(): + if ( + "re-authenticate" in error_str.lower() + or "expired or been revoked" in error_str.lower() + or "authentication failed" in error_str.lower() + ): return [], error_str return [], f"Error fetching messages list: {e!s}" diff --git a/surfsense_backend/app/routes/composio_routes.py b/surfsense_backend/app/routes/composio_routes.py index 14ef9efcf..a28361132 100644 --- a/surfsense_backend/app/routes/composio_routes.py +++ b/surfsense_backend/app/routes/composio_routes.py @@ -350,10 +350,10 @@ async def composio_callback( count = await count_connectors_of_type( session, connector_type, space_id, user_id ) - + # Generate base name (e.g., "Gmail", "Google Drive") base_name = get_base_name_for_type(connector_type) - + # Format: "Gmail (Composio) 1", "Gmail (Composio) 2", etc. if count == 0: connector_name = f"{base_name} (Composio) 1" diff --git a/surfsense_backend/app/routes/search_source_connectors_routes.py b/surfsense_backend/app/routes/search_source_connectors_routes.py index 487a689dc..191c6f954 100644 --- a/surfsense_backend/app/routes/search_source_connectors_routes.py +++ b/surfsense_backend/app/routes/search_source_connectors_routes.py @@ -662,16 +662,16 @@ async def index_connector_content( # Use UTC for "today" to match how last_indexed_at is stored today_utc = datetime.now(UTC).replace(tzinfo=None).date() last_indexed_date = last_indexed_naive.date() - + if last_indexed_date == today_utc: # If last indexed today, go back 1 day to ensure we don't miss anything indexing_from = (today_utc - timedelta(days=1)).strftime("%Y-%m-%d") else: indexing_from = last_indexed_naive.strftime("%Y-%m-%d") else: - indexing_from = (datetime.now(UTC).replace(tzinfo=None) - timedelta(days=365)).strftime( - "%Y-%m-%d" - ) + indexing_from = ( + datetime.now(UTC).replace(tzinfo=None) - timedelta(days=365) + ).strftime("%Y-%m-%d") else: indexing_from = start_date @@ -683,7 +683,7 @@ async def index_connector_content( ]: # Default to today if no end_date provided (users can manually select future dates) indexing_to = today_str if end_date is None else end_date - + # If start_date and end_date are the same, adjust end_date to be one day later # to ensure valid date range (start_date must be strictly before end_date) if indexing_from == indexing_to: @@ -1251,16 +1251,19 @@ async def _run_indexing_with_notifications( if error_or_warning: # Check if this is a duplicate warning or empty result (success cases) or an actual error # Handle both normal and Composio calendar connectors - error_or_warning_lower = str(error_or_warning).lower() if error_or_warning else "" + error_or_warning_lower = ( + str(error_or_warning).lower() if error_or_warning else "" + ) is_duplicate_warning = "skipped (duplicate)" in error_or_warning_lower # "No X found" messages are success cases - sync worked, just found nothing in date range - is_empty_result = ("no " in error_or_warning_lower and "found" in error_or_warning_lower) - + is_empty_result = ( + "no " in error_or_warning_lower + and "found" in error_or_warning_lower + ) + if is_duplicate_warning or is_empty_result: # These are success cases - sync worked, just found nothing new - logger.info( - f"Indexing completed successfully: {error_or_warning}" - ) + logger.info(f"Indexing completed successfully: {error_or_warning}") # Still update timestamp so ElectricSQL syncs and clears "Syncing" UI if update_timestamp_func: await update_timestamp_func(session, connector_id) @@ -1269,7 +1272,11 @@ async def _run_indexing_with_notifications( # Refresh notification to ensure it's not stale after timestamp update commit await session.refresh(notification) # For empty results, use a cleaner message - notification_message = "No new items found in date range" if is_empty_result else error_or_warning + notification_message = ( + "No new items found in date range" + if is_empty_result + else error_or_warning + ) await NotificationService.connector_indexing.notify_indexing_completed( session=session, notification=notification, diff --git a/surfsense_backend/app/services/composio_service.py b/surfsense_backend/app/services/composio_service.py index 3ea2d1bf2..ad7841a8b 100644 --- a/surfsense_backend/app/services/composio_service.py +++ b/surfsense_backend/app/services/composio_service.py @@ -81,7 +81,9 @@ class ComposioService: # Default download directory for files from Composio DEFAULT_DOWNLOAD_DIR = "/tmp/composio_downloads" - def __init__(self, api_key: str | None = None, file_download_dir: str | None = None): + def __init__( + self, api_key: str | None = None, file_download_dir: str | None = None + ): """ Initialize the Composio service. @@ -90,18 +92,20 @@ class ComposioService: file_download_dir: Directory for downloaded files. Defaults to /tmp/composio_downloads. """ import os - + self.api_key = api_key or config.COMPOSIO_API_KEY if not self.api_key: raise ValueError("COMPOSIO_API_KEY is required but not configured") - + # Set up download directory self.file_download_dir = file_download_dir or self.DEFAULT_DOWNLOAD_DIR os.makedirs(self.file_download_dir, exist_ok=True) - + # Initialize Composio client with download directory # Per docs: file_download_dir configures where files are downloaded - self.client = Composio(api_key=self.api_key, file_download_dir=self.file_download_dir) + self.client = Composio( + api_key=self.api_key, file_download_dir=self.file_download_dir + ) @staticmethod def is_enabled() -> bool: @@ -512,7 +516,7 @@ class ComposioService: Tuple of (file content bytes, error message). """ from pathlib import Path - + try: result = await self.execute_tool( connected_account_id=connected_account_id, @@ -532,35 +536,37 @@ class ComposioService: # Response structure: {data: {...}, error: ..., successful: ...} # The actual file info is nested inside data["data"] file_path = None - + if isinstance(data, dict): # Handle nested response structure: data contains {data, error, successful} # The actual file info is in data["data"] inner_data = data if "data" in data and isinstance(data["data"], dict): inner_data = data["data"] - logger.debug(f"Found nested data structure. Inner keys: {list(inner_data.keys())}") + logger.debug( + f"Found nested data structure. Inner keys: {list(inner_data.keys())}" + ) elif "successful" in data and "data" in data: # Standard Composio response wrapper inner_data = data["data"] if data["data"] else data - + # Try documented fields: file_path, downloaded_file_content, path, uri file_path = ( - inner_data.get("file_path") or - inner_data.get("downloaded_file_content") or - inner_data.get("path") or - inner_data.get("uri") + inner_data.get("file_path") + or inner_data.get("downloaded_file_content") + or inner_data.get("path") + or inner_data.get("uri") ) - + # Handle nested dict case where downloaded_file_content contains the path if isinstance(file_path, dict): file_path = ( - file_path.get("file_path") or - file_path.get("downloaded_file_content") or - file_path.get("path") or - file_path.get("uri") + file_path.get("file_path") + or file_path.get("downloaded_file_content") + or file_path.get("path") + or file_path.get("uri") ) - + # If still no path, check if inner_data itself has the nested structure if not file_path and isinstance(inner_data, dict): for key in ["downloaded_file_content", "file_path", "path", "uri"]: @@ -572,15 +578,17 @@ class ComposioService: elif isinstance(val, dict): # One more level of nesting file_path = ( - val.get("file_path") or - val.get("downloaded_file_content") or - val.get("path") or - val.get("uri") + val.get("file_path") + or val.get("downloaded_file_content") + or val.get("path") + or val.get("uri") ) if file_path: break - - logger.debug(f"Composio response keys: {list(data.keys())}, inner keys: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}, extracted path: {file_path}") + + logger.debug( + f"Composio response keys: {list(data.keys())}, inner keys: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}, extracted path: {file_path}" + ) elif isinstance(data, str): # Direct string response (could be path or content) file_path = data @@ -591,24 +599,31 @@ class ComposioService: # Read file from the path if file_path and isinstance(file_path, str): path_obj = Path(file_path) - + # Check if it's a valid file path (absolute or in .composio directory) - if path_obj.is_absolute() or '.composio' in str(path_obj): + if path_obj.is_absolute() or ".composio" in str(path_obj): try: if path_obj.exists(): content = path_obj.read_bytes() - logger.info(f"Successfully read {len(content)} bytes from Composio file: {file_path}") + logger.info( + f"Successfully read {len(content)} bytes from Composio file: {file_path}" + ) return content, None else: - logger.warning(f"File path from Composio does not exist: {file_path}") + logger.warning( + f"File path from Composio does not exist: {file_path}" + ) return None, f"File not found at path: {file_path}" except Exception as e: - logger.error(f"Failed to read file from Composio path {file_path}: {e!s}") + logger.error( + f"Failed to read file from Composio path {file_path}: {e!s}" + ) return None, f"Failed to read file: {e!s}" else: # Not a file path - might be base64 encoded content try: import base64 + content = base64.b64decode(file_path) return content, None except Exception: @@ -625,8 +640,11 @@ class ComposioService: f"Inner data keys: {list(inner_data.keys()) if isinstance(inner_data, dict) else type(inner_data).__name__}, " f"Full inner data: {inner_data}" ) - return None, f"No file path in Composio response. Keys: {list(data.keys())}, inner: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}" - + return ( + None, + f"No file path in Composio response. Keys: {list(data.keys())}, inner: {list(inner_data.keys()) if isinstance(inner_data, dict) else 'N/A'}", + ) + return None, f"Unexpected data type from Composio: {type(data).__name__}" except Exception as e: @@ -638,14 +656,14 @@ class ComposioService: ) -> tuple[str | None, str | None]: """ Get the starting page token for Google Drive change tracking. - + This token represents the current state and is used for future delta syncs. Per Composio docs: Use GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN to get initial token. - + Args: connected_account_id: Composio connected account ID. entity_id: The entity/user ID that owns the connected account. - + Returns: Tuple of (start_page_token, error message). """ @@ -656,27 +674,27 @@ class ComposioService: params={}, entity_id=entity_id, ) - + if not result.get("success"): return None, result.get("error", "Unknown error") - + data = result.get("data", {}) # Handle nested response: {data: {startPageToken: ...}, successful: ...} if isinstance(data, dict): inner_data = data.get("data", data) token = ( - inner_data.get("startPageToken") or - inner_data.get("start_page_token") or - data.get("startPageToken") or - data.get("start_page_token") + inner_data.get("startPageToken") + or inner_data.get("start_page_token") + or data.get("startPageToken") + or data.get("start_page_token") ) if token: logger.info(f"Got Drive start page token: {token}") return token, None - + logger.warning(f"Could not extract start page token from response: {data}") return None, "No start page token in response" - + except Exception as e: logger.error(f"Failed to get Drive start page token: {e!s}") return None, str(e) @@ -691,18 +709,18 @@ class ComposioService: ) -> tuple[list[dict[str, Any]], str | None, str | None]: """ List changes in Google Drive since the given page token. - + Per Composio docs: GOOGLEDRIVE_LIST_CHANGES tracks modifications to files/folders. If pageToken is not provided, it auto-fetches the current start page token. Response includes nextPageToken for pagination and newStartPageToken for future syncs. - + Args: connected_account_id: Composio connected account ID. entity_id: The entity/user ID that owns the connected account. page_token: Page token from previous sync (optional - will auto-fetch if not provided). page_size: Number of changes per page. include_removed: Whether to include removed items in the response. - + Returns: Tuple of (changes list, new_start_page_token, error message). """ @@ -713,42 +731,44 @@ class ComposioService: } if page_token: params["pageToken"] = page_token - + result = await self.execute_tool( connected_account_id=connected_account_id, tool_name="GOOGLEDRIVE_LIST_CHANGES", params=params, entity_id=entity_id, ) - + if not result.get("success"): return [], None, result.get("error", "Unknown error") - + data = result.get("data", {}) - + # Handle nested response structure changes = [] new_start_token = None - + if isinstance(data, dict): inner_data = data.get("data", data) changes = inner_data.get("changes", []) or data.get("changes", []) - + # Get the token for next sync # newStartPageToken is returned when all changes have been fetched # nextPageToken is for pagination within the current fetch new_start_token = ( - inner_data.get("newStartPageToken") or - inner_data.get("new_start_page_token") or - inner_data.get("nextPageToken") or - inner_data.get("next_page_token") or - data.get("newStartPageToken") or - data.get("nextPageToken") + inner_data.get("newStartPageToken") + or inner_data.get("new_start_page_token") + or inner_data.get("nextPageToken") + or inner_data.get("next_page_token") + or data.get("newStartPageToken") + or data.get("nextPageToken") ) - - logger.info(f"Got {len(changes)} Drive changes, new token: {new_start_token[:20] if new_start_token else 'None'}...") + + logger.info( + f"Got {len(changes)} Drive changes, new token: {new_start_token[:20] if new_start_token else 'None'}..." + ) return changes, new_start_token, None - + except Exception as e: logger.error(f"Failed to list Drive changes: {e!s}") return [], None, str(e) diff --git a/surfsense_backend/app/services/notification_service.py b/surfsense_backend/app/services/notification_service.py index 9fcf807e7..04f39d8ef 100644 --- a/surfsense_backend/app/services/notification_service.py +++ b/surfsense_backend/app/services/notification_service.py @@ -385,7 +385,9 @@ class ConnectorIndexingNotificationHandler(BaseNotificationHandler): metadata_updates = { "indexed_count": indexed_count, - "sync_stage": "completed" if (not error_message or is_warning or indexed_count > 0) else "failed", + "sync_stage": "completed" + if (not error_message or is_warning or indexed_count > 0) + else "failed", "error_message": error_message, } diff --git a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py index ef1f821d2..2365ff984 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_calendar_indexer.py @@ -208,7 +208,7 @@ async def index_google_calendar_events( # Use provided dates (including future dates) start_date_str = start_date end_date_str = end_date - + # If start_date and end_date are the same, adjust end_date to be one day later # to ensure valid date range (start_date must be strictly before end_date) if start_date_str == end_date_str: @@ -269,10 +269,14 @@ async def index_google_calendar_events( # Check if this is an authentication error that requires re-authentication error_message = error error_type = "APIError" - if "re-authenticate" in error.lower() or "expired or been revoked" in error.lower() or "authentication failed" in error.lower(): + if ( + "re-authenticate" in error.lower() + or "expired or been revoked" in error.lower() + or "authentication failed" in error.lower() + ): error_message = "Google Calendar authentication failed. Please re-authenticate." error_type = "AuthenticationError" - + await task_logger.log_task_failure( log_entry, error_message, @@ -290,7 +294,9 @@ async def index_google_calendar_events( documents_indexed = 0 documents_skipped = 0 skipped_events = [] - duplicate_content_count = 0 # Track events skipped due to duplicate content_hash + duplicate_content_count = ( + 0 # Track events skipped due to duplicate content_hash + ) for event in events: try: @@ -417,7 +423,7 @@ async def index_google_calendar_events( duplicate_by_content = await check_duplicate_document_by_hash( session, content_hash ) - + if duplicate_by_content: # A document with the same content already exists (likely from Composio connector) logger.info( @@ -528,7 +534,10 @@ async def index_google_calendar_events( await session.commit() except Exception as e: # Handle any remaining integrity errors gracefully (race conditions, etc.) - if "duplicate key value violates unique constraint" in str(e).lower() or "uniqueviolationerror" in str(e).lower(): + if ( + "duplicate key value violates unique constraint" in str(e).lower() + or "uniqueviolationerror" in str(e).lower() + ): logger.warning( f"Duplicate content_hash detected during final commit. " f"This may occur if the same event was indexed by multiple connectors. " diff --git a/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py index af180c36b..f50e149d3 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_drive_indexer.py @@ -578,7 +578,7 @@ async def _check_rename_only_update( - (True, message): Only filename changed, document was updated - (False, None): Content changed or new file, needs full processing """ - from sqlalchemy import cast, select, String + from sqlalchemy import String, cast, select from sqlalchemy.orm.attributes import flag_modified from app.db import Document @@ -603,7 +603,8 @@ async def _check_rename_only_update( select(Document).where( Document.search_space_id == search_space_id, Document.document_type == DocumentType.GOOGLE_DRIVE_FILE, - cast(Document.document_metadata["google_drive_file_id"], String) == file_id, + cast(Document.document_metadata["google_drive_file_id"], String) + == file_id, ) ) existing_document = result.scalar_one_or_none() @@ -755,7 +756,7 @@ async def _remove_document(session: AsyncSession, file_id: str, search_space_id: Handles both new (file_id-based) and legacy (filename-based) hash schemes. """ - from sqlalchemy import cast, select, String + from sqlalchemy import String, cast, select from app.db import Document @@ -774,7 +775,8 @@ async def _remove_document(session: AsyncSession, file_id: str, search_space_id: select(Document).where( Document.search_space_id == search_space_id, Document.document_type == DocumentType.GOOGLE_DRIVE_FILE, - cast(Document.document_metadata["google_drive_file_id"], String) == file_id, + cast(Document.document_metadata["google_drive_file_id"], String) + == file_id, ) ) existing_document = result.scalar_one_or_none() diff --git a/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py b/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py index 6a3057437..08d2904d6 100644 --- a/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py +++ b/surfsense_backend/app/tasks/connector_indexers/google_gmail_indexer.py @@ -173,15 +173,16 @@ async def index_google_gmail_messages( # Check if this is an authentication error that requires re-authentication error_message = error error_type = "APIError" - if "re-authenticate" in error.lower() or "expired or been revoked" in error.lower() or "authentication failed" in error.lower(): + if ( + "re-authenticate" in error.lower() + or "expired or been revoked" in error.lower() + or "authentication failed" in error.lower() + ): error_message = "Gmail authentication failed. Please re-authenticate." error_type = "AuthenticationError" - + await task_logger.log_task_failure( - log_entry, - error_message, - error, - {"error_type": error_type} + log_entry, error_message, error, {"error_type": error_type} ) return 0, error_message diff --git a/surfsense_web/components/assistant-ui/connector-popup.tsx b/surfsense_web/components/assistant-ui/connector-popup.tsx index 68a548409..293d4a243 100644 --- a/surfsense_web/components/assistant-ui/connector-popup.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup.tsx @@ -18,7 +18,10 @@ import { ConnectorDialogHeader } from "./connector-popup/components/connector-di import { ConnectorConnectView } from "./connector-popup/connector-configs/views/connector-connect-view"; import { ConnectorEditView } from "./connector-popup/connector-configs/views/connector-edit-view"; import { IndexingConfigurationView } from "./connector-popup/connector-configs/views/indexing-configuration-view"; -import { COMPOSIO_CONNECTORS, OAUTH_CONNECTORS } from "./connector-popup/constants/connector-constants"; +import { + COMPOSIO_CONNECTORS, + OAUTH_CONNECTORS, +} from "./connector-popup/constants/connector-constants"; import { useConnectorDialog } from "./connector-popup/hooks/use-connector-dialog"; import { useIndexingConnectors } from "./connector-popup/hooks/use-indexing-connectors"; import { ActiveConnectorsTab } from "./connector-popup/tabs/active-connectors-tab"; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx index ce5133a9d..6f282d892 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-calendar-config.tsx @@ -12,4 +12,3 @@ interface ComposioCalendarConfigProps { export const ComposioCalendarConfig: FC = () => { return
; }; - diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx index 0ab0869ff..239125565 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-drive-config.tsx @@ -1,6 +1,14 @@ "use client"; -import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation, X } from "lucide-react"; +import { + File, + FileSpreadsheet, + FileText, + FolderClosed, + Image, + Presentation, + X, +} from "lucide-react"; import type { FC } from "react"; import { useEffect, useState } from "react"; import { ComposioDriveFolderTree } from "@/components/connectors/composio-drive-folder-tree"; @@ -85,7 +93,10 @@ function getFileIconFromName(fileName: string, className: string = "size-3.5 shr return ; } -export const ComposioDriveConfig: FC = ({ connector, onConfigChange }) => { +export const ComposioDriveConfig: FC = ({ + connector, + onConfigChange, +}) => { const isIndexable = connector.config?.is_indexable as boolean; // Initialize with existing selected folders and files from connector config @@ -184,9 +195,7 @@ export const ComposioDriveConfig: FC = ({ connector, o ); } if (selectedFiles.length > 0) { - parts.push( - `${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}` - ); + parts.push(`${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}`); } return parts.length > 0 ? `(${parts.join(", ")})` : ""; })()} @@ -329,13 +338,10 @@ export const ComposioDriveConfig: FC = ({ connector, o - handleIndexingOptionChange("include_subfolders", checked) - } + onCheckedChange={(checked) => handleIndexingOptionChange("include_subfolders", checked)} />
); }; - diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx index 4664e3e64..494e1362f 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/composio-gmail-config.tsx @@ -12,4 +12,3 @@ interface ComposioGmailConfigProps { export const ComposioGmailConfig: FC = () => { return
; }; - diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx index b6cfb39ae..383f6ce0e 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/components/google-drive-config.tsx @@ -1,6 +1,14 @@ "use client"; -import { File, FileSpreadsheet, FileText, FolderClosed, Image, Presentation, X } from "lucide-react"; +import { + File, + FileSpreadsheet, + FileText, + FolderClosed, + Image, + Presentation, + X, +} from "lucide-react"; import type { FC } from "react"; import { useEffect, useState } from "react"; import { GoogleDriveFolderTree } from "@/components/connectors/google-drive-folder-tree"; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx index 8f58db542..5668d398e 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/connector-edit-view.tsx @@ -276,7 +276,8 @@ export const ConnectorEditView: FC = ({ Re-indexing runs in the background

- You can continue using SurfSense while we sync your data. Check inbox for updates. + You can continue using SurfSense while we sync your data. Check inbox for + updates.

diff --git a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx index 019e6b37f..684f03252 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connector-configs/views/indexing-configuration-view.tsx @@ -170,13 +170,13 @@ export const IndexingConfigurationView: FC = ({ {/* Periodic sync - not shown for Google Drive (regular and Composio) */} {config.connectorType !== "GOOGLE_DRIVE_CONNECTOR" && config.connectorType !== "COMPOSIO_GOOGLE_DRIVE_CONNECTOR" && ( - - )} + + )} )} @@ -189,7 +189,8 @@ export const IndexingConfigurationView: FC = ({

Indexing runs in the background

- You can continue using SurfSense while we sync your data. Check inbox for updates. + You can continue using SurfSense while we sync your data. Check inbox for + updates.

diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts index 9a7f15b0c..639d0f7ed 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-connector-dialog.ts @@ -328,11 +328,7 @@ export const useConnectorDialog = () => { return; } - if ( - params.success === "true" && - searchSpaceId && - params.modal === "connectors" - ) { + if (params.success === "true" && searchSpaceId && params.modal === "connectors") { refetchAllConnectors().then((result) => { if (!result.data) return; @@ -346,16 +342,12 @@ export const useConnectorDialog = () => { if (params.connectorId) { const connectorId = parseInt(params.connectorId, 10); newConnector = result.data.find((c: SearchSourceConnector) => c.id === connectorId); - + // If we found the connector, find the matching OAuth/Composio connector by type if (newConnector) { oauthConnector = - OAUTH_CONNECTORS.find( - (c) => c.connectorType === newConnector!.connector_type - ) || - COMPOSIO_CONNECTORS.find( - (c) => c.connectorType === newConnector!.connector_type - ); + OAUTH_CONNECTORS.find((c) => c.connectorType === newConnector!.connector_type) || + COMPOSIO_CONNECTORS.find((c) => c.connectorType === newConnector!.connector_type); } } @@ -364,7 +356,7 @@ export const useConnectorDialog = () => { oauthConnector = OAUTH_CONNECTORS.find((c) => c.id === params.connector) || COMPOSIO_CONNECTORS.find((c) => c.id === params.connector); - + if (oauthConnector) { newConnector = result.data.find( (c: SearchSourceConnector) => c.connector_type === oauthConnector!.connectorType diff --git a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts index 289da475d..19741e020 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts +++ b/surfsense_web/components/assistant-ui/connector-popup/hooks/use-indexing-connectors.ts @@ -68,9 +68,7 @@ export function useIndexingConnectors( // Only check connector_indexing notifications if (item.type !== "connector_indexing") continue; - const metadata = isConnectorIndexingMetadata(item.metadata) - ? item.metadata - : null; + const metadata = isConnectorIndexingMetadata(item.metadata) ? item.metadata : null; if (!metadata) continue; // If status is "in_progress", add connector to indexing set From 7ccb52dc76a45348e965369ad36e1e2314e7a0c2 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:18:28 +0530 Subject: [PATCH 25/51] feat: add general settings management to search space settings - Introduced a new GeneralSettingsManager component for managing search space name and description. - Updated the settings navigation to include a general section with an icon and description. - Modified the SettingsPage to default to the general settings section. - Enhanced the CreateSearchSpaceDialog for improved UI and accessibility. - Updated English and Chinese translations for new settings labels and descriptions. --- .../[search_space_id]/settings/page.tsx | 13 +- .../ui/dialogs/CreateSearchSpaceDialog.tsx | 37 ++-- .../settings/general-settings-manager.tsx | 200 ++++++++++++++++++ surfsense_web/messages/en.json | 14 +- surfsense_web/messages/zh.json | 14 +- 5 files changed, 258 insertions(+), 20 deletions(-) create mode 100644 surfsense_web/components/settings/general-settings-manager.tsx diff --git a/surfsense_web/app/dashboard/[search_space_id]/settings/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/settings/page.tsx index fb2f49317..6d5787ed9 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/settings/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/settings/page.tsx @@ -10,11 +10,13 @@ import { MessageSquare, Settings, X, + FileText, } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; import { useParams, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useCallback, useEffect, useState } from "react"; +import { GeneralSettingsManager } from "@/components/settings/general-settings-manager"; import { LLMRoleManager } from "@/components/settings/llm-role-manager"; import { ModelConfigManager } from "@/components/settings/model-config-manager"; import { PromptConfigManager } from "@/components/settings/prompt-config-manager"; @@ -30,6 +32,12 @@ interface SettingsNavItem { } const settingsNavItems: SettingsNavItem[] = [ + { + id: "general", + labelKey: "nav_general", + descriptionKey: "nav_general_desc", + icon: FileText, + }, { id: "models", labelKey: "nav_agent_configs", @@ -262,6 +270,9 @@ function SettingsContent({ ease: [0.4, 0, 0.2, 1], }} > + {activeSection === "general" && ( + + )} {activeSection === "models" && } {activeSection === "roles" && } {activeSection === "prompts" && } @@ -277,7 +288,7 @@ export default function SettingsPage() { const router = useRouter(); const params = useParams(); const searchSpaceId = Number(params.search_space_id); - const [activeSection, setActiveSection] = useState("models"); + const [activeSection, setActiveSection] = useState("general"); const [isSidebarOpen, setIsSidebarOpen] = useState(false); // Track settings section view diff --git a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx index 7e962536f..427cbd31b 100644 --- a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx +++ b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx @@ -82,29 +82,31 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac return ( - - -
-
- + + +
+
+
-
- {t("create_title")} - {t("create_description")} +
+ {t("create_title")} + + {t("create_description")} +
- + ( - {t("name_label")} + {t("name_label")} - + @@ -116,38 +118,39 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac name="description" render={({ field }) => ( - + {t("description_label")}{" "} ({tCommon("optional")}) - + )} /> - + - + +
+ + {hasChanges && ( + + + + {t("general_unsaved_changes")} + + + )} +
+ ); +} + diff --git a/surfsense_web/messages/en.json b/surfsense_web/messages/en.json index 8ca382669..108d93262 100644 --- a/surfsense_web/messages/en.json +++ b/surfsense_web/messages/en.json @@ -723,12 +723,24 @@ "searchSpaceSettings": { "title": "Search Space Settings", "back_to_app": "Back to app", + "nav_general": "General", + "nav_general_desc": "Name, description & basic info", "nav_agent_configs": "Agent Configs", "nav_agent_configs_desc": "LLM models with prompts & citations", "nav_role_assignments": "Role Assignments", "nav_role_assignments_desc": "Assign configs to agent roles", "nav_system_instructions": "System Instructions", - "nav_system_instructions_desc": "SearchSpace-wide AI instructions" + "nav_system_instructions_desc": "SearchSpace-wide AI instructions", + "general_name_label": "Name", + "general_name_placeholder": "Enter search space name", + "general_name_description": "A unique name for your search space.", + "general_description_label": "Description", + "general_description_placeholder": "Enter search space description", + "general_description_description": "A brief description of what this search space will be used for.", + "general_reset": "Reset Changes", + "general_save": "Save Changes", + "general_saving": "Saving", + "general_unsaved_changes": "You have unsaved changes. Click \"Save Changes\" to apply them." }, "homepage": { "hero_title_part1": "The AI Workspace", diff --git a/surfsense_web/messages/zh.json b/surfsense_web/messages/zh.json index 3769d9dfc..51e378bb2 100644 --- a/surfsense_web/messages/zh.json +++ b/surfsense_web/messages/zh.json @@ -708,12 +708,24 @@ "searchSpaceSettings": { "title": "搜索空间设置", "back_to_app": "返回应用", + "nav_general": "常规", + "nav_general_desc": "名称、描述和基本信息", "nav_agent_configs": "代理配置", "nav_agent_configs_desc": "LLM 模型配置提示词和引用", "nav_role_assignments": "角色分配", "nav_role_assignments_desc": "为代理角色分配配置", "nav_system_instructions": "系统指令", - "nav_system_instructions_desc": "搜索空间级别的 AI 指令" + "nav_system_instructions_desc": "搜索空间级别的 AI 指令", + "general_name_label": "名称", + "general_name_placeholder": "输入搜索空间名称", + "general_name_description": "您的搜索空间的唯一名称。", + "general_description_label": "描述", + "general_description_placeholder": "输入搜索空间描述", + "general_description_description": "此搜索空间用途的简要描述。", + "general_reset": "重置更改", + "general_save": "保存更改", + "general_saving": "保存中...", + "general_unsaved_changes": "您有未保存的更改。点击\"保存更改\"以应用它们。" }, "homepage": { "hero_title_part1": "AI 工作空间", From a51fe2ee692aefe919b38be49288897c349ea01b Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 15:17:35 +0530 Subject: [PATCH 26/51] feat: implement chat archiving functionality in LayoutDataProvider - Added the ability to archive and unarchive chat threads, enhancing user interaction with chat items. - Introduced a new `handleChatArchive` function to manage the archiving state and provide user feedback via toast notifications. - Updated the `ChatItem` type to include an `archived` property for tracking the archive status. - Modified relevant components to support the new archiving feature, including `ChatListItem`, `Sidebar`, and `MobileSidebar`. --- .../layout/providers/LayoutDataProvider.tsx | 28 ++++++++++- .../components/layout/types/layout.types.ts | 1 + .../layout/ui/shell/LayoutShell.tsx | 4 ++ .../layout/ui/sidebar/ChatListItem.tsx | 49 ++++++++++++++----- .../layout/ui/sidebar/MobileSidebar.tsx | 3 ++ .../components/layout/ui/sidebar/Sidebar.tsx | 6 +++ .../layout/ui/sidebar/SidebarHeader.tsx | 4 +- 7 files changed, 81 insertions(+), 14 deletions(-) diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index 9e3f55c97..86d7082ee 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -7,6 +7,7 @@ import { useParams, usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useTheme } from "next-themes"; import { useCallback, useMemo, useState } from "react"; +import { toast } from "sonner"; import { deleteSearchSpaceMutationAtom } from "@/atoms/search-spaces/search-space-mutation.atoms"; import { searchSpacesAtom } from "@/atoms/search-spaces/search-space-query.atoms"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; @@ -21,7 +22,7 @@ import { } from "@/components/ui/dialog"; import { useInbox } from "@/hooks/use-inbox"; import { searchSpacesApiService } from "@/lib/apis/search-spaces-api.service"; -import { deleteThread, fetchThreads } from "@/lib/chat/thread-persistence"; +import { deleteThread, fetchThreads, updateThread } from "@/lib/chat/thread-persistence"; import { cleanupElectric } from "@/lib/electric/client"; import { resetUser, trackLogout } from "@/lib/posthog/events"; import { cacheKeys } from "@/lib/query-client/cache-keys"; @@ -56,6 +57,7 @@ export function LayoutDataProvider({ }: LayoutDataProviderProps) { const t = useTranslations("dashboard"); const tCommon = useTranslations("common"); + const tSidebar = useTranslations("sidebar"); const router = useRouter(); const params = useParams(); const pathname = usePathname(); @@ -154,6 +156,7 @@ export function LayoutDataProvider({ url: `/dashboard/${searchSpaceId}/new-chat/${thread.id}`, visibility: thread.visibility, isOwnThread: thread.is_own_thread, + archived: thread.archived, }; // Split based on visibility, not ownership: @@ -304,6 +307,28 @@ export function LayoutDataProvider({ setShowDeleteChatDialog(true); }, []); + const handleChatArchive = useCallback( + async (chat: ChatItem) => { + const newArchivedState = !chat.archived; + const successMessage = newArchivedState + ? tSidebar("chat_archived") || "Chat archived" + : tSidebar("chat_unarchived") || "Chat restored"; + + try { + await updateThread(chat.id, { archived: newArchivedState }); + toast.success(successMessage); + // Invalidate queries to refresh UI (React Query will only refetch active queries) + queryClient.invalidateQueries({ queryKey: ["threads", searchSpaceId] }); + queryClient.invalidateQueries({ queryKey: ["all-threads", searchSpaceId] }); + queryClient.invalidateQueries({ queryKey: ["search-threads", searchSpaceId] }); + } catch (error) { + console.error("Error archiving thread:", error); + toast.error(tSidebar("error_archiving_chat") || "Failed to archive chat"); + } + }, + [queryClient, searchSpaceId, tSidebar] + ); + const handleSettings = useCallback(() => { router.push(`/dashboard/${searchSpaceId}/settings`); }, [router, searchSpaceId]); @@ -391,6 +416,7 @@ export function LayoutDataProvider({ onNewChat={handleNewChat} onChatSelect={handleChatSelect} onChatDelete={handleChatDelete} + onChatArchive={handleChatArchive} onViewAllSharedChats={handleViewAllSharedChats} onViewAllPrivateChats={handleViewAllPrivateChats} user={{ diff --git a/surfsense_web/components/layout/types/layout.types.ts b/surfsense_web/components/layout/types/layout.types.ts index 3eac64e60..c58fb5b54 100644 --- a/surfsense_web/components/layout/types/layout.types.ts +++ b/surfsense_web/components/layout/types/layout.types.ts @@ -30,6 +30,7 @@ export interface ChatItem { isActive?: boolean; visibility?: "PRIVATE" | "SEARCH_SPACE"; isOwnThread?: boolean; + archived?: boolean; } export interface PageUsage { diff --git a/surfsense_web/components/layout/ui/shell/LayoutShell.tsx b/surfsense_web/components/layout/ui/shell/LayoutShell.tsx index b68719cde..37e4d8ada 100644 --- a/surfsense_web/components/layout/ui/shell/LayoutShell.tsx +++ b/surfsense_web/components/layout/ui/shell/LayoutShell.tsx @@ -26,6 +26,7 @@ interface LayoutShellProps { onNewChat: () => void; onChatSelect: (chat: ChatItem) => void; onChatDelete?: (chat: ChatItem) => void; + onChatArchive?: (chat: ChatItem) => void; onViewAllSharedChats?: () => void; onViewAllPrivateChats?: () => void; user: User; @@ -59,6 +60,7 @@ export function LayoutShell({ onNewChat, onChatSelect, onChatDelete, + onChatArchive, onViewAllSharedChats, onViewAllPrivateChats, user, @@ -107,6 +109,7 @@ export function LayoutShell({ onNewChat={onNewChat} onChatSelect={onChatSelect} onChatDelete={onChatDelete} + onChatArchive={onChatArchive} onViewAllSharedChats={onViewAllSharedChats} onViewAllPrivateChats={onViewAllPrivateChats} user={user} @@ -155,6 +158,7 @@ export function LayoutShell({ onNewChat={onNewChat} onChatSelect={onChatSelect} onChatDelete={onChatDelete} + onChatArchive={onChatArchive} onViewAllSharedChats={onViewAllSharedChats} onViewAllPrivateChats={onViewAllPrivateChats} user={user} diff --git a/surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx b/surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx index 5dd9c2cfa..12def741b 100644 --- a/surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx +++ b/surfsense_web/components/layout/ui/sidebar/ChatListItem.tsx @@ -1,12 +1,13 @@ "use client"; -import { MessageSquare, MoreHorizontal } from "lucide-react"; +import { ArchiveIcon, MessageSquare, MoreHorizontal, RotateCcwIcon, Trash2 } from "lucide-react"; import { useTranslations } from "next-intl"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, + DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { cn } from "@/lib/utils"; @@ -14,11 +15,13 @@ import { cn } from "@/lib/utils"; interface ChatListItemProps { name: string; isActive?: boolean; + archived?: boolean; onClick?: () => void; + onArchive?: () => void; onDelete?: () => void; } -export function ChatListItem({ name, isActive, onClick, onDelete }: ChatListItemProps) { +export function ChatListItem({ name, isActive, archived, onClick, onArchive, onDelete }: ChatListItemProps) { const t = useTranslations("sidebar"); return ( @@ -48,15 +51,39 @@ export function ChatListItem({ name, isActive, onClick, onDelete }: ChatListItem - { - e.stopPropagation(); - onDelete?.(); - }} - className="text-destructive focus:text-destructive" - > - {t("delete")} - + {onArchive && ( + { + e.stopPropagation(); + onArchive(); + }} + > + {archived ? ( + <> + + {t("unarchive") || "Restore"} + + ) : ( + <> + + {t("archive") || "Archive"} + + )} + + )} + {onArchive && onDelete && } + {onDelete && ( + { + e.stopPropagation(); + onDelete(); + }} + className="text-destructive focus:text-destructive" + > + + {t("delete")} + + )}
diff --git a/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx index 7dd01d75a..85f907611 100644 --- a/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx @@ -25,6 +25,7 @@ interface MobileSidebarProps { onNewChat: () => void; onChatSelect: (chat: ChatItem) => void; onChatDelete?: (chat: ChatItem) => void; + onChatArchive?: (chat: ChatItem) => void; onViewAllSharedChats?: () => void; onViewAllPrivateChats?: () => void; user: User; @@ -64,6 +65,7 @@ export function MobileSidebar({ onNewChat, onChatSelect, onChatDelete, + onChatArchive, onViewAllSharedChats, onViewAllPrivateChats, user, @@ -141,6 +143,7 @@ export function MobileSidebar({ }} onChatSelect={handleChatSelect} onChatDelete={onChatDelete} + onChatArchive={onChatArchive} onViewAllSharedChats={onViewAllSharedChats} onViewAllPrivateChats={onViewAllPrivateChats} user={user} diff --git a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx index f3452749f..d05f21096 100644 --- a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx @@ -27,6 +27,7 @@ interface SidebarProps { onNewChat: () => void; onChatSelect: (chat: ChatItem) => void; onChatDelete?: (chat: ChatItem) => void; + onChatArchive?: (chat: ChatItem) => void; onViewAllSharedChats?: () => void; onViewAllPrivateChats?: () => void; user: User; @@ -52,6 +53,7 @@ export function Sidebar({ onNewChat, onChatSelect, onChatDelete, + onChatArchive, onViewAllSharedChats, onViewAllPrivateChats, user, @@ -175,7 +177,9 @@ export function Sidebar({ key={chat.id} name={chat.name} isActive={chat.id === activeChatId} + archived={chat.archived} onClick={() => onChatSelect(chat)} + onArchive={() => onChatArchive?.(chat)} onDelete={() => onChatDelete?.(chat)} /> ))} @@ -216,7 +220,9 @@ export function Sidebar({ key={chat.id} name={chat.name} isActive={chat.id === activeChatId} + archived={chat.archived} onClick={() => onChatSelect(chat)} + onArchive={() => onChatArchive?.(chat)} onDelete={() => onChatDelete?.(chat)} /> ))} diff --git a/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx b/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx index 5c8c89152..28c359e64 100644 --- a/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx +++ b/surfsense_web/components/layout/ui/sidebar/SidebarHeader.tsx @@ -1,6 +1,6 @@ "use client"; -import { ChevronsUpDown, ScrollText, Settings, Users } from "lucide-react"; +import { ChevronsUpDown, Logs, Settings, Users } from "lucide-react"; import { useParams, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { Button } from "@/components/ui/button"; @@ -57,7 +57,7 @@ export function SidebarHeader({ {t("manage_members")} router.push(`/dashboard/${searchSpaceId}/logs`)}> - + {t("logs")} From bba3cb1cf9a48c525aabcb4b14d8324881fafa6b Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 17:03:10 +0530 Subject: [PATCH 27/51] feat: enhance ElectricProvider and Tooltip components for improved user experience - Updated ElectricProvider to check for user authentication via bearer token before rendering, preventing unnecessary loading screens for unauthenticated users. - Modified TooltipProvider to include a new disableHoverableContent prop, enhancing tooltip behavior and usability. --- surfsense_web/components/providers/ElectricProvider.tsx | 7 ++++++- surfsense_web/components/ui/tooltip.tsx | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/surfsense_web/components/providers/ElectricProvider.tsx b/surfsense_web/components/providers/ElectricProvider.tsx index e31885973..f187d10c1 100644 --- a/surfsense_web/components/providers/ElectricProvider.tsx +++ b/surfsense_web/components/providers/ElectricProvider.tsx @@ -3,6 +3,7 @@ import { useAtomValue } from "jotai"; import { useEffect, useRef, useState } from "react"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; +import { getBearerToken } from "@/lib/auth-utils"; import { cleanupElectric, type ElectricClient, @@ -105,9 +106,13 @@ export function ElectricProvider({ children }: ElectricProviderProps) { }; }, [user?.id, isUserLoaded, electricClient]); + // Check if user is authenticated first (has bearer token) + // This prevents showing loading screen for unauthenticated users on homepage + const hasToken = typeof window !== "undefined" && !!getBearerToken(); + // For non-authenticated pages (like landing page), render immediately with null context // Also render immediately if user query failed (e.g., token expired) - if (!isUserLoaded || !user?.id || isUserError) { + if (!hasToken || !isUserLoaded || !user?.id || isUserError) { return {children}; } diff --git a/surfsense_web/components/ui/tooltip.tsx b/surfsense_web/components/ui/tooltip.tsx index 871ce9ed5..356467a8a 100644 --- a/surfsense_web/components/ui/tooltip.tsx +++ b/surfsense_web/components/ui/tooltip.tsx @@ -7,12 +7,14 @@ import { cn } from "@/lib/utils"; function TooltipProvider({ delayDuration = 0, + disableHoverableContent = true, ...props }: React.ComponentProps) { return ( ); @@ -42,7 +44,7 @@ function TooltipContent({ data-slot="tooltip-content" sideOffset={sideOffset} className={cn( - "bg-black text-white font-medium shadow-xl px-3 py-1.5 dark:bg-zinc-800 dark:text-zinc-50 border-none animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md text-xs text-balance", + "bg-black text-white font-medium shadow-xl px-3 py-1.5 dark:bg-zinc-800 dark:text-zinc-50 border-none animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md text-xs text-balance pointer-events-none", className )} {...props} From 22bd5e0f392db6d91a724c8901779c66c2f61e24 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 19:42:07 +0530 Subject: [PATCH 28/51] feat: implement unified loading screens across various components - Introduced a new UnifiedLoadingScreen component for consistent loading indicators in the application. - Replaced existing loading implementations in LoginPage, AuthCallbackPage, DashboardLayout, and other components with the new unified loading screen. - Updated translations for loading messages to enhance user experience and clarity. - Improved loading states in the ElectricProvider and TokenHandler components to utilize the new loading screen, ensuring a cohesive look and feel during loading processes. --- surfsense_web/app/(home)/login/page.tsx | 37 +++------- surfsense_web/app/auth/callback/loading.tsx | 19 +++++ surfsense_web/app/auth/callback/page.tsx | 29 ++++---- .../[search_space_id]/client-layout.tsx | 23 ++---- .../new-chat/[[...chat_id]]/page.tsx | 8 ++- surfsense_web/app/dashboard/layout.tsx | 19 ++--- surfsense_web/app/dashboard/loading.tsx | 21 ++++++ surfsense_web/app/dashboard/page.tsx | 39 ++-------- surfsense_web/components/TokenHandler.tsx | 7 +- .../new-chat/source-detail-panel.tsx | 15 ++-- .../components/providers/ElectricProvider.tsx | 7 +- .../components/ui/unified-loading-screen.tsx | 72 +++++++++++++++++++ surfsense_web/messages/en.json | 19 +++-- surfsense_web/messages/zh.json | 17 +++-- 14 files changed, 191 insertions(+), 141 deletions(-) create mode 100644 surfsense_web/app/auth/callback/loading.tsx create mode 100644 surfsense_web/app/dashboard/loading.tsx create mode 100644 surfsense_web/components/ui/unified-loading-screen.tsx diff --git a/surfsense_web/app/(home)/login/page.tsx b/surfsense_web/app/(home)/login/page.tsx index 7aade8427..0026fdcd0 100644 --- a/surfsense_web/app/(home)/login/page.tsx +++ b/surfsense_web/app/(home)/login/page.tsx @@ -1,12 +1,12 @@ "use client"; -import { Loader2 } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; import { useSearchParams } from "next/navigation"; import { useTranslations } from "next-intl"; import { Suspense, useEffect, useState } from "react"; import { toast } from "sonner"; import { Logo } from "@/components/Logo"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import { getAuthErrorDetails, shouldRetry } from "@/lib/auth-errors"; import { AUTH_TYPE } from "@/lib/env-config"; import { AmbientBackground } from "./AmbientBackground"; @@ -59,7 +59,11 @@ function LoginContent() { }); // Show toast with conditional retry action - const toastOptions: any = { + const toastOptions: { + description: string; + duration: number; + action?: { label: string; onClick: () => void }; + } = { description: errorDescription, duration: 6000, }; @@ -90,18 +94,7 @@ function LoginContent() { // Show loading state while determining auth type if (isLoading) { - return ( -
- -
- -
- - {tCommon("loading")} -
-
-
- ); + return ; } if (authType === "GOOGLE") { @@ -182,23 +175,9 @@ function LoginContent() { ); } -// Loading fallback for Suspense -const LoadingFallback = () => ( -
- -
- -
- - Loading... -
-
-
-); - export default function LoginPage() { return ( - }> + }> ); diff --git a/surfsense_web/app/auth/callback/loading.tsx b/surfsense_web/app/auth/callback/loading.tsx new file mode 100644 index 000000000..24d1891b4 --- /dev/null +++ b/surfsense_web/app/auth/callback/loading.tsx @@ -0,0 +1,19 @@ +import { useTranslations } from "next-intl"; +import { Spinner } from "@/components/ui/spinner"; + +export default function AuthCallbackLoading() { + const t = useTranslations("auth"); + return ( +
+
+
+ +
+ + {t("processing_authentication")} + +
+
+ ); +} + diff --git a/surfsense_web/app/auth/callback/page.tsx b/surfsense_web/app/auth/callback/page.tsx index da868c316..920581654 100644 --- a/surfsense_web/app/auth/callback/page.tsx +++ b/surfsense_web/app/auth/callback/page.tsx @@ -1,23 +1,20 @@ +"use client"; + import { Suspense } from "react"; +import { useTranslations } from "next-intl"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import TokenHandler from "@/components/TokenHandler"; export default function AuthCallbackPage() { + const t = useTranslations("auth"); + return ( -
-

Authentication Callback

- -
-
- } - > - -
- + }> + + ); } diff --git a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx index bbafa9703..0c0b0cbc2 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx @@ -1,7 +1,6 @@ "use client"; import { useAtomValue, useSetAtom } from "jotai"; -import { Loader2 } from "lucide-react"; import { useParams, usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import type React from "react"; @@ -19,6 +18,7 @@ import { DashboardBreadcrumb } from "@/components/dashboard-breadcrumb"; import { LayoutDataProvider } from "@/components/layout"; import { OnboardingTour } from "@/components/onboarding-tour"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; export function DashboardClientLayout({ children, @@ -153,23 +153,10 @@ export function DashboardClientLayout({ isAutoConfiguring ) { return ( -
- - - - {isAutoConfiguring ? "Setting up AI..." : t("loading_config")} - - - {isAutoConfiguring - ? "Auto-configuring with available settings" - : t("checking_llm_prefs")} - - - - - - -
+ ); } diff --git a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx index 59e7878c4..4509a44a7 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/new-chat/[[...chat_id]]/page.tsx @@ -9,6 +9,7 @@ import { import { useQueryClient } from "@tanstack/react-query"; import { useAtomValue, useSetAtom } from "jotai"; import { useParams, useSearchParams } from "next/navigation"; +import { useTranslations } from "next-intl"; import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { toast } from "sonner"; import { z } from "zod"; @@ -34,6 +35,7 @@ import { GeneratePodcastToolUI } from "@/components/tool-ui/generate-podcast"; import { LinkPreviewToolUI } from "@/components/tool-ui/link-preview"; import { ScrapeWebpageToolUI } from "@/components/tool-ui/scrape-webpage"; import { RecallMemoryToolUI, SaveMemoryToolUI } from "@/components/tool-ui/user-memory"; +import { Spinner } from "@/components/ui/spinner"; import { useChatSessionStateSync } from "@/hooks/use-chat-session-state"; import { useMessagesElectric } from "@/hooks/use-messages-electric"; // import { WriteTodosToolUI } from "@/components/tool-ui/write-todos"; @@ -236,6 +238,7 @@ interface ThinkingStepData { } export default function NewChatPage() { + const t = useTranslations("dashboard"); const params = useParams(); const queryClient = useQueryClient(); const [isInitializing, setIsInitializing] = useState(true); @@ -1475,8 +1478,9 @@ export default function NewChatPage() { // Show loading state only when loading an existing thread if (isInitializing) { return ( -
-
Loading chat...
+
+ +
{t("loading_chat")}
); } diff --git a/surfsense_web/app/dashboard/layout.tsx b/surfsense_web/app/dashboard/layout.tsx index 71cd6275f..8ffef229c 100644 --- a/surfsense_web/app/dashboard/layout.tsx +++ b/surfsense_web/app/dashboard/layout.tsx @@ -1,8 +1,8 @@ "use client"; -import { Loader2 } from "lucide-react"; import { useEffect, useState } from "react"; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { useTranslations } from "next-intl"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import { getBearerToken, redirectToLogin } from "@/lib/auth-utils"; interface DashboardLayoutProps { @@ -10,6 +10,7 @@ interface DashboardLayoutProps { } export default function DashboardLayout({ children }: DashboardLayoutProps) { + const t = useTranslations("dashboard"); const [isCheckingAuth, setIsCheckingAuth] = useState(true); useEffect(() => { @@ -25,19 +26,7 @@ export default function DashboardLayout({ children }: DashboardLayoutProps) { // Show loading screen while checking authentication if (isCheckingAuth) { - return ( -
- - - Loading Dashboard - Checking authentication... - - - - - -
- ); + return ; } return ( diff --git a/surfsense_web/app/dashboard/loading.tsx b/surfsense_web/app/dashboard/loading.tsx new file mode 100644 index 000000000..b18c5dd75 --- /dev/null +++ b/surfsense_web/app/dashboard/loading.tsx @@ -0,0 +1,21 @@ +"use client"; + +import { useTranslations } from "next-intl"; +import { Spinner } from "@/components/ui/spinner"; + +export default function DashboardLoading() { + const t = useTranslations("common"); + return ( +
+
+
+ +
+ + {t("loading")} + +
+
+ ); +} + diff --git a/surfsense_web/app/dashboard/page.tsx b/surfsense_web/app/dashboard/page.tsx index 767ce5201..440f37123 100644 --- a/surfsense_web/app/dashboard/page.tsx +++ b/surfsense_web/app/dashboard/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useAtomValue } from "jotai"; -import { AlertCircle, Loader2, Plus, Search } from "lucide-react"; +import { AlertCircle, Plus, Search } from "lucide-react"; import { motion } from "motion/react"; import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; @@ -18,37 +18,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; - -function LoadingScreen() { - const t = useTranslations("dashboard"); - return ( -
- - - - {t("loading")} - {t("fetching_spaces")} - - - - - - - - {t("may_take_moment")} - - - -
- ); -} +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; function ErrorScreen({ message }: { message: string }) { const t = useTranslations("dashboard"); @@ -121,6 +91,7 @@ export default function DashboardPage() { const router = useRouter(); const [showCreateDialog, setShowCreateDialog] = useState(false); + const t = useTranslations("dashboard"); const { data: searchSpaces = [], isLoading, error } = useAtomValue(searchSpacesAtom); useEffect(() => { @@ -131,11 +102,11 @@ export default function DashboardPage() { } }, [isLoading, searchSpaces, router]); - if (isLoading) return ; + if (isLoading) return ; if (error) return ; if (searchSpaces.length > 0) { - return ; + return ; } return ( diff --git a/surfsense_web/components/TokenHandler.tsx b/surfsense_web/components/TokenHandler.tsx index b4ca36298..3f98451ef 100644 --- a/surfsense_web/components/TokenHandler.tsx +++ b/surfsense_web/components/TokenHandler.tsx @@ -1,7 +1,9 @@ "use client"; import { useSearchParams } from "next/navigation"; +import { useTranslations } from "next-intl"; import { useEffect } from "react"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import { getAndClearRedirectPath, setBearerToken } from "@/lib/auth-utils"; import { trackLoginSuccess } from "@/lib/posthog/events"; @@ -25,6 +27,7 @@ const TokenHandler = ({ tokenParamName = "token", storageKey = "surfsense_bearer_token", }: TokenHandlerProps) => { + const t = useTranslations("auth"); const searchParams = useSearchParams(); useEffect(() => { @@ -67,9 +70,7 @@ const TokenHandler = ({ }, [searchParams, tokenParamName, storageKey, redirectPath]); return ( -
-

Processing authentication...

-
+ ); }; diff --git a/surfsense_web/components/new-chat/source-detail-panel.tsx b/surfsense_web/components/new-chat/source-detail-panel.tsx index 08cff8380..1cac73a01 100644 --- a/surfsense_web/components/new-chat/source-detail-panel.tsx +++ b/surfsense_web/components/new-chat/source-detail-panel.tsx @@ -7,11 +7,11 @@ import { ExternalLink, FileText, Hash, - Loader2, Sparkles, X, } from "lucide-react"; import { AnimatePresence, motion, useReducedMotion } from "motion/react"; +import { useTranslations } from "next-intl"; import type React from "react"; import { forwardRef, type ReactNode, useCallback, useEffect, useRef, useState } from "react"; import { createPortal } from "react-dom"; @@ -20,6 +20,7 @@ import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { Spinner } from "@/components/ui/spinner"; import type { GetDocumentByChunkResponse, GetSurfsenseDocsByChunkResponse, @@ -63,7 +64,7 @@ interface ChunkCardProps { } const ChunkCard = forwardRef( - ({ chunk, index, totalChunks, isCited, isActive, disableLayoutAnimation }, ref) => { + ({ chunk, index, totalChunks, isCited }, ref) => { return (
(null); const hasScrolledRef = useRef(false); // Use ref to avoid stale closures const [summaryOpen, setSummaryOpen] = useState(false); const [activeChunkIndex, setActiveChunkIndex] = useState(null); const [mounted, setMounted] = useState(false); - const [hasScrolledToCited, setHasScrolledToCited] = useState(false); + const [_hasScrolledToCited, setHasScrolledToCited] = useState(false); const shouldReduceMotion = useReducedMotion(); useEffect(() => { @@ -382,11 +384,8 @@ export function SourceDetailPanel({ animate={{ opacity: 1, scale: 1 }} className="flex flex-col items-center gap-4" > -
-
- -
-

Loading document

+ +

{t("loading_document")}

)} diff --git a/surfsense_web/components/providers/ElectricProvider.tsx b/surfsense_web/components/providers/ElectricProvider.tsx index f187d10c1..68263b036 100644 --- a/surfsense_web/components/providers/ElectricProvider.tsx +++ b/surfsense_web/components/providers/ElectricProvider.tsx @@ -1,8 +1,10 @@ "use client"; import { useAtomValue } from "jotai"; +import { useTranslations } from "next-intl"; import { useEffect, useRef, useState } from "react"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; +import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import { getBearerToken } from "@/lib/auth-utils"; import { cleanupElectric, @@ -28,6 +30,7 @@ interface ElectricProviderProps { * 5. Provides client via context - hooks should use useElectricClient() */ export function ElectricProvider({ children }: ElectricProviderProps) { + const t = useTranslations("common"); const [electricClient, setElectricClient] = useState(null); const [error, setError] = useState(null); const { @@ -120,9 +123,7 @@ export function ElectricProvider({ children }: ElectricProviderProps) { if (!electricClient && !error) { return ( -
-
Initializing...
-
+
); } diff --git a/surfsense_web/components/ui/unified-loading-screen.tsx b/surfsense_web/components/ui/unified-loading-screen.tsx new file mode 100644 index 000000000..7ed6b83d9 --- /dev/null +++ b/surfsense_web/components/ui/unified-loading-screen.tsx @@ -0,0 +1,72 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { createPortal } from "react-dom"; +import { Logo } from "@/components/Logo"; +import { Spinner } from "@/components/ui/spinner"; +import { AmbientBackground } from "@/app/(home)/login/AmbientBackground"; + +interface UnifiedLoadingScreenProps { + /** Optional message to display below the spinner */ + message?: string; + /** Visual style variant */ + variant?: "login" | "default"; +} + +export function UnifiedLoadingScreen({ + message, + variant = "default", +}: UnifiedLoadingScreenProps) { + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + // Fixed-size container to prevent layout shifts + const spinnerContainer = ( +
+ +
+ ); + + const content = variant === "login" ? ( +
+ +
+ +
+ {spinnerContainer} + {message && ( + + {message} + + )} +
+
+
+ ) : ( +
+
+ {spinnerContainer} + {message && ( + + {message} + + )} +
+
+ ); + + // Render inline during SSR, use portal after mounting + // This prevents the black flash during initial render + if (!mounted) { + return content; + } + + return createPortal(content, document.body); +} + diff --git a/surfsense_web/messages/en.json b/surfsense_web/messages/en.json index 108d93262..59b9cf56a 100644 --- a/surfsense_web/messages/en.json +++ b/surfsense_web/messages/en.json @@ -2,7 +2,8 @@ "common": { "app_name": "SurfSense", "welcome": "Welcome", - "loading": "Loading...", + "loading": "Loading", + "initializing": "Initializing", "save": "Save", "cancel": "Cancel", "delete": "Delete", @@ -76,9 +77,10 @@ "passwords_no_match": "Passwords do not match", "password_mismatch": "Password Mismatch", "passwords_no_match_desc": "The passwords you entered do not match", - "creating_account": "Creating your account...", - "creating_account_btn": "Creating account...", - "redirecting_login": "Redirecting to login page..." + "creating_account": "Creating your account", + "creating_account_btn": "Creating account", + "redirecting_login": "Redirecting to login page", + "processing_authentication": "Processing authentication" }, "searchSpace": { "create_title": "Create Search Space", @@ -143,12 +145,15 @@ "api_keys": "API Keys", "profile": "Profile", "loading_dashboard": "Loading Dashboard", - "checking_auth": "Checking authentication...", + "checking_auth": "Checking authentication", "loading_config": "Loading Configuration", - "checking_llm_prefs": "Checking your LLM preferences...", + "checking_llm_prefs": "Checking your LLM preferences", + "setting_up_ai": "Setting up AI", "config_error": "Configuration Error", "failed_load_llm_config": "Failed to load your LLM configuration", "error_loading_chats": "Error loading chats", + "loading_chat": "Loading chat", + "loading_document": "Loading document", "no_recent_chats": "No recent chats", "error_loading_space": "Error loading search space", "unknown_search_space": "Unknown Search Space", @@ -165,7 +170,7 @@ "create_search_space": "Create Search Space", "add_new_search_space": "Add New Search Space", "loading": "Loading", - "fetching_spaces": "Fetching your search spaces...", + "fetching_spaces": "Fetching your search spaces", "may_take_moment": "This may take a moment", "error": "Error", "something_wrong": "Something went wrong", diff --git a/surfsense_web/messages/zh.json b/surfsense_web/messages/zh.json index 51e378bb2..3c4b6cf34 100644 --- a/surfsense_web/messages/zh.json +++ b/surfsense_web/messages/zh.json @@ -3,6 +3,7 @@ "app_name": "SurfSense", "welcome": "欢迎", "loading": "加载中...", + "initializing": "正在初始化", "save": "保存", "cancel": "取消", "delete": "删除", @@ -76,9 +77,10 @@ "passwords_no_match": "密码不匹配", "password_mismatch": "密码不匹配", "passwords_no_match_desc": "您输入的密码不一致", - "creating_account": "正在创建您的账户...", - "creating_account_btn": "创建中...", - "redirecting_login": "正在跳转到登录页面..." + "creating_account": "正在创建您的账户", + "creating_account_btn": "创建中", + "redirecting_login": "正在跳转到登录页面", + "processing_authentication": "正在处理身份验证" }, "searchSpace": { "create_title": "创建搜索空间", @@ -128,12 +130,15 @@ "api_keys": "API 密钥", "profile": "个人资料", "loading_dashboard": "正在加载仪表盘", - "checking_auth": "正在检查身份验证...", + "checking_auth": "正在检查身份验证", "loading_config": "正在加载配置", - "checking_llm_prefs": "正在检查您的 LLM 偏好设置...", + "checking_llm_prefs": "正在检查您的 LLM 偏好设置", + "setting_up_ai": "正在设置 AI", "config_error": "配置错误", "failed_load_llm_config": "无法加载您的 LLM 配置", "error_loading_chats": "加载对话失败", + "loading_chat": "正在加载对话", + "loading_document": "正在加载文档", "no_recent_chats": "暂无最近对话", "error_loading_space": "加载搜索空间失败", "unknown_search_space": "未知搜索空间", @@ -150,7 +155,7 @@ "create_search_space": "创建搜索空间", "add_new_search_space": "添加新的搜索空间", "loading": "加载中", - "fetching_spaces": "正在获取您的搜索空间...", + "fetching_spaces": "正在获取您的搜索空间", "may_take_moment": "这可能需要一些时间", "error": "错误", "something_wrong": "出现错误", From ce9e3b01b7957bbd34bf0907688ad7af1b509826 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 19:53:56 +0530 Subject: [PATCH 29/51] feat: expand onboarding tour with inbox step and update tooltip positioning - Added a new onboarding tour step for the inbox, guiding users to view mentions and notifications. - Updated tooltip positioning logic to accommodate the new inbox step, ensuring proper alignment during the tour. - Enhanced the check for required elements to include the inbox step, improving the tour initiation process. --- .../layout/ui/sidebar/NavSection.tsx | 4 +++- surfsense_web/components/onboarding-tour.tsx | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx index 742a27bbc..dc730bc4a 100644 --- a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx +++ b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx @@ -20,7 +20,9 @@ export function NavSection({ items, onItemClick, isCollapsed = false }: NavSecti const joyrideAttr = item.title === "Documents" || item.title.toLowerCase().includes("documents") ? { "data-joyride": "documents-sidebar" } - : {}; + : item.title === "Inbox" || item.title.toLowerCase().includes("inbox") + ? { "data-joyride": "inbox-sidebar" } + : {}; if (isCollapsed) { return ( diff --git a/surfsense_web/components/onboarding-tour.tsx b/surfsense_web/components/onboarding-tour.tsx index 717a27607..12773c932 100644 --- a/surfsense_web/components/onboarding-tour.tsx +++ b/surfsense_web/components/onboarding-tour.tsx @@ -32,6 +32,12 @@ const TOUR_STEPS: TourStep[] = [ content: "Access and manage all your uploaded documents.", placement: "right", }, + { + target: '[data-joyride="inbox-sidebar"]', + title: "Check your inbox", + content: "View mentions and notifications in one place.", + placement: "right", + }, ]; interface TooltipPosition { @@ -188,14 +194,15 @@ function TourTooltip({ const getPointerStyles = (): React.CSSProperties => { const lineLength = 16; const dotSize = 6; - // Check if this is the documents step (stepIndex === 1) + // Check if this is the documents step (stepIndex === 1) or inbox step (stepIndex === 2) const isDocumentsStep = stepIndex === 1; + const isInboxStep = stepIndex === 2; if (position.pointerPosition === "left") { return { position: "absolute", left: -lineLength - dotSize, - top: isDocumentsStep ? "calc(50% - 8px)" : "50%", + top: isDocumentsStep || isInboxStep ? "calc(50% - 8px)" : "50%", transform: "translateY(-50%)", display: "flex", alignItems: "center", @@ -518,12 +525,13 @@ export function OnboardingTour() { // User is new and hasn't seen tour - wait for DOM elements and start tour const checkAndStartTour = () => { - // Check if both required elements exist + // Check if all required elements exist const connectorEl = document.querySelector(TOUR_STEPS[0].target); const documentsEl = document.querySelector(TOUR_STEPS[1].target); + const inboxEl = document.querySelector(TOUR_STEPS[2].target); - if (connectorEl && documentsEl) { - // Both elements found, start tour + if (connectorEl && documentsEl && inboxEl) { + // All elements found, start tour setIsActive(true); setTargetEl(connectorEl); setSpotlightTargetEl(connectorEl); From eaecc091e331207ec2649dd3d913d9da8b302fe1 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 20:05:42 +0530 Subject: [PATCH 30/51] feat: add check icon to active items in sidebar navigation and user profile - Introduced a Check icon to visually indicate active items in the NavSection and SidebarUserProfile components. - Updated styling to ensure the Check icon appears correctly without altering the background color for active items. - Enhanced user experience by providing a clear visual cue for selected themes and languages in the sidebar. --- .../layout/ui/sidebar/NavSection.tsx | 13 ++-- .../layout/ui/sidebar/SidebarUserProfile.tsx | 60 +++++++++++-------- 2 files changed, 45 insertions(+), 28 deletions(-) diff --git a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx index dc730bc4a..d58f52612 100644 --- a/surfsense_web/components/layout/ui/sidebar/NavSection.tsx +++ b/surfsense_web/components/layout/ui/sidebar/NavSection.tsx @@ -1,5 +1,6 @@ "use client"; +import { Check } from "lucide-react"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import type { NavItem } from "../../types/layout.types"; @@ -34,12 +35,14 @@ export function NavSection({ items, onItemClick, isCollapsed = false }: NavSecti className={cn( "relative flex h-10 w-10 items-center justify-center rounded-md transition-colors", "hover:bg-accent hover:text-accent-foreground", - "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", - item.isActive && "bg-accent text-accent-foreground" + "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" )} {...joyrideAttr} > + {item.isActive && ( + + )} {item.badge && ( {item.badge} @@ -64,13 +67,15 @@ export function NavSection({ items, onItemClick, isCollapsed = false }: NavSecti className={cn( "flex items-center gap-2 rounded-md mx-2 px-2 py-1.5 text-sm transition-colors text-left", "hover:bg-accent hover:text-accent-foreground", - "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring", - item.isActive && "bg-accent text-accent-foreground" + "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" )} {...joyrideAttr} > {item.title} + {item.isActive && ( + + )} {item.badge && ( {item.badge} diff --git a/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx b/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx index 982d88e8b..66fe24565 100644 --- a/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx +++ b/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx @@ -1,6 +1,6 @@ "use client"; -import { ChevronUp, Languages, Laptop, LogOut, Moon, Settings, Sun } from "lucide-react"; +import { Check, ChevronUp, Languages, Laptop, LogOut, Moon, Settings, Sun } from "lucide-react"; import { useTranslations } from "next-intl"; import { DropdownMenu, @@ -197,11 +197,14 @@ export function SidebarUserProfile({ className={cn( "mb-1 last:mb-0 transition-all", "hover:bg-accent/50", - isSelected && "bg-accent/80" + isSelected && "text-primary" )} > {t(themeOption.value)} + {isSelected && ( + + )} ); })} @@ -226,11 +229,14 @@ export function SidebarUserProfile({ className={cn( "mb-1 last:mb-0 transition-all", "hover:bg-accent/50", - isSelected && "bg-accent/80" + isSelected && "text-primary" )} > {language.flag} {language.name} + {isSelected && ( + + )} ); })} @@ -302,26 +308,29 @@ export function SidebarUserProfile({ {t("theme")} - - {THEMES.map((themeOption) => { - const Icon = themeOption.icon; - const isSelected = theme === themeOption.value; - return ( - handleThemeChange(themeOption.value)} - className={cn( - "mb-1 last:mb-0 transition-all", - "hover:bg-accent/50", - isSelected && "bg-accent/80" - )} - > - - {t(themeOption.value)} - - ); - })} - + + {THEMES.map((themeOption) => { + const Icon = themeOption.icon; + const isSelected = theme === themeOption.value; + return ( + handleThemeChange(themeOption.value)} + className={cn( + "mb-1 last:mb-0 transition-all", + "hover:bg-accent/50", + isSelected && "text-primary" + )} + > + + {t(themeOption.value)} + {isSelected && ( + + )} + + ); + })} + )} @@ -342,11 +351,14 @@ export function SidebarUserProfile({ className={cn( "mb-1 last:mb-0 transition-all", "hover:bg-accent/50", - isSelected && "bg-accent/80" + isSelected && "text-primary" )} > {language.flag} {language.name} + {isSelected && ( + + )} ); })} From de08f0644fb52a8c8bd9d5e09feea3c39fb9626d Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 20:51:46 +0530 Subject: [PATCH 31/51] feat: add ordering to search spaces retrieval for consistent display --- surfsense_backend/app/routes/search_spaces_routes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/surfsense_backend/app/routes/search_spaces_routes.py b/surfsense_backend/app/routes/search_spaces_routes.py index bc52a52b1..147f515b3 100644 --- a/surfsense_backend/app/routes/search_spaces_routes.py +++ b/surfsense_backend/app/routes/search_spaces_routes.py @@ -129,6 +129,7 @@ async def read_search_spaces( result = await session.execute( select(SearchSpace) .filter(SearchSpace.user_id == user.id) + .order_by(SearchSpace.id.asc()) .offset(skip) .limit(limit) ) @@ -138,6 +139,7 @@ async def read_search_spaces( select(SearchSpace) .join(SearchSpaceMembership) .filter(SearchSpaceMembership.user_id == user.id) + .order_by(SearchSpace.id.asc()) .offset(skip) .limit(limit) ) From 9215118bab94e21a6d025f5c71d2dad965128593 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sat, 24 Jan 2026 22:43:04 +0530 Subject: [PATCH 32/51] feat: enhance documentation and fixed bug in `loading.tsx` --- surfsense_web/app/auth/callback/loading.tsx | 2 + .../components/bookstack-connect-form.tsx | 124 +-------------- .../components/luma-connect-form.tsx | 131 ---------------- .../components/obsidian-connect-form.tsx | 145 ------------------ .../content/docs/connectors/airtable.mdx | 12 +- .../content/docs/connectors/bookstack.mdx | 68 +++++++- .../content/docs/connectors/circleback.mdx | 129 +++++++++++++++- .../content/docs/connectors/clickup.mdx | 4 +- .../content/docs/connectors/confluence.mdx | 20 ++- .../content/docs/connectors/discord.mdx | 14 +- .../content/docs/connectors/elasticsearch.mdx | 113 +++++++++++++- .../content/docs/connectors/github.mdx | 40 ++--- .../content/docs/connectors/gmail.mdx | 4 +- .../docs/connectors/google-calendar.mdx | 4 +- .../content/docs/connectors/google-drive.mdx | 4 +- .../content/docs/connectors/jira.mdx | 16 +- .../content/docs/connectors/linear.mdx | 6 +- .../content/docs/connectors/luma.mdx | 66 +++++++- .../content/docs/connectors/meta.json | 3 +- .../docs/connectors/microsoft-teams.mdx | 8 +- .../content/docs/connectors/notion.mdx | 13 +- .../content/docs/connectors/obsidian.mdx | 143 +++++++++++++++++ .../content/docs/connectors/slack.mdx | 8 +- 23 files changed, 614 insertions(+), 463 deletions(-) create mode 100644 surfsense_web/content/docs/connectors/obsidian.mdx diff --git a/surfsense_web/app/auth/callback/loading.tsx b/surfsense_web/app/auth/callback/loading.tsx index 24d1891b4..676ca3632 100644 --- a/surfsense_web/app/auth/callback/loading.tsx +++ b/surfsense_web/app/auth/callback/loading.tsx @@ -1,3 +1,5 @@ +"use client"; + import { useTranslations } from "next-intl"; import { Spinner } from "@/components/ui/spinner"; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx index 2b7123d78..789e23787 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx @@ -6,12 +6,6 @@ import type { FC } from "react"; import { useRef, useState } from "react"; import { useForm } from "react-hook-form"; import * as z from "zod"; -import { - Accordion, - AccordionContent, - AccordionItem, - AccordionTrigger, -} from "@/components/ui/accordion"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Form, @@ -85,6 +79,7 @@ export const BookStackConnectForm: FC = ({ onSubmit, isSubmitt BOOKSTACK_TOKEN_SECRET: values.token_secret, }, is_indexable: true, + is_active: true, last_indexed_at: null, periodic_indexing_enabled: periodicEnabled, indexing_frequency_minutes: periodicEnabled ? parseInt(frequencyMinutes, 10) : null, @@ -302,123 +297,6 @@ export const BookStackConnectForm: FC = ({ onSubmit, isSubmitt
)} - {/* Documentation Section */} - - - - Documentation - - -
-

How it works

-

- The BookStack connector uses the BookStack REST API to fetch all pages from your - BookStack instance that your account has access to. -

-
    -
  • - For follow up indexing runs, the connector retrieves pages that have been updated - since the last indexing attempt. -
  • -
  • - Indexing is configured to run periodically, so updates should appear in your - search results within minutes. -
  • -
-
- -
-
-

Authorization

- - - API Token Required - - You need to create an API token from your BookStack instance. The token requires - "Access System API" permission. - - - -
-
-

- Step 1: Create an API Token -

-
    -
  1. Log in to your BookStack instance
  2. -
  3. Click on your profile icon → Edit Profile
  4. -
  5. Navigate to the "API Tokens" tab
  6. -
  7. Click "Create Token" and give it a name
  8. -
  9. Copy both the Token ID and Token Secret
  10. -
  11. Paste them in the form above
  12. -
-
- -
-

- Step 2: Grant necessary access -

-

- Your user account must have "Access System API" permission. The connector will - only index content your account can view. -

- - - Rate Limiting - - BookStack API has a rate limit of 180 requests per minute. The connector - automatically handles rate limiting to ensure reliable indexing. - - -
-
-
-
- -
-
-

Indexing

-
    -
  1. - Navigate to the Connector Dashboard and select the BookStack{" "} - Connector. -
  2. -
  3. - Enter your BookStack Instance URL (e.g., - https://docs.example.com) -
  4. -
  5. - Enter your Token ID and Token Secret from your - BookStack API token. -
  6. -
  7. - Click Connect to establish the connection. -
  8. -
  9. Once connected, your BookStack pages will be indexed automatically.
  10. -
- - - - What Gets Indexed - -

The BookStack connector indexes the following data:

-
    -
  • All pages from your BookStack instance
  • -
  • Page content in Markdown format
  • -
  • Page titles and metadata
  • -
  • Book and chapter hierarchy information
  • -
-
-
-
-
-
-
-
); }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/luma-connect-form.tsx b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/luma-connect-form.tsx index daa2e2615..2804dbba8 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/luma-connect-form.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/luma-connect-form.tsx @@ -6,12 +6,6 @@ import type { FC } from "react"; import { useRef, useState } from "react"; import { useForm } from "react-hook-form"; import * as z from "zod"; -import { - Accordion, - AccordionContent, - AccordionItem, - AccordionTrigger, -} from "@/components/ui/accordion"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Form, @@ -253,131 +247,6 @@ export const LumaConnectForm: FC = ({ onSubmit, isSubmitting } )} - - {/* Documentation Section */} - - - - Documentation - - -
-

How it works

-

- The Luma connector uses the Luma API to fetch all events that your API key has - access to. -

-
    -
  • - For follow up indexing runs, the connector retrieves events that have been updated - since the last indexing attempt. -
  • -
  • - Indexing is configured to run periodically, so updates should appear in your - search results within minutes. -
  • -
-
- -
-
-

Authorization

- - - API Key Required - - You need a Luma API key to use this connector. The key will be used to read your - Luma events with read-only permissions. - - - -
-
-

- Step 1: Get Your API Key -

-
    -
  1. Log into your Luma account
  2. -
  3. Navigate to your account settings
  4. -
  5. Go to API settings or Developer settings
  6. -
  7. Generate a new API key
  8. -
  9. Copy the generated API key
  10. -
  11. - You can also visit{" "} - - Luma API Settings - {" "} - for more information. -
  12. -
-
- -
-

- Step 2: Grant necessary access -

-

- The API key will have access to all events that your user account can see. - Make sure your account has appropriate permissions for the events you want to - index. -

- - - Data Privacy - - Only event details, descriptions, and attendee information will be indexed. - Event attachments and linked files are not indexed by this connector. - - -
-
-
-
- -
-
-

Indexing

-
    -
  1. - Navigate to the Connector Dashboard and select the Luma{" "} - Connector. -
  2. -
  3. - Place your API Key in the form field. -
  4. -
  5. - Click Connect to establish the connection. -
  6. -
  7. Once connected, your Luma events will be indexed automatically.
  8. -
- - - - What Gets Indexed - -

The Luma connector indexes the following data:

-
    -
  • Event titles and descriptions
  • -
  • Event details and metadata
  • -
  • Attendee information
  • -
  • Event dates and locations
  • -
-
-
-
-
-
-
-
); }; diff --git a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx index 94839b03b..3c4b64090 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/obsidian-connect-form.tsx @@ -6,12 +6,6 @@ import type { FC } from "react"; import { useRef, useState } from "react"; import { useForm } from "react-hook-form"; import * as z from "zod"; -import { - Accordion, - AccordionContent, - AccordionItem, - AccordionTrigger, -} from "@/components/ui/accordion"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Form, @@ -320,145 +314,6 @@ export const ObsidianConnectForm: FC = ({ onSubmit, isSubmitti )} - - {/* Documentation Section */} - - - - Documentation - - -
-

How it works

-

- The Obsidian connector scans your local Obsidian vault directory and indexes all - Markdown files. It preserves your note structure and extracts metadata from YAML - frontmatter. -

-
    -
  • - The connector parses frontmatter metadata (title, tags, aliases, dates, etc.) -
  • -
  • Wiki-style links ([[note]]) are extracted and preserved
  • -
  • Inline tags (#tag) are recognized and indexed
  • -
  • Content is chunked intelligently for optimal search results
  • -
  • - Subsequent indexing runs use content hashing to skip unchanged files for faster - sync -
  • -
-
- -
-
-

Setup

- - - - File System Access Required - - - The SurfSense backend must have read access to your Obsidian vault directory. - For Docker deployments, mount your vault as a volume. - - - -
-
-

- Step 1: Locate your vault -

-
    -
  1. - macOS/Linux: Right-click any note in Obsidian → "Reveal in - Finder" to see the vault folder -
  2. -
  3. - Windows: Right-click any note → "Show in system explorer" -
  4. -
  5. - Or: Click the vault switcher (bottom-left icon) → "Open - folder" next to your vault name -
  6. -
-
- -
-

- Step 2: Enter the path -

-

- Running locally (no Docker): Use the direct path to your - vault: -

-
-											{`/Users/yourname/Documents/MyObsidianVault`}
-										
-

- Running in Docker: Mount your vault as a volume in - docker-compose.yml: -

-
-											{`volumes:
-  - /path/to/your/vault:/app/obsidian_vaults/my-vault:ro`}
-										
-

- Then use /app/obsidian_vaults/my-vault as your vault path. -

-
- -
-

- Step 3: Configure exclusions -

-

- Common folders to exclude: -

-
    -
  • - .obsidian - Obsidian config (always recommended) -
  • -
  • - .trash - Obsidian's trash folder -
  • -
  • - templates - If you have a templates folder -
  • -
  • - daily-notes - If you want to exclude daily notes -
  • -
-
-
-
-
- -
-
-

What Gets Indexed

- - - Indexed Content - -

The Obsidian connector indexes:

-
    -
  • All Markdown files (.md) in your vault
  • -
  • YAML frontmatter metadata (title, tags, aliases, dates)
  • -
  • Wiki-style links between notes
  • -
  • Inline tags throughout your notes
  • -
  • Full note content with proper chunking
  • -
-
-
-
-
-
-
-
); }; diff --git a/surfsense_web/content/docs/connectors/airtable.mdx b/surfsense_web/content/docs/connectors/airtable.mdx index 366a6e8e5..db7fe3ac0 100644 --- a/surfsense_web/content/docs/connectors/airtable.mdx +++ b/surfsense_web/content/docs/connectors/airtable.mdx @@ -36,20 +36,20 @@ After registration, configure the required scopes (permissions) for your integra | Scope | Description | |-------|-------------| -| ✅ `data.recordComments:read` | See comments in records | -| ✅ `data.records:read` | See the data in records | +| `data.recordComments:read` | See comments in records | +| `data.records:read` | See the data in records | ### Base schema | Scope | Description | |-------|-------------| -| ✅ `schema.bases:read` | See the structure of a base, like table names or field types | +| `schema.bases:read` | See the structure of a base, like table names or field types | ### User metadata | Scope | Description | |-------|-------------| -| ✅ `user.email:read` | See the user's email address | +| `user.email:read` | See the user's email address | ![Scopes Configuration](/docs/connectors/airtable/airtable-scopes.png) @@ -80,7 +80,9 @@ After saving, you'll find your OAuth credentials on the integration page: 1. Copy your **Client ID** 2. Copy your **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + --- diff --git a/surfsense_web/content/docs/connectors/bookstack.mdx b/surfsense_web/content/docs/connectors/bookstack.mdx index 8ee581948..f1f695e11 100644 --- a/surfsense_web/content/docs/connectors/bookstack.mdx +++ b/surfsense_web/content/docs/connectors/bookstack.mdx @@ -3,4 +3,70 @@ title: Bookstack description: Connect your Bookstack instance to SurfSense --- -# Documentation in progress \ No newline at end of file +# BookStack Integration Setup Guide + +This guide walks you through connecting your BookStack instance to SurfSense. + +## How it works + +The BookStack connector uses the BookStack REST API to fetch all pages from your BookStack instance that your account has access to. + +- For follow up indexing runs, the connector retrieves pages that have been updated since the last indexing attempt. +- Indexing should be configured to run periodically, so updates should appear in your search results within minutes. + +--- + +## Authorization + + +You need to create an API token from your BookStack instance. The token requires "Access System API" permission. + + +### Step 1: Create an API Token + +1. Log in to your BookStack instance +2. Click on your profile icon → Edit Profile +3. Navigate to the "API Tokens" tab +4. Click "Create Token" and give it a name +5. Copy both the **Token ID** and **Token Secret** +6. Paste them in the connector form + +### Step 2: Grant necessary access + +Your user account must have "Access System API" permission. The connector will only index content your account can view. + + +BookStack API has a rate limit of 180 requests per minute. The connector automatically handles rate limiting to ensure reliable indexing. + + + +Enable periodic sync to automatically re-index pages when content changes. Available frequencies: Every 5 minutes, 15 minutes, hourly, every 6 hours, daily, or weekly. + + +--- + +## Connecting to SurfSense + +1. Navigate to the Connector Dashboard and select the **BookStack** Connector. +2. Fill in the required fields: + +| Field | Description | Example | +|-------|-------------|---------| +| **Connector Name** | A friendly name to identify this connector | `My BookStack Connector` | +| **BookStack Base URL** | The full URL of your BookStack instance | `https://docs.example.com` | +| **Token ID** | Your API Token ID from BookStack | | +| **Token Secret** | Your API Token Secret from BookStack | | + +3. Click **Connect** to establish the connection. +4. Once connected, your BookStack pages will be indexed automatically. + +### What Gets Indexed + +The BookStack connector indexes the following data: + +| Data Type | Description | +|-----------|-------------| +| Pages | All pages from your BookStack instance | +| Content | Page content in Markdown format | +| Metadata | Page titles and metadata | +| Structure | Book and chapter hierarchy information | diff --git a/surfsense_web/content/docs/connectors/circleback.mdx b/surfsense_web/content/docs/connectors/circleback.mdx index a5c90a28f..709e35f45 100644 --- a/surfsense_web/content/docs/connectors/circleback.mdx +++ b/surfsense_web/content/docs/connectors/circleback.mdx @@ -1,8 +1,133 @@ --- title: Circleback -description: Connect your circleback to SurfSense +description: Connect your Circleback meetings to SurfSense --- -# Documentation in progress +# Circleback Integration Setup Guide +This guide walks you through connecting your Circleback meetings to SurfSense for meeting search and AI-powered insights. +## How it works + +The Circleback connector uses a **webhook-based integration**. Unlike other connectors that pull data from APIs, Circleback automatically pushes meeting data to SurfSense when meetings are processed. + +- Meetings are sent to SurfSense immediately after Circleback processes them +- No API keys or credentials required +- No periodic indexing needed - data arrives in real-time +- Each meeting is stored with its notes, transcript, action items, and insights + +--- + +## What Gets Indexed + +| Content Type | Description | +|--------------|-------------| +| Meeting Notes | AI-generated meeting notes in Markdown format | +| Transcript | Full meeting transcript with speaker identification and timestamps | +| Action Items | Tasks with assignees and status | +| Attendees | Names and emails of meeting participants | +| Insights | Custom insights extracted from the meeting | +| Metadata | Date, duration, tags, meeting URL, and Circleback link | + + + Meeting recordings are not stored in SurfSense, but a link to the recording (valid for 24 hours from Circleback) is included in the indexed document. + + +--- + +## Setup Guide + +### Step 1: Create the Connector in SurfSense + +1. Navigate to **Connectors** → **Add Connector** → **Circleback** +2. Enter a connector name (e.g., `My Circleback Meetings`) +3. Click **Connect** to create the connector + + +Circleback uses webhooks, so no API key or authentication is required. The webhook URL is unique to your search space. + + +### Step 2: Copy Your Webhook URL + +After creating the connector: + +1. Open the connector settings +2. Find the **Webhook URL** field +3. Click **Copy** to copy the URL to your clipboard + +The webhook URL looks like: +``` +https://your-surfsense-url/api/v1/webhooks/circleback/{search_space_id} +``` + +### Step 3: Configure Circleback Automation + +1. Log into your [Circleback account](https://app.circleback.ai) +2. Go to **Automations** (in the main navigation) +3. Click **Create automation** +4. Add conditions to filter which meetings trigger the webhook (optional): + - Specific calendar(s) + - Meeting tags + - Meeting participants +5. Select **Send webhook request** as the action +6. Enter your SurfSense webhook URL +7. Select the meeting outcomes to include (notes, action items, transcript, insights) +8. Optionally test with your most recent meeting +9. Name and save the automation + +For detailed instructions, see [Circleback's official webhook documentation](https://circleback.ai/docs/webhook-integration). + + + Make sure your SurfSense backend is accessible from the internet for Circleback to send webhooks. If self-hosting, you may need to configure a reverse proxy or use a tunneling service. + + +--- + +## Connector Configuration + +| Field | Description | Required | +|-------|-------------|----------| +| **Connector Name** | A friendly name to identify this connector | Yes | + + + Unlike other connectors, Circleback doesn't support periodic indexing since it's webhook-based. Meetings are automatically pushed to SurfSense when processed by Circleback. + + +--- + +## Verifying the Integration + +Once configured, new meetings will automatically appear in SurfSense after Circleback processes them. To verify: + +1. Attend or process a meeting with Circleback +2. Wait for Circleback to complete processing (usually a few minutes after the meeting ends) +3. Check your SurfSense search space for the new meeting document + +Each meeting document includes: +- A direct link to view the meeting on Circleback +- Full searchable transcript +- Extracted action items with assignees +- Meeting metadata and insights + +--- + +## Troubleshooting + +**Meetings not appearing** +- Verify the webhook URL is correctly configured in Circleback +- Check that your SurfSense backend is accessible from the internet +- Look for errors in your SurfSense backend logs + +**Webhook URL not showing** +- Refresh the connector configuration page +- Ensure the connector was created successfully +- Check that your backend is running + +**Duplicate meetings** +- Each meeting is uniquely identified by its Circleback meeting ID +- If content changes, the existing document is updated rather than duplicated + +**Delayed indexing** +- Meeting data is processed asynchronously +- Documents should appear within a minute of receiving the webhook +- Check the task queue if experiencing longer delays diff --git a/surfsense_web/content/docs/connectors/clickup.mdx b/surfsense_web/content/docs/connectors/clickup.mdx index 1b732c968..960b88370 100644 --- a/surfsense_web/content/docs/connectors/clickup.mdx +++ b/surfsense_web/content/docs/connectors/clickup.mdx @@ -36,7 +36,9 @@ After creating the app, you'll see your credentials: 1. Copy your **Client ID** 2. Copy your **Client Secret** (click "Show" to reveal, or "Regenerate" if needed) -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + --- diff --git a/surfsense_web/content/docs/connectors/confluence.mdx b/surfsense_web/content/docs/connectors/confluence.mdx index fad9f3e3d..57116cf29 100644 --- a/surfsense_web/content/docs/connectors/confluence.mdx +++ b/surfsense_web/content/docs/connectors/confluence.mdx @@ -28,7 +28,9 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration 2. Check the box to agree to Atlassian's developer terms 3. Click **"Create"** -> ℹ️ New OAuth 2.0 integrations use rotating refresh tokens, which improve security by limiting token validity and enabling automatic detection of token reuse. + + New OAuth 2.0 integrations use rotating refresh tokens, which improve security by limiting token validity and enabling automatic detection of token reuse. + ![Create New Integration Form](/docs/connectors/atlassian/atlassian-name-integration.png) @@ -41,7 +43,9 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration ``` 3. Click **"Save changes"** -> ℹ️ You can enter up to 10 redirect URIs, one per line. + + You can enter up to 10 redirect URIs, one per line. + ![Authorization Callback URLs](/docs/connectors/atlassian/atlassian-authorization.png) @@ -62,7 +66,7 @@ Select the **"Classic scopes"** tab and enable: | Scope Name | Code | Description | |------------|------|-------------| -| ✅ Read user | `read:confluence-user` | View user information in Confluence that you have access to, including usernames, email addresses and profile pictures | +| Read user | `read:confluence-user` | View user information in Confluence that you have access to, including usernames, email addresses and profile pictures | ![Confluence API Classic Scopes](/docs/connectors/atlassian/confluence/atlassian-confluence-classic-scopes.png) @@ -72,9 +76,9 @@ Select the **"Granular scopes"** tab and enable: | Scope Name | Code | Description | |------------|------|-------------| -| ✅ View pages | `read:page:confluence` | View page content | -| ✅ View comments | `read:comment:confluence` | View comments on pages or blogposts | -| ✅ View spaces | `read:space:confluence` | View space details | +| View pages | `read:page:confluence` | View page content | +| View comments | `read:comment:confluence` | View comments on pages or blogposts | +| View spaces | `read:space:confluence` | View space details | 4. Click **"Save"** @@ -85,7 +89,9 @@ Select the **"Granular scopes"** tab and enable: 1. In the left sidebar, click **"Settings"** 2. Copy your **Client ID** and **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + --- diff --git a/surfsense_web/content/docs/connectors/discord.mdx b/surfsense_web/content/docs/connectors/discord.mdx index 6bb64e7e7..a90bcfe87 100644 --- a/surfsense_web/content/docs/connectors/discord.mdx +++ b/surfsense_web/content/docs/connectors/discord.mdx @@ -38,7 +38,9 @@ You'll also see your **Application ID** and **Public Key** on this page. http://localhost:8000/api/v1/auth/discord/connector/callback ``` -> ⚠️ Keep **Public Client** disabled (off) since SurfSense uses a server to make requests. + + Keep **Public Client** disabled (off) since SurfSense uses a server to make requests. + ![OAuth2 Configuration](/docs/connectors/discord/discord-oauth2.png) @@ -46,13 +48,15 @@ You'll also see your **Application ID** and **Public Key** on this page. 1. In the left sidebar, click **"Bot"** 2. Configure the **Authorization Flow**: - - ✅ **Public Bot** - Enable to allow anyone to add the bot to servers + - **Public Bot** - Enable to allow anyone to add the bot to servers 3. Enable **Privileged Gateway Intents**: - - ✅ **Server Members Intent** - Required to receive GUILD_MEMBERS events - - ✅ **Message Content Intent** - Required to receive message content + - **Server Members Intent** - Required to receive GUILD_MEMBERS events + - **Message Content Intent** - Required to receive message content -> ⚠️ Once your bot reaches 100+ servers, these intents will require verification and approval. + + Once your bot reaches 100+ servers, these intents will require verification and approval. + ![Bot Settings](/docs/connectors/discord/discord-bot-settings.png) diff --git a/surfsense_web/content/docs/connectors/elasticsearch.mdx b/surfsense_web/content/docs/connectors/elasticsearch.mdx index ac43cca4e..f2615a9c6 100644 --- a/surfsense_web/content/docs/connectors/elasticsearch.mdx +++ b/surfsense_web/content/docs/connectors/elasticsearch.mdx @@ -3,4 +3,115 @@ title: Elasticsearch description: Connect your Elasticsearch cluster to SurfSense --- -# Documentation in progress \ No newline at end of file +# Elasticsearch Integration Setup Guide + +This guide walks you through connecting your Elasticsearch cluster to SurfSense. + +## How it works + +The Elasticsearch connector allows you to search and retrieve documents from your Elasticsearch cluster. Configure connection details, select specific indices, and set search parameters to make your existing data searchable within SurfSense. + +- For follow-up indexing runs, the connector retrieves documents that have been updated since the last indexing attempt. +- Indexing should be configured to run periodically, so updates should appear in your search results within minutes. + +--- + +## Authorization + + +Elasticsearch requires authentication. You can use either an API key or username/password authentication. + + +### Step 1: Get Your Elasticsearch Endpoint + +You'll need the endpoint URL for your Elasticsearch cluster. This typically looks like: + +- **Cloud:** `https://your-cluster.es.region.aws.com:443` +- **Self-hosted:** `https://elasticsearch.example.com:9200` + +### Step 2: Configure Authentication + +Elasticsearch requires authentication. You can use either: + +**API Key:** A base64-encoded API key. You can create one in Elasticsearch by running: + +```bash +POST /_security/api_key +``` + +**Username & Password:** Basic authentication using your Elasticsearch username and password. + +### Step 3: Select Indices + +Specify which indices to search. You can: + +- Use wildcards: `logs-*` to match multiple indices +- List specific indices: `logs-2024, documents-2024` +- Leave empty to search all accessible indices (not recommended for performance) + + +Enable periodic sync to automatically re-index documents when content changes. Available frequencies: Every 5 minutes, 15 minutes, hourly, every 6 hours, daily, or weekly. + + +--- + +## Connecting to SurfSense + +1. Navigate to the Connector Dashboard and select the **Elasticsearch** Connector. +2. Fill in the required fields: + +| Field | Description | Example | +|-------|-------------|---------| +| **Connector Name** | A friendly name to identify this connector | `My Elasticsearch Connector` | +| **Elasticsearch Endpoint URL** | The full URL of your Elasticsearch cluster | `https://your-cluster.es.region.aws.com:443` | +| **API Key** | Your base64-encoded API key (if using API key auth) | | +| **Username** | Your Elasticsearch username (if using basic auth) | | +| **Password** | Your Elasticsearch password (if using basic auth) | | +| **Indices** | Comma-separated list of indices to search | `logs-*, documents-2024` | + +3. Click **Connect** to establish the connection. +4. Once connected, your Elasticsearch documents will be indexed automatically. + +--- + +## Advanced Configuration + +### Search Query + +The default query used for searches. Use `*` to match all documents, or specify a more complex Elasticsearch query. + +### Search Fields + +Limit searches to specific fields for better performance. Common fields include: + +- `title` - Document titles +- `content` - Main content +- `description` - Descriptions + +Leave empty to search all fields in your documents. + +### Maximum Documents + +Set a limit on the number of documents retrieved per search (1-10,000). This helps control response times and resource usage. Leave empty to use Elasticsearch's default limit. + +--- + +## Troubleshooting + +### Connection Issues + +- **Invalid URL:** Ensure your endpoint URL includes the protocol (https://) and port number if required. +- **SSL/TLS Errors:** Verify that your cluster uses HTTPS and the certificate is valid. Self-signed certificates may require additional configuration. +- **Connection Timeout:** Check your network connectivity and firewall settings. Ensure the Elasticsearch cluster is accessible from SurfSense servers. + +### Authentication Issues + +- **Invalid Credentials:** Double-check your username/password or API key. API keys must be base64-encoded. +- **Permission Denied:** Ensure your API key or user account has read permissions for the indices you want to search. +- **API Key Format:** Elasticsearch API keys are typically base64-encoded strings. Make sure you're using the full key value. + +### Search Issues + +- **No Results:** Verify that your index selection matches existing indices. Use wildcards carefully. +- **Slow Searches:** Limit the number of indices or use specific index names instead of wildcards. Reduce the maximum documents limit. +- **Field Not Found:** Ensure the search fields you specify actually exist in your Elasticsearch documents. diff --git a/surfsense_web/content/docs/connectors/github.mdx b/surfsense_web/content/docs/connectors/github.mdx index 6a4574ec4..ce60d2a32 100644 --- a/surfsense_web/content/docs/connectors/github.mdx +++ b/surfsense_web/content/docs/connectors/github.mdx @@ -3,9 +3,18 @@ title: GitHub description: Connect your GitHub repositories to SurfSense --- -# GitHub Connector +# GitHub Integration Setup Guide -Connect your GitHub repositories to SurfSense for code search and AI-powered insights. The connector uses [gitingest](https://gitingest.com) to efficiently index entire codebases. +This guide walks you through connecting your GitHub repositories to SurfSense for code search and AI-powered insights. + +## How it works + +The GitHub connector uses [gitingest](https://gitingest.com) to fetch and process repository contents from GitHub. + +- For follow-up indexing runs, the connector retrieves the latest repository state and updates changed files. +- Indexing should be configured to run periodically, so updates should appear in your search results within minutes. + +--- ## What Gets Indexed @@ -15,7 +24,9 @@ Connect your GitHub repositories to SurfSense for code search and AI-powered ins | Documentation | README files, Markdown documents, text files | | Configuration | JSON, YAML, TOML, .env examples, Dockerfiles | -> ⚠️ Binary files and files larger than 5MB are automatically excluded. + + Binary files and files larger than 5MB are automatically excluded. + --- @@ -39,7 +50,13 @@ For private repos, you need a GitHub Personal Access Token (PAT). 2. Set an expiration 3. Click **Generate token** and copy it -> ⚠️ The token starts with `ghp_`. Store it securely. + + The token starts with `ghp_`. Store it securely. + + + +Enable periodic sync to automatically re-index repositories when content changes. Available frequencies: Every 5 minutes, 15 minutes, hourly, every 6 hours, daily, or weekly. + --- @@ -53,21 +70,6 @@ For private repos, you need a GitHub Personal Access Token (PAT). --- -## Periodic Sync - -Enable periodic sync to automatically re-index repositories when content changes: - -| Frequency | Use Case | -|-----------|----------| -| Every 5 minutes | Active development | -| Every 15 minutes | Frequent commits | -| Every hour | Regular workflow | -| Every 6 hours | Less active repos | -| Daily | Reference repositories | -| Weekly | Stable codebases | - ---- - ## Troubleshooting **Repository not found** diff --git a/surfsense_web/content/docs/connectors/gmail.mdx b/surfsense_web/content/docs/connectors/gmail.mdx index 434e6ae4d..2b514f89e 100644 --- a/surfsense_web/content/docs/connectors/gmail.mdx +++ b/surfsense_web/content/docs/connectors/gmail.mdx @@ -60,7 +60,9 @@ This guide walks you through setting up a Google OAuth 2.0 integration for SurfS 1. After creating the OAuth client, you'll see a dialog with your credentials 2. Copy your **Client ID** and **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + ![Google Developer Console Config](/docs/connectors/google/google_oauth_config.png) diff --git a/surfsense_web/content/docs/connectors/google-calendar.mdx b/surfsense_web/content/docs/connectors/google-calendar.mdx index cc1eae545..7919d0361 100644 --- a/surfsense_web/content/docs/connectors/google-calendar.mdx +++ b/surfsense_web/content/docs/connectors/google-calendar.mdx @@ -59,7 +59,9 @@ This guide walks you through setting up a Google OAuth 2.0 integration for SurfS 1. After creating the OAuth client, you'll see a dialog with your credentials 2. Copy your **Client ID** and **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + ![Google Developer Console Config](/docs/connectors/google/google_oauth_config.png) diff --git a/surfsense_web/content/docs/connectors/google-drive.mdx b/surfsense_web/content/docs/connectors/google-drive.mdx index 00ea2f610..402b25566 100644 --- a/surfsense_web/content/docs/connectors/google-drive.mdx +++ b/surfsense_web/content/docs/connectors/google-drive.mdx @@ -60,7 +60,9 @@ This guide walks you through setting up a Google OAuth 2.0 integration for SurfS 1. After creating the OAuth client, you'll see a dialog with your credentials 2. Copy your **Client ID** and **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + ![Google Developer Console Config](/docs/connectors/google/google_oauth_config.png) diff --git a/surfsense_web/content/docs/connectors/jira.mdx b/surfsense_web/content/docs/connectors/jira.mdx index ebe639d6d..c6b5a26e1 100644 --- a/surfsense_web/content/docs/connectors/jira.mdx +++ b/surfsense_web/content/docs/connectors/jira.mdx @@ -28,7 +28,9 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration 2. Check the box to agree to Atlassian's developer terms 3. Click **"Create"** -> ℹ️ New OAuth 2.0 integrations use rotating refresh tokens, which improve security by limiting token validity and enabling automatic detection of token reuse. + + New OAuth 2.0 integrations use rotating refresh tokens, which improve security by limiting token validity and enabling automatic detection of token reuse. + ![Create New Integration Form](/docs/connectors/atlassian/atlassian-name-integration.png) @@ -41,7 +43,9 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration ``` 3. Click **"Save changes"** -> ℹ️ You can enter up to 10 redirect URIs, one per line. + + You can enter up to 10 redirect URIs, one per line. + ![Authorization Callback URLs](/docs/connectors/atlassian/atlassian-authorization.png) @@ -60,8 +64,8 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration | Scope Name | Code | Description | |------------|------|-------------| -| ✅ View Jira issue data | `read:jira-work` | Read Jira project and issue data, search for issues, and objects associated with issues like attachments and worklogs | -| ✅ View user profiles | `read:jira-user` | View user information in Jira that the user has access to, including usernames, email addresses, and avatars | +| View Jira issue data | `read:jira-work` | Read Jira project and issue data, search for issues, and objects associated with issues like attachments and worklogs | +| View user profiles | `read:jira-user` | View user information in Jira that the user has access to, including usernames, email addresses, and avatars | 4. Click **"Save"** @@ -72,7 +76,9 @@ This guide walks you through setting up an Atlassian OAuth 2.0 (3LO) integration 1. In the left sidebar, click **"Settings"** 2. Copy your **Client ID** and **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + --- diff --git a/surfsense_web/content/docs/connectors/linear.mdx b/surfsense_web/content/docs/connectors/linear.mdx index f9dc9a62b..5fb7bc8c5 100644 --- a/surfsense_web/content/docs/connectors/linear.mdx +++ b/surfsense_web/content/docs/connectors/linear.mdx @@ -30,7 +30,7 @@ Fill in the application details: ### Settings -- ✅ **Public** - Enable this to allow the application to be installed by other workspaces +- **Public** - Enable this to allow the application to be installed by other workspaces Click **Create** to create the application. @@ -43,7 +43,9 @@ After creating the application, you'll see your OAuth credentials: 1. Copy your **Client ID** 2. Copy your **Client Secret** -> ⚠️ Never share your client secret publicly. + + Never share your client secret publicly. + ![OAuth Credentials](/docs/connectors/linear/linear-oauth-credentials.png) diff --git a/surfsense_web/content/docs/connectors/luma.mdx b/surfsense_web/content/docs/connectors/luma.mdx index e16e5a949..a218be46b 100644 --- a/surfsense_web/content/docs/connectors/luma.mdx +++ b/surfsense_web/content/docs/connectors/luma.mdx @@ -3,4 +3,68 @@ title: Luma description: Connect your Luma events to SurfSense --- -# Documentation in progress \ No newline at end of file +# Luma Integration Setup Guide + +This guide walks you through connecting your Luma events to SurfSense for event search and AI-powered insights. + +## How it works + +The Luma connector uses the Luma API to fetch all events that your API key has access to. + +- For follow-up indexing runs, the connector retrieves events that have been updated since the last indexing attempt. +- Indexing should be configured to run periodically, so updates should appear in your search results within minutes. + +--- + +## Authorization + + +You need a Luma API key to use this connector. The key will be used to read your Luma events with read-only permissions. + + +### Step 1: Get Your API Key + +1. Log into your Luma account +2. Navigate to your account settings +3. Go to API settings or Developer settings +4. Generate a new API key +5. Copy the generated API key + +You can also visit [Luma API Docs](https://docs.luma.com/reference/getting-started-with-your-api) for more information. + +### Step 2: Grant Necessary Access + +The API key will have access to all events that your user account can see. Make sure your account has appropriate permissions for the events you want to index. + + +Enable periodic sync to automatically re-index events when content changes. Available frequencies: Every 5 minutes, 15 minutes, hourly, every 6 hours, daily, or weekly. + + +--- + +## Connecting to SurfSense + +1. Navigate to the Connector Dashboard and select the **Luma** Connector. +2. Fill in the required fields: + +| Field | Description | Example | +|-------|-------------|---------| +| **Connector Name** | A friendly name to identify this connector | `My Luma Connector` | +| **Luma API Key** | Your Luma API key (will be encrypted and stored securely) | | + +3. Click **Connect** to establish the connection. +4. Once connected, your Luma events will be indexed automatically. + +### What Gets Indexed + +The Luma connector indexes the following data: + +| Data Type | Description | +|-----------|-------------| +| Event Details | Titles, descriptions, metadata | +| Attendee Info | Attendee information and lists | +| Event Metadata | Dates, locations, settings | + + + Event attachments and linked files are not indexed by this connector. + diff --git a/surfsense_web/content/docs/connectors/meta.json b/surfsense_web/content/docs/connectors/meta.json index b41e92ab9..c6f7ab383 100644 --- a/surfsense_web/content/docs/connectors/meta.json +++ b/surfsense_web/content/docs/connectors/meta.json @@ -17,7 +17,8 @@ "luma", "circleback", "elasticsearch", - "bookstack" + "bookstack", + "obsidian" ], "defaultOpen": false } diff --git a/surfsense_web/content/docs/connectors/microsoft-teams.mdx b/surfsense_web/content/docs/connectors/microsoft-teams.mdx index daa6eb375..53f36c249 100644 --- a/surfsense_web/content/docs/connectors/microsoft-teams.mdx +++ b/surfsense_web/content/docs/connectors/microsoft-teams.mdx @@ -58,7 +58,9 @@ After registration, you'll be taken to the app's **Overview** page. Here you'll ![Certificates & Secrets - Created](/docs/connectors/microsoft-teams/azure-certificates-created.png) -> ⚠️ Never share your client secret publicly or include it in code repositories. + + Never share your client secret publicly or include it in code repositories. + ## Step 6: Configure API Permissions @@ -78,7 +80,9 @@ After registration, you'll be taken to the app's **Overview** page. Here you'll 6. Click **"Add permissions"** -> ⚠️ The `ChannelMessage.Read.All` permission requires admin consent. An admin will need to click **"Grant admin consent for [Directory]"** for full functionality. + + The `ChannelMessage.Read.All` permission requires admin consent. An admin will need to click **"Grant admin consent for [Directory]"** for full functionality. + ![API Permissions](/docs/connectors/microsoft-teams/azure-api-permissions.png) diff --git a/surfsense_web/content/docs/connectors/notion.mdx b/surfsense_web/content/docs/connectors/notion.mdx index 936972f7e..0612c4f4f 100644 --- a/surfsense_web/content/docs/connectors/notion.mdx +++ b/surfsense_web/content/docs/connectors/notion.mdx @@ -52,14 +52,13 @@ After creating the integration, you'll see the configuration page with your cred ### Set Required Capabilities -Under **Content Capabilities**, enable: -- ✅ Read content +Enable the following capabilities: -Under **Comment Capabilities**, enable: -- ✅ Read comments - -Under **User Capabilities**, select: -- 🔘 Read user information including email addresses +| Capability Type | Required Setting | +|----------------|------------------| +| **Content Capabilities** | Read content | +| **Comment Capabilities** | Read comments | +| **User Capabilities** | Read user information including email addresses | Click **Save** to apply the capabilities. diff --git a/surfsense_web/content/docs/connectors/obsidian.mdx b/surfsense_web/content/docs/connectors/obsidian.mdx new file mode 100644 index 000000000..c8475c97f --- /dev/null +++ b/surfsense_web/content/docs/connectors/obsidian.mdx @@ -0,0 +1,143 @@ +--- +title: Obsidian +description: Connect your Obsidian vault to SurfSense +--- + +# Obsidian Integration Setup Guide + +This guide walks you through connecting your Obsidian vault to SurfSense for note search and AI-powered insights. + + + This connector requires direct file system access and only works with self-hosted SurfSense installations. + + +## How it works + +The Obsidian connector scans your local Obsidian vault directory and indexes all Markdown files. It preserves your note structure and extracts metadata from YAML frontmatter. + +- For follow-up indexing runs, the connector uses content hashing to skip unchanged files for faster sync. +- Indexing should be configured to run periodically, so updates should appear in your search results within minutes. + +--- + +## What Gets Indexed + +| Content Type | Description | +|--------------|-------------| +| Markdown Files | All `.md` files in your vault | +| Frontmatter | YAML metadata (title, tags, aliases, dates) | +| Wiki Links | Links between notes (`[[note]]`) | +| Inline Tags | Tags throughout your notes (`#tag`) | +| Note Content | Full content with intelligent chunking | + + + Binary files and attachments are not indexed by default. Enable "Include Attachments" to index embedded files. + + +--- + +## Quick Start (Local Installation) + +1. Navigate to **Connectors** → **Add Connector** → **Obsidian** +2. Enter your vault path: `/Users/yourname/Documents/MyVault` +3. Enter a vault name (e.g., `Personal Notes`) +4. Click **Connect Obsidian** + + + Find your vault path: In Obsidian, right-click any note → "Reveal in Finder" (macOS) or "Show in Explorer" (Windows). + + + +Enable periodic sync to automatically re-index notes when content changes. Available frequencies: Every 5 minutes, 15 minutes, hourly, every 6 hours, daily, or weekly. + + +--- + +## Docker Setup + +For Docker deployments, you need to mount your Obsidian vault as a volume. + +### Step 1: Update docker-compose.yml + +Add your vault as a volume mount to the SurfSense backend service: + +```yaml +services: + surfsense: + # ... other config + volumes: + - /path/to/your/obsidian/vault:/app/obsidian_vaults/my-vault:ro +``` + + + The `:ro` flag mounts the vault as read-only, which is recommended for security. + + +### Step 2: Configure the Connector + +Use the **container path** (not your local path) when setting up the connector: + +| Your Local Path | Container Path (use this) | +|-----------------|---------------------------| +| `/Users/john/Documents/MyVault` | `/app/obsidian_vaults/my-vault` | +| `C:\Users\john\Documents\MyVault` | `/app/obsidian_vaults/my-vault` | + +### Example: Multiple Vaults + +```yaml +volumes: + - /Users/john/Documents/PersonalNotes:/app/obsidian_vaults/personal:ro + - /Users/john/Documents/WorkNotes:/app/obsidian_vaults/work:ro +``` + +Then create separate connectors for each vault using `/app/obsidian_vaults/personal` and `/app/obsidian_vaults/work`. + +--- + +## Connector Configuration + +| Field | Description | Required | +|-------|-------------|----------| +| **Connector Name** | A friendly name to identify this connector | Yes | +| **Vault Path** | Absolute path to your vault (container path for Docker) | Yes | +| **Vault Name** | Display name for your vault in search results | Yes | +| **Exclude Folders** | Comma-separated folder names to skip | No | +| **Include Attachments** | Index embedded files (images, PDFs) | No | + +--- + +## Recommended Exclusions + +Common folders to exclude from indexing: + +| Folder | Reason | +|--------|--------| +| `.obsidian` | Obsidian config files (always exclude) | +| `.trash` | Obsidian's trash folder | +| `templates` | Template files you don't want searchable | +| `daily-notes` | If you want to exclude daily notes | +| `attachments` | If not using "Include Attachments" | + +Default exclusions: `.obsidian,.trash` + +--- + +## Troubleshooting + +**Vault not found / Permission denied** +- Verify the path exists and is accessible +- For Docker: ensure the volume is mounted correctly in `docker-compose.yml` +- Check file permissions: SurfSense needs read access to the vault directory + +**No notes indexed** +- Ensure your vault contains `.md` files +- Check that notes aren't in excluded folders +- Verify the path points to the vault root (contains `.obsidian` folder) + +**Changes not appearing** +- Wait for the next sync cycle, or manually trigger re-indexing +- For Docker: restart the container if you modified volume mounts + +**Docker: "path not found" error** +- Use the container path (`/app/obsidian_vaults/...`), not your local path +- Verify the volume mount in `docker-compose.yml` matches diff --git a/surfsense_web/content/docs/connectors/slack.mdx b/surfsense_web/content/docs/connectors/slack.mdx index ccabe6f9e..072b83343 100644 --- a/surfsense_web/content/docs/connectors/slack.mdx +++ b/surfsense_web/content/docs/connectors/slack.mdx @@ -21,7 +21,9 @@ This guide walks you through setting up a Slack OAuth integration for SurfSense. 2. Select the workspace to develop your app in 3. Click **"Create App"** -> ⚠️ You won't be able to change the workspace later. The workspace will control the app even if you leave it. + + You won't be able to change the workspace later. The workspace will control the app even if you leave it. + ![Name App & Choose Workspace](/docs/connectors/slack/slack-name-workspace.png) @@ -32,7 +34,9 @@ After creating the app, you'll be taken to the **Basic Information** page. Here 1. Copy your **Client ID** 2. Copy your **Client Secret** (click Show to reveal) -> ⚠️ Never share your app credentials publicly. + + Never share your app credentials publicly. + ![Basic Information - App Credentials](/docs/connectors/slack/slack-app-credentials.png) From 3368a65b0c5ab714e7673128bdb4782d31734b63 Mon Sep 17 00:00:00 2001 From: Rohan Verma <122026167+MODSetter@users.noreply.github.com> Date: Sat, 24 Jan 2026 16:11:27 -0800 Subject: [PATCH 33/51] Change video link in README Updated video link in README. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 0c5f06029..4dd368c04 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,7 @@ SurfSense is a highly customizable AI research agent, connected to external sour # Video -https://github.com/user-attachments/assets/42a29ea1-d4d8-4213-9c69-972b5b806d58 - +https://github.com/user-attachments/assets/cc0c84d3-1f2f-4f7a-b519-2ecce22310b1 ## Podcast Sample From 20efc63f3003971a0db6c62c1c34cfdbf756cc3c Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sat, 24 Jan 2026 17:42:44 -0800 Subject: [PATCH 34/51] feat: implement dynamic connector and document type discovery for knowledge base tool - Added functionality to dynamically discover available connectors and document types for the knowledge base tool, enhancing its flexibility and usability. - Introduced new mapping functions and updated existing search methods to accommodate Composio connectors, improving integration with external services. - Enhanced error handling and logging for connector discovery processes, ensuring better feedback during failures. --- .../app/agents/new_chat/chat_deepagent.py | 112 ++++++ .../app/agents/new_chat/tools/__init__.py | 4 +- .../agents/new_chat/tools/knowledge_base.py | 306 +++++++++++---- .../app/agents/new_chat/tools/registry.py | 5 + .../app/services/connector_service.py | 347 ++++++++++++++++++ 5 files changed, 708 insertions(+), 66 deletions(-) diff --git a/surfsense_backend/app/agents/new_chat/chat_deepagent.py b/surfsense_backend/app/agents/new_chat/chat_deepagent.py index 5bc6ac2e2..53e1b14bd 100644 --- a/surfsense_backend/app/agents/new_chat/chat_deepagent.py +++ b/surfsense_backend/app/agents/new_chat/chat_deepagent.py @@ -7,6 +7,7 @@ via NewLLMConfig. """ from collections.abc import Sequence +from typing import Any from deepagents import create_deep_agent from langchain_core.tools import BaseTool @@ -23,6 +24,90 @@ from app.agents.new_chat.system_prompt import ( from app.agents.new_chat.tools.registry import build_tools_async from app.services.connector_service import ConnectorService +# ============================================================================= +# Connector Type Mapping +# ============================================================================= + +# Maps SearchSourceConnectorType enum values to the searchable document/connector types +# used by the knowledge_base tool. Some connectors map to different document types. +_CONNECTOR_TYPE_TO_SEARCHABLE: dict[str, str] = { + # Direct mappings (connector type == searchable type) + "TAVILY_API": "TAVILY_API", + "SEARXNG_API": "SEARXNG_API", + "LINKUP_API": "LINKUP_API", + "BAIDU_SEARCH_API": "BAIDU_SEARCH_API", + "SLACK_CONNECTOR": "SLACK_CONNECTOR", + "TEAMS_CONNECTOR": "TEAMS_CONNECTOR", + "NOTION_CONNECTOR": "NOTION_CONNECTOR", + "GITHUB_CONNECTOR": "GITHUB_CONNECTOR", + "LINEAR_CONNECTOR": "LINEAR_CONNECTOR", + "DISCORD_CONNECTOR": "DISCORD_CONNECTOR", + "JIRA_CONNECTOR": "JIRA_CONNECTOR", + "CONFLUENCE_CONNECTOR": "CONFLUENCE_CONNECTOR", + "CLICKUP_CONNECTOR": "CLICKUP_CONNECTOR", + "GOOGLE_CALENDAR_CONNECTOR": "GOOGLE_CALENDAR_CONNECTOR", + "GOOGLE_GMAIL_CONNECTOR": "GOOGLE_GMAIL_CONNECTOR", + "GOOGLE_DRIVE_CONNECTOR": "GOOGLE_DRIVE_FILE", # Connector type differs from document type + "AIRTABLE_CONNECTOR": "AIRTABLE_CONNECTOR", + "LUMA_CONNECTOR": "LUMA_CONNECTOR", + "ELASTICSEARCH_CONNECTOR": "ELASTICSEARCH_CONNECTOR", + "WEBCRAWLER_CONNECTOR": "CRAWLED_URL", # Maps to document type + "BOOKSTACK_CONNECTOR": "BOOKSTACK_CONNECTOR", + "CIRCLEBACK_CONNECTOR": "CIRCLEBACK", # Connector type differs from document type + "OBSIDIAN_CONNECTOR": "OBSIDIAN_CONNECTOR", + # Composio connectors + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR": "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", +} + +# Document types that don't come from SearchSourceConnector but should always be searchable +_ALWAYS_AVAILABLE_DOC_TYPES: list[str] = [ + "EXTENSION", # Browser extension data + "FILE", # Uploaded files + "NOTE", # User notes + "YOUTUBE_VIDEO", # YouTube videos +] + + +def _map_connectors_to_searchable_types( + connector_types: list[Any], +) -> list[str]: + """ + Map SearchSourceConnectorType enums to searchable document/connector types. + + This function: + 1. Converts connector type enums to their searchable counterparts + 2. Includes always-available document types (EXTENSION, FILE, NOTE, YOUTUBE_VIDEO) + 3. Deduplicates while preserving order + + Args: + connector_types: List of SearchSourceConnectorType enum values + + Returns: + List of searchable connector/document type strings + """ + result_set: set[str] = set() + result_list: list[str] = [] + + # Add always-available document types first + for doc_type in _ALWAYS_AVAILABLE_DOC_TYPES: + if doc_type not in result_set: + result_set.add(doc_type) + result_list.append(doc_type) + + # Map each connector type to its searchable equivalent + for ct in connector_types: + # Handle both enum and string types + ct_str = ct.value if hasattr(ct, "value") else str(ct) + searchable = _CONNECTOR_TYPE_TO_SEARCHABLE.get(ct_str) + if searchable and searchable not in result_set: + result_set.add(searchable) + result_list.append(searchable) + + return result_list + + # ============================================================================= # Deep Agent Factory # ============================================================================= @@ -116,6 +201,30 @@ async def create_surfsense_deep_agent( additional_tools=[my_custom_tool] ) """ + # Discover available connectors and document types for this search space + # This enables dynamic tool docstrings that inform the LLM about what's actually available + available_connectors: list[str] | None = None + available_document_types: list[str] | None = None + + try: + # Get enabled search source connectors for this search space + connector_types = await connector_service.get_available_connectors( + search_space_id + ) + if connector_types: + # Convert enum values to strings and also include mapped document types + available_connectors = _map_connectors_to_searchable_types(connector_types) + + # Get document types that have at least one document indexed + available_document_types = await connector_service.get_available_document_types( + search_space_id + ) + except Exception as e: + # Log but don't fail - fall back to all connectors if discovery fails + import logging + + logging.warning(f"Failed to discover available connectors/document types: {e}") + # Build dependencies dict for the tools registry dependencies = { "search_space_id": search_space_id, @@ -123,6 +232,9 @@ async def create_surfsense_deep_agent( "connector_service": connector_service, "firecrawl_api_key": firecrawl_api_key, "user_id": user_id, # Required for memory tools + # Dynamic connector/document type discovery for knowledge base tool + "available_connectors": available_connectors, + "available_document_types": available_document_types, } # Build tools using the async registry (includes MCP tools) diff --git a/surfsense_backend/app/agents/new_chat/tools/__init__.py b/surfsense_backend/app/agents/new_chat/tools/__init__.py index acbdbcb3a..9e1a4f19c 100644 --- a/surfsense_backend/app/agents/new_chat/tools/__init__.py +++ b/surfsense_backend/app/agents/new_chat/tools/__init__.py @@ -19,6 +19,7 @@ Available tools: # Tool factory exports (for direct use) from .display_image import create_display_image_tool from .knowledge_base import ( + CONNECTOR_DESCRIPTIONS, create_search_knowledge_base_tool, format_documents_for_context, search_knowledge_base_async, @@ -40,6 +41,8 @@ from .user_memory import create_recall_memory_tool, create_save_memory_tool __all__ = [ # Registry "BUILTIN_TOOLS", + # Knowledge base utilities + "CONNECTOR_DESCRIPTIONS", "ToolDefinition", "build_tools", # Tool factories @@ -51,7 +54,6 @@ __all__ = [ "create_scrape_webpage_tool", "create_search_knowledge_base_tool", "create_search_surfsense_docs_tool", - # Knowledge base utilities "format_documents_for_context", "get_all_tool_names", "get_default_enabled_tools", diff --git a/surfsense_backend/app/agents/new_chat/tools/knowledge_base.py b/surfsense_backend/app/agents/new_chat/tools/knowledge_base.py index 552019dda..a11e4ac38 100644 --- a/surfsense_backend/app/agents/new_chat/tools/knowledge_base.py +++ b/surfsense_backend/app/agents/new_chat/tools/knowledge_base.py @@ -12,7 +12,8 @@ import json from datetime import datetime from typing import Any -from langchain_core.tools import tool +from langchain_core.tools import StructuredTool +from pydantic import BaseModel, Field from sqlalchemy.ext.asyncio import AsyncSession from app.services.connector_service import ConnectorService @@ -22,6 +23,7 @@ from app.services.connector_service import ConnectorService # ============================================================================= # Canonical connector values used internally by ConnectorService +# Includes all document types and search source connectors _ALL_CONNECTORS: list[str] = [ "EXTENSION", "FILE", @@ -50,41 +52,117 @@ _ALL_CONNECTORS: list[str] = [ "CRAWLED_URL", "CIRCLEBACK", "OBSIDIAN_CONNECTOR", + # Composio connectors + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "COMPOSIO_GMAIL_CONNECTOR", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", ] +# Human-readable descriptions for each connector type +# Used for generating dynamic docstrings and informing the LLM +CONNECTOR_DESCRIPTIONS: dict[str, str] = { + "EXTENSION": "Web content saved via SurfSense browser extension (personal browsing history)", + "FILE": "User-uploaded documents (PDFs, Word, etc.) (personal files)", + "NOTE": "SurfSense Notes (notes created inside SurfSense)", + "SLACK_CONNECTOR": "Slack conversations and shared content (personal workspace communications)", + "TEAMS_CONNECTOR": "Microsoft Teams messages and conversations (personal Teams communications)", + "NOTION_CONNECTOR": "Notion workspace pages and databases (personal knowledge management)", + "YOUTUBE_VIDEO": "YouTube video transcripts and metadata (personally saved videos)", + "GITHUB_CONNECTOR": "GitHub repository content and issues (personal repositories and interactions)", + "ELASTICSEARCH_CONNECTOR": "Elasticsearch indexed documents and data (personal Elasticsearch instances)", + "LINEAR_CONNECTOR": "Linear project issues and discussions (personal project management)", + "JIRA_CONNECTOR": "Jira project issues, tickets, and comments (personal project tracking)", + "CONFLUENCE_CONNECTOR": "Confluence pages and comments (personal project documentation)", + "CLICKUP_CONNECTOR": "ClickUp tasks and project data (personal task management)", + "GOOGLE_CALENDAR_CONNECTOR": "Google Calendar events, meetings, and schedules (personal calendar)", + "GOOGLE_GMAIL_CONNECTOR": "Google Gmail emails and conversations (personal emails)", + "GOOGLE_DRIVE_FILE": "Google Drive files and documents (personal cloud storage)", + "DISCORD_CONNECTOR": "Discord server conversations and shared content (personal community)", + "AIRTABLE_CONNECTOR": "Airtable records, tables, and database content (personal data)", + "TAVILY_API": "Tavily web search API results (real-time web search)", + "SEARXNG_API": "SearxNG search API results (privacy-focused web search)", + "LINKUP_API": "Linkup search API results (web search)", + "BAIDU_SEARCH_API": "Baidu search API results (Chinese web search)", + "LUMA_CONNECTOR": "Luma events and meetings", + "WEBCRAWLER_CONNECTOR": "Webpages indexed by SurfSense (personally selected websites)", + "CRAWLED_URL": "Webpages indexed by SurfSense (personally selected websites)", + "BOOKSTACK_CONNECTOR": "BookStack pages (personal documentation)", + "CIRCLEBACK": "Circleback meeting notes, transcripts, and action items", + "OBSIDIAN_CONNECTOR": "Obsidian vault notes and markdown files (personal notes)", + # Composio connectors + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": "Google Drive files via Composio (personal cloud storage)", + "COMPOSIO_GMAIL_CONNECTOR": "Gmail emails via Composio (personal emails)", + "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": "Google Calendar events via Composio (personal calendar)", +} -def _normalize_connectors(connectors_to_search: list[str] | None) -> list[str]: + +def _normalize_connectors( + connectors_to_search: list[str] | None, + available_connectors: list[str] | None = None, +) -> list[str]: """ Normalize connectors provided by the model. - Accepts user-facing enums like WEBCRAWLER_CONNECTOR and maps them to canonical ConnectorService types. - Drops unknown values. - - If None/empty, defaults to searching across all known connectors. + - If available_connectors is provided, only includes connectors from that list. + - If connectors_to_search is None/empty, defaults to available_connectors or all. + + Args: + connectors_to_search: List of connectors requested by the model + available_connectors: List of connectors actually available in the search space + + Returns: + List of normalized connector strings to search """ + # Determine the set of valid connectors to consider + valid_set = ( + set(available_connectors) if available_connectors else set(_ALL_CONNECTORS) + ) + if not connectors_to_search: - return list(_ALL_CONNECTORS) + # Search all available connectors if none specified + return ( + list(available_connectors) + if available_connectors + else list(_ALL_CONNECTORS) + ) normalized: list[str] = [] for raw in connectors_to_search: c = (raw or "").strip().upper() if not c: continue + # Map user-facing aliases to canonical names if c == "WEBCRAWLER_CONNECTOR": c = "CRAWLED_URL" normalized.append(c) - # de-dupe while preserving order + filter unknown + # de-dupe while preserving order + filter to valid connectors seen: set[str] = set() out: list[str] = [] for c in normalized: if c in seen: continue + # Only include if it's a known connector AND available if c not in _ALL_CONNECTORS: continue + if c not in valid_set: + continue seen.add(c) out.append(c) - return out if out else list(_ALL_CONNECTORS) + + # Fallback to all available if nothing matched + return ( + out + if out + else ( + list(available_connectors) + if available_connectors + else list(_ALL_CONNECTORS) + ) + ) # ============================================================================= @@ -233,6 +311,7 @@ async def search_knowledge_base_async( top_k: int = 10, start_date: datetime | None = None, end_date: datetime | None = None, + available_connectors: list[str] | None = None, ) -> str: """ Search the user's knowledge base for relevant documents. @@ -248,6 +327,8 @@ async def search_knowledge_base_async( top_k: Number of results per connector start_date: Optional start datetime (UTC) for filtering documents end_date: Optional end datetime (UTC) for filtering documents + available_connectors: Optional list of connectors actually available in the search space. + If provided, only these connectors will be searched. Returns: Formatted string with search results @@ -262,7 +343,7 @@ async def search_knowledge_base_async( end_date=end_date, ) - connectors = _normalize_connectors(connectors_to_search) + connectors = _normalize_connectors(connectors_to_search, available_connectors) for connector in connectors: try: @@ -316,6 +397,16 @@ async def search_knowledge_base_async( ) all_documents.extend(chunks) + elif connector == "TEAMS_CONNECTOR": + _, chunks = await connector_service.search_teams( + user_query=query, + search_space_id=search_space_id, + top_k=top_k, + start_date=resolved_start_date, + end_date=resolved_end_date, + ) + all_documents.extend(chunks) + elif connector == "NOTION_CONNECTOR": _, chunks = await connector_service.search_notion( user_query=query, @@ -519,6 +610,39 @@ async def search_knowledge_base_async( ) all_documents.extend(chunks) + # ========================================================= + # Composio Connectors + # ========================================================= + elif connector == "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": + _, chunks = await connector_service.search_composio_google_drive( + user_query=query, + search_space_id=search_space_id, + top_k=top_k, + start_date=resolved_start_date, + end_date=resolved_end_date, + ) + all_documents.extend(chunks) + + elif connector == "COMPOSIO_GMAIL_CONNECTOR": + _, chunks = await connector_service.search_composio_gmail( + user_query=query, + search_space_id=search_space_id, + top_k=top_k, + start_date=resolved_start_date, + end_date=resolved_end_date, + ) + all_documents.extend(chunks) + + elif connector == "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR": + _, chunks = await connector_service.search_composio_google_calendar( + user_query=query, + search_space_id=search_space_id, + top_k=top_k, + start_date=resolved_start_date, + end_date=resolved_end_date, + ) + all_documents.extend(chunks) + except Exception as e: print(f"Error searching connector {connector}: {e}") continue @@ -543,11 +667,68 @@ async def search_knowledge_base_async( return format_documents_for_context(deduplicated) +def _build_connector_docstring(available_connectors: list[str] | None) -> str: + """ + Build the connector documentation section for the tool docstring. + + Args: + available_connectors: List of available connector types, or None for all + + Returns: + Formatted docstring section listing available connectors + """ + connectors = available_connectors if available_connectors else list(_ALL_CONNECTORS) + + lines = [] + for connector in connectors: + # Skip internal names, prefer user-facing aliases + if connector == "CRAWLED_URL": + # Show as WEBCRAWLER_CONNECTOR for user-facing docs + description = CONNECTOR_DESCRIPTIONS.get(connector, connector) + lines.append(f"- WEBCRAWLER_CONNECTOR: {description}") + else: + description = CONNECTOR_DESCRIPTIONS.get(connector, connector) + lines.append(f"- {connector}: {description}") + + return "\n".join(lines) + + +# ============================================================================= +# Tool Input Schema +# ============================================================================= + + +class SearchKnowledgeBaseInput(BaseModel): + """Input schema for the search_knowledge_base tool.""" + + query: str = Field( + description="The search query - be specific and include key terms" + ) + top_k: int = Field( + default=10, + description="Number of results to retrieve (default: 10)", + ) + start_date: str | None = Field( + default=None, + description="Optional ISO date/datetime (e.g. '2025-12-12' or '2025-12-12T00:00:00+00:00')", + ) + end_date: str | None = Field( + default=None, + description="Optional ISO date/datetime (e.g. '2025-12-19' or '2025-12-19T23:59:59+00:00')", + ) + connectors_to_search: list[str] | None = Field( + default=None, + description="Optional list of connector enums to search. If omitted, searches all available.", + ) + + def create_search_knowledge_base_tool( search_space_id: int, db_session: AsyncSession, connector_service: ConnectorService, -): + available_connectors: list[str] | None = None, + available_document_types: list[str] | None = None, +) -> StructuredTool: """ Factory function to create the search_knowledge_base tool with injected dependencies. @@ -555,72 +736,57 @@ def create_search_knowledge_base_tool( search_space_id: The user's search space ID db_session: Database session connector_service: Initialized connector service + available_connectors: Optional list of connector types available in the search space. + Used to dynamically generate the tool docstring. + available_document_types: Optional list of document types that have data in the search space. + Used to inform the LLM about what data exists. Returns: - A configured tool function + A configured StructuredTool instance """ + # Build connector documentation dynamically + connector_docs = _build_connector_docstring(available_connectors) - @tool - async def search_knowledge_base( + # Build context about available document types + doc_types_info = "" + if available_document_types: + doc_types_info = f""" + +## Document types with indexed content in this search space + +The following document types have content available for search: +{", ".join(available_document_types)} + +Focus searches on these types for best results.""" + + # Build the dynamic description for the tool + # This is what the LLM sees when deciding whether/how to use the tool + dynamic_description = f"""Search the user's personal knowledge base for relevant information. + +Use this tool to find documents, notes, files, web pages, and other content that may help answer the user's question. + +IMPORTANT: +- If the user requests a specific source type (e.g. "my notes", "Slack messages"), pass `connectors_to_search=[...]` using the enums below. +- If `connectors_to_search` is omitted/empty, the system will search broadly. +- Only connectors that are enabled/configured for this search space are available.{doc_types_info} + +## Available connector enums for `connectors_to_search` + +{connector_docs} + +NOTE: `WEBCRAWLER_CONNECTOR` is mapped internally to the canonical document type `CRAWLED_URL`.""" + + # Capture for closure + _available_connectors = available_connectors + + async def _search_knowledge_base_impl( query: str, top_k: int = 10, start_date: str | None = None, end_date: str | None = None, connectors_to_search: list[str] | None = None, ) -> str: - """ - Search the user's personal knowledge base for relevant information. - - Use this tool to find documents, notes, files, web pages, and other content - that may help answer the user's question. - - IMPORTANT: - - If the user requests a specific source type (e.g. "my notes", "Slack messages"), - pass `connectors_to_search=[...]` using the enums below. - - If `connectors_to_search` is omitted/empty, the system will search broadly. - - ## Available connector enums for `connectors_to_search` - - - EXTENSION: "Web content saved via SurfSense browser extension" (personal browsing history) - - FILE: "User-uploaded documents (PDFs, Word, etc.)" (personal files) - - NOTE: "SurfSense Notes" (notes created inside SurfSense) - - SLACK_CONNECTOR: "Slack conversations and shared content" (personal workspace communications) - - TEAMS_CONNECTOR: "Microsoft Teams messages and conversations" (personal Teams communications) - - NOTION_CONNECTOR: "Notion workspace pages and databases" (personal knowledge management) - - YOUTUBE_VIDEO: "YouTube video transcripts and metadata" (personally saved videos) - - GITHUB_CONNECTOR: "GitHub repository content and issues" (personal repositories and interactions) - - ELASTICSEARCH_CONNECTOR: "Elasticsearch indexed documents and data" (personal Elasticsearch instances and custom data sources) - - LINEAR_CONNECTOR: "Linear project issues and discussions" (personal project management) - - JIRA_CONNECTOR: "Jira project issues, tickets, and comments" (personal project tracking) - - CONFLUENCE_CONNECTOR: "Confluence pages and comments" (personal project documentation) - - CLICKUP_CONNECTOR: "ClickUp tasks and project data" (personal task management) - - GOOGLE_CALENDAR_CONNECTOR: "Google Calendar events, meetings, and schedules" (personal calendar and time management) - - GOOGLE_GMAIL_CONNECTOR: "Google Gmail emails and conversations" (personal emails and communications) - - GOOGLE_DRIVE_FILE: "Google Drive files and documents" (personal cloud storage and file management) - - DISCORD_CONNECTOR: "Discord server conversations and shared content" (personal community communications) - - AIRTABLE_CONNECTOR: "Airtable records, tables, and database content" (personal data management and organization) - - TAVILY_API: "Tavily search API results" (personalized search results) - - SEARXNG_API: "SearxNG search API results" (personalized search results) - - LINKUP_API: "Linkup search API results" (personalized search results) - - BAIDU_SEARCH_API: "Baidu search API results" (personalized search results) - - LUMA_CONNECTOR: "Luma events" - - WEBCRAWLER_CONNECTOR: "Webpages indexed by SurfSense" (personally selected websites) - - BOOKSTACK_CONNECTOR: "BookStack pages" (personal documentation) - - CIRCLEBACK: "Circleback meeting notes, transcripts, and action items" (personal meeting records) - - OBSIDIAN_CONNECTOR: "Obsidian vault notes and markdown files" (personal notes and knowledge management) - - NOTE: `WEBCRAWLER_CONNECTOR` is mapped internally to the canonical document type `CRAWLED_URL`. - - Args: - query: The search query - be specific and include key terms - top_k: Number of results to retrieve (default: 10) - start_date: Optional ISO date/datetime (e.g. "2025-12-12" or "2025-12-12T00:00:00+00:00") - end_date: Optional ISO date/datetime (e.g. "2025-12-19" or "2025-12-19T23:59:59+00:00") - connectors_to_search: Optional list of connector enums to search. If omitted, searches all. - - Returns: - Formatted string with relevant documents and their content - """ + """Implementation function for knowledge base search.""" from app.agents.new_chat.utils import parse_date_or_datetime parsed_start: datetime | None = None @@ -640,6 +806,16 @@ def create_search_knowledge_base_tool( top_k=top_k, start_date=parsed_start, end_date=parsed_end, + available_connectors=_available_connectors, ) - return search_knowledge_base + # Create StructuredTool with dynamic description + # This properly sets the description that the LLM sees + tool = StructuredTool( + name="search_knowledge_base", + description=dynamic_description, + coroutine=_search_knowledge_base_impl, + args_schema=SearchKnowledgeBaseInput, + ) + + return tool diff --git a/surfsense_backend/app/agents/new_chat/tools/registry.py b/surfsense_backend/app/agents/new_chat/tools/registry.py index e4ce7a6b7..968e51445 100644 --- a/surfsense_backend/app/agents/new_chat/tools/registry.py +++ b/surfsense_backend/app/agents/new_chat/tools/registry.py @@ -85,6 +85,7 @@ class ToolDefinition: # Contributors: Add your new tools here! BUILTIN_TOOLS: list[ToolDefinition] = [ # Core tool - searches the user's knowledge base + # Now supports dynamic connector/document type discovery ToolDefinition( name="search_knowledge_base", description="Search the user's personal knowledge base for relevant information", @@ -92,8 +93,12 @@ BUILTIN_TOOLS: list[ToolDefinition] = [ search_space_id=deps["search_space_id"], db_session=deps["db_session"], connector_service=deps["connector_service"], + # Optional: dynamically discovered connectors/document types + available_connectors=deps.get("available_connectors"), + available_document_types=deps.get("available_document_types"), ), requires=["search_space_id", "db_session", "connector_service"], + # Note: available_connectors and available_document_types are optional ), # Podcast generation tool ToolDefinition( diff --git a/surfsense_backend/app/services/connector_service.py b/surfsense_backend/app/services/connector_service.py index dc43697e7..4c5599815 100644 --- a/surfsense_backend/app/services/connector_service.py +++ b/surfsense_backend/app/services/connector_service.py @@ -2871,3 +2871,350 @@ class ConnectorService: } return result_object, obsidian_docs + + # ========================================================================= + # Composio Connector Search Methods + # ========================================================================= + + async def search_composio_google_drive( + self, + user_query: str, + search_space_id: int, + top_k: int = 20, + start_date: datetime | None = None, + end_date: datetime | None = None, + ) -> tuple: + """ + Search for Composio Google Drive files and return both the source information + and langchain documents. + + Uses combined chunk-level and document-level hybrid search with RRF fusion. + + Args: + user_query: The user's query + search_space_id: The search space ID to search in + top_k: Maximum number of results to return + start_date: Optional start date for filtering documents by updated_at + end_date: Optional end date for filtering documents by updated_at + + Returns: + tuple: (sources_info, langchain_documents) + """ + composio_drive_docs = await self._combined_rrf_search( + query_text=user_query, + search_space_id=search_space_id, + document_type="COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + top_k=top_k, + start_date=start_date, + end_date=end_date, + ) + + # Early return if no results + if not composio_drive_docs: + return { + "id": 54, + "name": "Google Drive (Composio)", + "type": "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "sources": [], + }, [] + + def _title_fn(doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return ( + doc_info.get("title") + or metadata.get("title") + or metadata.get("file_name") + or "Untitled Document" + ) + + def _url_fn(_doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return metadata.get("url") or metadata.get("web_view_link") or "" + + def _description_fn( + chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> str: + description = self._chunk_preview(chunk.get("content", ""), limit=200) + info_parts = [] + mime_type = metadata.get("mime_type") + modified_time = metadata.get("modified_time") + if mime_type: + info_parts.append(f"Type: {mime_type}") + if modified_time: + info_parts.append(f"Modified: {modified_time}") + if info_parts: + description = (description + " | " + " | ".join(info_parts)).strip(" |") + return description + + def _extra_fields_fn( + _chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> dict[str, Any]: + return { + "mime_type": metadata.get("mime_type", ""), + "file_id": metadata.get("file_id", ""), + "modified_time": metadata.get("modified_time", ""), + } + + sources_list = self._build_chunk_sources_from_documents( + composio_drive_docs, + title_fn=_title_fn, + url_fn=_url_fn, + description_fn=_description_fn, + extra_fields_fn=_extra_fields_fn, + ) + + # Create result object + result_object = { + "id": 54, + "name": "Google Drive (Composio)", + "type": "COMPOSIO_GOOGLE_DRIVE_CONNECTOR", + "sources": sources_list, + } + + return result_object, composio_drive_docs + + async def search_composio_gmail( + self, + user_query: str, + search_space_id: int, + top_k: int = 20, + start_date: datetime | None = None, + end_date: datetime | None = None, + ) -> tuple: + """ + Search for Composio Gmail messages and return both the source information + and langchain documents. + + Uses combined chunk-level and document-level hybrid search with RRF fusion. + + Args: + user_query: The user's query + search_space_id: The search space ID to search in + top_k: Maximum number of results to return + start_date: Optional start date for filtering documents by updated_at + end_date: Optional end date for filtering documents by updated_at + + Returns: + tuple: (sources_info, langchain_documents) + """ + composio_gmail_docs = await self._combined_rrf_search( + query_text=user_query, + search_space_id=search_space_id, + document_type="COMPOSIO_GMAIL_CONNECTOR", + top_k=top_k, + start_date=start_date, + end_date=end_date, + ) + + # Early return if no results + if not composio_gmail_docs: + return { + "id": 55, + "name": "Gmail (Composio)", + "type": "COMPOSIO_GMAIL_CONNECTOR", + "sources": [], + }, [] + + def _title_fn(doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return ( + doc_info.get("title") + or metadata.get("subject") + or metadata.get("title") + or "Untitled Email" + ) + + def _url_fn(_doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return metadata.get("url") or "" + + def _description_fn( + chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> str: + description = self._chunk_preview(chunk.get("content", ""), limit=200) + info_parts = [] + sender = metadata.get("from") or metadata.get("sender") + date = metadata.get("date") or metadata.get("received_at") + if sender: + info_parts.append(f"From: {sender}") + if date: + info_parts.append(f"Date: {date}") + if info_parts: + description = (description + " | " + " | ".join(info_parts)).strip(" |") + return description + + def _extra_fields_fn( + _chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> dict[str, Any]: + return { + "message_id": metadata.get("message_id", ""), + "thread_id": metadata.get("thread_id", ""), + "from": metadata.get("from", ""), + "to": metadata.get("to", ""), + "date": metadata.get("date", ""), + } + + sources_list = self._build_chunk_sources_from_documents( + composio_gmail_docs, + title_fn=_title_fn, + url_fn=_url_fn, + description_fn=_description_fn, + extra_fields_fn=_extra_fields_fn, + ) + + # Create result object + result_object = { + "id": 55, + "name": "Gmail (Composio)", + "type": "COMPOSIO_GMAIL_CONNECTOR", + "sources": sources_list, + } + + return result_object, composio_gmail_docs + + async def search_composio_google_calendar( + self, + user_query: str, + search_space_id: int, + top_k: int = 20, + start_date: datetime | None = None, + end_date: datetime | None = None, + ) -> tuple: + """ + Search for Composio Google Calendar events and return both the source information + and langchain documents. + + Uses combined chunk-level and document-level hybrid search with RRF fusion. + + Args: + user_query: The user's query + search_space_id: The search space ID to search in + top_k: Maximum number of results to return + start_date: Optional start date for filtering documents by updated_at + end_date: Optional end date for filtering documents by updated_at + + Returns: + tuple: (sources_info, langchain_documents) + """ + composio_calendar_docs = await self._combined_rrf_search( + query_text=user_query, + search_space_id=search_space_id, + document_type="COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", + top_k=top_k, + start_date=start_date, + end_date=end_date, + ) + + # Early return if no results + if not composio_calendar_docs: + return { + "id": 56, + "name": "Google Calendar (Composio)", + "type": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", + "sources": [], + }, [] + + def _title_fn(doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return ( + doc_info.get("title") + or metadata.get("summary") + or metadata.get("title") + or "Untitled Event" + ) + + def _url_fn(_doc_info: dict[str, Any], metadata: dict[str, Any]) -> str: + return metadata.get("url") or metadata.get("html_link") or "" + + def _description_fn( + chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> str: + description = self._chunk_preview(chunk.get("content", ""), limit=200) + info_parts = [] + start_time = metadata.get("start_time") or metadata.get("start") + end_time = metadata.get("end_time") or metadata.get("end") + if start_time: + info_parts.append(f"Start: {start_time}") + if end_time: + info_parts.append(f"End: {end_time}") + if info_parts: + description = (description + " | " + " | ".join(info_parts)).strip(" |") + return description + + def _extra_fields_fn( + _chunk: dict[str, Any], _doc_info: dict[str, Any], metadata: dict[str, Any] + ) -> dict[str, Any]: + return { + "event_id": metadata.get("event_id", ""), + "calendar_id": metadata.get("calendar_id", ""), + "start_time": metadata.get("start_time", ""), + "end_time": metadata.get("end_time", ""), + "location": metadata.get("location", ""), + } + + sources_list = self._build_chunk_sources_from_documents( + composio_calendar_docs, + title_fn=_title_fn, + url_fn=_url_fn, + description_fn=_description_fn, + extra_fields_fn=_extra_fields_fn, + ) + + # Create result object + result_object = { + "id": 56, + "name": "Google Calendar (Composio)", + "type": "COMPOSIO_GOOGLE_CALENDAR_CONNECTOR", + "sources": sources_list, + } + + return result_object, composio_calendar_docs + + # ========================================================================= + # Utility Methods for Connector Discovery + # ========================================================================= + + async def get_available_connectors( + self, + search_space_id: int, + ) -> list[SearchSourceConnectorType]: + """ + Get all available (enabled) connector types for a search space. + + Args: + search_space_id: The search space ID + + Returns: + List of SearchSourceConnectorType enums for enabled connectors + """ + query = ( + select(SearchSourceConnector.connector_type) + .filter( + SearchSourceConnector.search_space_id == search_space_id, + ) + .distinct() + ) + + result = await self.session.execute(query) + connector_types = result.scalars().all() + return list(connector_types) + + async def get_available_document_types( + self, + search_space_id: int, + ) -> list[str]: + """ + Get all document types that have at least one document in the search space. + + Args: + search_space_id: The search space ID + + Returns: + List of document type strings that have documents indexed + """ + from sqlalchemy import distinct + + from app.db import Document + + query = select(distinct(Document.document_type)).filter( + Document.search_space_id == search_space_id, + ) + + result = await self.session.execute(query) + doc_types = result.scalars().all() + return [str(dt) for dt in doc_types] From 555df90c842c52ac50a708a38f424287e1fc88b5 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sat, 24 Jan 2026 17:47:18 -0800 Subject: [PATCH 35/51] chore: New connector statuses for Composio and GitHub --- .../config/connector-status-config.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json b/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json index b729c3f8b..2c1010b1c 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json +++ b/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json @@ -24,6 +24,16 @@ "enabled": true, "status": "warning", "statusMessage": "Some requests may be blocked if not using Firecrawl." + }, + "COMPOSIO_GOOGLE_DRIVE_CONNECTOR": { + "enabled": false, + "status": "disabled", + "statusMessage": "Not available yet." + }, + "GITHUB_CONNECTOR": { + "enabled": false, + "status": "warning", + "statusMessage": "Some issues with indexing repositories." } }, "globalSettings": { From 09162ad5cad4d627aa070f881830f9ca95b9d2ee Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sat, 24 Jan 2026 17:53:57 -0800 Subject: [PATCH 36/51] release: 0.0.12 --- surfsense_backend/pyproject.toml | 2 +- surfsense_backend/uv.lock | 2 +- surfsense_browser_extension/package.json | 2 +- surfsense_web/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/surfsense_backend/pyproject.toml b/surfsense_backend/pyproject.toml index ffe9e5232..57dbdc7b5 100644 --- a/surfsense_backend/pyproject.toml +++ b/surfsense_backend/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "surf-new-backend" -version = "0.0.11" +version = "0.0.12" description = "SurfSense Backend" requires-python = ">=3.12" dependencies = [ diff --git a/surfsense_backend/uv.lock b/surfsense_backend/uv.lock index 18f04288e..16b77a7b2 100644 --- a/surfsense_backend/uv.lock +++ b/surfsense_backend/uv.lock @@ -6545,7 +6545,7 @@ wheels = [ [[package]] name = "surf-new-backend" -version = "0.0.11" +version = "0.0.12" source = { editable = "." } dependencies = [ { name = "alembic" }, diff --git a/surfsense_browser_extension/package.json b/surfsense_browser_extension/package.json index b225bc206..bf926d09f 100644 --- a/surfsense_browser_extension/package.json +++ b/surfsense_browser_extension/package.json @@ -1,7 +1,7 @@ { "name": "surfsense_browser_extension", "displayName": "Surfsense Browser Extension", - "version": "0.0.11", + "version": "0.0.12", "description": "Extension to collect Browsing History for SurfSense.", "author": "https://github.com/MODSetter", "engines": { diff --git a/surfsense_web/package.json b/surfsense_web/package.json index 7ec05c95d..235f4b9db 100644 --- a/surfsense_web/package.json +++ b/surfsense_web/package.json @@ -1,6 +1,6 @@ { "name": "surfsense_web", - "version": "0.0.11", + "version": "0.0.12", "private": true, "description": "SurfSense Frontend", "scripts": { From db7e865c036f69d81f5ad74151d4223a2b64abdc Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sun, 25 Jan 2026 00:07:00 -0800 Subject: [PATCH 37/51] feat(fix): fix mentioned docs chat citation reference - Updated `format_mentioned_documents_as_context` to include detailed document metadata, including URL and JSON representation of metadata. - Improved citation handling by using chunk IDs for mentioned documents. - Adjusted the fetching of mentioned documents to load associated chunks for better citation accuracy. - Cleaned up the context formatting for better readability and structure. --- .../app/tasks/chat/stream_new_chat.py | 65 ++++++++++++++++--- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/surfsense_backend/app/tasks/chat/stream_new_chat.py b/surfsense_backend/app/tasks/chat/stream_new_chat.py index a49c244eb..8dfff4895 100644 --- a/surfsense_backend/app/tasks/chat/stream_new_chat.py +++ b/surfsense_backend/app/tasks/chat/stream_new_chat.py @@ -54,21 +54,64 @@ def format_attachments_as_context(attachments: list[ChatAttachment]) -> str: def format_mentioned_documents_as_context(documents: list[Document]) -> str: - """Format mentioned documents as context for the agent.""" + """ + Format mentioned documents as context for the agent. + + Uses the same XML structure as knowledge_base.format_documents_for_context + to ensure citations work properly with chunk IDs. + """ if not documents: return "" context_parts = [""] context_parts.append( "The user has explicitly mentioned the following documents from their knowledge base. " - "These documents are directly relevant to the query and should be prioritized as primary sources." + "These documents are directly relevant to the query and should be prioritized as primary sources. " + "Use [citation:CHUNK_ID] format for citations (e.g., [citation:123])." ) - for i, doc in enumerate(documents, 1): - context_parts.append( - f"" + context_parts.append("") + + for doc in documents: + # Build metadata JSON + metadata = doc.document_metadata or {} + metadata_json = json.dumps(metadata, ensure_ascii=False) + + # Get URL from metadata + url = ( + metadata.get("url") + or metadata.get("source") + or metadata.get("page_url") + or "" ) - context_parts.append(f"") + + context_parts.append("") + context_parts.append("") + context_parts.append(f" {doc.id}") + context_parts.append(f" {doc.document_type.value}") + context_parts.append(f" <![CDATA[{doc.title}]]>") + context_parts.append(f" ") + context_parts.append(f" ") + context_parts.append("") + context_parts.append("") + context_parts.append("") + + # Use chunks if available (preferred for proper citations) + if hasattr(doc, "chunks") and doc.chunks: + for chunk in doc.chunks: + context_parts.append( + f" " + ) + else: + # Fallback to document content if chunks not loaded + # Use document ID as chunk ID prefix for consistency + context_parts.append( + f" " + ) + + context_parts.append("") context_parts.append("") + context_parts.append("") + context_parts.append("") return "\n".join(context_parts) @@ -81,8 +124,6 @@ def format_mentioned_surfsense_docs_as_context( if not documents: return "" - import json - context_parts = [""] context_parts.append( "The user has explicitly mentioned the following SurfSense documentation pages. " @@ -262,11 +303,15 @@ async def stream_new_chat( # Build input with message history from frontend langchain_messages = [] - # Fetch mentioned documents if any + # Fetch mentioned documents if any (with chunks for proper citations) mentioned_documents: list[Document] = [] if mentioned_document_ids: + from sqlalchemy.orm import selectinload as doc_selectinload + result = await session.execute( - select(Document).filter( + select(Document) + .options(doc_selectinload(Document.chunks)) + .filter( Document.id.in_(mentioned_document_ids), Document.search_space_id == search_space_id, ) From 2d17d1a1b6684e83d591601ab677fa3254ae976a Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 25 Jan 2026 15:23:45 +0530 Subject: [PATCH 38/51] feat: replace Loader2 with Spinner component for consistent loading indicators --- .../(manage)/components/DocumentsTableShell.tsx | 5 +++-- .../editor/[documentId]/page.tsx | 11 +++++------ .../dashboard/[search_space_id]/onboard/page.tsx | 4 ++-- .../dashboard/[search_space_id]/team/page.tsx | 14 +++++++------- .../user/settings/components/ProfileContent.tsx | 7 ++++--- surfsense_web/app/invite/[invite_code]/page.tsx | 7 +++---- .../components/assistant-ui/attachment.tsx | 7 ++++--- .../assistant-ui/chat-session-status.tsx | 4 ++-- .../components/assistant-ui/connector-popup.tsx | 5 +++-- .../components/connector-card.tsx | 7 ++++--- .../views/connector-connect-view.tsx | 5 +++-- .../views/connector-edit-view.tsx | 7 ++++--- .../views/indexing-configuration-view.tsx | 5 +++-- .../tabs/active-connectors-tab.tsx | 7 ++++--- .../views/connector-accounts-list-view.tsx | 7 ++++--- .../views/youtube-crawler-view.tsx | 5 +++-- .../comment-item/comment-actions.tsx | 6 ++++-- .../member-mention-picker.tsx | 4 ++-- .../connectors/composio-drive-folder-tree.tsx | 6 +++--- .../connectors/google-drive-folder-tree.tsx | 6 +++--- .../ui/dialogs/CreateSearchSpaceDialog.tsx | 5 +++-- .../layout/ui/sidebar/AllPrivateChatsSidebar.tsx | 6 +++--- .../layout/ui/sidebar/AllSharedChatsSidebar.tsx | 6 +++--- .../components/layout/ui/sidebar/NavSection.tsx | 7 ------- .../components/new-chat/model-selector.tsx | 4 ++-- .../components/settings/llm-role-manager.tsx | 4 ++-- .../components/settings/model-config-manager.tsx | 6 +++--- .../components/shared/llm-config-form.tsx | 4 ++-- .../components/sources/DocumentUploadTab.tsx | 5 +++-- .../components/tool-ui/generate-podcast.tsx | 9 +++++---- surfsense_web/components/tool-ui/image/index.tsx | 5 +++-- .../components/tool-ui/media-card/index.tsx | 16 ++++++++-------- surfsense_web/components/tool-ui/write-todos.tsx | 4 ++-- surfsense_web/messages/en.json | 8 ++++---- 34 files changed, 113 insertions(+), 105 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx index 38d61a6ce..6d28f9166 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/components/DocumentsTableShell.tsx @@ -1,6 +1,6 @@ "use client"; -import { ChevronDown, ChevronUp, FileX, Loader2, Plus } from "lucide-react"; +import { ChevronDown, ChevronUp, FileX, Plus } from "lucide-react"; import { motion } from "motion/react"; import { useParams } from "next/navigation"; import { useTranslations } from "next-intl"; @@ -8,6 +8,7 @@ import React from "react"; import { useDocumentUploadDialog } from "@/components/assistant-ui/document-upload-popup"; import { DocumentViewer } from "@/components/document-viewer"; import { Button } from "@/components/ui/button"; +import { Spinner } from "@/components/ui/spinner"; import { Checkbox } from "@/components/ui/checkbox"; import { Table, @@ -114,7 +115,7 @@ export function DocumentsTableShell({ {loading ? (
- +

{t("loading")}

diff --git a/surfsense_web/app/dashboard/[search_space_id]/editor/[documentId]/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/editor/[documentId]/page.tsx index 2320b3b9a..74104f450 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/editor/[documentId]/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/editor/[documentId]/page.tsx @@ -1,8 +1,7 @@ "use client"; -import { useQueryClient } from "@tanstack/react-query"; import { useAtom } from "jotai"; -import { AlertCircle, ArrowLeft, FileText, Loader2, Save } from "lucide-react"; +import { AlertCircle, ArrowLeft, FileText, Save } from "lucide-react"; import { motion } from "motion/react"; import { useParams, useRouter } from "next/navigation"; import { useEffect, useMemo, useState } from "react"; @@ -21,6 +20,7 @@ import { } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; +import { Spinner } from "@/components/ui/spinner"; import { notesApiService } from "@/lib/apis/notes-api.service"; import { authenticatedFetch, getBearerToken, redirectToLogin } from "@/lib/auth-utils"; @@ -78,7 +78,6 @@ function extractTitleFromBlockNote(blocknoteDocument: BlockNoteDocument): string export default function EditorPage() { const params = useParams(); const router = useRouter(); - const queryClient = useQueryClient(); const documentId = params.documentId as string; const searchSpaceId = Number(params.search_space_id); const isNewNote = documentId === "new"; @@ -349,8 +348,8 @@ export default function EditorPage() {
- -

Loading editor...

+ +

Loading editor

@@ -437,7 +436,7 @@ export default function EditorPage() { > {saving ? ( <> - + {isNewNote ? "Creating" : "Saving"} ) : ( diff --git a/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx index 25f189203..1b7fa297f 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/onboard/page.tsx @@ -1,7 +1,6 @@ "use client"; import { useAtomValue } from "jotai"; -import { Loader2 } from "lucide-react"; import { motion } from "motion/react"; import { useParams, useRouter } from "next/navigation"; import { useEffect, useRef, useState } from "react"; @@ -17,6 +16,7 @@ import { import { Logo } from "@/components/Logo"; import { LLMConfigForm, type LLMConfigFormData } from "@/components/shared/llm-config-form"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Spinner } from "@/components/ui/spinner"; import { getBearerToken, redirectToLogin } from "@/lib/auth-utils"; export default function OnboardPage() { @@ -156,7 +156,7 @@ export default function OnboardPage() {
- +
diff --git a/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx index b661e9222..c535da9f1 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/team/page.tsx @@ -14,7 +14,6 @@ import { Hash, Link2, LinkIcon, - Loader2, Logs, type LucideIcon, MessageCircle, @@ -106,6 +105,7 @@ import { } from "@/components/ui/table"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Textarea } from "@/components/ui/textarea"; +import { Spinner } from "@/components/ui/spinner"; import type { CreateInviteRequest, DeleteInviteRequest, @@ -321,7 +321,7 @@ export default function TeamManagementPage() { animate={{ opacity: 1, scale: 1 }} className="flex flex-col items-center gap-4" > - +

Loading team data...

@@ -571,7 +571,7 @@ function MembersTab({ if (loading) { return (
- +
); } @@ -911,7 +911,7 @@ function RolesTab({ if (loading) { return (
- +
); } @@ -1068,7 +1068,7 @@ function InvitesTab({ if (loading) { return (
- +
); } @@ -1446,7 +1446,7 @@ function CreateInviteDialog({
diff --git a/surfsense_web/app/invite/[invite_code]/page.tsx b/surfsense_web/app/invite/[invite_code]/page.tsx index 1f2a786a5..a778962b4 100644 --- a/surfsense_web/app/invite/[invite_code]/page.tsx +++ b/surfsense_web/app/invite/[invite_code]/page.tsx @@ -6,8 +6,6 @@ import { AlertCircle, ArrowRight, CheckCircle2, - Clock, - Loader2, LogIn, Shield, Sparkles, @@ -30,6 +28,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { Spinner } from "@/components/ui/spinner"; import type { AcceptInviteResponse } from "@/contracts/types/invites.types"; import { invitesApiService } from "@/lib/apis/invites-api.service"; import { getBearerToken } from "@/lib/auth-utils"; @@ -164,7 +163,7 @@ export default function InviteAcceptPage() { animate={{ rotate: 360 }} transition={{ duration: 1, repeat: Infinity, ease: "linear" }} > - +

Loading invite details...

@@ -353,7 +352,7 @@ export default function InviteAcceptPage() { @@ -33,8 +34,9 @@ export function CommentActions({ canEdit, canDelete, onEdit, onDelete }: Comment Edit )} + {canEdit && canDelete && } {canDelete && ( - + Delete diff --git a/surfsense_web/components/chat-comments/member-mention-picker/member-mention-picker.tsx b/surfsense_web/components/chat-comments/member-mention-picker/member-mention-picker.tsx index 77ba1b697..78dff877a 100644 --- a/surfsense_web/components/chat-comments/member-mention-picker/member-mention-picker.tsx +++ b/surfsense_web/components/chat-comments/member-mention-picker/member-mention-picker.tsx @@ -1,7 +1,7 @@ "use client"; -import { Loader2 } from "lucide-react"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { Spinner } from "@/components/ui/spinner"; import { MemberMentionItem } from "./member-mention-item"; import type { MemberMentionPickerProps } from "./types"; @@ -24,7 +24,7 @@ export function MemberMentionPicker({ if (isLoading) { return (
- +
); } diff --git a/surfsense_web/components/connectors/composio-drive-folder-tree.tsx b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx index 76ae218cb..bc6330faa 100644 --- a/surfsense_web/components/connectors/composio-drive-folder-tree.tsx +++ b/surfsense_web/components/connectors/composio-drive-folder-tree.tsx @@ -10,12 +10,12 @@ import { FolderOpen, HardDrive, Image, - Loader2, Presentation, } from "lucide-react"; import { useState } from "react"; import { Checkbox } from "@/components/ui/checkbox"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { Spinner } from "@/components/ui/spinner"; import { useComposioDriveFolders } from "@/hooks/use-composio-drive-folders"; import { connectorsApiService } from "@/lib/apis/connectors-api.service"; import { cn } from "@/lib/utils"; @@ -253,7 +253,7 @@ export function ComposioDriveFolderTree({ aria-label={isExpanded ? `Collapse ${item.name}` : `Expand ${item.name}`} > {isLoading ? ( - + ) : isExpanded ? ( ) : ( @@ -344,7 +344,7 @@ export function ComposioDriveFolderTree({ {isLoadingRoot && (
- +
)} diff --git a/surfsense_web/components/connectors/google-drive-folder-tree.tsx b/surfsense_web/components/connectors/google-drive-folder-tree.tsx index 30df2d788..bb6fd822e 100644 --- a/surfsense_web/components/connectors/google-drive-folder-tree.tsx +++ b/surfsense_web/components/connectors/google-drive-folder-tree.tsx @@ -10,12 +10,12 @@ import { FolderOpen, HardDrive, Image, - Loader2, Presentation, } from "lucide-react"; import { useState } from "react"; import { Checkbox } from "@/components/ui/checkbox"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { Spinner } from "@/components/ui/spinner"; import { useGoogleDriveFolders } from "@/hooks/use-google-drive-folders"; import { connectorsApiService } from "@/lib/apis/connectors-api.service"; import { cn } from "@/lib/utils"; @@ -253,7 +253,7 @@ export function GoogleDriveFolderTree({ aria-label={isExpanded ? `Collapse ${item.name}` : `Expand ${item.name}`} > {isLoading ? ( - + ) : isExpanded ? ( ) : ( @@ -344,7 +344,7 @@ export function GoogleDriveFolderTree({ {isLoadingRoot && (
- +
)} diff --git a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx index 427cbd31b..c0f92b440 100644 --- a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx +++ b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx @@ -2,7 +2,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useAtomValue } from "jotai"; -import { Loader2, Plus, Search } from "lucide-react"; +import { Plus, Search } from "lucide-react"; import { useTranslations } from "next-intl"; import { useState } from "react"; import { useForm } from "react-hook-form"; @@ -26,6 +26,7 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; +import { Spinner } from "@/components/ui/spinner"; import { trackSearchSpaceCreated } from "@/lib/posthog/events"; const formSchema = z.object({ @@ -145,7 +146,7 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac @@ -337,7 +337,7 @@ export function MediaCardLoading({ title = "Loading preview..." }: { title?: str return (
- +
diff --git a/surfsense_web/components/tool-ui/write-todos.tsx b/surfsense_web/components/tool-ui/write-todos.tsx index a5da31e9e..9b959bd33 100644 --- a/surfsense_web/components/tool-ui/write-todos.tsx +++ b/surfsense_web/components/tool-ui/write-todos.tsx @@ -2,7 +2,6 @@ import { makeAssistantToolUI, useAssistantState } from "@assistant-ui/react"; import { useAtomValue, useSetAtom } from "jotai"; -import { Loader2 } from "lucide-react"; import { useEffect, useMemo } from "react"; import { z } from "zod"; import { @@ -11,6 +10,7 @@ import { registerPlanOwner, updatePlanStateAtom, } from "@/atoms/chat/plan-state.atom"; +import { Spinner } from "@/components/ui/spinner"; import { Plan, PlanErrorBoundary, parseSerializablePlan, TodoStatusSchema } from "./plan"; // ============================================================================ @@ -46,7 +46,7 @@ function WriteTodosLoading() { return (
- + Creating plan...
diff --git a/surfsense_web/messages/en.json b/surfsense_web/messages/en.json index 59b9cf56a..f23359bf2 100644 --- a/surfsense_web/messages/en.json +++ b/surfsense_web/messages/en.json @@ -321,10 +321,10 @@ "columns": "Columns", "confirm_delete": "Confirm Delete", "confirm_delete_desc": "Are you sure you want to delete {count} document(s)? This action cannot be undone.", - "uploading": "Uploading...", + "uploading": "Uploading", "upload_success": "Document uploaded successfully", "upload_failed": "Failed to upload document", - "loading": "Loading documents...", + "loading": "Loading documents", "error_loading": "Error loading documents", "retry": "Retry", "no_documents": "No documents found", @@ -391,8 +391,8 @@ "selected_files": "Selected Files ({count})", "total_size": "Total size", "clear_all": "Clear all", - "uploading_files": "Uploading files...", - "uploading": "Uploading...", + "uploading_files": "Uploading files", + "uploading": "Uploading", "upload_button": "Upload {count} {count, plural, one {file} other {files}}", "upload_initiated": "Upload Task Initiated", "upload_initiated_desc": "Files Uploading Initiated", From 66a3c877efd90e3a0bee6276022283a8e22b2ef0 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 25 Jan 2026 16:15:25 +0530 Subject: [PATCH 39/51] feat: replace unified loading approach with global loading provider and refactor loading handling across components - Introduced GlobalLoadingProvider to manage a consistent loading overlay across the application. - Replaced existing loading implementations with useGlobalLoadingEffect hook for better control and to prevent animation resets. - Updated components such as LoginPage, AuthCallbackPage, and DashboardLayout to utilize the new global loading mechanism. - Removed UnifiedLoadingScreen component to streamline loading management and enhance user experience. --- surfsense_web/app/(home)/layout.tsx | 6 +- surfsense_web/app/(home)/login/page.tsx | 12 +- surfsense_web/app/auth/callback/loading.tsx | 21 ++-- surfsense_web/app/auth/callback/page.tsx | 8 +- .../[search_space_id]/client-layout.tsx | 26 +++-- surfsense_web/app/dashboard/layout.tsx | 9 +- surfsense_web/app/dashboard/loading.tsx | 21 ++-- surfsense_web/app/dashboard/page.tsx | 13 ++- surfsense_web/app/layout.tsx | 5 +- surfsense_web/atoms/ui/loading.atoms.ts | 31 ++++++ surfsense_web/components/TokenHandler.tsx | 10 +- .../components/providers/ElectricProvider.tsx | 16 +-- .../providers/GlobalLoadingProvider.tsx | 80 ++++++++++++++ .../components/ui/unified-loading-screen.tsx | 72 ------------ surfsense_web/hooks/use-global-loading.ts | 104 ++++++++++++++++++ 15 files changed, 294 insertions(+), 140 deletions(-) create mode 100644 surfsense_web/atoms/ui/loading.atoms.ts create mode 100644 surfsense_web/components/providers/GlobalLoadingProvider.tsx delete mode 100644 surfsense_web/components/ui/unified-loading-screen.tsx create mode 100644 surfsense_web/hooks/use-global-loading.ts diff --git a/surfsense_web/app/(home)/layout.tsx b/surfsense_web/app/(home)/layout.tsx index 9488ee875..f1ceffac0 100644 --- a/surfsense_web/app/(home)/layout.tsx +++ b/surfsense_web/app/(home)/layout.tsx @@ -1,14 +1,18 @@ "use client"; +import { usePathname } from "next/navigation"; import { FooterNew } from "@/components/homepage/footer-new"; import { Navbar } from "@/components/homepage/navbar"; export default function HomePageLayout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + const isAuthPage = pathname === "/login" || pathname === "/register"; + return (
{children} - + {!isAuthPage && }
); } diff --git a/surfsense_web/app/(home)/login/page.tsx b/surfsense_web/app/(home)/login/page.tsx index 0026fdcd0..0dc9c445f 100644 --- a/surfsense_web/app/(home)/login/page.tsx +++ b/surfsense_web/app/(home)/login/page.tsx @@ -6,7 +6,7 @@ import { useTranslations } from "next-intl"; import { Suspense, useEffect, useState } from "react"; import { toast } from "sonner"; import { Logo } from "@/components/Logo"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; import { getAuthErrorDetails, shouldRetry } from "@/lib/auth-errors"; import { AUTH_TYPE } from "@/lib/env-config"; import { AmbientBackground } from "./AmbientBackground"; @@ -92,9 +92,12 @@ function LoginContent() { setIsLoading(false); }, [searchParams, t, tCommon]); - // Show loading state while determining auth type + // Use global loading screen for auth type determination - spinner animation won't reset + useGlobalLoadingEffect(isLoading, tCommon("loading"), "login"); + + // Show nothing while loading - the GlobalLoadingProvider handles the loading UI if (isLoading) { - return ; + return null; } if (authType === "GOOGLE") { @@ -176,8 +179,9 @@ function LoginContent() { } export default function LoginPage() { + // Suspense fallback returns null - the GlobalLoadingProvider handles the loading UI return ( - }> + ); diff --git a/surfsense_web/app/auth/callback/loading.tsx b/surfsense_web/app/auth/callback/loading.tsx index 676ca3632..0c94e1ee0 100644 --- a/surfsense_web/app/auth/callback/loading.tsx +++ b/surfsense_web/app/auth/callback/loading.tsx @@ -1,21 +1,14 @@ "use client"; import { useTranslations } from "next-intl"; -import { Spinner } from "@/components/ui/spinner"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; export default function AuthCallbackLoading() { const t = useTranslations("auth"); - return ( -
-
-
- -
- - {t("processing_authentication")} - -
-
- ); -} + // Use global loading - spinner animation won't reset when page transitions + useGlobalLoadingEffect(true, t("processing_authentication"), "default"); + + // Return null - the GlobalLoadingProvider handles the loading UI + return null; +} diff --git a/surfsense_web/app/auth/callback/page.tsx b/surfsense_web/app/auth/callback/page.tsx index 920581654..4050eefb6 100644 --- a/surfsense_web/app/auth/callback/page.tsx +++ b/surfsense_web/app/auth/callback/page.tsx @@ -1,15 +1,13 @@ "use client"; import { Suspense } from "react"; -import { useTranslations } from "next-intl"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; import TokenHandler from "@/components/TokenHandler"; export default function AuthCallbackPage() { - const t = useTranslations("auth"); - + // Suspense fallback returns null - the GlobalLoadingProvider handles the loading UI + // TokenHandler uses useGlobalLoadingEffect to show the loading screen return ( - }> + - ); + isAutoConfiguring); + + // Use global loading screen - spinner animation won't reset + useGlobalLoadingEffect( + shouldShowLoading, + isAutoConfiguring ? t("setting_up_ai") : t("checking_llm_prefs"), + "default" + ); + + if (shouldShowLoading) { + return null; } if (error && !hasCheckedOnboarding && !isOnboardingPage) { diff --git a/surfsense_web/app/dashboard/layout.tsx b/surfsense_web/app/dashboard/layout.tsx index 8ffef229c..6a548ea51 100644 --- a/surfsense_web/app/dashboard/layout.tsx +++ b/surfsense_web/app/dashboard/layout.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; import { useTranslations } from "next-intl"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; import { getBearerToken, redirectToLogin } from "@/lib/auth-utils"; interface DashboardLayoutProps { @@ -13,6 +13,9 @@ export default function DashboardLayout({ children }: DashboardLayoutProps) { const t = useTranslations("dashboard"); const [isCheckingAuth, setIsCheckingAuth] = useState(true); + // Use the global loading screen - spinner animation won't reset + useGlobalLoadingEffect(isCheckingAuth, t("checking_auth"), "default"); + useEffect(() => { // Check if user is authenticated const token = getBearerToken(); @@ -24,9 +27,9 @@ export default function DashboardLayout({ children }: DashboardLayoutProps) { setIsCheckingAuth(false); }, []); - // Show loading screen while checking authentication + // Return null while loading - the global provider handles the loading UI if (isCheckingAuth) { - return ; + return null; } return ( diff --git a/surfsense_web/app/dashboard/loading.tsx b/surfsense_web/app/dashboard/loading.tsx index b18c5dd75..2eee93651 100644 --- a/surfsense_web/app/dashboard/loading.tsx +++ b/surfsense_web/app/dashboard/loading.tsx @@ -1,21 +1,14 @@ "use client"; import { useTranslations } from "next-intl"; -import { Spinner } from "@/components/ui/spinner"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; export default function DashboardLoading() { const t = useTranslations("common"); - return ( -
-
-
- -
- - {t("loading")} - -
-
- ); -} + // Use global loading - spinner animation won't reset when page transitions + useGlobalLoadingEffect(true, t("loading"), "default"); + + // Return null - the GlobalLoadingProvider handles the loading UI + return null; +} diff --git a/surfsense_web/app/dashboard/page.tsx b/surfsense_web/app/dashboard/page.tsx index 440f37123..504d172c3 100644 --- a/surfsense_web/app/dashboard/page.tsx +++ b/surfsense_web/app/dashboard/page.tsx @@ -18,7 +18,7 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; function ErrorScreen({ message }: { message: string }) { const t = useTranslations("dashboard"); @@ -102,11 +102,16 @@ export default function DashboardPage() { } }, [isLoading, searchSpaces, router]); - if (isLoading) return ; + // Show loading while fetching or while we have spaces and are about to redirect + const shouldShowLoading = isLoading || searchSpaces.length > 0; + + // Use global loading screen - spinner animation won't reset + useGlobalLoadingEffect(shouldShowLoading, t("fetching_spaces"), "default"); + if (error) return ; - if (searchSpaces.length > 0) { - return ; + if (shouldShowLoading) { + return null; } return ( diff --git a/surfsense_web/app/layout.tsx b/surfsense_web/app/layout.tsx index 2f9921629..3722dc26e 100644 --- a/surfsense_web/app/layout.tsx +++ b/surfsense_web/app/layout.tsx @@ -3,6 +3,7 @@ import "./globals.css"; import { RootProvider } from "fumadocs-ui/provider/next"; import { Roboto } from "next/font/google"; import { ElectricProvider } from "@/components/providers/ElectricProvider"; +import { GlobalLoadingProvider } from "@/components/providers/GlobalLoadingProvider"; import { I18nProvider } from "@/components/providers/I18nProvider"; import { PostHogProvider } from "@/components/providers/PostHogProvider"; import { ThemeProvider } from "@/components/theme/theme-provider"; @@ -104,7 +105,9 @@ export default function RootLayout({ > - {children} + + {children} + diff --git a/surfsense_web/atoms/ui/loading.atoms.ts b/surfsense_web/atoms/ui/loading.atoms.ts new file mode 100644 index 000000000..6c6cac1a2 --- /dev/null +++ b/surfsense_web/atoms/ui/loading.atoms.ts @@ -0,0 +1,31 @@ +import { atom } from "jotai"; + +interface GlobalLoadingState { + isLoading: boolean; + message?: string; + variant: "login" | "default"; +} + +export const globalLoadingAtom = atom({ + isLoading: false, + message: undefined, + variant: "default", +}); + +// Helper atom for showing global loading +export const showGlobalLoadingAtom = atom( + null, + ( + get, + set, + { message, variant = "default" }: { message?: string; variant?: "login" | "default" } + ) => { + set(globalLoadingAtom, { isLoading: true, message, variant }); + } +); + +// Helper atom for hiding global loading +export const hideGlobalLoadingAtom = atom(null, (get, set) => { + set(globalLoadingAtom, { isLoading: false, message: undefined, variant: "default" }); +}); + diff --git a/surfsense_web/components/TokenHandler.tsx b/surfsense_web/components/TokenHandler.tsx index 3f98451ef..35408c1b2 100644 --- a/surfsense_web/components/TokenHandler.tsx +++ b/surfsense_web/components/TokenHandler.tsx @@ -3,7 +3,7 @@ import { useSearchParams } from "next/navigation"; import { useTranslations } from "next-intl"; import { useEffect } from "react"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; import { getAndClearRedirectPath, setBearerToken } from "@/lib/auth-utils"; import { trackLoginSuccess } from "@/lib/posthog/events"; @@ -30,6 +30,9 @@ const TokenHandler = ({ const t = useTranslations("auth"); const searchParams = useSearchParams(); + // Always show loading for this component - spinner animation won't reset + useGlobalLoadingEffect(true, t("processing_authentication"), "default"); + useEffect(() => { // Only run on client-side if (typeof window === "undefined") return; @@ -69,9 +72,8 @@ const TokenHandler = ({ } }, [searchParams, tokenParamName, storageKey, redirectPath]); - return ( - - ); + // Return null - the global provider handles the loading UI + return null; }; export default TokenHandler; diff --git a/surfsense_web/components/providers/ElectricProvider.tsx b/surfsense_web/components/providers/ElectricProvider.tsx index 68263b036..07d736c64 100644 --- a/surfsense_web/components/providers/ElectricProvider.tsx +++ b/surfsense_web/components/providers/ElectricProvider.tsx @@ -4,7 +4,7 @@ import { useAtomValue } from "jotai"; import { useTranslations } from "next-intl"; import { useEffect, useRef, useState } from "react"; import { currentUserAtom } from "@/atoms/user/user-query.atoms"; -import { UnifiedLoadingScreen } from "@/components/ui/unified-loading-screen"; +import { useGlobalLoadingEffect } from "@/hooks/use-global-loading"; import { getBearerToken } from "@/lib/auth-utils"; import { cleanupElectric, @@ -113,19 +113,21 @@ export function ElectricProvider({ children }: ElectricProviderProps) { // This prevents showing loading screen for unauthenticated users on homepage const hasToken = typeof window !== "undefined" && !!getBearerToken(); + // Determine if we should show loading + const shouldShowLoading = hasToken && isUserLoaded && !!user?.id && !electricClient && !error; + + // Use global loading hook with ownership tracking - prevents flash during transitions + useGlobalLoadingEffect(shouldShowLoading, t("initializing"), "default"); + // For non-authenticated pages (like landing page), render immediately with null context // Also render immediately if user query failed (e.g., token expired) if (!hasToken || !isUserLoaded || !user?.id || isUserError) { return {children}; } - // Show loading state while initializing for authenticated users + // Return children with null context while initializing - the global provider handles the loading UI if (!electricClient && !error) { - return ( - - - - ); + return {children}; } // If there's an error, still render but warn diff --git a/surfsense_web/components/providers/GlobalLoadingProvider.tsx b/surfsense_web/components/providers/GlobalLoadingProvider.tsx new file mode 100644 index 000000000..fe816b316 --- /dev/null +++ b/surfsense_web/components/providers/GlobalLoadingProvider.tsx @@ -0,0 +1,80 @@ +"use client"; + +import { useAtomValue } from "jotai"; +import { useEffect, useState } from "react"; +import { createPortal } from "react-dom"; +import { globalLoadingAtom } from "@/atoms/ui/loading.atoms"; +import { Logo } from "@/components/Logo"; +import { Spinner } from "@/components/ui/spinner"; +import { AmbientBackground } from "@/app/(home)/login/AmbientBackground"; +import { cn } from "@/lib/utils"; + +/** + * GlobalLoadingProvider renders a persistent loading overlay. + * The spinner is ALWAYS in the DOM to prevent animation reset when + * loading states change between different pages/components. + * + * Visibility is controlled via CSS opacity/pointer-events, NOT mounting/unmounting. + */ +export function GlobalLoadingProvider({ children }: { children: React.ReactNode }) { + const [mounted, setMounted] = useState(false); + const { isLoading, message, variant } = useAtomValue(globalLoadingAtom); + + useEffect(() => { + setMounted(true); + }, []); + + // The overlay is ALWAYS rendered, but visibility is controlled by CSS + // This prevents the spinner animation from resetting + const loadingOverlay = ( +
+ {variant === "login" ? ( +
+ +
+ +
+
+ {/* Spinner is always mounted, animation never resets */} + +
+ + {message} + +
+
+
+ ) : ( +
+
+
+ {/* Spinner is always mounted, animation never resets */} + +
+ + {message} + +
+
+ )} +
+ ); + + // Render inline during SSR/before hydration, use portal after mounting + // This prevents the white flash during initial render + return ( + <> + {children} + {mounted ? createPortal(loadingOverlay, document.body) : loadingOverlay} + + ); +} + diff --git a/surfsense_web/components/ui/unified-loading-screen.tsx b/surfsense_web/components/ui/unified-loading-screen.tsx deleted file mode 100644 index 7ed6b83d9..000000000 --- a/surfsense_web/components/ui/unified-loading-screen.tsx +++ /dev/null @@ -1,72 +0,0 @@ -"use client"; - -import { useEffect, useState } from "react"; -import { createPortal } from "react-dom"; -import { Logo } from "@/components/Logo"; -import { Spinner } from "@/components/ui/spinner"; -import { AmbientBackground } from "@/app/(home)/login/AmbientBackground"; - -interface UnifiedLoadingScreenProps { - /** Optional message to display below the spinner */ - message?: string; - /** Visual style variant */ - variant?: "login" | "default"; -} - -export function UnifiedLoadingScreen({ - message, - variant = "default", -}: UnifiedLoadingScreenProps) { - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - // Fixed-size container to prevent layout shifts - const spinnerContainer = ( -
- -
- ); - - const content = variant === "login" ? ( -
- -
- -
- {spinnerContainer} - {message && ( - - {message} - - )} -
-
-
- ) : ( -
-
- {spinnerContainer} - {message && ( - - {message} - - )} -
-
- ); - - // Render inline during SSR, use portal after mounting - // This prevents the black flash during initial render - if (!mounted) { - return content; - } - - return createPortal(content, document.body); -} - diff --git a/surfsense_web/hooks/use-global-loading.ts b/surfsense_web/hooks/use-global-loading.ts new file mode 100644 index 000000000..baaa1f089 --- /dev/null +++ b/surfsense_web/hooks/use-global-loading.ts @@ -0,0 +1,104 @@ +"use client"; + +import { useAtom } from "jotai"; +import { useCallback, useEffect, useRef } from "react"; +import { globalLoadingAtom } from "@/atoms/ui/loading.atoms"; + +// Global counter to generate unique IDs for each loading request +let loadingIdCounter = 0; + +// Track the current active loading ID globally +let currentLoadingId: number | null = null; + +// Pending hide timeout - allows new loading requests to take over before hiding +let pendingHideTimeout: ReturnType | null = null; + +/** + * Hook to control the global loading screen. + * The spinner is always mounted in the DOM to prevent animation reset. + */ +export function useGlobalLoading() { + const [loading, setLoading] = useAtom(globalLoadingAtom); + + const show = useCallback( + (message?: string, variant: "login" | "default" = "default") => { + // Cancel any pending hide - new loading request takes over + if (pendingHideTimeout) { + clearTimeout(pendingHideTimeout); + pendingHideTimeout = null; + } + + const id = ++loadingIdCounter; + currentLoadingId = id; + setLoading({ isLoading: true, message, variant }); + return id; + }, + [setLoading] + ); + + const hide = useCallback( + (id?: number) => { + // Only hide if this is the current loading, or if no ID provided (force hide) + if (id === undefined || id === currentLoadingId) { + // Use a small delay to allow React to flush pending mounts + // This prevents flash when transitioning between loading states + if (pendingHideTimeout) { + clearTimeout(pendingHideTimeout); + } + + pendingHideTimeout = setTimeout(() => { + // Double-check we're still the current loading after the delay + if (id === undefined || id === currentLoadingId) { + currentLoadingId = null; + setLoading({ isLoading: false, message: undefined, variant: "default" }); + } + pendingHideTimeout = null; + }, 50); // Small delay to allow next component to mount and show loading + } + }, + [setLoading] + ); + + return { show, hide, isLoading: loading.isLoading }; +} + +/** + * Hook that automatically shows/hides the global loading screen based on a condition. + * Useful for components that show loading on mount and hide on unmount. + * + * Uses ownership tracking to prevent flashes when multiple components + * transition loading states (e.g., layout → page). + * + * @param shouldShow - Whether the loading screen should be visible + * @param message - Optional message to display + * @param variant - Visual style variant ("login" or "default") + */ +export function useGlobalLoadingEffect( + shouldShow: boolean, + message?: string, + variant: "login" | "default" = "default" +) { + const { show, hide } = useGlobalLoading(); + const loadingIdRef = useRef(null); + + useEffect(() => { + if (shouldShow) { + // Show loading and store the ID + loadingIdRef.current = show(message, variant); + } else if (loadingIdRef.current !== null) { + // Only hide if we were the ones showing loading + hide(loadingIdRef.current); + loadingIdRef.current = null; + } + }, [shouldShow, message, variant, show, hide]); + + // Cleanup on unmount - only hide if we're still the active loading + useEffect(() => { + return () => { + if (loadingIdRef.current !== null) { + hide(loadingIdRef.current); + loadingIdRef.current = null; + } + }; + }, [hide]); +} From 03e38ab17898b6001ce902c9ad771ff684496e46 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Sun, 25 Jan 2026 16:16:09 +0530 Subject: [PATCH 40/51] chore: ran frontend linting --- .../[search_space_id]/client-layout.tsx | 4 +- surfsense_web/atoms/ui/loading.atoms.ts | 1 - .../components/bookstack-connect-form.tsx | 1 - surfsense_web/components/homepage/navbar.tsx | 8 ++- .../ui/dialogs/CreateSearchSpaceDialog.tsx | 19 ++++++- .../layout/ui/sidebar/ChatListItem.tsx | 9 ++- .../layout/ui/sidebar/SidebarUserProfile.tsx | 56 ++++++++----------- .../new-chat/source-detail-panel.tsx | 16 ++---- .../providers/GlobalLoadingProvider.tsx | 5 +- .../settings/general-settings-manager.tsx | 9 +-- .../components/settings/llm-role-manager.tsx | 10 +--- 11 files changed, 68 insertions(+), 70 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx index b2af3a28a..e6730d8d1 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/client-layout.tsx @@ -148,10 +148,10 @@ export function DashboardClientLayout({ // Determine if we should show loading const shouldShowLoading = - ((!hasCheckedOnboarding && + (!hasCheckedOnboarding && (loading || accessLoading || globalConfigsLoading) && !isOnboardingPage) || - isAutoConfiguring); + isAutoConfiguring; // Use global loading screen - spinner animation won't reset useGlobalLoadingEffect( diff --git a/surfsense_web/atoms/ui/loading.atoms.ts b/surfsense_web/atoms/ui/loading.atoms.ts index 6c6cac1a2..f10d9247b 100644 --- a/surfsense_web/atoms/ui/loading.atoms.ts +++ b/surfsense_web/atoms/ui/loading.atoms.ts @@ -28,4 +28,3 @@ export const showGlobalLoadingAtom = atom( export const hideGlobalLoadingAtom = atom(null, (get, set) => { set(globalLoadingAtom, { isLoading: false, message: undefined, variant: "default" }); }); - diff --git a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx index 789e23787..65edb095c 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx +++ b/surfsense_web/components/assistant-ui/connector-popup/connect-forms/components/bookstack-connect-form.tsx @@ -296,7 +296,6 @@ export const BookStackConnectForm: FC = ({ onSubmit, isSubmitt
)} - ); }; diff --git a/surfsense_web/components/homepage/navbar.tsx b/surfsense_web/components/homepage/navbar.tsx index 2a8820bd6..c83d3556a 100644 --- a/surfsense_web/components/homepage/navbar.tsx +++ b/surfsense_web/components/homepage/navbar.tsx @@ -1,5 +1,11 @@ "use client"; -import { IconBrandDiscord, IconBrandGithub, IconBrandReddit, IconMenu2, IconX } from "@tabler/icons-react"; +import { + IconBrandDiscord, + IconBrandGithub, + IconBrandReddit, + IconMenu2, + IconX, +} from "@tabler/icons-react"; import { AnimatePresence, motion } from "motion/react"; import Link from "next/link"; import { useEffect, useState } from "react"; diff --git a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx index c0f92b440..63a430004 100644 --- a/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx +++ b/surfsense_web/components/layout/ui/dialogs/CreateSearchSpaceDialog.tsx @@ -107,7 +107,12 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac {t("name_label")} - + @@ -126,7 +131,11 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac - + @@ -143,7 +152,11 @@ export function CreateSearchSpaceDialog({ open, onOpenChange }: CreateSearchSpac > {tCommon("cancel")} - diff --git a/surfsense_web/app/(home)/register/page.tsx b/surfsense_web/app/(home)/register/page.tsx index 243ad4c60..f8170ff63 100644 --- a/surfsense_web/app/(home)/register/page.tsx +++ b/surfsense_web/app/(home)/register/page.tsx @@ -18,6 +18,7 @@ import { trackRegistrationSuccess, } from "@/lib/posthog/events"; import { AmbientBackground } from "../login/AmbientBackground"; +import { Spinner } from "@/components/ui/spinner"; export default function RegisterPage() { const t = useTranslations("auth"); @@ -60,9 +61,6 @@ export default function RegisterPage() { // Track registration attempt trackRegistrationAttempt(); - // Show loading toast - const loadingToast = toast.loading(t("creating_account")); - try { await register({ email, @@ -77,7 +75,6 @@ export default function RegisterPage() { // Success toast toast.success(t("register_success"), { - id: loadingToast, description: t("redirecting_login"), duration: 2000, }); @@ -95,7 +92,6 @@ export default function RegisterPage() { trackRegistrationFailure("Registration disabled"); setError({ title: "Registration is disabled", message: friendlyMessage }); toast.error("Registration is disabled", { - id: loadingToast, description: friendlyMessage, duration: 6000, }); @@ -109,7 +105,6 @@ export default function RegisterPage() { trackRegistrationFailure(err.message); setError({ title: err.name, message: err.message }); toast.error(err.name, { - id: loadingToast, description: err.message, duration: 6000, }); @@ -137,7 +132,6 @@ export default function RegisterPage() { // Show error toast with conditional retry action const toastOptions: any = { - id: loadingToast, description: errorDetails.description, duration: 6000, }; @@ -295,9 +289,16 @@ export default function RegisterPage() { diff --git a/surfsense_web/components/homepage/hero-section.tsx b/surfsense_web/components/homepage/hero-section.tsx index 0ff61ac28..7ccdd850c 100644 --- a/surfsense_web/components/homepage/hero-section.tsx +++ b/surfsense_web/components/homepage/hero-section.tsx @@ -184,7 +184,7 @@ function GetStartedButton() { return ( Get Started diff --git a/surfsense_web/messages/en.json b/surfsense_web/messages/en.json index f23359bf2..f14c73ddc 100644 --- a/surfsense_web/messages/en.json +++ b/surfsense_web/messages/en.json @@ -46,6 +46,7 @@ "hide_password": "Hide password", "remember_me": "Remember Me", "sign_in": "Sign In", + "signing_in": "Signing in", "sign_up": "Sign Up", "sign_in_with": "Sign in with {provider}", "dont_have_account": "Don't have an account?", diff --git a/surfsense_web/messages/zh.json b/surfsense_web/messages/zh.json index 3c4b6cf34..6838b0f52 100644 --- a/surfsense_web/messages/zh.json +++ b/surfsense_web/messages/zh.json @@ -46,6 +46,7 @@ "hide_password": "隐藏密码", "remember_me": "记住我", "sign_in": "登录", + "signing_in": "正在登录", "sign_up": "注册", "sign_in_with": "使用 {provider} 登录", "dont_have_account": "还没有账户?", From 0e26fb157a1fec4e01838363b71128e4edf92528 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Mon, 26 Jan 2026 03:24:05 +0530 Subject: [PATCH 42/51] chore: fixed github connector dependency and update connector status configuration --- Dockerfile.allinone | 2 +- surfsense_backend/Dockerfile | 1 + .../connector-popup/config/connector-status-config.json | 5 ----- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Dockerfile.allinone b/Dockerfile.allinone index 2e160d3dc..64e99a14d 100644 --- a/Dockerfile.allinone +++ b/Dockerfile.allinone @@ -228,7 +228,7 @@ COPY scripts/docker/init-postgres.sh /app/init-postgres.sh RUN dos2unix /app/init-postgres.sh && chmod +x /app/init-postgres.sh # Clean up build dependencies to reduce image size -RUN apt-get purge -y build-essential postgresql-server-dev-14 git \ +RUN apt-get purge -y build-essential postgresql-server-dev-14 \ && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/surfsense_backend/Dockerfile b/surfsense_backend/Dockerfile index fa3aaeae8..9ce6467b3 100644 --- a/surfsense_backend/Dockerfile +++ b/surfsense_backend/Dockerfile @@ -19,6 +19,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libxext6 \ libxrender1 \ dos2unix \ + git \ && rm -rf /var/lib/apt/lists/* # Update certificates and install SSL tools diff --git a/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json b/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json index 2c1010b1c..9c8585a0f 100644 --- a/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json +++ b/surfsense_web/components/assistant-ui/connector-popup/config/connector-status-config.json @@ -29,11 +29,6 @@ "enabled": false, "status": "disabled", "statusMessage": "Not available yet." - }, - "GITHUB_CONNECTOR": { - "enabled": false, - "status": "warning", - "statusMessage": "Some issues with indexing repositories." } }, "globalSettings": { From fee669aaebef372566f85a16797de097b0dcd434 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Mon, 26 Jan 2026 14:20:32 -0800 Subject: [PATCH 43/51] chore: updated posthog version --- surfsense_web/package.json | 4 ++-- surfsense_web/pnpm-lock.yaml | 44 ++++++++++++++++++------------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/surfsense_web/package.json b/surfsense_web/package.json index 235f4b9db..17dee6251 100644 --- a/surfsense_web/package.json +++ b/surfsense_web/package.json @@ -86,8 +86,8 @@ "next-themes": "^0.4.6", "pg": "^8.16.3", "postgres": "^3.4.7", - "posthog-js": "^1.334.1", - "posthog-node": "^5.24.1", + "posthog-js": "^1.335.3", + "posthog-node": "^5.24.2", "react": "^19.2.3", "react-day-picker": "^9.8.1", "react-dom": "^19.2.3", diff --git a/surfsense_web/pnpm-lock.yaml b/surfsense_web/pnpm-lock.yaml index b33e087aa..0461da320 100644 --- a/surfsense_web/pnpm-lock.yaml +++ b/surfsense_web/pnpm-lock.yaml @@ -52,7 +52,7 @@ importers: version: 0.5.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@posthog/react': specifier: ^1.7.0 - version: 1.7.0(@types/react@19.2.7)(posthog-js@1.334.1)(react@19.2.3) + version: 1.7.0(@types/react@19.2.7)(posthog-js@1.335.3)(react@19.2.3) '@radix-ui/react-accordion': specifier: ^1.2.11 version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -204,11 +204,11 @@ importers: specifier: ^3.4.7 version: 3.4.7 posthog-js: - specifier: ^1.334.1 - version: 1.334.1 + specifier: ^1.335.3 + version: 1.335.3 posthog-node: - specifier: ^5.24.1 - version: 5.24.1 + specifier: ^5.24.2 + version: 5.24.2 react: specifier: ^19.2.3 version: 19.2.3 @@ -1605,8 +1605,8 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@posthog/core@1.13.0': - resolution: {integrity: sha512-knjncrk7qRmssFRbGzBl1Tunt21GRpe0Wv+uVelyL0Rh7PdQUsgguulzXFTps8hA6wPwTU4kq85qnbAJ3eH6Wg==} + '@posthog/core@1.14.0': + resolution: {integrity: sha512-havjGYHwL8Gy6LXIR911h+M/sYlJLQbepxP/cc1M7Cp3v8F92bzpqkbuvUIUyb7/izkxfGwc9wMqKAo0QxMTrg==} '@posthog/react@1.7.0': resolution: {integrity: sha512-pM7GL7z/rKjiIwosbRiQA3buhLI6vUo+wg+T/ZrVZC7O5bVU07TfgNZTcuOj8E9dx7vDbfNrc1kjDN7PKMM8ug==} @@ -1618,8 +1618,8 @@ packages: '@types/react': optional: true - '@posthog/types@1.334.1': - resolution: {integrity: sha512-ypFnwTO7qbV7icylLbujbamPdQXbJq0a61GUUBnJAeTbBw/qYPIss5IRYICcbCj0uunQrwD7/CGxVb5TOYKWgA==} + '@posthog/types@1.335.3': + resolution: {integrity: sha512-mReFmfI+ep5sH3cnFhjvWfOcl3j6olKpN5lHFbOomLGxYTHMXcyMUBE3/o8WfrAgR1qxKQUsWMNcv6BhLr/GKA==} '@prisma/client@4.8.1': resolution: {integrity: sha512-d4xhZhETmeXK/yZ7K0KcVOzEfI5YKGGEr4F5SBV04/MU4ncN/HcE28sy3e4Yt8UFW0ZuImKFQJE+9rWt9WbGSQ==} @@ -5601,11 +5601,11 @@ packages: resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} engines: {node: '>=12'} - posthog-js@1.334.1: - resolution: {integrity: sha512-5cDzLICr2afnwX/cR9fwoLC0vN0Nb5gP5HiCigzHkgHdO+E3WsYefla3EFMQz7U4r01CBPZ+nZ9/srkzeACxtQ==} + posthog-js@1.335.3: + resolution: {integrity: sha512-ZQg3ozgsPom+SZtAxMN97Zx9Vqkdsv1D4TZU/OqbAZdm27PswV6+ShBurm3nKm9jrlUU1cGHMRn2ZJZf249znQ==} - posthog-node@5.24.1: - resolution: {integrity: sha512-1+wsosb5fjuor9zpp3h2uq0xKYY7rDz8gpw/10Scz8Ob/uVNrsHSwGy76D9rgt4cfyaEgpJwyYv+hPi2+YjWtw==} + posthog-node@5.24.2: + resolution: {integrity: sha512-cywIUYtSIC9BilgLlZd1R2xNk6omKL6tywG/SCPmUJKeG2jhjvJHSrHXYx4x3uQsUjn8aB9UVI8km+W326Zm8g==} engines: {node: ^20.20.0 || >=22.22.0} preact@10.28.1: @@ -7860,18 +7860,18 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 - '@posthog/core@1.13.0': + '@posthog/core@1.14.0': dependencies: cross-spawn: 7.0.6 - '@posthog/react@1.7.0(@types/react@19.2.7)(posthog-js@1.334.1)(react@19.2.3)': + '@posthog/react@1.7.0(@types/react@19.2.7)(posthog-js@1.335.3)(react@19.2.3)': dependencies: - posthog-js: 1.334.1 + posthog-js: 1.335.3 react: 19.2.3 optionalDependencies: '@types/react': 19.2.7 - '@posthog/types@1.334.1': {} + '@posthog/types@1.335.3': {} '@prisma/client@4.8.1': dependencies: @@ -12484,15 +12484,15 @@ snapshots: postgres@3.4.7: {} - posthog-js@1.334.1: + posthog-js@1.335.3: dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.208.0 '@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0) - '@posthog/core': 1.13.0 - '@posthog/types': 1.334.1 + '@posthog/core': 1.14.0 + '@posthog/types': 1.335.3 core-js: 3.47.0 dompurify: 3.3.1 fflate: 0.4.8 @@ -12500,9 +12500,9 @@ snapshots: query-selector-shadow-dom: 1.0.1 web-vitals: 5.1.0 - posthog-node@5.24.1: + posthog-node@5.24.2: dependencies: - '@posthog/core': 1.13.0 + '@posthog/core': 1.14.0 preact@10.28.1: {} From af18ed0cc8d7957035c46a47cdb430637edb1ec0 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Mon, 26 Jan 2026 22:14:21 -0800 Subject: [PATCH 44/51] docs 0.0.12 changelog --- .../changelog/content/2026-01-26.mdx | 88 ++++++++++++++++++ .../public/changelog/0.0.12/header.gif | Bin 0 -> 2265864 bytes 2 files changed, 88 insertions(+) create mode 100644 surfsense_web/changelog/content/2026-01-26.mdx create mode 100644 surfsense_web/public/changelog/0.0.12/header.gif diff --git a/surfsense_web/changelog/content/2026-01-26.mdx b/surfsense_web/changelog/content/2026-01-26.mdx new file mode 100644 index 000000000..e2092bc83 --- /dev/null +++ b/surfsense_web/changelog/content/2026-01-26.mdx @@ -0,0 +1,88 @@ +--- +title: "SurfSense v0.0.12 - New Main UI, Real-time Collaboration and Comments" +description: "SurfSense v0.0.12 transforms the platform with a redesigned chat-first interface, real-time collaboration features, comment threads with @mentions, and instant notifications powered by ElectricSQL + PGlite." +date: "2026-01-26" +tags: ["UX", "UI", "Real-time chat", "Collaboration", "Comments"] +version: "0.0.12" +--- + +SurfSense v0.0.12 - New Main UI, Real-time Collaboration and Comments + +## What's New in v0.0.12 + +This release brings major improvements to **collaboration and user experience**. We've completely redesigned the main interface to be chat-first, introduced real-time notifications and live collaboration features, and added a powerful commenting system with @mentions. These changes make SurfSense faster, more intuitive, and better for team collaboration. + +### Major UX/UI Overhaul + +#### New Chat-First Interface + +- **Dashboard Removed**: Users now land directly in a chat for faster access +- **Redesigned Search Spaces**: Moved to a left column with color-coded icons and hover tooltips +- **Collapsible Sidebar**: New sidebar design with collapsible sections for private and group chats +- **Streamlined Settings**: Accessible through intuitive dropdown menus +- **Mobile-Responsive Design**: Better experience on all devices +- **Single-Click Google Login**: Replaces the old two-step process + +### Real-Time Collaboration Features + +#### Live Shared Chats + +- **Multi-User Collaboration**: Multiple users can now collaborate in the same chat in real-time +- **Status Indicators**: See when the AI is responding to another team member +- **Instant Sync**: Changes sync instantly across all open tabs and users + +#### Chat Comments with @Mentions + +- **Comment on AI Responses**: Discuss responses directly with your team +- **Single-Level Threading**: Reply to comments with organized threads +- **@Mentions**: Tag teammates to get their attention +- **Real-Time Notifications**: Receive instant alerts when someone mentions you + +#### Real-Time Notifications + +- **Instant Updates**: Replaced slow polling with instant notifications using ElectricSQL + PGlite +- **New Inbox**: See connector indexing, document processing, and system events immediately +- **Cross-Tab Sync**: Syncs across all your browser tabs in real-time + +### Connector Enhancements + +#### OAuth Migration for Better Security + +- **New OAuth Connectors**: Migrated Linear, Slack, Notion, Discord, Confluence, and Jira to OAuth-based authentication +- **Circleback Integration**: Connect your AI meeting notes from Circleback +- **Future Date Indexing**: Index future dates for calendar-based connectors to plan ahead +- **5-Minute Periodic Syncing**: Near-real-time updates option +- **Real-Time UI Updates**: See connector indexing progress without page refreshes + + + + Bug Fixes + +
    +
  • Syncs with no new content now show "Already up to date!" instead of falsely reporting failures
  • +
  • Restored missing indexing options page for Google Drive connector
  • +
  • File mention picker now handles large document counts with server-side search and pagination
  • +
  • Reasoning steps no longer overlap with chat input field
  • +
  • File upload modal is now scrollable when adding many files
  • +
  • OAuth connectors now display properly on mobile devices
  • +
+
+
+ + Technical Improvements + +
    +
  • Made Alembic migrations idempotent for safer deployments
  • +
  • Migrations now work on fresh databases from scratch
  • +
  • Major refactoring of chat components for better maintainability
  • +
  • Streamlined sidebar and connector page code
  • +
  • Fixed legacy route handling
  • +
  • Fixed hardcoded Docker values for complex deployments
  • +
+
+
+
+ +This release transforms SurfSense into a truly collaborative, real-time platform with a redesigned interface that puts chat front and center. The addition of comments, @mentions, and live collaboration features makes it easier than ever for teams to work together without leaving the app. + +SurfSense is your AI-powered federated search solution, connecting all your knowledge sources in one place. diff --git a/surfsense_web/public/changelog/0.0.12/header.gif b/surfsense_web/public/changelog/0.0.12/header.gif new file mode 100644 index 0000000000000000000000000000000000000000..7374cfb6892b0bd3cd897b26389411b0b2b598f0 GIT binary patch literal 2265864 zcmeF1_d6B-|NqY(<}tD|jy=-}aqQ!m8HF+uIksf45IT-?%*-+pva=Ji>DVKLR1!Ky zvPqeF<=gx3_J+J5Wygjbxb$>kcujyfx9Z0YO@XBz~2=i=h#QV-_#tiAXTsRBNk zI|2d%LW#q|!ongBWKnijQ8BXE|4v>V<;#~aNaPhdrYq6&N_0piS#723mP%f!SgevNC#R~Or)p@snz*oCR(5yp+)%W2xO104w70h>*ys~7pEzPvom}>v6B}G?BV3$aTwkxav7+4dMcs4X z-4jl@r;75p%;J&w!t2$tx2LCf<))96hi^c@zxxeVFATnM^?}NT2d!ISfzDwMA3ii? z4>z?7@7RoFWsP)Hi+uDbGQX6l8%p{|TpFoomu$#MuA7dz%N3hjmXMH;$agXE&S6sF zQS!5>)PD>gruA>7jUJ{4;?qeU>Aky8yfvQQ5z5Fe$fBNSXJ_ZQ9pn_IJeNW}uY8mH z$RZDk%=6ZJksMwSeygCMpwNiEuyeBT(`oUu@|QdeAAjD1;g`pZRVL(TUly8uEBs>E!s}RKCpz7m?{)mg%XF)2Dwvo}PRv z68%(l^l7N|^X&TU^oQBq)A_*53pJkKMqkpJqZStyz875ietNogva!+Vz1bSH)lJ^s z`nfYdwtsx`dnooWpW$#K>+sjdqq&-+|Nb7Ye>(ZmcA8Ir`su~#cJJx_`swMX)6?D4 z)6+jPN`GW50p|e0bNcJLw{B`{nd-{PV!*(EJ_w#bpzwc7GXIm~f11SppCtb$$^Xxi zAkG1j2wsD_g6?Ppo0RQPU14u5O4u;h;B`@dBA2|!+|cXd!4$N10`Il@lHn&3H!E$2 z>r3BdVVp*CuQim7J;w%Y%ndiZeE$L$O~+^0SUy>7@I=aPq_N_|OVeV*Ji|AYAFHez zJmyEQy}T*Po(X~J6eDJm?$=SalNzcU~{J7{h9|NbF{bo?!}F_UH|<#{QF;=KWOhsUMGBW|`C<%j@Y-T5I!0nCP9)QPDPE$id?`VuX>BPHGa#}27_R55 zMJJn0wLmP_9DPf{!6a8wbvW*=JOoaaucR9*uCF{X)sy`G^p@ql?-|yv72h*$gSj0c zFEe5@5OT*ME6?1^Dpqqm#n!(+_Z^V@ksJ8w-jBSH)ruea;fKg&sBD~X20}J_c(pK2 zta7c$`*eM+I8{$-z2vE-$9ieDYtB7Ll;s8dv&0ywjq;My&*f$1WtAJ1)lC~4RdoaB zQdNm8Pp@5|kIAgutnG*i+o-0(q_^t&IPPz~9ujL8gvuDZ;ORQ`q_-R0{#I_inQ^V! zZkh|;+-{c4DGAngm`( z9F2<7RvWL{>tXo3x!a4gN4n3I=b>LN4`+WXaU@a=xtIACYO^ z+JE<8!TQO+y_0@SJY-Baz9nbt*ZZO(hF=ppoL;{t4aE5zAY;K0{Y#%Zgb$`~S(yaM zLw2XeltO4gx^70yZ`ldwth}-b!ttuwH+NX&8&PXmfcHhR%I1*x)!sMqf^A(530{PSRPdel>myU&HLF?!IY^ea&#?&5>&7lT2gSYyGO2S*(~NUnLSI6^2?R z<1uv&d3(9DYCp4Iuv60oX5HV1VNDZm*9mei)7E7mz#7?=C7!9Z-XR2!ls!KX4mXjI zhrut^(K$4n$gh-gFnFoQBjlZo2rau#OSU6^mN(1}oTh=p76eaw-n zALBIQo;_HrB03Y|O|2d2$zDBxSyY0ygb@2=-~`7UkDyz~GTiPej;)UfwqJ?n{a_7O z9wiV>8=ZK@tz$3OqZs_Fg}Igjt0Rxz*i@`lFCJtS_4X zc+c}Alitm<8HLOfYyFt-W(bBMMS;&;v9WgaAkRG~UYD7EwH1f2Uxf@A^nIC``p_cZ zK+Rpf{Ttzp9`U&27Dnf=S|Z{hxyf7$=asq=-Sp=Z{OS~LUPPY*;u{-;;N-005|}GGN%|$6cTyZ+*KXU(dAi--x|Ls<0M!$aSo#zY(b)Vjt z(%>2*4j^`0ZC-HD>-V0vA5UGQDlgs5*Ae!MyJX!)$4;mX>`$DLBKJT+OJ?Nkt(E(@ zFVF3+_Nw61HcYF9xHf6hl^Lq5HeXLatxE^sYu!?YH=@VP@541W1Q*+1*JlJLi{8^k z*J{4Cgp7;z)zSMI97w46J-!Z17WA@(UwKjmnfeWYO+btk1nJY<_sO$VJGk;Pk1L;C zsM+>si;DoxBZ_YLFoAe^`ScrrIbRF-3Xm6H@?XB5)z`WWsZ?PuEG9bQWSicHH)_3rxpU2GH82`yw_#rFnftv%HO`n< zgL6SYMt+Vd1P$1lSZ#o2cc+907E^Z&+Gk_Q;HG8Tw)q84?T^B;EV*jClCk~rR+F%D z!>qYDJ}QfhV1#bpb1kp_)^qYKj>+MN({ueB2bIEv_-T@L?e>_yD*Khw)34`$PoyHW zuBZ4q3@S&~ircJWm>WclswfY+jzCn5(GmvUJ1Exgh8)TY4>;m~4;RRQxGb01GE#(0 z>Y%Pyy^$pF9drQ1-}^X=B-KJ1E_wv%esoj+_9>BoJoGhZBXYP}{HG(Z@e}x<0LmOE zf%S#^>WieIjqg|*50H&}^u=V3$);Qsp%oGs7`;ni?rFN6_c82upu`v_*}0fMflR+Z zGZ=VkJTFG^Xo>NhQM)C9>KF*KnsN1SQN|)-LWaV(7fqQc0^Bn(M6Nhextxyy@Nz%? zL0oJCLgW!PF8Ta8E_FzQ%P$V~G%hhD{%kTXttCEpCVs#??kR$37Z+cGK<9@flxHV= z1tk=QsApOy)U`NOViOy!6B~LGYKABmI1)SJ{F{ywsa%hrk`i0XmG9`IUVToiE06D) zc|3mn*u*?e_ts;}4-6OkP{ZYqONJg#%p@%wCyATKN$Vt8Ix%sVpaH=#xYW7RW|Ja-1;bqfyA#6yD)Pe(rP(_mezq8pt7i zWev%BUMDZzntDk&{IcW|9QRWqHjN^$q&S2h1HeUE)9JoEd42o@&z)i3N>aF%4*IEJ z#%4H1r9WhEZt8WD%_p!Wd?_4HOFLD zIcIRae(I%+@>kAkw#W*(ogGtQA6Ajh^D}EmB0Jk4JC^%ddZ>B4GF#Mob_e9ylh$Xs z&#q-ive8&_ij;FoZs(MR=9E9nscg-u{*qIBl2gb1yk7Zv=|fZ|zyW_YjNf9%SJpe{VQX6~{7uJD)Ewf8*JUQ*LGVVerqB7w5xZ zHnSIp+_>Y`7l@n!5A7#^kp)br`D(sNL6!yl4+`kQ3c2Xy*;>KOvxN(-VAfe3_R3(6 zoIZNE4E5fVAYDpIPHp+cF{VsuXGa2$^i1}LZi zB=>;swGi_#34?+$3Hytn4Lv+IJy>+3hR^JgNOs zFp)4@=3QCH=>Tv(E#|2}9gu}J$)#P#W#O|g+2vCLMv7D=1q@HMg$hcr8!r>u%Kx03 z$3?Xj5w1z-ZD_NhB;rTPvvVrumdaCR3)5yxO`2cks8p7O$>h#fFr8L(OI9+=0R{JD zBvDoMDpid(RZU@4Ejd+fZB-q!Rb8i5RG#V{mFhm8YOwo zdyFte=1nvmpt2Ho>xPOm&-RoxJV2PIw0fn|{N-srVUKY$)#g(h(>$6EJj6VYyFGdO zV%9?tI{};Qtzj+VUwmWFQo#RRrS9o)HPc4*HnGNoR(((j%Xq_h=uv90gigRjOvgIc z>o7Go2_>VM9!^|7qZ0&4y9yiCiEY}$=nF#7o^%42*0YCHoln-KuI4;y)f0EX`x8S0zO-c`~S z@q+z55?wVPoBV|^23sVTCb`7{CT-_ATn1w2S> z)SIB2A|P1yKvfe+urDBP55YoftH-o}dmyD$#^(SCxS%oKl#nE{sIy>?8X=N)C)VM`u zIHtkjgvN(Bz(p&<9~`4pD&qzkz*Xl8CIVJXnHX^Gh6JYVRGYv}y7CO0KLzwKBJ>xA zS}6)2MSK3H(hG5w5uc+i?%yZiJ9&*=CBIfPR@Xfv)Feya`SvG&@i}_As&(~Y*NiXo zB`Whe3Ow)ID3Qu|go4o%8bfJx`zYAOmu{x1)Ch~lO(VeLR4S~R0ZfGcX9ReLafc9* zKTPRibBR(V&;zAV;+UXWIeS@B#PS0p~eW_5vZhxo%%Iion(z!t*@Y z`!!#Qj1aCSiN{S_A+1$tv<0>GdDSZms#X4<9=dZH-3fs~?++|0^G01A{ZC)IM+MAH z0ERhVrruO!h&1{FfoTVGT>uBWS=S7rzFq(KStUSY3K28x zS?k~3t`?829OzLS?aLhyN)>A59USq*ecH@>e6i^RU5)tMV8-(%q9*{1V~VP71!KBk zpvEH%fSJhno64Yn@$F_CQ*;dA7m%6Z*OlreEi-I!@T9o z_$`&WVXOIbPX|N#C=3LqO-w}Yy@Qj$$CK}T}t0x2;KfKHRu=-(?Pf9JE_l4wRboRT}?&($- zZ43$;hoJ#cik=UNMt|=Ew3PrHdkmW>X38FXbAoA%I0h;LU1os5_CUpGL}b;-gFi6v z9=zW8U3irYBIz9y2pmX-woM>VB>FQNV;aipwJU%#X^53|=JJ@?HjzGz#&CvWz?ujq z6qt;Bg{)ASgDudN!HiYth^W0O5bLOWF0>1U?B_*v@0ls6j}CeYCDnYW?#$!&ZhJ?b5_lezi401EHyhu6>E#6WEcpWA#FzT0)fgu~`6!(|GL52fEhj}{F$q5}KpA|Lq9_RS55*3Z^-E`yZ@ z>rBQjd$cl;TCqfMqbl0K1Z{W;efF>sLwI{Cf^9{B+R;WgyWSgD zjlc>ZVyh3g35*O>>KTD?G2$KF)J)REguliQ+P~Ycp@EAQf4hBqs{hd6B{YMN?hHkz zk6}D3Z~&jr!6a$)^`DuxQFIV6YkQ)dj(( z5U14lp3>-x(tzkcKsNy7cO)8w0YC^NU^IYXZ}+ga-S^T0jPwBvV6v@?V$cKx0+_b! z(4>VW2+=r6W<`(i2kw+m=nc59ou#!|BAOe%A!w@WVH2d55bpR;`?DlkXs zKo?FgLu2fki0pgH{D5|_e__CUmvI5JUKc!>Y3kC~$h2TJpdx#>u3#HH1*twc zo$G06?9AQXfjTyDs77?*h9vR3`uXS+rro&rU#P5~eY()d_fT+=Etm>Loxfvy)dBI| zbRJ^vqW;{zy0*iM5JHjV5C9UqKLm)Xg@=kX1KP;$7#lH zH()w9&{YJNq8n)a0{G2f1bP7NHWwLI2i>@9Y~c%kV0!kl_Fw_U(0#sVx6O(8jA49G z=d!!Xu>FJnPO7uz0BAmCDh;)4<1>J&hX!am*G+7PzCAiUS6SLQ0%&Q`a3rYY5Gu{o z0nZKN)gT|E^q*T?xODdxyV|M+9m~^<<+nQx-1t~yKbUX#CwOPR^AY^LZH(6bcX*}Ni@X1Y9d6H8 zDc!jH-H_!{@3+Ahnk#1+huU3R2I9Uv+{6q$p@Ma)9`(yTVfjx#^;#-syLGD+Yw2_V zUEx~BQkD3$O|jx3>ry^zY!Bsyg?E@op230~fxi4V(J!Nt{maW*79%wlp|%h?8k2w5 z(#yOc5Rf&C(1bzLm*YlEnj4tzfffCIBA3D|ZgJ`c|6WwyA(hZeJldOVaBvBjV(sSe}%DP_CU z5+h(A>3iv^_Rur&rzJ!2BJ8h5Lwxg0cMt>5ghLDsXBB-zw`19(3o`|*b02$DUVPMc zFDGagU~J=2b1=*;2MQ|J2Fv^`V+4B!t|qfb0Ixyjt&bNggUkG?>ZkT!d%OsW^oZt- z9V?j}a^S4$;eItFc;!X#(B$&C8k}RX^;kuE~OWWfXOWh=K_(RhCOt|Yl6LU*vF;Pc`v{b zrFm7Iw;up_ezeZA+T3f*5%B3N3VTr-uH3W0ti=9P0!;IMNPKxLsU-C9W@8_Kx8+S( zj#Sa7I8v1O%MSl{m)%Aw!;639=~t2Dd%5onGoMh@}K;-%1j{}hb#ox#V(hM4~f1t*vD z4^{M2yZ>yz*!?TGns+%qY*U++E8yhEOZ(<@)%WU;{yX~d_R;w{91XA&EUOsyjcQM|czSKZd zXlXazs?U+*O^dE<@J|i!oS;_7s`iVY#9)YV4$_vUTii;87;N$Bn@Z>_dXqsyri<(c zGuiCf#DJM72R^8>0iI(jHFjEnt5+hG{&CvlY&j>cCt`Itp?$N~dj(UrBsrtmy7WAV zi-fMSp?T(%N`h?(@Zs^$;iz}o69yo?#yvx=?_!W=jRgHO10%p)Dx?GAilHbQJCay4 zDspj>5j7Itg_yvl<~r!*R^9W{DuR5DZVorYQlrD>`l}A6u^n z$LwS$mQbNWzEA!I&uMG~B5(`&KH9V)M~o0f?~E}eaZDG$b=~n7+Du~ zW(nrE0>t)KmGtF+Y`*n*FA{Ndbth)&nbRfWy6c=Lt>&3bV=s_MH)9u-n>nAR%ar=> zT@PxznSVI_QWNT7N|E}I<>4=~Xnb!hHRo2D;>U^`lnwobFH;%$X)m70cv!w^v#1UJ zSY;2rZ{4qAi6u1@n_1k3WF}ZPHGQn{xv+YxLdEJ@`p4P_{rB%4v{`kX%4Z26qmb_K z&$`HMkR$@=aG~9LK+!VMzjX7Q>0&{Y_zD_+V*&@R_K>VT{MhgU>gBH6{_$<3PK}s> zmWM^V&8MbMZ(dQnJY7`p%zpaR)ZFjo9n^kjVS}TXKgiRUqH4QT#8eOQ#EXywn_8}Z zZhim8MpeS$_J%np1iyL9O~2i4C-`%_<0UV@e$~7CnV&lbN;Wx2K)b`HWcX)s) z80OieHv6A<a8+y$HJ2$JxoV4xk@_4uz!$P7+c^5&2zOl1fNIc^33tVFwzca92NYfC zbk|dA8isx$eN4u=sal=(htztDefr6Wac*sk;%F??Rp0nesBQA4UQngQ*tkBMb7!ms zsnjLu-iA4dp*hosDbm>E?vYAk+1;Qzin^!c#rlt+dp#c^7?;~$pM4_u>NeT|6EulH zc2p#&U|HVX{=wI;x1qtW`_;Yuvs6igWjK*zhj=lCuTy+2{#h@L?5wQ+FlT-wMri-% z6?ycvYEkh46{_KTPWsF+zd45IoU>bJnr?X)8QJpY(&n-z#crU%2o#WI+1aZse;l z+8s4OPxIMcmQujd#kZm35B_$fyi&ldUOAoIUFLd^fv=x*C#xDofX@FGKk{`Kx9LTSrKIUJuwjlNS{X!4olW0}q zZ%^N8>;+IfXJQEwJzNY`EI6_imaJ|Sb<0`s7)#fC82$N zj;u%qiuvji6!ct0blw{F`9KDJ)$(-7ueZL&dP;N$>}hc7s0%eVoHz7Qu%OfIL71VQ zCJM-A4Ynah!LunY>_Bs}q;LquGz8)b(KY)`RH5lV>eHu4M5&}wsB)y+1<~geYlBDz z1Dy#7+cC(=IF1}H%(g}{<$_{|%GtP}W>59vjSLn5rlmWV zp1>v>aQ~^o4a4;r<`f^*CsA6!MnfWSYl?|A$mg`rlvh`0jjUP?Ht_|evIEn86H_{X zX=H==4$-Jvhz52b9~I~bxyBX(bg4GHVGXu07|!4wmJOk35P{xLule*1zlDrao!Rrq zYEsdI3?*W`28JxwBVi>eN*=oQbfFxVD*gg=4Bl(^hh@h^qaYdQ6jIiP$?>a`!5YZLC!OSy* zPQUfd$Oa15CS&Xn8Do>Z+#4naQ7l)ZD%f>jb|50dix+s!C3&NL&9B|?oT$&4kSv{& zGC@Yx=X5npxb{x`8Ij_(ez#F=tfixS6Jb=TU{)3Q{ya9^oUPo9&37PrZhYqq$Qd_u zZVWOY4p0zL30u+Z)B!%e$#6)&ivoyqeyq79TIABi<6IDPxq;@)m_%s`{LPe6|1It6 ziA&p4SK6i72%rO7s14VElF5hbd+)V!Z`{V-3_mmEjEMSD9j6~>@J`KSsc%TO4xznP z=BTEp#Hf400-D{^m&^_nHHm{!$7vmS!+AcVv1#{=PvE&*^xLfpsSZm{GIw{GNj{jV>s2N(0EmFk4Y-r=v7s}dETKE~SHCuX{Mu<(UsVdIB*rLj+Q?C(>}Fz3TdXrW?<9@g z=?a<~Jixr|pADX&NNC#({h1ZZjw#eB?x)NSQ068s%4Eusm)jG3^Yh>B^zT=kBeRL7*|EXLFa@q?b`){NV&S{X!s-Pgy9CMb zI3~g%v#rPO#rFKx$Gcab%te{LikOKFme6Rp_evw@GWKOT3i}+;16CBzg{vl3luI}l9F{q*Ds2S^@+tS z$sR6EULz>iEnVSvQbqx{9MR{OGOx-0T~Z8QepX@6kAljTIY}j#j9V;wJ1;A(E^CNo z?94|g*Dh;`E%9a7DJ)d3cSP&DI_uSfUey!tN%Z?fRA9N_hJR(niLiSiVE>O!ny~Mt zI}Vv`0KB4$P-fZd(iABoMKAcfsx?J_yo5Clyk82xWdKBAWA7eI;ag&jg~(wN5N{n~ za2?E;Lz*1}56-4s|0HFV8mrV|Rr}S+tZDT=2m5f|(#_RX5zBugLe3sbc#nkW2sBI* z8)Z8IH#d#)G=MpmiP^(k9lWhr%gM?Jna(1h!;X|N&SbR8)stf_YL#gi>gcWEqR|5Q zYGM0`?uT*M+Wau_+|3kDnIL*j!0dJ?SXzvF-g^QTcFhDK=1Wda)(hnT3R5XS69k?b z>tGpY$qu3Cf@;&;Q<4o*IqtF4kt}I3i-GUu5U{(Zak4{{5Gv)-4#_eV<|O*BfJIv# zLn#EaE$DFeKM1tX|2pVwfKxLA|~5I+R>A;2Ogpe&}OU;^Cd7#4y6>m9p@ zVq^WN7A%NW2Uk4?Y^*cNvrb~G_xe`9_tszxDV!E#>mD130Z#tScFmr~uEj*`!5k65 zbJZER|IoG($5wCw+%fwWn=fTl5$@xg6o@0S5n#bBF+SyRO(Nid_dSQ}UIW3NEJV=! zxR;0Zrg`+{zT$4?&##E=``&uXA>=jH0K|&GH99Z~WL=?*m zG>8jm9nx3X6CPA!3+C?A%Y-M@c#0Rnrh?oh`WBPA;Q8p_LM zZzV#Oi~;}yTK2HMTbpGu8a8n&ic!Wba7ZjEES1b*?Z)B$!*vL-b?E7E=mX&N4MGD6 zsa`C{(GOEy8SiiY%G{R}kDs#Jz3I9Zlk9UGxocdsn=$m=ZhQxihLprW&uwQY4~c+) zx)@O}@Fg_lUm*yJ8^}1`3NH1ryB?$Dzm7i!%j^GoNR<$ifLdcWZc+geSg1c^6eM*I zV)|Q<)$_jl59flEmBXC~_YIWAPd5VGW&+eV^(!-SU2~8kedThxexGn?#QB?b4dkAE*8?Fg=1vL9 zhCe_=2k%hsoOQEbaX1oK+g5L=QN2Ed|CSt9LQPMNV@sYm51lYMl*ID=F@Hv6ASC9Nz&_JCK^5;N6 z`&_Mr(w|iU_r~TWA9vi;SD0C9WYaoKt7+-YqYB+xQeq3jx{i$bSJnd|cgo(4aIUgb zNkMfvVS8k!d1yl++!+J3Z~7Bq8WS9GxC)93p)J26S?Rx!Tjh zxnAdsv)FfSmwbK)Heg@v5u9RG<0~se>Ebu@rK3Tsqd7_e<7(^j zYZEWpYof8Qez$pzUVo6-Vxq8hEzj*{DzIsj�<$uFJ0HaVEQ9TaJV`9`fYMpjM=N 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
n*gxGQAnr4s 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
r@)Se2 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ΝN^+o!)8>xSd+h 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%0ApnnY=O5CW2lk{Ry-saK0g*5jMgYhU zdR)Va-QdSQbkTxD)o4Pp;>UZ?bB<&{0YZKl00su6iwcpVcZoX1+=iAQ{|F9%iu>qA zNyf!A4w=zK78;PPS}?{k{$r1d@ghFJC`QF(twd#uns&f)x_N|S06=ty4_lU!ecU4q z16V-C?y-YhNX&+eD54sTB1$4^<%dXwfXT|i02Mr=f{7wU1OhooJ_gPLxe!MqA^-wx zNJ}yT$x`E-5eUddE;284q!L|$I0dLAi7zY`A@Ff0--T{;&Lf~>0H~F)I3XC1_#FBe z6+4NzBW*Jo)}Bt65cf4hM+$I6I2=WQ;9%|mx%fruZa5SjfliLrkX}7LH2@7{gLeW@ z+d6jAf_QWT9g1s-N)Dcg7Q4Zc!Hnhf$MTlWFoYspg}<6Q zRjO7sUpcH;uS}#lc1$W`-bqP2sKkeE;D}RQjbbuNWE3UnDj(Na$3CdRlY(Y(eE%rf zbFA~$2l+2J5c@_u5ElcJ(Zd@Lf=3i8psOb83T{F(%3}G!j&Xb>L=~Ita=r)xbL@j2 z-EizF0K^ZzmM03MZQ_IO5rtMV@v!_ztRXK!T5r^XCmtJ!9ma)L`$)27Z6z(DqF4<# z_J$o$lXPAK@2ji0hWd#Cot%nhBbU+wKb8)9oP_~bVMK}7HNPTz(hQ5VT1P6 z@Jb18A3xMFhaT+0#r#>UKFU-wr$CMXnaIa4%;2DDp6`6p%g2l@oDSC=nIFl-gT#h# zCHczO25T^fBb6|Z9rwT$@nA&+5=_23v8%W{c7QY+abi!TIJpa1#uy$m!8Y3m#`^dL z6|fK>s}|bOheou%Rs+?jk}%PahIFJE7ND>_lsf`g|G+Ld7Y}HBH9iBtg0A90*6mb` z9WV@s@t7n4EJ&$0?%)Co!!{Egd1SWJ}@KA?d{ zQ3^l-nCQ(~poQsH?0T}E7yto~9YtrL5kUKZA``Lw?QmN}ATJ;`JbGBWwd_Y4mFn$^~6^s#p3tS#n%Jh_Sv9vvp zQ+B{W>x%@DIxOs(8{df80CGJgg3sOBp5SWN%fp2R)=cQiL;fgfiI{0~dfGfUt0< z0S!F;PslKYelF--Ej!)^8u$^Ki$Txx!HDjs0J+x>AHI{(z45p*5CH&X%Umh`sh(7X zF?jDn)K6Vld?NhgJB9#T&~x_%_x zCxiY5h(Qa?j~DU_xyxw2Ge{zkpg!@F|BU)$Jp?pB%upQc^PYbwi1pJH)^onva}4~z zkN*2V^Ro<}AU_7sK*z8Q{Gh%G7(mJJ2;pnMe~5s%%RY}7pJEya{ewXY1V0k23=oVA zc>}))s5K0nJsruqf*8Kc7`@WF1j`G(CxpT%{0z?P7e|xAE5t$*D#88Z4~V+7E&RdI z;5`;(K``tL;2Vt#2{|=1!D-VB)>A+?WW8SL{db9&fH70T&|w3o>oOu|&n%E-yABu&p`O|F#8 z-84yzOPKM-6*<{Y<49nXD%+RdO<(y95bWW$N&g-;JrTk3U zT+Qyx&hV5-sdP^1U>V#G*8E5N$|YS*<4Tbv`?mV z&G_WW>^x1s^iT3s|ID|P&#s)yrf7j zOADn?@a)k2)X)&U%j;}Py}Z!$EKuzX%@hSp6&+C+)k_VX(cy$q9ko#uWzia4&j^iB z2qjW;oXyF&&P9nx4mbuuV7--OQu(}51XWQHtx|x@q&(Wm!?@A`#ZvSv(Ju{1BRGan zfylN9(Zp;{!^BU3RDe=2g#kFw`}ES_%u@X{fH<8~>%31srBf>vQV(TJ*)&r$mCg|z z(;cl(!qk(~bW$h{RKj!@9<5M870|}K)A5|pBehH;_0(=mQZ{8yCcULz0LX=C27!>$ zF*Q;4yj14&|51R%0CCuZOI1>c{DXZ^h93w5fvnYAHGoYOQ9=dN!wgnZa8q(n^yUDs#Tg>5y>;bhbU-N{Df2~q?0n%6%P`T99p(s?ojMsS$ zRiOmcinYd3h1D)4uxzjf1Mr9=Fn~!l&p&Y09L>|hL{RfwRDk?DKjlm7w3G1($d?^f zh`rYeEzym2)gM$-+?-Wr{YZikS$bs?Y8?rIZB)NxGkfJ$6#Y)eIE)qq0tMyFP4!lm zrBVJ6|9}s09sBG{M;Y0!{aQ?I(-_Ut5+z#FwAyY>S%D0Y{hyZZHIa=z>ugC=M6}LFlDAQnohQo1zC_tCRki)m|Vz&-Q4|!U!7iN zpa)#ggsq(3>b>5ZO@vnXT`mYn2Uy(3olXaE1aIJm)}^`Fo!#0+T*YNv$Aw(UW!3NH z{{~e+3y?@(>y-s7m<7$FtE!o!mgxUem4Jtqff{U0%wyTnByw&h^|`cmt70 z1W33BX_$kLv|s$yUk-qTM@XIK)dU&dh4MXL1JK?8hEwPL0%$nkAn>NyeZGG%0^e=i zf52fKo?cCe0Dw&5-<<>3gQ~C8_iG1Pwy^<*g-hUViCvb*ec;X27-}&VNF@^=C zTLnR|;pUYEr^Vby5MI_L*?*wmAm)bi#fTL^1R*Y70~p=XrClv%VSudMPZ^6OP-D8h z;;~5HuLR>3)?-BI1U}wj19;q{;RBD2%MSiu$W7$F)Z%DR0`|G%{KW_gwqRD}|6xO} z-9~<7fV|=?p5HmZh*3ToUG9Q5mWMYs#KH|p!X@Tk{MQ9ph;}%xdFU#3xQ2E>vz`+O zcj-At=rne)RX3ZNcJPL7_yY|1M$OUHD2X6=m20)M|qONHL2_ibKcE}xsHV1yr zCxE;qg=T05_=9y=hvV7@dX5r^Mzbgm$Om|aw@T-^VrO=6=UZInW`5>qo@NEegoQ3E zD&wz&Ug&T@0c=<$0YHIoD2MD=2YOhxc$ii!aOP_;hj$K00eC5GAVEg>{|B_Wq17UU zk-%nV-sX51>E*!LfP}hym_J&^w6o9nnXvT+pc3J~~>bK&RTRmyRPBWHPYqpli$Hr&)*cEgL zlxSgQD0=5OST=g#hDQjL0bm5gp;O8+XLMF)xXp&8{%c-XJ6-E%Dw~RN`DSN+hKe2v zYW{Vr zsO^_dq@`|ZRMoqvp6Xjn?&WUoD0uGZhS*$z~wqXvN7 zBQ{|jRE>Z*u#bXLht-3+tB|m1b&+OZ06TfRk&pMf^%r= z0cfjm07!s#Svp1XUG0T|V1$uK32q`Rbr48|nu$HN6Bc*z>qv^Fad1x>010P+7FZg` zo{0@a+EZYFFOLF*ItNzBj;}KS^oW^Og75+0rT4H`0Z0j{ATr)587j{dJxSGnXz||p z2fuLHW03?30HC1=yzK^ttC)(ps0nxo*G%%1qPQf&nh6Rx|FUVKm>V|$UV5mTz18eU z2LrHi9DjzZ2*{G*rc6o`Fn6XB>*Ld3Hc+mU6}*SmtRFn~;eSVc#KN9YTOfQX{_|JCh&i6z0=wzzf!Xq8Vva*f~! z^c!=izg2>;6R!8$fXwo!uZy9ca9ca;-eIsQFn}m_2m@gHuXx#;Uy5^)cC-gb2`@@K z8Hi(tikOjfA^d7d*o$ER*}L!vrFR3wF^N|2^mEXK5$_lczw^5_hh~V#C}Z zI>=CpBY}c*;03v6zUeWQOp!N(KnQ?@3<&s#T(A1Sm}8e+lkpk#JwO4EB|!nWgw?tG zyx;Iz$UcZDet^XFJKq#wX!2{9_HycqY(R!)S_!>aib>TIIxVNH6Nn-(0~1%0!@%<2 z0olL{Dq)R#bI=Bt-PEwS{e#H$@&|~21%SCT|Bwma9s>d(V6!&hA4CHQ_6?J$@00-p z2+lP-0PG%+0UFN@^9V1<00AvXGPL$Df&fDLB&{6wPk>1Vf9fT)s0)QTYYbBE+=C*U z(3_WdCb($e-^OPDJf{0M;334UTDNlT>h&wwuwuuOEo=5H+O%rdvTf`3E!?m==B}!1 z*X~>$arg4=>-R6PXrcFUQ=&pPe!gg{Ut zaRyOQ|4asv04R0@OjVk>at~H78o>-d?W{A8Zrc^B*P_^R_n1snXE3LKK|9UH~v*vXduX*MAE3m-|J1nj9CH9$^FVbhzi;7<6 zB2N&dnT`N|NXv{nW{|Nh8B=JbK{o2pv6wXq>;jTj13;kB4RnzUKk!5WuDD@3 zWNdw5rem%=6l+U{7VmEP*qpuL5f3Tk!np1!>l#DG%42L5?>N9vV=g+bxbu*P&N@}8 zHBTWN4=+O%#pgp{wzzJ)4@I2Jr8nJ}<3;hx^LA!^^>axq#ZYUy?BTo@eT=BvG zXw0$4SZC!lmRinN?`Ha%{|wPl%j`05yxDTwtyYRo_YV~NEQ3;VEl#>;iZ4DqjN2lW zs+HJe6X&>`y+whnLy=Zwtfd5Dm002{Z#xBOsjHo{K0Eh(c83&op6VWQQ@pLk3H(zf zpJfxfJoC*v|2(d{@`~47&|7~!_SyGEvQ2~Qy{wCmIcwS<2;EdcfI2~>0B~tVx0$>EYu<`@0aA{rL zfJaDLG86(Fq!1XG|3@z#G98wA2DK^xQ4$&|uTA7ag61E2w zWJ4QO6I_dq*bJEb1BayOT9nce$U>qGA`nWE9jih**|_l`WK7-sY+|feh4LziDdqs+w;`kqv50C^qTLR*IYB;z zmWN!D0Zce4R=Ols+WRIr!zoT%NpE_q@YOiesm^r{i+jkT76#0r4k}oI8RQdRxVA8a zXZ>Lx^^a3IroS#lJ^h%2GRB}Tw!Y(}a5CKG>q`#QL1DGL?H=u8#71hRpXjroQ z2q2?KZ9p8(Q44oLbqp!7WIK|mMS8@70Cs3cRXmc9pE}_i;ou4u<}ua*WHg6ZT&6no z$vXa^FcbOsg&7>t4ullo8TIIc4=%wEJnADBRbZb_ZLkKwe#xd^o8u|SD33d^Az-96 zEocG@{|tI~f}|#WC{OjV3@TvZNd&lrRk7+ZuY#2s1@s7SeS1<#Rz*DGQ0Ok|;}LnB zfp%ho2o(6S*Z~|gp$l#3Lw7mFeGtP8t6f{3y4WXI*77pJ{RMHKq!roH*0!Zwlx*DE z2M+9F9>DCKFy;G?7VJYEaM+P)%BxU@Hi991^($bf0*t}hpsQF}ZddVJZhqS;55 zx4dJv3P1_pP_s#gkgh}H$jX_RNdUq$4K;U+3syOSo<-vhI=D;#mOLy@fH71oIvEp1 zK1GVP0sSwllFbipd_x{lVC;y}u}Kby znKfnJN}d-K4`@`7(T?u3q(wt%0StiLV?H-^Uj_})w4=uz_WMe_iRKy$z7k|%Ef0H;WcbFB2GGhHwHT-GUz=Lwmkb1iL=8C|3`H1=E$xEsTMUTxmeJwwe_JkR2u#96%AyAZmz2z{zBX z=1l|;_Y;2Q%mfevixX*vmOa!;dOri$!{T?qC*4W|Xn+_9-<7}H6_98TeAvqp_r%X8 z0)J;QD2;}dmayHfR{F=)h|7`pN^f`$1L7wD&#Z`bG)h!?c zHsDx1-Cfj}15O|Xf)nteMP>lt>4{(LncY@69|)3?_~l&_U4{B(1p$i1R%zf{oS<8* zU{)x>IV6L^xx@vcVC<0~VA$RVdPU~39$(yG2@Zx37RE&sAzFxFun+(tgaZpHfjnUk zDQS@nwipstAQon!7PI z&_Os+VGgpP9`0cnc41veARh*zAkND94Wf-503tlcgA`vL8shR?-Q3|=GXGh@E6ANV zB~$J>q9$&l)cN5#MI9%Gq9~pP3yz}pc%aysBJ)U}D$0rrwjwOX;;?ukAj+aG-XbpM zqAuIz+$($!V>3pFJl3N<-lI3dBR=k-#ls^m((MMm-kNX}$f*rZ#uC0-I{VcO+m#$-)0=3-(cUH0W-MrLAGW?b&1N%G}pie+U+re+pqX&&ZEq9kV; zCT3P8V74S=rln?5rfTx#Ti#~$1fx0CB5uxOU`}RchGuJiC1k$lXI|!NUM6aWW^y*> zaXu$&I%acb=5Q+Ibf)HO&gOM)Cu>$`XBsDWCg*8-XLwpCbpPsPc`BrNQfF-TrhCeY zTfV0+a=f_kWc$|sHb zMSRw1E*{7}G{Zv)XntZRL81m|Y}rK$r)@F}g4QNNBBy>z<&2UjacU@sE~kVRr*g`s za2jZk7U+6TC4i!+l|tuZl4on)<%42qk^<>VYUzlY=#xrmh?*vw#^{Jjri+>=h9ROvh5AcKn5KAEsfZ3|b^jJAoWdwWD(O@{D5GBKcd96u z9_g1V>6>z(>4#=%g&HKHawnvgX{L(kXksdpQs!(r>8eU*cAjQXwkfPq zXP^eFS^%oBw&Dwnf*=gQvF3pzOoKGcftxr$D_lb~D1oFHz>`e_H*|tX)WIm&;Xic2 zDm;P$Ac7`Dz_K>$vx+K+Iwoe0ZBg2n{H{oR%*Zg>x;Iibz&-> zx~Qx==%>!>XAY&o*6EU3=$SStyW;C}&g)@XEO53fn#ya$swt~>XR(GXSrDtphN6xR zLt1?UJ9LAIpv?n3Lpyjwl1Yl20a-Vg6h@iD!2e``M1=ucHHFHuta)^4z*6d@-fDJE zrozgpn9iiqj_O>NYKpe%!Mcgm9_*)jDtr3srEaLKaw@|5>cAo`)f#PTHZ0jbEWM&= zyhiDxj;e!_rqU*8p2BU~=4sgu>~WSX-^zt<(ik-Mttp=Df$#%07=XHf#{kHLE+o@G zNQxWigDzOvB_M=k>_aVFLOgha7Ez0M9B$(B!heEnhl=OiZf%Qd?CCORqbh8umhQhY zt!?%y>{=?+dM)YJ?xu1osDiBP#;Kletl1Xr*ru-CHf(zeuJUT*-$ETXF0Uv)i-$yo zNBqO0CWc9%gi1ulK&*o~fNpM0N=8J*#Q&yka84(d8t>g+ZJfI6c2cZ%UM!T(sJ+sy z`+ltM@@x8vYMO>9iK4BkLM;7u>Xer0>S}FtIxOu5Z*xNL@{+6r2cq=K7aV0uXp9D@ zAjYUr+nY?%(j-q!%IV(NE2Oq3Y<4BT;v`mJk$UMdTFCSF>t2(#{3A}Pbb z>$^7Onu;*R=5R#1CK20YP_`|4-Y>7Nuu=kXK*p$FB(DtjWXBhITRZLa-#4;TLOgxwMZlkpwc0Qm2_iH0(kF zEmL)U@TpKQu^yEvvMnkQ=QT>G|RFUdto#SqAe#6%JGBBvE0E)*)pK9;szHl49WB&Gf~!X zDlfA-F=jQlGdWH3A9ArfbE5ru-`M3}`kA0+FhHsyU?a{mKnJuy@5L++v>_^??3JQH zFEm3p^jZ|OLr1hkPc%jIB1Bg-MrX7}Z?qm>G)I3lNQbmY-dN~bijl(b5> zv`fDpO z=u$tmR8KWk^J7$3HCAV}R*&OVZ?#u{HCQuaSBLdh;xSpDHCj*ISf@2c>ML8nHC&e? zJP%`B*9!gCHD2d+IIXo_&#_zgHDCw!O3yWK3br4=vSBB-V$%v=>$Mpuf+8G36?o1H zFScc0wv7_DJY%+4JT_!U_GJGxXOA{%r$uAe^$`TZXG8WKl(uWXHWzC4^TIY)RKX#v zwj$`kY|}Px_x4ttHe3%tYU6fm`?hf(H$(t;TzfWTOZGn_H*_zyaxZstQ^9jbH+Bp5 zbZ0krcehq=w|9rPc>gmsc#pSvpEpmJH+ru(d%LuHw>NypH%Py?eAl;qOEi7ow|?(8 zK<77q|2KeFvVR9Sffsn+4!D6QxPtd7f-ks(KlocVID}6)h3}(;S2%`e_&Q#=hIhD! zeKRJ}QWs*lZl~=hKI=Pi+xt0?KmT$S2e|cPVIhc<* znZM(dmpPiJ`8SEVnzy-{v$>nc`Iy7GoY%RQ)484Jd6eV1p7*(u^SPe~dXNLUpcguh z6S|=%dW<8wqW?EKiZi;SNBW0Dx};Y+hEuwwXZnL|?WyR=vPS5v#SXFFD7yS8`xQ**nwhdWY(ySSHoP?Nj4r@Kz0dnHdm z2&8}uxPT1IJH5+*y5FV?q(BHvfD{k=nd5Z`ut2@j`@Q2R3xq(wOZUIS^##cLz}tJl z`>6|DK*Ad~yF+gZJUqlle6XfK#RvAq3vL7m{KIp6$g%)!h&Et{Jl{ru!wwQz zd}S~D!vCK&$-{iii!2L#d|tD>$Yy-W?|jL6yvqOl&4cv?XgtyPEyW*wT?2iwzI?qm zJ>R+jWuqlqOMS400MlDN-y%HJ!!_3jYR*?Z*q3b2kNsPheV%n!{Ie(hRtvq(?|sM`z2B2P;A=J26FlLEEY|z{)+c^e$9>}$E96JM4hSP% zr#0nQez0D?-Ag`JcfRNQDd^g;MT!Ycg3D;UB*=siIE6F87y zL4yYoBK!~tQm9R1aLAB2QAR?G1&`?Xw*yh9e-b}}ylBvgtb!s(rc}9-WlNVYVaAj> zlV(kuH*x0FxsxYP13!Tp=sA>VQKLtZCQYe>=_;pBpEA{`lxkJ0SF!G-IB{f`RjF_c zq$m(a9Zdweax}FBM-NDyTx>--(2B`_4pwQ>A;ZY4K3ut4werePlO{RUz7-Zm;bx$_Vx|wrl&!0hu7ELrL(9x$+r&hgEDpc1}SI3q;yDH<0D-hioMgJ$P z#3Fk1z=`}tQ^X=X`Da z=Z=<&MaCrg2S`iE-@zmQBVq**M1d6d3*?L?BJ*JkCIAtuqE!CDA+m_N=tPDY#Aw2c zKp<+O3;HJ7?;rm@AcF`m`op1!GDhi-LM#o$}PF1%{Gf(pe2nuJo<=K=#@<) zLDLdTWpLmhQuD$giB&@RXAxKgVPcVgBI$#pM{sc9S4AM9g$o><_-E2eFP&(HE@n~0 zl2uH>0XI^!)nbMZAR*OMTNkN>pgFhdQr~^~?N>@Dh4NS6fj?^vOQ&EXSmA}WlFK6W z&N3pEOCgTP3dO$ohlx)N!Iw@SK3V0VIf;u%f?51Tq+^MkNH-!TR(T~5;qLm!khr3g z!3u3V6{KRF75hiMe>f;Fu7A)oWiJQbV&Mx}2&Cu*SzNWmkR&331OGZfrUhw~OQ%ix zqoUL3VU+5Uc43FJahMjmQ*oF95mO-5HrQ1J;fjM<{0Qr58M@#ZH&mdLWiQ+w*_#f5 zAj!M3xfqUI^2sSz3E;{x&m1O$4^CL~&oloLA-o=SU=-&f1>}e&1gayFPbB8Xlz~q_&km_Bks4?N5|O!h;gvhgXe00?N|GpSD^>wyioH16BzY9!n5gRpb0*Wq zk0R8VmW^=b_7RRA)fw(-t52Sdvn3eijUQb28#h5VLgbM)i(~oJmIV^F#_a4zErVD^ z>P7^!d;|wa_`wR|l?BS=3v?B<;02v@ISg)4bDYDH=QtQbegBEhAULqXC=`*xPozsC zK2Xyus`G_e%&RvPgqJGn*T0jc3^FW}MO-Qp5f`|n6UIwn3Tsu8xVUXPY6?ZlQgMhQ z&S4_B`HMiJlSA1_+{Rbf&fTtb2a91x)kmVm{MNGL){PLh(Ofl?(g*)I>iMoXFW zq?a6q5ZqX=4a(ci3>+wt<(b6+pXlF2j1b6w0CEZ5YfGPYP)6TT4R9>1NO~048;emb ze~*|!6Mg_bTDa{<5?O)O!qO(XE$~QnFs3zezyUON!T%7CsR%9Graz7tVk=~GLH($9 zt3DKS25W#M;Ao*UySS|}vCIyne&|jhuJSBM+kzH8u)2SoAQX=P4CFqUP=zj3AR1)o zLua!|sDKcn6~#&<31T)s3}jk%+RO63pbFisi7Ud=#1D*R3A%mZRO3RKH(9108E^m= zisHa3I)R(D;D8CmX`ZX@Xs5U>uM4l3!(BEJN0yC(icC103`z!=F5=*eZ(G6%a79Op ztxtdBVyX;IkW>!*;|+UBPZ|+{KeuJ-FMPULNj^ePf#AguI{1JksP+O!jr3-ErDD*)k;{v!V;&;r5R=L(|>?$6|l$)fle^If532-EbJO*ox)r62n44`g3fAJAt%s| zg)ix%Y4m30m$p^nQQYFHLC0m=;=+-OR71}rr}Yu&IR%kQL@Tu_12b66Vi6|M*;C3i zu7B8;O$G5K1u2_f{dS45`}OZoAd9e0{+GZov8+mtaD@CsCNP?5kPez~5(oa{oUO93 zL4I(Au;fPu89v$;Gy9JO=ZC^GXpn+H(m+L`STnfs15;4iz~|)4!2=144mA9q?-3*; znaMF)YJ9IB{|A*Jeoll-2;?9an8{5RP5*zL9Oah;coh_t@|9VPq?V9aERy3X45NwC z1}_=QWi~TIp?qdF6NJiEUNe&q>`Bui>k||6n3mt1XFXpq&3i6$n+NP?0>^owA=a^= z5uIqt^;ywP2DD@wonJynn$nfFv{D#-Y5hK0(~g~Vr$HTRQL`k|qfRWRO%2gcr<&ER z?sTbL%}`Xw`je}s^{sLJW?1Jsle6aaByIg`VGrBCyC${>eSK^U23y(9cJ@Mz{cH;+ zTiTjqcD1pcZ9ZR8+mobrwE8xPKb3(8CXc z&HNY-{Q__PU}6irZy%O{2>xIoly3_Rkp7~s3UFcn+K(V$Aq!Sb02hw{{VoDsg8i0{ z8nD0|2txVfkL@Hd_(GxmnhzmD;nO$}@jP(vK(Hmqf%)`d5JDjk96=zKj~svqzgE!o zs^A)2@FK3E3J7fm3$F(8?gm-H0+p{G3Ly^Ip%Dn-AC|8jq_7BWP7Kx|2}fcbAW#L% zZ~DLx@~n@OAdUXMQ2!;UkRR$n4xXVMsG$Y8Q2Bgs4NtEM)?pvWund_H4I4@g{gBPt zaH6np{NgYra&P(cAr=^cABF)B_K+Wh@DUU77- z;2(5g6?`FC1~L2$u^R*L2j=kmV4@uWPzB8q@6fUB)R7&5OeTK78OXsK$RSw{!58A9 z33BiPw-L|yQUCDtU=Z&>1VAz*Mc^OqU=Z~nk_z(f4pQwBvK?Wf3VcBzVA2KFQ6O9( z7y@Axa<3h{0Tzsr95-_DRuLfoK_o-c0f|u@Nhl@hZY9gEB^OdA*3lAh;ZrQZ5+-5^ z&*_{dFDNbV6N%9%K@uswZy=@tB@xjUol@+eQbA@S3t(X#?jS6#GAj$wExpq7#xN|! zk}R2TAl3mbOCvAWGVFq_4c0L+$$=aSq7B5Y3cO(;>arrd;Vxw-FFg+w#d0KNu`IQ( z#+Wkh3e)QjGcnikAsh2CBU2zI^B*b`CAJSU3r{oqvNQkkGYcX#-EK6ut}QQfCLmKX zu@VRFVE-LfK?9pfHY;y0J+mllGZSy~9|Dsg)3OtJ6YCO^%QTWDf|E6|QW0>0DsiEP zfKoXN4=kH=GyRe%&yqR^(<`s@>U=XKXkrVTVIbB~27F;2|6xDr^FPfK@rIHQ1wuV- zlPF=~&gMcl+b%w-Za!mkC8!`6kjxhjK?XwMA<4lRl4&0U^zJ&67(cQvOOhB*(mjKM zFc&ehzz{-zk0l}j7hu5`s_Y-)u?k=z29xtc5$^}Uu_Xqw78z9S95m{tu?<{uCdA+n z4neZYlSdzKKwt1B5>zl#6h2o}z}}Gjf)PsTPZ^2PC7SU`hqUa9)akm^OUVxxo0BDW z@&6eAp-jc@Oq*^Tw^L2=lqJwJI#r@Q;nW2NKu*1mPL(bN(lk$_4-kJ8A=Y6`H8KSR zbx^ak${I2ILf}vl75cV-Ir%gp%<#ZMAX2xEP>*f`Ff~(yuL|~*C=p^B95ps4Kvc1g zRF94YP8C&wk4-z3Al~#z34#S=byg?U&BpIiJrq}w^&oIm8#VA){~=VX(>jN>Qpe9u zBQ#mDbs+2y|MZXl{4Yp-wIBdBSg(#&kM06)HCtVe%MR@&E`VIiby~Mn0u9w!)%9L$ z0#c(@E#+xVHbzUVf0<85#1@>W8!UZA#UWN5w(N19(_Wxhu z6k<8{B3NKz3)Wx}HetK5UN^R5QI;U|^*saBT&eB?8a8ERmLOc4TUH0liKx4yo zX77~+pp|8LG-t7H0zx1KDhyzKmPcJ61wtTJZ#F22c4?`$YE5oxtu|}57UE!RWQlca z!8UAFQU`uO5e_C2n8MJ+c5T_#Oqrq$v$^82^>hUpg{va%!n~4kV2DxW>_$sNU@^D zix@LrtP*NVn^ialZdv$m)jvh6SQyaAvZYIl6LkEO@h^nH3qO9OAQ&Q26@iDcto(OK zAgm)1{=xb;px{G>M`jMhAyeYOr!TV>)H6^~n?Qm7nFw^~PN+Kr2Q>Yc!V=SeKMvU( zsAH*tp{p!Ka`q4Hzb!q3S(;YUlCxDye@wUoOAoF#NwrFr$W@@Ce^m5{_?N|RK{J6a z2sD$Wpdvky1>$l+K};3VW&{S)VPFd^7nTAIFmW~otSU`oOU}xovYsX@FN+c0*I<=M zH2;Y>|_uNTlhlKK)C!MkO}{oHvn0wS)z!0@3G`x6HQ%q(mxcKk>5X|G$F!fePKAz zQ4A8aMSu1RglJThAQf) zq?T&xsi>x^>Z+`^>gubo#{VkothCl@>#exvs_U-2_Uh}ezy>Squ*4Q??6JrutL(DO zHtX!O&_*lmwA5B>?X}outL?VjcI)l8;D#&ixa5{=?z!lutM0n&w(IV@@Ww0ey!6&< z@4fiutM9)2_UrGz00%7azyud;@WBWttnk7NH|+4k5JxQW#1vO-@x>TttntPickJ=U zAcrjS$Rw9+^2sQttn$h%x9sxEFvl$O%rw_*^UXNttn^?ythes^>#)Zz`|PyWZu{-H=dSzivi`vjKk1PBhd#!P zp{GFv#PLg3$uAEi2bz>R{3*v9bO12&gz--ttN$P+*p8TWKS&v@F5Tx1%-VeLr)3dhcy(qzJK(w z7XsdGCc+C;vP0kOF12B0cOa<5C0INJLiW+44fkwYtcY9v?0-a z?vo(bq}1?8ArKYBQiho(Fr7`+ImIpsG1XnM1u6OAY`1)xz&{zCwY?5IHW zIX`}?5>gc~hdlbgfn5j^rKk8uQq?hs9=JjutXQZ%Vo`+{U_%~vV1rYQxz#G{asUKi z#6Ff`11Egr9$^sbKZvRT90K8#{e09)u+Wa*d4riy{V5jE#}9mT;*H2;N>YI*0KWc? z8{d#e6b7)^bd*y8nfM()?m-8{PE&q$ydzWcN-1G#0R({kW>gutg)v0ndp{LG1IPdb zK3AERPcpND3`7UFpI$RReH< zE9Q}pcI0Cj(fvmkU;ztLT=!XWDncDLp#|yk3Aoil<#}}#5C9?h1O*2G{{Sp_0#X3~ z1C0Uz2>$^82^>hUpuvL(6DnND5aEOnDO|XaL9wF6ix@L%+{m$`$B!UGiX2I@q{)*g zQ>t9avZc$HFk{M`iPA-i5EB~e+{v@2&!0ep3LQ$csL`WHlPX=hFa!&lP@_tnO0}xh zt5~yY-O6<(ix5o1iXBU~tl6_@)2j7(VPe;}aO29IOSi7wyLdgixUjab-@kwZ3m!Z; zMc%`R6DwZKxUu7zDF{oROu4e<%V{G#eayMD=g*)+i+;%>0_M}GQ>$J*IfC2Kuw%=f zO}qA67p7V3-p#wW@12`%3m;Crxbfo@S^Qqkyt#AAhLKC3PQAKyxsji1-_E_e(F@nZ zi~k=_zI;i(-qWjJ&;GUf_weJ(FYaOh`}_Fw^A0h;zyJRLItG@01QuxEV8I2b;DQV` zNR@I2MkwKgVNKxRg&1b2VM#er=;4PT^2FbUB$j9*h69GE;)*Lqht&*s=)r}1CnDB^ z9%Iy~BZJwo=;MzO(#X*ZxD<)YD~4z^gCoQUX%PzFw8IZS`6S~}49v(Q!w#*;q7ozZ zNP@#iDqy1yZCGmQ5}0CM6vsUKoN1R4zB~ew5x6`uW<^UjX%`LqAmdS)+F(Sdog2}h zk1aGZvZxDANK?oU8eu8tMtwSIlBFfFxo1U@PD)&TK$dFieIm7BPCn~M$#cRsJE%E@TJ-Kd@h1A{MUFB` z$UeMm#3@F{CQGZW%9<31IJYi5lDM+UaB#v4r-m%@b|PUgk2YhjfXP0?$a_%} zV{q%O4ElC7a}i5$q^K5zII{AW}(1R^;MMG;ql9LMh+SgNr7LBGbh&i0%N%E6WBOLn&UG4GA>f5W~gj zx$JWc=oLXyN;~2lQ^+OwB$CTD(e&Zg3XpWejVV0~Ekh5Ecry(xQs5vv?Y8SM!y4Bt z&jm%(qkc@}&)1G`MZlv@O!E{q?u|5pP?UHo)LZ|B_}8!Be(6Y?54jB8M?Zb_v|LZo z`_uRZBj_=%I<$fx-jiPY`iH$WXfJYgz{NM%ktZT)LVbwv(&#qf2xRGi1Fbk;`X~ZI zZw${+dBOqV5|KRgWsGZPLj)~wFgi`l&m#7V90@~sLK$qZgUQ0k{{K?vzZJGn5M!d( z<~sK|i+C*#(3nQ)@T8~XwJ;H-xS*mE(TZ!hPzD8aK^H{xIuJOsH_-zc?Z8JPP|%Hb$L}y1@^2ctaA5XvaF(!3=)f<9a** z#x1|Gk8rq$T4&+`Gxp()Zp=d+OPFRguektM@B^9rfF}+JQUA?a)}s-Bpr$p)Rm^)* z^P4ijLp$iYUy zrD$0s4g#g8J@E<89WbJw?f5557wU~#sH$I_8dg5|5f58n!J!R}M=fShgKu1vqZZK@ z4bHI+dbl%MvVx(vhK1C1{OY6gcx5abAp0T>?`E zzwBj2sI`uDH1t>cqE$7Sk&k_#3{cyoD-Oa~uo*ysN)3&rBvkN>b)18xdWv#jH6s#t*AfRZSE@!8N|YkJMo)wB#HuNXJSre*YYkn(|143(D5ilm4o=`21Bk z+38es7W204P$n~-2~Dny^109*Oy8VFk88BEoH+|zIHaHhZ)xBg?uZo%%+bpcGH|ahX0U@@;NyF#M8>=LF??1CDYRfQ#NSemh!B8+D2K5VhZ zE#p7}%+RqcXRt=k((F;*!jdd~_zcfl8XnCn7iud)2&~GQtgXf~c*RRzg86sE%>d)r zE}@TGZ0TTvVz#q)0PQf#cm@WJ)-LsGU;GZtxzP=`xY1Iwd3J-f>d@`Z<5miaZNU+SD9nTVDf+A$6t;vlPl9hk|i0p~!u2jAMj z6_(&3;d3BkOz`HD81xYJ$zlU)8KL=@W)SH7_MGeUes8^Bv+>UUOU-hZZ=vqC^_0(m z5R1ZjImWcl8ndw?9@jyBV=Xn8c^pv9V7$o@DJDx<-c~So_0EBw;DQyr>H0thyvc`w zKsnmr`)G!~`CSpagL~Y#-;NHrGu@(EZMaP7!ZcnS zSep-SkoDDUmGsY+OfPEjV;;pvxc_{Ki3usOYEd(QIIX~6e8J(s3Dg%yC&sk#d#g8N zWdpF&tWk1#?8)>iCj%{DcEi_x#}|EtvVQHCa|2i}V6jDQ-S;tEep^J?GRR~^L%NBeJ&t@Sm%JyCwMVPd{c6OG9UrFASJ65CSH>< zF}QR3KnnTgg8E`<;m~|4*muFAFS~$RgyL?G;)0BocnBvhDiDBy28Fi3YNCUM(Q-F3 zuz3XIYhH*=6=;JN0W_VJa+bn)4cLbIXLi&gg1<6-RAPN2=WigBdwlpCI`D^pxO>l0 zN^mz!EcjVk;s(v82aKo(N&ljJf>KQNaAAKIUkc{}GhhX+unzGM3-6+bGWdXPLUPX_ z4uH^zfB*-4Cp5k?K3eDk8HO@tRu7HHh-f1NUf>AiBq;T#K1~=aAf^wMD1a`9g{TF9 zm(l{on23wmh=!1U05^-Zh$91-c>xE3zT|V#Sc_v|Y2x5JJ$Q6~qjVn#aKuOqr^twR z;6FW32e~j02vvJo$5vO?b!ujb=IAYocnh^?2sm&F@gQPgL_oc05oIP1z$gQ42PpLD zbNaFZyD*9IFpLS8k4xxvCg(prXm?k(SdUULIA@KbSaMiJ14Y$Q$ybJeGG-CCYuDI$ zWw?+1IEHPqMqmbj@c-Zzt*3g-kdwaTa-~>{sW=gtxQU(kiP^UmeYljn5r|GXh#(<> z6+vI>fRr)V0`t%=6oE5{IC5U6VEWJvCnqcTb|!H!4V5^Kw)bz_H;S$ok@zwLTA*=4 z6L^Zag&W6g!&n6}-~`ja3u96)<@hxf5p|VV0n^Y7PNS7FpqE#8DPqWm0f>0I;4N6m zm^cHA=BSr0!QN z!w5xHE}$ujkN*jIB?)U?2$|8MDq2Z*E-8wtiJp>>0Q`WNIg^Ibf-BpWa*}u}eq(lY z2QmGL471oKa)|?HnU>B8ideyv45}JV`IOC3O6b6dkU&leb2qUD4DlcfY48Q#08Nlc zF4-`j8B>-nfB^F#4u;?ZoWL?P(+j5D%UpX=m~W z{18cT&<>?Zqiw(iyR>h}a}K>=VovG^?a(eXYNHmR1lS-Bg5U+apbws~0D!a%I}iu? zBnABkgevz?L~x|Jm7yEjp&u$=HOi#PWeCU<553@E`#=m^V5ZpEbNzy%Q+f``fB^dd z4}nkz-T$Rw<}hM-8=j z24EM1v=XNtIu3OAP|h8S&^rIck)~8L8h{NXI-?e;CHmq7 zzS;?8unWbibv`$Rwy*=5>ZgDz32OwO?$!>(z^dm-p4_UTzpw>F+MWk<3uHi&$}>`FtuF=) zMcWNJ=B?l5O_T?pbrvP1C6*YmOPgDUIxw<@yS4;lRp94eV-iM(SA5>^E8Dvd?EhqT zRBNV1y9~JUv-=>kIPhIHJFyk}zJqbGf0(f{u_r#D2ZY8EWwv1=;RS$@GmN(bcMvlc zF(zJc28@>xb9V=1@G%-826s@O7IDCz;=lFj7Hh`^GcXYbjKKavwG5mw_nW^L;e#Ee z4mjWi&*+0=GQxL@iyll77Az|eJe?n5!5o*kcR<22AO^Iz0t4)W7jYvw@)|%K!&uS6 z_3}AZ##5`QWIN%m4 z++}Lq1M8^33GBif;RF9GE3a`QaBy%A*aLu|1yCTq3*5j=OvM2_z*Za;@c+BW@hiXd z3l~^m4#`FmPNFG73=@|el~EBlB$3Hdd>B{P7%lf^8j;8t5y_KG5-7k9sDJ}K@TDvn z68H)$IDiF#>k?%~4NI^Bc5qi8EEQOAE+YF4SQX4j^Z=ygx z3V>k4Ezyp%@Qe!m5)y%ntFQ?KJknlJ(gYmP1KrYPQP9re&@w&KB>&;gBk>xZToW`c z11{auVgb|BywgHG)I_})K7G_m0o2S<)J)yfP7N1G9o0sm)XVYIR(;i2O%qbR)j~nl zzme5o9oAw^5?o!@KH=5AF%o9I)@(gWBGJ}xjSy(fHyshzc74|);}Lj$*K^Gq9I@Ac z9oRnd*MiN~eZ3nR!4sBJ*o@uSB$E-2UDk)K8<4HoQWM#jo!N+u5t<#G}`|Vc>+On{F2>|@(){gdL*8DX|e!k9^*_|;io|n4bf!=!Qokmff{&NQTR7)_zwX(EDQMEc36FlK;ul#);Qke zOKIbz#M96Hiv_{s(K24&sF^^{C?tL|V>b{xxkm6Hl&V!)KA{#xF_Y8 zLFEl$m^1JXh}jHSE(swg5UJ_9|H+>XIE%MZ+jDuKcmMu3aK7j+P3MdrU2<+2j=m6D z%B5ZkrhEQN@}LKdnsZus=N$>K0=tXXY5P?Q*#m5cikdv-UwS+Lw`*00C`zGbPd*~~(HYO%_J>$2&*Smi0 zBa`c=y%R(k!r30m$MeU$O%RZ+$9zoW4Hm+*T@e;cVEJ#7ylQ&(qO_@dg3$IR5VoQSdC^@(~{vF8?3%`99;xJ?{*!6gRIB*1q!qpYtBC z@IEi_LXX-hpYt2h@J5gGMW5|R@$zRuDipsr7B3k+!Vu0q^Z_s76w%N6e0D)k$| zjvf-S5BKbi{I#F_v#U%88##c(cwge5(`em z_%NZtj14Vj1Q}8!#*Yk19vpd*qQa3SU8d|7ascV@b>iC z^A(Ic+Y}1Hv;hx9FhKP#kM;1>qOs3l<_d+8nbUi8$XNAL?GWQkvbLwR8cGQIK<2< z{g`~sg#iqdFiS1B%?YL4!Q=Mpp0Cv|njwtS(@K<>R!{->h28 z#DlLzurzk%MLA`aS3VWh2rOKW;bZ;uFu+^Y3K?M>r%SX&n;WL|Tbg+`ayd>Zrfg#v zwdGIdnk5$0&_|L>Oy>bzhyYbASw=f;wbzcyYy%>w7pd>Y z?6jtf^mXp;N(YUZNn?raZdYP0t`;SammZwDV$t-`Zj*le6-CF{$__!nA)ouQI9Dya zrySQayjkHOpXo!Y8-Kj<%ANBTI`GKDn>7~7Hk)nRZ^u3NncSvORRvXFwRF%~tNTLY zJJ&6FQjrf8_~J`v-d^S|M7*f!Sw9|YA)y!kwRL&dJ$&)UN1699VYcma@&^Qd{gk8k zNqxGvpTA$Cyk=kO=Nok4Q}f*iU;qWEAoHOr1aWH({RX(2_AO9=3iMn9rDs2*$S;AJ z84m=t#DW49@c(QM1Yrn8_!AGJY62lhfeX+#LKe0#g!>B~;6?*O7b?UBDG0#?N(ibN z_Rxn5++h%fI7A{A(TGPxViJ|OL?$-TiBE)L6s0&tDpt{oSHxl#-S$H+c5!@K1Y;P* zI7Tv-(TrzAV;a@CMmGM>i*JOZ+S)irI@ZyScf?~J^|(hq#?g;|louZbIY>el(vXKl zWFn~uNJchtREmUTBqcdXN>;YA zm8XPdEK%c1TGrB*x5T9#Ww}dU7A2Rz1ZFUWIZPz>(wN8O2{DzqOlCIImB@ri#UhSQwqL}xmSNKSUfQl0OFXFS8%PI{J7p7+FO zK8IOPemYX0{{(12Q`t{~{!yR@MQB15Sx|<)QK1ioXhiGSP>TLgq8G(zM!{H7j=E5z z9|dVhm)KE~icq8{MQKXiSW=b-P^B-0=|@{SQvk-)rZ-h6O?CQ3oc7eG_}pnwb@x-E z7S)_WMe6O0x>TlCGpSEqTT`Vv)nG!^sw|^wR<-)dt9CVITLo)aJLy%jmQSo_Me8BU zx>k6l)va&UBU|O#F1Xg!u4U9fk5Yq+ju!RZeAO$+eO$vU1 zg9sQT0yy}A@BX1(?iwTnKlnjqFMwVX{Nn;TxIlGHAcG&|#=YB3L3#fXf6PnOm5|`M- zuzYTG+pvWY=)n?^&_NR-afd*(K?E0QLyaTRgaI5O5@ra587|<0Ah+QVE)anp+W%mN zNc_MBdT;@M6_MjWh`@_xCSh65eywnKo7VGgfH$;lP17o3koT8ZBD#sMmM^PThPN1eo%!bi=e;z z)dP>O+=L?pLRD30LkcoI02TxS2Ti!c1ujqp@OpXzoGvv7^-zU>xIhsx)E zlPwt9AcY>Wqt(4`b`Nk1kqCqy?ogW+kC@0*iGUckFxoNO`Vg4Es*?L0oW% zABZ3XIYe_6B5n{9G(izfh&6xh9q}!gAtx0-$ZY|0ggfNqAHR*n#|=X2Ecjvz7l8IZ z#DEJNq#y+*xO2=E@gM<&pb2W$Nx6G2bjCN{@$O17fgXFakA3VjW8c@1#9-|EE~RWClwE|( zj3IkSqQck}AxoCR*w)n6PiFeh z3FsL3Ti%ty$^-~U>+j`z*Vq1umjhj{EObi51+ZH!M0$%%h@9bF(n=t6PDMSMF=_hQ zPKJt4QgK$uu#l9z0^;v9Q-S2=t_DyC!JzalvA!^fFMWIzjQR>a^j1K86shHVaD3=a zoa=Bqt8ypX3Tts?g8TJOjuc#R0Wgmdpz8$lg+6bO{;TY`I~UCMY%k~tkjVi_ z$rD8^wVBEN{1rqOb^z=G#;Enj?BJwx@Kh#%J)&?U1_&Ah z>^mTWMuLMf1g)l@P(`5K!71$E(xeAs#6b#{1L!e>SU3*tIDi`=NWcN=9Xtj>g^+K3 z;DG@*8x{6|q;OP-s(t}^qPwr5V!~i@PrrybSQuw0Q}HJD11Q#esQdts+ZkXTAgIq0 z6)M`plua&u0Ql4hLS+2Q7m4?KdVN;(gpP=|Fo+>3P8<%<;2`gb#A~oVRt(YXV$spk zfCdp~QA@nMfU{F0>N;LHk9Z8ArIr9NA>z!$W9`&T4a4Jf9f@{3u`u|Et+=Tpvj5J? zun2>h2m6RIjA)TCQf#8{1S7;?Ol8GCVrn5y=>!j3D24h|Pa6qfVR5!_A}R$ZcSLjm zAV}{KT}z_XPAn(@!0wokQ*a@C0LT$%1?yXTIlBH~)U0{fTpW)fo9pfj)`xsj`haW9 zvKVTmZ7%6UURbpyeJmJaaTV2ty$EsyVRNV=K3q(_;H?tCJq-HP6;z?@I4=1(`XfD@ zvN6vJ;Di8EpV3esfq_flYdeFBQx?>z0QDN!3=W9Ft^Bc&AdQ4=hCX;4NXRe_1skA1 zM(21&7a7J-r!>9?M(0E;AxkKY9kf^ow8LN>+GDmOJTa#@0Sf@z4bU=GK={tUp*Q;f z9!zZ53?F+8pAh?zFAani^gwIl6t2xtzmnKnQ;<dZkL% za!j2ucCJo8aK+jk+jr*%&KNNjGpnb2Nj;Dq5+`p<6AdwB?7D-s5r`gNn(vFfn9=GT z(LAzoss*W>J@RWX-fA%4;rndO4`#}N>Z%dAlwn(^6E{+I6rO$xZLnyWx8f2pw>|5< ze5AL}K*RtLS-5TS*I_+aoCB;WS1b!is|+WTrtbcHG})9^STikn+*N z8-nVwbB>$+UCDp*DwuLh#)kPbF-G3HcvxTC5>O6@&>i_AT zZ2}p-3^Um3UsCs-A5A%<3A8hN&H=nIvx*IOh+FuCfm^Zne(}hPqm`d{@CNd@%^_~> zn(Why^Fq}${DmvJQ}ebRb>7_T==aEwzL!xT=*O9aOV|6AUdZQtQmRaB!x9Z#F7WQp zQ>GKP(N?LYaU$}#x23W7qoA?~9Lp?`*V{f2GL{{O_tP-$F2%7{P`%dsasddy!tpWe z0Bug(R8Q|f=#+01=uX@G7l<9ZOq>A>7egLd*8r*Tf0ZZUxDrf#;+*Vd%x!jznARYv zX3*%K5tk4!h4D5Z1bmun`(_?s`IR3R`gxeW@pFCX_kt_jH#wfn9n;h+w6dj}Ip)M^ zHrw26xUMY^1m1w|P<`6jB<%7-b!*L^_kKLO4!y%T({Bf*Qo~z1##yOB27Z2t@BpN6 zP)EZ!9RG~G{Fl>>A9jEXs5)VKQ$6mShUhTln}nVUhj3awHs zZgku@_8lX%3Jw&WEAo(6DBB1ru(ag?qHy_FWjDwYVk&bXW;e~rUdo2?n7qJr=F+$SHVAGane_eY*u*&_}P zVp+513-jn#6yy?5T|Yz`YocYV^Atu`F6X;>akx*asSDlHYm#uEB&A!c2r?PQNi-Y$ zFmAI;SW(c-AE;=t;a(C6+iU~80d zq<8GQHGSPRqlaF;_TCBAD`_g}Pr-tZ%l=DN`Gw6|xs#d5Oz;dZ^N1`<4ExR>CHw1H z*{b(DFB|)W1kGRh`aN0t=}&!96aV}w(*L#eAoaN?W0A^wnJAVNwqB9FUVvMF^=`c~ zKk;?n`kQv2H=HO?PF~Wg2z4|5*6MnFJAX}e;-KlY63KX49E9=yRAAZbahEFC9ww?b zlGCl6!%S1UtbE#V6w<>)u^R%6uzEB0Q7-Nzi6pZjQ4Qgbhk%u&m_zr8phWj=? zTlzg;0Jg8f+D3H-;CHXQ9VP0f~bY z5rn#x#9PWlnH_=^jw%j;6EM7&ivYydh_H&ufwDwdLvvA5tTe-B%lV@S#u>eZyDw_* zZR+35gU|GyC-(Kt*y_b@yrZR=C8E?|CL(K_`rFUFal@Sc{pXKPxBNaMwwoC4s(9XO zPxFt%ZKDkDE{1>^L$R&a*E>}bf0sK=Z2&7T3X zq(N%Sz*;^kg=3r^Vi=kZI6rP~)+Y#`dbBRxlE|=NCU1gBz4K z2n=T0m#Nr|MO-||E@~3+tCC>G@78lGp|@!Ma0v#-;&!#f0@(@xUTkPAa_{nt0f7TT z+Spdec|XRv$0fXnWZ#!S?&&#$Z>YBZ65ZQk4ML0I^hmL)9U!y+4&1hP@6r5ak2!oP z1ICJn1X+Y-AMA@(*`Rm!=Oq7}r|pJxga&%`GWjfSvU)su1zR4gD6w9HSkAX|i;v{SF>ae&g zYD8X+ezP5dafNv<`$qj=ut{^6R5(;w?xa|da0^0QE~65yg%6GUXE@ci{ku{@ zWphY)TR`BbfUIR5E0T^qqM$nlALqa@@O3!o`4ZArL?vDQEZFju8JCkT`qUTU^MuRf zIa+O2nb<9badrviaapl@p;rrGtXSI<8Oc%fny9+7FFN{C{r=v@uYIvGlFlPm8J`33 zi4x;y>mi-!aw8i>PkCBsKPnT%Dtyjsl{idq$9~xxjT`s`KySSdKQRE{aHcYyQ}?1c zOsP1Zhx3samLv8OK{8B&)&^8Wu}d-oagY7X0G{L_rdX8m7=E=h6WI#L3iL-Co20tH zydK+l={}_uwL4qJ&>Ol8XVt9oFHkXgYO_4( z5EvV$F1k!XL`AFw7zS3mLI+BBwi`3dJsT^362h5o59cf%R4Dhfdi}WfTRDmJ@0KH( z_OC-Y=5!xwGH$hM0J;863@`Hyf2@E3cw$>@X91bTXNy9-Va?y~-ijvc zL43yXPan$SsdWLdl|#q7{O7@Q55&)P1#Ufjh2~BgzswGe=ntjFKG?N7hC&~_u0xN<@#0^#=u=qfN{erB7)#>F@)+7sVo#Bi;lR%q*-ytn zUPf(p#IL}-0?{Sm7fSz^RG|hdD1jfe$ibzS6z+6~a#U+9?B(af=O;Vfx0sbMHr^|l z^^nyy;Y!^~H@YxNhp#T-^U0v3NSMNqsFR*zwtMtO|iJVv~=Dw(op|CW|zElCfZ^%>p_Ed4nPtEc(^fAg*Z8K@(kjR?~9 z2d~jdbqkg`jSo_2?cagX=hYJlG|sjsZjzksklTR7D8B9)`TX;Rr2a*!#6xPOu>gsf zj(k~Nr*7hy^>Gw`9Y6@2J)3a7Q6<>DBVa-w#?%ocHQY~2UgV=6P$bk>NWSqL!p%ji zevkOwrurlL-`#SO8l%G-e-odPitFCWnfb4UqvB#26v?&U80?i*aWtAy;73k^<5&2; z+OoB;PeH-H6G91{ESH&t|69)m%zFrih)I^di90MXGLFfaSf+AkxJcW;>FLNKQ8Z&X zAl3woT!VAP-cQyS9I`lnOv4nlXZY<=$BG?d%g3$x!=E|dpqsxka>p$Ml)QMS2y-8V7LJX zi*wZ6&9~xs#W0xPOojn6x3G{?q&%@nK_D$Qn(PvGw8^Y9X(7O&XPuSCv}p`jj!pS!^yu8UWQ5R zAX;@k+*cJ5{2f{^=UR2f8fq7zHsG=C0h)}4CA@f}RtIt-4Q!_O;$+8?sgAF$Xz>_z zPzF&o_k1&T!gmH5(il)iwF(7uDdcCOpFxTNM0~PaIqkkOYwEx{W4GaDz-H?53s7g7(gkPP!D*L6iK7w+f+845r*vVyTPp>kP>Ji6 zRMGy7%`UO2IU-7k?zQ$I<3-xu&fdv!lF){cAl?$UsQH2(L>@zK0s!u zWXG&XLO}M$xnOE=h4Fy;p!~qJPhHNS^eu+rvWIaDm%4dzE-iGAVqUsfSMEqY=YxHM zN$M-)IcBO?CQVy-qh_-mV`Hnjy#3B+=(!~NhuX1$lPF`RQT=;l z@w?GYqi{ z`MK8T#>uI~o}?WX<+O>$eePxtW5qK!;OPSUjAlBRVuk+^w*pAyPmeP1 z*FO64+Z{eS$5wOHt8}x^$sh@Y7CbH<$Q8{jh_ax#eG6An6_B|5;iZ zC~u7KcKiMI!|Ir;8~+Z%a}B?XG&T)xMrKBSyCtyi_&0hZR_=6>t>dV#|762G=r{@Z zu{Zp~Xgg*il1lvH-~JBGKlL?do58m%24jp4%C*j7QnXH1xF{>bG5>azv`*KWuKpXB zqa1W}oHeR;oV@Bd|4**q>>EW3pe6xKE`Rj$ZIlH!cYmBF{y3H)QE4I}I;68-Kd4k( zPW4DsPDpB2BuyBJ<{=U`m$Sl;1a}etxst$tew^NMIWJrQcL_p0NvE9)w2BL7jmWd( zTd*x8^B)rPxl4WulHRdk?-hx@XaUkkVnkCG=_Zg&tEA(%3v>dDP-{W>P1OI~(|fKg z7dZ&oBsS4S25VQQBv(3P68rZ8Znv8p`mQ{(C~ie0*C>jAx{yDp0IvDN^yLDtlj|9G zA%ne(;85Y=8S4Dk0z-8nLzyep_d+2}w6Olt+)orjeevHn5^J9;HPaGQu?P`V#1vG- zPC)Y*7fIx!CCktVt0E5dAM|c$WY?m|1zq$UDgC{O&uKw?2rZjkBzcaOr!JOXN(3>v zN-Yt$H}eJ83wcfo(X#F*d4l^!LhLH;qWZ3sU+5#(BAJO>LYm78eGAHx?jlUZ|BpRg zF34I?5G7IKF7Q)#k-3ZDXbO6(u~b+uG^I~=C5)6~D_8&$~Nj=%LqI|fk zwn~YvrZD#AH;ts_e0dM-O<{e{5`ESM?RzB#4}}fmOAOP5jj~IO@`a7dN{p+8P2QE5 zvVLw_iStv1|6SfvDwccW+lGl#N;Iu;X zYrYyZL4c@sA#QL>>kv@jJl5WL-d48MF-_#!ccZqHF1~pyEMKW5iP*@4yC`T3WOtkPTOA}-XuTsdGpEcwK{Pb-Sd|5DrD7GehwZn#-+j*$6HJNXqr z$P|2p8j<}7@HnRo&_HPT1~IH2WhU|%W)Dv)vbF~UtBC@JWxkhl9_N*Y@BF6CYsukf zuDueCTJQ6F%8~p zlJgV`$@xz77+4ni3&p1s@WzaPUR<~WoH|eY;Jdrxy> zmC3LuyeM|fF_6vYGF}>sx&L-ROHJEhE_YY0Q``^_s?byI9W7mAGoi(?7-9?2`kI0L zHH>AVd2A#)48I={Adm22Y!g0^1Idh>XR#dcG84Y_$BvQ=$^g|C zZuzD03!R%N!kuT;cdoL=y?a-bBMQ~c|D~NR!6JZu9(1QQY*8i5<7K<=e=S~lU6lW> zGGTtMcqfki$L$9qC&q!YfR40blb^kUBD`90-bF5~Ly+(*$Q}=Id^S@sPnqk*pIKj$S~g_$K<|Rrx1oRKx>E{oEVIvs`a!O+>)yU`-PS1JqZ$6;bKTC*-A{1-Q zF7@^$pCXZ@q8Wjj{kHWI20zi)-UHS;J3pfFb#jN}s z5b~?3k0Pf`n~bh)@DjOwe%-nSe)Xd@^Y2g=V8|4986-m{^I(0@Of@X}o6^&6dx}Ln z_gvVf-J!BepY{ExTjlBhtDU~LFjXDEZ7&D!c=2Icf~lFG%9aATtvxON0W=>%*h1hR zN!yekcy&#iTy#qLLm0zy{koT^Q&v+P!k@Z^N}4*BMw&7nrpmj8fESAJ60k>q#=72i z=?Gy3q_{C`T7jx>)>(msv>-!!SAAkmoWuuw~w|y4j#jQGr59RW#3N03D5j%*^b|(cgKJ zf*x_;8*N>DrWnWpW@PPEMc6Yp2$(~N^P(BdaXKsxpFSD#;d)Z_dX!V{aTj_XYzk-f z%+aCE8HzsF9Yv67FkRR2j(3q@4+IW!P|mMpEKfy2NS6>QG`Zf+*8Hggt5klZo9dLV z>hg*9_kw_LjO!d!O-PUIqy30fj$mnWmq%j~3wGF7V&~nvN(n9hrgnKY^tPCyjBNbf z7u9vDbMi8t%FNw$(lJ5e({&~^c9HE~QQwIxv^bh{hGV;A8ZrP?1k4+WAjgI-*?o(z z<(6V~MRBl0#%ms?I13A){M}N&jC@$z-A0C7^TdJZn>#;c-h6Upwvc-R+Gyy~|L)&H zh8{`!^~BTG;v7wux0)LtbK_`BFbCfn&P%zSl0#>lHup~gIFgiSGK_RSY}^fyf$!ngu`uMSdil{UDch`(fp5qc+2L;Qo3H3MX(%>7 z&kpzaS9}oR+w$&+xv3zrSnVjHh|r|ySwPuIc^}?lj7;}edqQRW=r3)qY=l+AfpGlq z-K!DryTY@%j$?lJw3;7_sH6OmpG7-+^{qel%a`v;9)~<-On5CSV%Rj0v z+|!o)?Uw!BmIBIU(hqkMvw9)raz2-Ok(l}ifz~3`*5ZF6#agW;77xtyPv)SkrCzON z9p9g@UA#x>>^4P6h*1mjkRf-LSOtG-?nzlwYo*|k897yA?XG6xNx@F0>5l#aDA{C9 zI&&Tyf)%k?dtmBETYU_v>1eHMdJtAA`Ic@_tHjyud{t|N%$Z}-;M+-Ksm#r*ooIQDn}ZZ})Frsl3Qx z7z4Z8|7#R{+xfT?3dgV@b;L~ZYSHC)pJ)0jVrV_^U8>hu{P3aqt9>>c?d62KqN|tlAwZJNdSM~jlYbvLKwpl(1I6>hjMqBFu{yj{c#}n&O&x+@V(Rz+m2 zRi<ggYf|DP<7(p@1AoUTGb@OIHmOumPXxjrqV+NFuj%&qJ4VJ56uF=YusMBVU6o9|c^Ce>zcKx2g?TyhpIO^>m3A!y->KzHuRfFV*@e(=x^xjH$ z{W9(4r(a^OCkSUm-8R^&F-*>(>&8w@y3j(A9T^v?rL&_MY6cM#)KtoNA?|xm#ch4C z;^jJFvgOG#HH_ONk_asR8#Pon!F_y&cuLUY1&hn_e=Pg6C9ohP%OILG5_< z%b6ZVPsFVLfA$p3h*&curI8Y-sN)x1e8_;%YkTAa4#_D=H9moJA)I$whB;h>&JveE zF~@?aT5p_{lP37YQcM11CB>&vU6ZFaz5AZl@R^;d)*v`&YR$Ursb9eD+1~P*SPW;1 z+gwA&BUw|g@x@=k$aD~mD+7P+rK}$Ykk*vBk~mlFSdkHLw3KybkdmCbiuJ?-_s+3e`A|4cLQLFn(9w_Y>td6DSv$TciNm;_CX;Tdx?C=%u;5f#W2L~@lRw98zBTfB=}S)5m|F5fX&4iJJ*q-dBS zB;9D4IC;plw#HOpU{|YSWo^;R38~UDvdO{bf9C&*jf+D#s-M6_-AVce7om4ZDJ4BO zoVm#rn{T0C?#_I>znJRqJ#2Etd;Gmi#PG)%X)8Tk$<0Y3_z*%_`1RUaOcIppVE@Yl zOkH)9OkWF0q-Sh^IhM#=fU40T6`=84IXqA%D=wzq%&rqEPFbAR zII;J=N4$H#gXV9ySBBn;^%bn^;UC#AZ_>qaO5D@fWOEYLJC+gJGQORa7{^HzE0b2x z1F~;%>!mwWteWd{DSGZt<0V|+u-F4PGOWyW)&G0j@z&Sv4iNK=0J-1a#0mRY%h@b? zYB+{C(awW}Bqk9m2Gm8j{LvtU8*aA<;({S2CKXjw4C!+rgQ^e+<-KWbE|65be!1ac z4Z7e%`?*KK+HT*~nh!yVvN;;yQ9X;l1*0}_%_B4oMaCJJ;g@4PU>~(<>*%)GmQ(xo z`@Qq2hOglK>HfIIt+T@~kDCG>>rhaY9}laUE19b-TSA@?X_BgW&1mvcy=%~?E&TdK zuZ**Z(ub!kE`~5eOjb%w^#9ybg&b|hdvGyzJjsxHj0)qpiWlR?(Y%%iF;%C>$%HJ@ zyCS*|+T=vLrCiN5#9238p^uc6jhHV@bn}Hl9w{m>v1H_2oPH~3%?}B1e0Zj~aY+K| z724#bVTRNLk0jHBC9Y0{zCs#{@U1|!!rMFPCqx3 zLc&r;F&~9RPx)e25zptrM8ln-Tg{T1bU;}a1YH}zf+y1BsysN#4UMke%Y2e|up-u7 zY?K1u%ScxKDPd(aXj^S9mhMq11#KBJdCr>E*zi*(FmV|BMISuG)}N`>5J+*^u5-~ciT><_rPd8K{PzCmM+&Qd)%ca4~1n;#9A_Nv5VQXYV!;*(_Qsc<-LaW zRC$um(YU6kKqngMLb(58#T>$8)$O~-LE>7r)T>Aw)- z=}%Za7E7s*$m}|;MEg__Ef}-NK=B*`sBHTH5suf)$niu8;uh8QoC{pc^0V?3o(Z(M zilLDl4vV)VabNmZoj6NzHzq$HT_mgvZ|PUW zkRFb;3fdz$Ww{UVRKr$3(8;Mrv2B%!XD!#7QE{~|y?}E#)+Tad zN|xM7^8!bIE2Ic8eDjm>#~!mJ!%kfHp2vrD)?84+iWSxxC9nYyVp18 zCPJlQa_?G_r49$HAm0M%s?`GL^&_>O=hMkA9&0S8Cu`X2DdvvFsWj-d-4Aq*kAiOHQdLzIRvU-qk*-pAw>Yhz$5oRtAA+Wo7xoe15>x{37@M3jd=cJ8UE}A zIRYdGesJFQjsMjCJN|?h2q|RFThmiL8PCWM zDV59nWp@8$vT&4N*dTA+u1TGQf6uQPl=12M{U1{`0%321GvEBcyWchV5~}Wb_9)=s z!G})Gu$E6(DJgGF%dorc14>)D+Z`iU?mg!F+Cjtpq%Kuhi1*Id4mS3j#1q% zOXORd+|K`tm-=vpMJ_z_``Mp#hSRm&h|@=!50C1_qPGhL&uTvX*^A^l|H%~-X&|Y! z|HUGTK)ZhNO?OnYZm&dw~J zey=$MkDZGqQQ-2R7RVpPJ4Xj8r;eXap8Fp<(f&qD%zO;2Qz*=2p}4Lqqm*BCp5?;gu5u^c+wHo;*}MJNX_wPKgY|mNu5bqD850*ikb~KR)7|%Xu@(u2q^t|O8SKx0n=l}AS|JyGAqJqHB zK!IOx1vYmDb`=B<0|k#2;K>UN1mv4@1?0aBerA9r0S#JrWkv$L6N`eZE`srRbykd^ zd7-+B6rH#Z$hgqr-V!rs(8cH#;z(Q2P}>w8gl<`8mJSl(nc$Ih6E@is?p%htEQ-3K zI7m>@8;b%__pYdsYXL*ar3J1MD$uC5h(i&8TSU=kIwO(10@f(*2^7j2Em0>@t_$2i z35%g6zb!6%f`$Jgg_d0Sx)#JlmYDx&b3eo(JG;R_g)xepYblNj)qkwKX~AfmjhdDl;1MheXOp71LT_jb3Kyz6xhZx+B;G9Id2priN+K9G z{Of%oQ?^Spy_eXK(u-_Y#JWIyoxIK3(r5y$Qzvf%NDbMgxoacM#0uvtl&9deYP5My z0JNkc3({44-yNOe!YSz~jnw8O=xP_c>cmdyt5C6+mSUK*lqn!Jio_B!;wMxe#mwi* zQ{t*qxckj85V31l4TGZ#I*+EGKCu5x78O~ zLgp446=VTRE|^aDI329n>1#b{5M5^vaiKYHg&hv^~PJB)wiF6{#>Tb?5%Z=VgiV#@e$y%lH*yA^E1tjM(l;__G&oW|8Z2x0&3 zB4vp(xeKvU{j5A4!t+pD{x_?X-6QxOp37X!{_qJvX(w}6FKTrV#2b~J?qu;QgES-v zx?%^&E3VfIY|%GeICg|(LK;oErr@<`q5F*vEQ=21Ags`mqKzH;o!i7a9k%!e!|PRc z%Lh)-5XWc^$482`#oDyB^)5AT_P&SqZ%WyHY_+7ilqq&{!aA;EQwDh3(1j@{!3s-* zP}AW|=kcklS~{1s{}WtgQxRO?-dp5pbrq~YU95Qs%r5eb6biJ0As%5oIh~%)oV8lwEv>EP;i)6FweQ(KVB5DZxZ2h;rfI3y!#IP5*6G%McdvP z#`sL)E8b_uRbcN>Q0IO~_rd*$X)g-Mdtcl8?mHk16xxR3LjZce{;;dqC=`Z8e{J&g zxA(u_#6RYM+pv~Y#9yHz<5-S7DU?noYA&9tcT&=`(PoIa7b<~^g=olqzZXwIMRj3$ zVS+`|QnpCmsl{+x;NmKnb#dgv1d(j_h7}27h&y>4Qag6IoIQbayu^&FXGf=JvJNh` z2^SmY?avug7#`#Hj{hWEur`y}dl7^>i+2z6>^(x)IwrR`I28 z(;kj4YYGrTN`B1_+f-Gw`-8q=gT5ISJdY7{bd|;_QRjE^uTn!A>;YJzfG{4+?!v`c zhuU^^qg&uzK*@07xE+;1M~j{`0A0A_0~H$qIxw^NHE4cetbw(_cZ>$A=&D(S8w94; zF@a)H%Kjajo!1DZ`~h*J!F1wZz&LGwr<5nIT-mQsUq!pX`Gra}F2YG--h%j% zZmJ(IznIJoN&@G8a}iv#4*FWijR54C#nDL-N@_|n3M~nDTJrBiAmpz-f#RMtWy}1| zWx>wMy|O|3w;<;i_$05Pm4O7+W9|uUU^SPteYxOJn`?={a)jb*J>tuBjWT!+g1O{B zS+u?$lo?v+A`24yg8{_Sz|%UK33FO@E%op6GE`>%bU0}blM zEGMA$&LoQ1(jy1%NPG**Ap%h3;jbeAiXcHcSHKBVs`>;M%q3`8s1mGBC~ti&=9VN@ zlvIO2z-GZYuJOzdo?N;7CiekKDiTjkE;M=$%myK-aSbzbuPSW-1pc*Z@vGjT*YCUP zy>iNFkfdiVFQDX#Z(kyWit@&DYyVvXogX(vw`N>k$~gWasdXggeVMO13019>l*=nX z+z&{?F{l-0p$$WdE=EW{oXr?HQcVHmlPr%efqrQ@g9!A4>}4j6~mOgIYHBLKk}fF4Vp_>X!hk2|Ym5 zAp2vfKJ;D@o?*)^ZIvizM=TWfLR^L~0lX`P+MnF@3OwAXA+c#4`k_(QKkE7ZSG8n<#5a7<-YH+YE70(~7v+}pa~}P*9xZ)-U6JD`YbmL6*a&7;E_+m{i$ncMFU2_uRjKqb zaDMduz(Ym8o-Yi1p;CzlEX4_*jZ7D5#U~2A4l- zuDwl6ZT27Ei9>B;*e3}-o6>o{=h``{k#~o$^el5~((|>cKKb^AUo;iRJr^B=ic)C< zD<8Y73O!t+sG!qAmcQbcSlXpK^S*R17(O{xbN#Y-Tqv;T!nK9hV*1aTzny>depK6p zY|QB^=g3dPoj-eqXds1)ycChn-v-82^{=s0o^bFhgyXS{8;A#Bi`WODW#);qjH)}+|D|(t= z13N-(=D$8UR_^A%EVX19gcp49?0G7lVFYv1zaWSJ`NTbuzAr#!dxD?kZBrGy{}aT# zgsOX$%YKje?}=-dcERZV^AWau@;>V=THKefn3F*qLj!K_CrS$_0%}7jtZP>eki9lV1aGIZ@9_M19@TgxYV!*9;vFcL?H(uhzTnrXkGeiR(is)wd7c6W`6C&@ zruZ#ewAx?xI*%by88M;^ugyOG(RYD?W9Te5=BUZh-6-{dGOqVh?>3vcx(Ey#&U0_T z^^w3sm|Frm&Co4TG(W*DNwRvtEm>kTM8I|yj{WRI%d#+_rY($3(9A^2TPQJvdWv_F`>ScRUibuY5Ee;}CLrMRImv6X3jgU#K%@`Zla# zGCRjrg+o@}+MMhud*Aiz@|YHfYEs3Y9N{cgmk&@X1i z&7SVB086z)F`J)5Tu(@JPicZYzc96IX1E$d>U4g6S4|l*`cp2}&Wx{g9b~;6c_-dB z|Hf+vf~c{CO7^|qZWnn~A44Y1wHQOEtbGT{bo@sDJqB22-+q#_(Xbrnr2(FNl2K9H zHB*ClWPXzKRGS#BVZLqxi02_vQ_`-f)vv#T|5B8C=||SOhi>?M=GCBqg9TGbDVwh^2KX*B z3+T>Xv@>dxBOHB&b6Lo=!K*NV{1^3T5zbBcFYM$QDODHvKrINjqej z6qHpWEt2%w6TuV6kW3fAcd_UF*a?CG!~%Myju)BK85TgF!bPqIb#_RKdVpHI`=$C( z`X{%yF8l6V0p~1u=*z9A)&wTbltJdOC?Wn=I+Km73XiX={|ve}^b*M0Np(n*hfy`J zO111VMqn}>6t3ZGc!`R{~*c!mCcPoO~`JAdsp1-nXv>6_}Ayoa>dpSb#XuNV= zv9fmlHNU^dqwDI${1$I3?T`OHu2y+ld;i;-y_T^OXJel1l#&+LTgu+ zxuLG-#m%Q`)di-B-!^>izn`aUZcW0F@$fLHksx5^lO!Kci*?bZf@30dmyMVht2GrO zY5+LZO_>{i@93%N!t-y-D|q8C2|D@5Q0VijSDukS-UYaEBo~lUv+i#ZGG`x7kwx1J zU`*dJlulWM-0y8i>eQIoD*iaS*9`MObk$2nEi%N2VE-(E<#BO}^#v30!ZJovQ;qmQzX{#0S#VYnIl#_Al;M;@o`xBg~+EcgZPpO%Mp z@A>YQJ6{57%HNDsJ7!Xa`{dVyE-iL0)?^1=z z@2A;wAae(1^@Hm^Sb~2$P1+7o>f&zs&w=2mWHHsKC8Nmj9_?#hNxnC*bQrAULEUai z-q8X|u4T|7Ey#3R?WgqLu_3LN-`T$N6N)u0AN|wzU;d8zPh-2~Qw-Aqi9UJ_E7v;y zIPIWBD*BhHf9qrch3T-uBzoPpruB18+F_M%^zR$ntrrude`=GXH$3FtfBBU5r=c=> z)6f6?*B?xOn}?&fLTcWB+fMuY;dk_Q)b{%y6s99G{lgui+=s>7u!U}^hr1~=$3cb% zbA{(cKOMi``{{6Slp&2tcDeK6KP~2yI6)FehrIc!-of147H*$nxvPVDp7dRnrhHOA+0XGM)6thAZw9 zOd{!>G4yc?G27)7+E66@r!L5w1;!o>jqfyW2FVyN53H3xB;XLtG_W+wC`thMO#oxR zJk4Gc^%xSTOM){Y3FDRo$_}_VohD75al(=iYDu?>WUAkxzT^h2C*h?)wDbrzHgU#i z607bd#(8)kGfQm57$LY8tUSQTsRmfg5^lIetFqFV%+gYkLFu*h2RQnF{e+nX0-ZwK zr2!gvJwAcV;Ncx_)l5iRV4UBHV}3@zi=#hpqK4+c71qQdYmiaP{{wkIhQE3TSbxGd zf6j0X5O`l-zzqUtev?RvdnW*K01f6q58U7h7Jv=wAXe*u8|ab=````TFb{|`5(1GA z`EU*2FhT=R{{YP3L|8BnuDA~EU=p!K57*ER>rjjHzz)}74gpssy$FlFfQg#OiOAE6 z@gNB(unx#rJXc|gs0cm(fHu?^KL+s)?9dImxCf2^4cSzDHG%@e0v#yu4a5RqN}!3a z7#W*IHm8V7VITlh(GK7!jLa~M?Qk0TxDWf-Q}xg(t0GPNa1GrsLKWZ)-;fX9P;0 z84_FU01dh*a57YhKM9m`XA|c#6Zpm_|Ih;afDEjHTZv?hSAh?OFgC(r0YapOo3}IB z;0~Dr|2WF3~pwYyYUYjGkbIC6sjjiL8K1( z$Pd)O8XHp!GSU`PahGoy1p?p(=KvfEK@s@20JI1MlU0{c;3Wcy4A21uxC8_NWep5K z6_?3R=1^^`;s*Ml3n@jGdoUL!ftPWq4t5EeMAdsI)*Y>>mmMPs6u=USK_xEfAHPR0 zO39S0&{gzRFEx>EL8+X}iFVAFJoFI(nZOjA(|hKzX9A7(4=K#zzH;S8EW#IOpytHq&ZeHi|AtApYNTQ3oRD=7 zV-r`eRGso+DEHDW0su45!V$>@6o|75Bu1Jul0Bd(4?@F2QBep-f^Z9 zK|lLY6IH}F!+? zMREYS;CctcGN2`x4^b&9fhn58DV`#G4`4LUQY3AHt>Ym~^U^BP+AP`d|0D_F2-1)S zpkOg|nhpjKsH*`ZWZQZF062SDBLSl>PXCfg>v5d(a2kx{yz@k`+4?ZxBR;D{J~)d-b#pg1umtt zajgb$p(r~eXj_i_&<--C8i93Igq2j>G{$Q6PF8}g726#Kz{Nt$TEE0U2B2GC6+xX< z#vI|rIIP2MrH$$2SI9KDx`4$KTe+2s!lt~jr5w4ItI8g`|H`PW%A{%nDIu9cvQ?fL;+W%wB8&5#VG2Dgda8ULl%b24G*P3LS9uoz(GYuICsx(U9M(v(VXC&v#yo2i4IP-9$+XPV%4`{H z_OWz5)5?5b-)zlLJ=J1e${VKGKh4yx+}K5})!{tSVg1yJt<+Z?)SC^|O#RHBjnzn< z+K_$MV13PnE!94)+Okd9zs%XREyA~b+FZ?cUY*WajmxNwv7wm{#v~5{M*x}0$M-nb zK|R~N{LG|m+tK{h;e2m^#mv*)*T7uIER5H={nMW-)S(^Q5qs0MJ>J3$+n=r5rp?~u zP2EXt+0{MELoM9LJk32F-S`c5M-k-g>o}J(d z&f93`+u;q|osF>sUg+AGfE4es2~jnm>y+MQk4uZ`LRPT)Wu*%~6? zpzYq5z2Kt_<54c&Q;y>C9opkP;cHjnQhwoCzSCQd<7!^t2)^Yv{^pgt(Nt~Wz+KG= zPT9Xb-A^vzK5pY#&gEep#Uf#Vd=`8NKb}s0=ZtAja>&gDq&(7;%o$7@y<({t9)^6!{PT=cJ<*I(= zI=$V>-odOL-j3eqd2Z}eZS2&X&3>-xt3GzE-rr3=?)hErn{DmguHHwTCi6P%x>=qf8vck@Y%lbln&;j9`ONA*qzSs1n=enkMS4(>DV6W@;>jbUg;J8 z>cpJpss8Ew{^lw_!Y;q$3tr$&{p`+O>^2VbJ?`>3Kk&K!-$j1c8}IRi-tc^$?ol4_ zMStz2z3KAZ?13)s^L_9_j_-di|MGRG)Y@*!BOW z(Bn}@BZ%(|M4&X^H2Zv zZ~ym?|M{=~`_KRV4-o$Z{|+Qr(BMIY2^B76*wEoah!G`Dq*&47MT{9WZsgd}<42Go zMUEs{(&R~$DOIjy+0x}pm@#F}q*>GEO`JJ(?&R6i=TD$Pg$^ZJ)aX&9NtG^T+SKV& zs8OX(rCQbMRjgUHZspq5>sPR0nHnG~*6dldY1OXfO4fixw+7>8ojbE`#=8RDmSx-5 z?_a=y1()2r7cO6dhD8=;IX5rN$B82!e9Rc)rz4_tq}{(a@}a}aKWbJlPPg>(=fgYDYWlF?>H3kJ@6!C4#NT&bn!(P zW88_k>rxDmum2__5I6{_yRSMEQPht+7K0qo#}1D?aK8NG0pFOw5~S+ZB#Q!0I#(3PCWBmD9ZV4Y!O5p+oVt~ zGux{%&NCC;Zq6PDbQ8Kb`Fx8>B@fi|QcN>tP*MqrgELSgCxkM`PbV$YRLeTlP|hs@ z9h6m6$$V7A|59CzRnkyBtx;26d-avJF6m75OJegY_D~C16LUUB9XvKaS&{s)!e6Vk z_S&_M)X~rlpRKb~5({-Swr!IIwOnC|CA3jN+tqSeFtL?)UV5c6)l-GYRkgQm(FJu^ z%9MrI(%%#%7fng4_hO7QPAlFwD}I&Rj*`S^HI5bD^WXpp z#TUzfvorZ*jboO1X0^Iy_$X)>dzogQd-nO~A^S}V<w+R$3^dIf8g;sH2v8 zYO1TY`f9AR)_QBMyY~8Pu)`L6Y_iKX`)st+R(ox>hazAM0S0J$Zo2E1tqxf7hGiB( zM2m^CG z=ck@MAkrWk&)pH7qs>j1-E?bS&-`}WbN7gI&*zaRjDrMVM0V66s-X1FT^EV>*=4W& zqf6FVC!cTx(EWPs*Ji%+eRPSyAPbn8$MoVI5`cg|I**5y??c+Y`Ocr;z4Lj}$^L%) z$9{hwbVL^bgYl6sbq^W906uUAAdrN4#cO~V$Y6#Cl0gf$!wB>2mp=?5t+#ALY|DghGj4&S~JY5M_;D~RSjvmpVL)`vxfL%y$ z9q5oD0pbuw&#{9TM?7O1*AWk1#G!Qi7{(AiS3ZR>As313Tt37xhk_8`3*87HKMZLI zxk2C=>)>MN?pO;)s8Jps6o@3H7mr#*pas%vhdUmyi_YC+Ac7>MBM+I#IFO@}hU~)+ zp?FJN28MauK%P1XB7g*V&KX=RUk#p7Nz*M(ZUq2F05ABD2QUME_3(p0m>ED{c#e;L z>>MBu;zs1jE+4&U;R-SVzkMtt0uW%`?D+VH00NSoR0L)K*&)qT{sWxN8)pj_|FDa8 zG}3eVScWZgc~FF!g?Zxu#t89Ihz}Crocz$o8vdBN7(4@hsSLvanCZC-E&v!CJ)Ivs zI#PG`(I7WeNH8}V4^QY569Pr1K6Ek9l%}tn0~`PZutCKExO8@^6l(Kes?XsKbRDMa zUP7Jv)U#L+3fxP^Kvd99cVOY70&oKt`$+&oXtR$W?c4=*%8z}BV-RJ?MI*y;(%Ied z6x`$oJ_gYSGDHx96U?aR=s^oJtO1Vva0d{M=ecpHPzm8g#|z28Jas^D3TG`}Pk)Nm zJ{Gl*>qtjmJNMVX4z{pY<=!$T@Q)h6aUZ^fYHMAq6$@(Mvda6%R6ExU|DmETgwo5$ zI9T|P@C8sC0w60t?1x1zrUMAyBS2E?T8IOn6s^lhU_zKT4}p5FcDALcE&}j96kJvx zq)31o>j6=@IrknwupSWwLRp^rl#2f-syq<+4*_u3rr-TXcsn;<1RxKPVeOne3inzB zCm1TsbB6+Wrw>U4Kmn+HZf;A6-+{ojtp6x(It0)H%fRoSiiY zz&v;WL2d(x?g;mRjK&qvZ}1g}d;h`Xe^_?DLdAzk<@RFF#dyXwMk_LmaM^TLSHV-J zvQwC+N-Sux8UK)N=hQI(?s}60rGUmYt^tio+ONZ0CFUOdMqKHZ|HA^(t(`4d>^u~A zP8^WK=RT~_!VlCT7iPZ3V9V!YAPX6@^u4Ixio0jQ_1PNCtYkj8K?@~TS<{;q%9RCh z)pqP7#3uuff$?D9tMF%XU7g%NSV{qrglv{9m4-6g2MIiAdj1EI^LRY)gb+`=UzRK4$s<( zbbaXSdfLuqJ9r;Tr6jTcG3=cd8_Jor_dk@aY8E1DV?cllbdY#tRCHXJipv_(s1Pi~QoR9wj z>_d}VAlz-YKtQl>M(2AVpXXla2{QW9dv3S_i2&UP|9jv=MC>L0oa5muNpo`{0uI`ep%gi?!4CFoeyG6fdEWs|HVGiIRLh+&l3?iTqRTAO+yet z3oU4*I_A)TFZ6xxB;R@=!$1D=JHIfiCZuY+;5$GBKuH?y6vmA?$aSK<28I}gccB|*(o2|>m6-Sfny@6{gb^Q3qg_^!HlXTc7TR; z2%vpv2FFW4A51{8CwAruHY*%=3E`$0YYy&&u| ze&E4@fUg1)xJIIfU(hc}@VX0Pp%WN5(-8-g|FR}J13Q8cJB0Y27oafH8HYJ=JU6PO zeHe!;2&XM8ASDR8bQpkrilae5sW$Ycf51ddM66Eq8-bfZcBloZ+e2Q|!{2%c7V4qA z8UnQg!2qB-f#5mEA_D~aAxg9e=5ior41%4@JAIPIOv|vwIib870~10aGN>Vnh{n7+ z18U46{Nl#Ent}-E!CrhvcuWYMJBSY|u5kDz>-oi&_(grh$AS=V2{3+Wr15%4iOfiiEDwq_oyyxtkPON5=txJR1{o7cluXIl zXn-!r8&jBqepE@BoXNq6Nt(P#oXkm`|J+HQ>`9;eNuUf$p&Ux0EJ~w1N~9zkqDe}o zWJ)2am8W5orl|=2XiBR@Ko8-TsAQ3%ag(e3%HMlRsoY9Y35h}p8G!*ywZtBP`4G{# z8IL$ir&-Fitjo)3%dDgrvZRO;p-aB>OS=rrwvm#&?37Pg7{5H2=zx<_IT?aU%fF15 zr36gDtjt~^%v~9mf#J@aY0e#Cm@-L}J=L7wOJnSxvYUP}p?N+62!Bea^8A5eD5* z1yL98JQ1kOPws@zXED$Vz0VB&5)NHa^Ptc_vCsd6OsVuuL^)8GIZOAKV=x4_ za0NYO()BD1NtIG!U;;ScfIqF&gHZrPkOdjy07#e|jO+@ZdZq>8R&O1MIv^acaHC&1 zh(CZug$N=9N(ps!RkU;nC^VgTh=p5qOEN)BiNJtqkOmJDorFOFbMUhd64vbaLhSM! zb?7M0d8YStglizZd;yOrWm9gbg;e!ZTtFFSI=2A`Fm3o&aK#33)d~y{hYJ&l0dRwT zaGf`E1$V`Y=<2wY{~e%qZP{ z@Eaot255)|M8Z~BFoZQ2T}bKzOqfDkc!Ymg0Yrd?X`qEBB8US(1Xy?k01(IJbWY zu;)=<_U(kmab034qXFmwT5tkqAUy%*1_C~a-u>Mlx>$lW}w-cBgr z^L@keorYgsRM2O2W&NkQ4ZrVF5`AhgjV=n zE-;AbgNIf&p+6|B1UBSWcwIVJ`^pXYS#J0a&bgTf!aC#J)v< zGt9$($XGUoTaRT3x*Z4r9)JgUhJ2U?X4r?J`v)wT2X?pybEpS8C^vpsqmUlyl0IpI z|Cp+kR-AxtHkvkRjGLZ9GifVgr*)u*pymZp<{WnDhIWt#I*0&FXt&i#JiA2(g7B%L zMzeSbJ-rpFcJPK&Q?7sTYOtOMHbQBYW@(o$h{ZDMZ@{CZ=7*(jYLiL;bzW+fW`>+z zA7Hv`M!KiHW`zPu>6LEjm;Qr%SO;=QHF(&8Tu3!<2nPlTFt^?Z+ZzZ6lWV4yhq~5> zZpuuJu=cx-QUYwqheFGTah5pg znQM56f&qwaG+XO`+J|fC2A}>y*JkQ_Ft{Lt0uci)W@tAo(uO&^2MfrBl8$T!|M-L8 zX71rG2n;wXH~MT{yeeIgxWp-Ic6bKRP95idZ6F}(%I1X^$c1mn2XFX=j-D#FmP0rL z>TeM0`i5@lzEo=NoM2dpk4i-l6o@WUhc@7Ze-JSQ7$FN!Dhua?3PY=CXammKhj1tZ z&iT9J*@tLg15~<)9bjsDK!q%WIv?mNe29f9pn;NlfS-!G50WoyK(QIGaUd6nVCvh0 zjGF=AoW_O1eMpB1+h#hLs(dhpE#Mq=AOjmfCFPnb!7YeqT~m&&R*vr9x;2N|af9l1 zFx1JY!V-YjL)$;t2W4O(HXkuJzp&L&2li?<4Yo-khxP{ZtaAf=h_GbC26s>)EHbcg&98XyuIB1n;X!Xg7%w>gb8JA{ z77Cx}9)Ja4hV{aNNjF7vcq_X`1{RtsT0Wkr`}JTaEEywq24F#2o^t`HbK7Htc$ljM zQ1XAcgm%lQMIQ)Vr}SPADt;I`Fxv-)t{f~1hXAnar915lLv$l+fg4*r5zByQP@WR3 zoj&>8n~7l`8lUDDa6 zOV@>vm78i$T+22*gFl7F2_e@3D|$!;LTI;47_NM8@83o{5J7a?jiql^qBlskY58#VG^>2(EG<=wXO}08{cL zKZUPnG}MWJ^g*54<~DMUheXH)sDm@(0{5|>s(82sTVdirA#~9YY{OgecWXRaL(c-h-}3H1}vVANO!*qVMVJa#sLgfQRrd9?aK# z(Xs1t9{^Ccp6>}FPB?U6cqUiqxKDo`W^xAs$b{lKADVpwrz?jStz7zIH{fOF_08vA^K|1?W zwA(%s0H5+L^ym8R$FEYiYwoB1&>tXmr!Q+~gqE8}fcPg+K&E z4ygI@q6KF7JoQ9*02sU=0|c}z3+X3wNImc`1 zNP(`*QniXzCd#;`Poqw)dNu3Tu3y8BEqgZY+O}`w|IV#@H|=2jeg|W{l%KoO75}s| zXh7k-bU*hE`}fl!UVaV}SbvD!?H_&yGyM+Fk6xl}^9YCJH*)))2n&F<`_1l`)_;om zSsRWXnEJTb^|6AQEBy^HU|JmPGEaEW71mz_PJ9!dIFA??S0K({n4yLk1`-!n>*Rxv zBmoG7R$PPqqW~fD5i>+k?d%g?J84Ch;)?vR(_&mfIaHbeH!YBhIsB}X+#VryR+w89 zDMpxN_n1i0ANoi_KqmL7a1JtKl)MhO{}EjV;jM9~SL*m~4ScUhs>|MV5#Z*~T?WC9GXB~Xy_w8M@pK*ZH2 zO@9U|-Abk@uuDB{kYR=^_?%SWk|l~H&~W16H-Hh$%#)8ehM*+Wk4R2B44!9(6X{TT zq7b33yq*~zrqBt1g|gDjaT+1@$gxW~c*v87D({1Cxv z1o0zJ6ap2s4mI7mHJo!WMmL>y+5NXNci!!B$#}5P49hEd?1GaT*3v ztSRmy530D6p~X}G_}~aL`=DE+1<$18JMaQ&ARF2+R`tp?fco8!7X^5RI^dVPDaeEX zOen=S;=zgvVIUr#$OkJbkc~yG{{w2_LKM6hG`AkP;xROV2V~wQsUC^S8l`fd^t5m$ zd_^fTCQ{t&{3kHaxMctmq@V@eHnAfjF^NiCA`_d)8{=rKHQ3olFAxHSp&`R}`q0Gy zKv2GBJSS!5piawLR-Km_(U3SBryV`rTM`>P%w>7$RsC0nPZ$PfQ@oc1s!8DWpqk743pL(rP)9S9_v9$ zAx=R6Yv6_-d_vKRK;RkVFbh|@A))|`kS#Wiiw4dSm~RR3TmMjqH5dRd<^koQ|M3l?f!zh%%Jy2$+hm>!&`ICoX>)N&q7s?>EX@(CAER8DltcifwR( zY;e>^{|)ef|809?pirbJ@EAf|;JRP+bw&Uxu}TBtaE@9m;2HPmLziDExP6S{!^{8> z0T{tL9t)Cyc!5rsxf};Gw}2n&n1cfdfsaObP#tjiKu9sdJ1g;H!FC{yi^9daF~~Vs z71^I{FHsLV#FnEiY zFk``h-8HX!?dxAJu{0~dgroQ|4lcyx1OxhwJOmMe$EvJ4*O_e3Ec*`x{bn97NzZ=N zBY*-VNIj@@R6eLNJZ0jC+phg=Tz&+h@X(_cu}q|anie4(MW`GMNY*@{qilG`;<>yb zKpckj{~LJFK_&_S&u`)#00I2_H||JyWCWl9nKir?bMg@f_+v10Tap+hZMES1n1?(lG=PW`C*g4klB32k z$N{jNA1?n3^J>hf<6_CXC?zPsN}4+=dtYcOT}XyM_xhth4Tcd-x6=|ML*J?Il%(SAG# zysREZnzoppm}mfDH{{pLg^*Hl#HIYe$0xqA4%W%U({6Xt-uq6CA(YxgS{_n5qQvv? z|IBmUN%Bav$Zc-L=o;9{Uq17j@BGyKNQh!M!|+Pe05QmKN4gP!TN_{o`N8cpKN3I@ zsP9$+Y+(#P!p-=L5Wj!)WHk{$KcwaKBl@rZ`rsG1!rbqo%@cqaK-x{L-v^KZ1gS;< z4q$~upa0#&OcX)jY~PQRpXTj|Rz%ThGztBoMED6r`JJ0UC?IJR-~n!4+8H1O?Fspv zfdwi|2?mw?&7T+`AUl1Z2OV~gSqiJZ& zuMaL`vjDQe;J1!O0r~2y5vj3WK7EBOwwdc+T=~*WKQbjPV!_=`s7an zWl##`5+RpzIRkS!*H9|uQZi*zI%Oel(%N*$Q&MGBTIE$@<-({9Ct*n2WaU?aWmt-( zRYoO-_(Cvj$W)HyT85?nsigjqBU>7x`%OVW9)X5L!xa30t8GY9%H>}=jO93tP!QZN z@ReZh1_vC2Ak4`FKpsD+)@>+2DVRcB+C~?Q!cWD9q`ihe*~S&&7Hag%r?5qASdL;c z=5xKkC}`8%=o4xvPxDP?Wy*#T90Mr0xl zBBc0D2^Zz&ZbHl-?1M7c02VaTZV2aY5NBFIXl@v#hDZY{yufoV*L1SzZ5-2gE=*)J zfC}mrjLJq?-AfK0L7aqyIvB@sepH+Yzz4X_g(Av)nqGarrYH^u|MlmQ!iJa#z>eab zX=ns_Cg_qbXp)=;j%KG`VNa1VA^}iog#syUcmxB8PjEtM|1}x}T7>DDp2pflgA|m2 zBdm>_w&-+r0W5rjJgkBs+|U<512<@bK&&Pkv_d%i2otn|HxL6IM4PM4 zO@k~5g#sXgDWnJ@Xo9A0iU<;_q1J&cBq9NPfiqk~q|V7|=7A$j1HuTz3ec)F@WH)Q zh^*$SJ_g-1aKokyKpm8VIfz4MuBITo00qHADLlfmqQnXyLZNB`E^Sq-zN)15>7NFw zr)q-6uqrf6!!Ka#0U$yroa&(p1f^OkrmDthb^$FUK`UHCG;je$P^-1#lB8kgPjSE~ z2m(qtfW1b85||Ld2`ju3z#5RNxtc~7pq4ny!W&pY|HaBgzz*z_mL^3M?7adjuGZ?V zGRCrYE1(Xn70nUB8Z5$=i^5(iO2pUW=&`r}q>#({GxRUDdkZOqj1Jp)9(gy9V=4u{5D{64%FF5Ch=;@yR zr2xbMG?)WDaDyjU05*UKG`t?VOiFyX0|Rg<|2@d=rCHK5bscbS+kqyeV3R z1c)$}-^s+H?N&QnS85PIcd!FABnKTV&o{6`+3X8^jPE*}hjCbhK8P>*9>jZO)@Hdw z7}&uz;D|UF5B@m8F0{jL^+H2n(tEUnX3YaSBn0<*@1@1=?AGp^q{x7bZ#&3CQJu*; z?AABn&p$Zk@h0zT^h;387CCH|-VhRe5U>FU3y++Fyhz0WIOYIv7K8BIK3qdL_+5%* z!aiu$jI<`~Lc{&;!3P6k3v;Y#K*$AKPy~cTrgQ`PGRCCv!Wvuy1ABr%C;%{UgbP0d z4ENSQ%y13gaBNB!J52GVIl>RK1O6(&|9}xNtaS>1EEWbU?>`(dVQigE#yF0(2-I;YiuY z10C#7aU@PV=o?v_O=%>+Y(=nJ2(V_UM=eWlAV*iOT!Zr-30gUD1wS$`NCp$Ph2NF#)g=DOj`t7yw2Kp8?nhn*0M6oC7t;L~L=ynbh-6r3-*O z@X47*f2MRutuRe*)lEy9e-273uhI50$VKTwLR&_i>|{{wu3+)#u@z(W|29Waa%2DC%bI0lD3jmA9oLKl_B7zT<6 zHBmFNIdH@!m_@0~L*{UW3Q+_;mo)w)P7=47Lo77-Hnc$x(t9NIKPg6W4}d+-^+%8N zmr_JoMuQf3z}QTKhD0Yk6ZmPo=wiq-Fg!-3%v^K~fM~~r7`h)P7{pF=)l+z`teJ(R zxs@xx124{m8+OeTSKUNp0!uAQIjcp9tD5Gt1ZB9io*;=#4})k^1mg~X0f;zIAc+C! z96`86LU@EUHn%B-LtS#BXi~>l>4IpNhQ?lX)z$c96zQOdwo^cbRD{M=WJQJ0&05#g zl0)fUch!$r+8&(v|3Rd9gMVABbRZ!d(&tjSph(4)KSfjw12{?AgEK{nBhz7w3YK-? zq|}0i$C3b?d5u`kx?wi@7(|Y3`DnP-GrUBXlcu5j#HcWNQ5;25poYdw`120mhBL^I z#I1k4W@c=Lf;UYzGc6T8RsC&`Mea$&hGsR;QJTn4Iw-irrB( zY81?D>CBT^gF*$h|*$bC`Mi|6+bR1K#IIxiJ;u`QBk>G~`^tb^SilHvI$lO{w+g?)Zr7m}k6yz6GtojBc*h6Elc@ z6~%>fyi|Dn(4ma-c>AM}p5@R>czo$GJ=^bK2dx-{qA$}thf|J)yunb5Ox#MY>`Jd( z2eeeqMo`b3VN$XfOw^l3xD$zyoV&QFdxiMtzXVjeu!9N}_%w>>=HW=AP8$HcFHn*Q zk2FeJ|Gz^=?99%O7ywnYzL)ki!ZV8ZY|f)2_>R9j107%lO;810(A+tR$+vZ!_|7tLJ{gEX5PSyhBY5wx51A~^_G|nwct7}00XP8! z6n)0pkTE#s9|UaH{wdfcub>%&S_b^HSO8c$i~lg}8;0TBvVsQB0QpmIk41$H|6$Z< z(G^OCF9#4{QtDegRs#h5^WliuK3)U<=sN{6*+vc7v=K#VF@Z;m1AYb_y73>Qc)S=m z-Q#j&%t8tDu?l;y;zog_B2+{=pn|z&yVMPE2$76LGFlE~#2Pat0&~_J-UDI)F(Z@; z|6IY#o(%b7QK{v3LA>C>rKw|*UacJ0qyB3_9Y${ zpl1Uh;RWUm>64PqN$rHTqPz_bGI3Zo(?f_bDs0SrKJfbI;KNdT=N{Ko=j3=0vz zdkAo3oFFVB#HgN(D@rrgpz`R%6jvl`n19yV?3`gVE+f3%De$$#3kNB|Gfaq%DZ25^v+iX==>D$^WtCoL|s+%hICy#z5fj?6=^&e1}w zF`gU$`Qb9t{&Ax$Inz?l&3ZPP4ZoNE0c@s!un=cVH9JFLnoj1EP(CE%gA=r23{Vm? zk65kc)okS3h&}i0%WqVaFleX0|Ioq;gL#^Xz`X|>+J&4d=fg8CN-Zrmu)(r=Z~y~x zG;9Dj=vk*316qiu8+86D?!q%|L&*Rsjj|N5_~!ekzSdqVbv6=fD=N=__AG9r`2rD6 zxIhrz4&sOveXV};9Makq_n!tmfdkjF~n`W>=0ULPQu!0$Wv=JcQ!Qe7So<2C(WgZFz ztePPV_)%w$9$e8W0tm8EXNw^U40Xw2254cQaHeP(VJH@$T?M}CuJ0xk({2qSiZXNb76-nwhjq~h4)rIOm{_0@xa zeU8{?pJ{-gQ(iftwcB>Sj|Sp6r5D;NtyVO32L537Q zsDC!o$1-%rGk?KGHVXldYyN@0t?{FA$T>nFZ~+`#1mXz1u>(Gcs4+Lb5sq<`;~eRD zF#`wy5AE=X+9(tr3mFA50yu#y_)$oA&|v@%ct#=Vk&ChzU;%{W2R)$Cvrr8PFo|3w zKk(6wdkBC({|F=j?9dK=?86!Ba0k@@iJ`&V5ew!hBsX3;|DZpfVnKt6Km_Jj$avJE zD>mbYQAQ-A5fLB`vYdxJ9#IoJ6cUxHY)>Bd_#pwP%#`t1M!0z7M+ID>kdv&103dL{ zD1=KuNV*lhEaVXbAXAq7V5am8qyS7n^BPrpr_2iJjCR-xo{ap(eC9U~e&mB1L2!|P zJ-e)toh$zXt53_xZ4n8!ZGF+o5o zz@mk`2O`&*l6D$M37e#97>tA%5JYW~j%0<5=Cub+{{q#M?WxcLb`ef>pa?Nb3CDcy zXj5qF)KYED;clS1No~4F02pz{5NeVMdR<0|bS-2)aR4Ob-WIpH)opTM8{6Ih(EvplL%k}*TG-0< z17w&2IuRq>2}D3Z&@I9l6uQvfURSt%fd?yD0ow*B7f#o$5CO!X1>+9rwY`Nd0k$v( z^i)W=^I>jl`DzjJj)AX;`R;P>2wdR;aU<;!z;qS*u5e+cwfE&oT6%ll>)KZgV-Ns3 z=bK!{x>f-DWv+eO+ZM#Mg}`#X?m{iR;f?gR|2+d}KzZ}~&hk1KF%=OmM#{0TsbpBW z%ZE>RfH{DSCr^kd5;^EYlH}_{1qL$4(ED?)S4rsq%m?JmXXTwafRd@oz`FxSJL;&51khbc-A2 z^R6|}aXxMsAHCDSR(Q~bzHxzRB;`VPxw?JMa+(tz>pJIn&X?|ODSMpffCe|r&3){5 zlYQ)3=l6gH;DFBNqaFEJ#_rZ#^!6N~;(6Em-ub?riy!Cj4(@o=0NQH!B zZ1lnJJmy3%yxOB}oKf3+?Y%bq|JUzbcfotw@m5c}=r0d+r`H zeDsr_{Nqo*b$D;w=V50#z{&6Z?nnOj)~9{h#h?4Sqd)YJKmPbjKYWjGp8mFv?b2tT z`CD6C_{?tpIBfo@@w@3(DSMf z1Vc~+cWeKcL;F(i1kn!P)DHYouKo6}^t#Rio$j}!&H8N4_f~KQp$*!A&-VK71@*7! zu1*J4Z}nEt|0Iy`KyUpB|1asXZwV351t-wkc8~jX?*X?j2>lNW3DEeS&;j!=16%I| zS&!^S5Dn8%4KFPVo9+r{E(JX=^~^Bp&dvta?*n;D0Z}jp?+@z|u>>u(J|5fnoaW5Uqh^b84G(ENZe z{VxI^|1l4*;|%997&Y(u#0|k(j_R5t1$oX0=TX+8G4cv9P+p5 zkRNyM`7H11v=JjSQX@_5-DOvlfAlW!nIUHAff>4nkdC2Sy1N@m=|(_7O1is25EM|l zQ|Xp&L1_@_M!-4z&i~0-=M|g>=RMqO?RD?(zCIT+(IaJc>4Y*M5y5)CDSqC}q9dxM zgLrg%_I``7ps$4ux@CRdZ$f0P$4gI_%+%${EXK=}romJt`%FG{R%>S2l9!hC6SMjZ zI-M88dm^?H9kw#BlZh0zib*zEDA||ui|QHnZ(e@~%j5Gm;%6Wnlc{()M4VR|obt)P zKX9`z>TvDVH$i;J^V_xCt5+rFF59KTmEsU4J zJMmCQIE;>rLV=f0mrp2-Pi&U&>Kt;6N+l~@#~~Z!kc0{7>IxX937GQDvcQD3=B$!B=u1HoIlAMVmb)D>|CEhX7X7;RT z4NR;-SL|bwm3R*rV1*TAO%Yxq+A=FX$;UT9D6t5e4VooSq=PHa;Z}B&#->S}z$D3G zR2ONI?l^)r7kJTp!Y&PxICD}JUibuh(gIBUgcn?z-qH+uGH86#%yTkyyOM-yQs4$o zN`Mm7u>T$NBx^->gnR+?Cswm`>56fTBYhfz(eF?+8`*_-&w9+M4I;9hXXDb0^n)3ROIsiW$WBXK?a! zy<#Xc4i62hCs7iTTzwvwI)jAOouD`wL`#Gf0mrnNKV{Lv)vu%HoF*{UCey!SHlEUR z)KSJECW|2^zNs^S@e`L_Q7NbEHDr)-YtnU8%XlW;tMKYuO+!_AZu~RMj*$2bmpiFf z`US7ZJEjPZJWbnB#8)%(=8Lbef7DnEz1r=)(l4G?Qx(u?YLd&Cw=kc+nu8G)^H5K^ zA2bVq#|SL{r0eKstR?He(ABq)fSRG2tf)!I7f-0a*PX9qP;?O+eylZj=Xv4x%3NaM zg{QXdU5(u%F+t9pr6RGhAC%<1_WjZ{`A98Ehd%i)?w9rp_Hp&QObb_R3$Wm68?0+% z*AY8K5_>TN9h5#4ZQ*6o0{s_lV`(p#SnZQw3pLenQTMgF(Kf{KwdcMB4QbgW5Ib-q z?E|#Ux@ys^nj8}{XiS^1w$j}QuibA*TxT;KDh%k~&3n2xx!q+tgN29+3@mO0{;{Pz zvKgM!km$Wd5mF`iIuY}_-w3!}=s8g@ko=x@_v3{T70#^B~64^1gpXCQGXS;zkun>fFF@`{?Oa?`9LaoWT=1;9 zwzyjGFR1mrs@bKlwLLO?<<0fh>c&&k-ACVp<<&w!fgZ_5lNZD7vlo7n(taV{Jm$}u z58nt`;oZDDb9dS!wLUrnzSa(>M7}B6l0d;l4f+)nh86IbZRC;bFSsjmgth6il-A33CI+Mnsj!wbtna_ zJ6f2~Ua1xfxuh)UlX_4OAgQ(tS@Qf;uTIrEQXCzxg9G5K?`wl?(iwP~Ze{cn4MnCn zc*QuDl3nAB@p4#xMYFP#(RtUi#x!DjFK6k_IPEFP+1xRh&&1pFj^ZlOk|#5za~x0Yx#)q&OlwhxD)YZ92!}Trsmr zk#xp~Uo0vGR>URx*7t15GIV!`xIr8*a0B1lqN~6#7{JVwIA{R>yBl!BVFo&jix1AY>C7J zNF1zYSgL>r-K4E_#4Oe=$-C(vY(?ERDH402Gf0(~4RkKpr@XB%-qIBO(n?$jaUw{CDftvIYoqooqU}Vn16uI& z;^d%c@%MF4>ML1C9Ui>?i`Zc9$7Bw%U1W!VR0q>R2uW*EOMp#dfeow1@5pr))$z~{ zp>M7-QuE<*fWQtbsh!G$*KJ|x^_yUM5HwYmBLQ5d@iO5d0!nX_yf3U$TvZ4s0 zt9kVu@79WX7f8z}#u<+wD|({05u8-rgq@+3TA>jfGLyx06b}!y7M5Q)-%a1WsnFlR z2@9pku6bBu%Kymun^kRjplCy97>Udr#*!9b_|zKc|O2QlsVOHE(Z~is9Kt0 zrc)@{eEDpJUh3z(qO5=FcE{`njtmX^?%EdK+QJ?};rtz%K@a>*7#6=N1uoEv*{Rk8h>(=jhg>`fGcQ2M! zE}RHOt~RXsvoIJ@=t-3oVj~I)7C!#-4AIjWcy#+w*Ls36Iat_x(`zuzo}WJP&2@i9 zL-{l$>y(%x85Szytj39yEu%9P!9+uE{d`mR@heI<*ILUA!}WZUHLVx4F`E zawT4BetBp?LupSCwDqj!772IEc2UTF%2!|UuY($W~EVl~nVT8v&F~MnAlHZY2 zVXuil+DOG>YV}XLv)1Vj6OW(5Cdk+V`;t%sU@AQVHlu#HhAj6#8?fZr>iK}sh1r0f z23cbX0c%#apRT@OW}T{{pdRBSb)wRUO8UKA-(aT7Gbt0*hd_PpRMpW->Eyp;e35`T z9%4oHm=WH7NwoBS;=C6bdM_#6Q>`8Nqv@5gF?SDPiJ1?jb!&<1(=gJd3bT~MHh zy!uA|^fOPXi9Ssc5~{`|A-iRR84J`pYlw3=qM|hM0Gcyd&D#bkOU$GeaY@7W$NH4s zGUdozYFB7nVVq?ls}?JTcxpWlh3v#L6ZntmB5>TUv^DgN(Hubc`!XTy=i#AgZT?KB zPg1KTntsuP78(njXxV_B;mrS>00j(J!;%+oe=;f=USLg;zIgGNu`D^lHt!@V4FP}z z_aAgKM5X*6)I>810OK;k&zkgbC%e&1l>dDtsik}`v7o^RG9#)1b&PuxK*5Kb8ro=3 zog_v$;CqI9_v0rS!BY==EeZD!OAS6WDY0=$&ioRbSHjA#G|7JR@bOP{t)o*;@}nqE zX+>lMM*(j8e1bqO!-2Yy-*T2GtVZf;em_u4=G}bf9>vq60pe{N+v$dGcRShk)pxu3 zHp7IH2sU`sYe7BbacQ>tR_hd2iMLQa=)S}E7ra&jN{ZTgKAK4nQ^e9Lr^yLvfOrU= z9F9&Z5zwVcAAlzm2#p*^0lYU-@PbanX_6?f6VL|+VSXn`z?*SU}9O8u(4)iA2xIWD7rBvyBC>swo3y=dUU_~UJ~rDp3oAu7Kr=SW_GW! zF<(*AXgK&0V4X!nolW?4d#_)9_LD$YQYHcp>vv+-N`lO+na0199Wq%&OY>fpncnB*?J&)X=079j3?JOgoTHA0Iaf|TlZ{vhRqzT?_gcIHy zDGZ(3!nxdbslKE3r>6vmGiW;c|-&=06y#BDuy(&qP5 zQlsfm8gkjpNCOtFvuYlIIDKp50?7$qjYL&_6g6dz?FcUoa4%u(*^?+A9g6=~R7MaNnp3fRkN zN0!Xp%f>d?4j2>%mk6~C9lhsbCM-$+7+&1hD*TJY(sj0dlKa=d%7nxHL9u$Y72)a<+qKUE zNbC&8c~nqecdhUaN>56z#~mOsJ_KPDmo&ds?Q|91v|Qj>mT)~r!F>9Y0;9JG#mALf z!dT#5JEabPhQZG*{kz@%ZDk(JgouzhMe=6LQeU+1uI0AMo6xOOX^mh>ALS4)vV=f+ z2&XJo_OpcCW?8j(WD;n23C6bV{e>lz6jP(qh~phN>RU&&@$S%jIlt%$7un8V1D;eMqB| zUpJO~cwa^A<7n4vV{ln((zM$)KJxRr{if?Qp=LL69VZBV3!Ese^#?nJ-TkzWx+)bb zPHeM4!t@4nttygsQ+Simj)(8v<}m>pC>_A^SzjtaN!TFcx5`jdcl`5t z7SHTRex*O@_jS%eG*!Pq@|{`a!DP(n367XepqWD65?U0o!Pz^$^{<1 z<$>vvXIwhzCui#rRU;B9u2EgE$5s|e`e0wbF4{tE=Ic48Dij36^feJS|Kezp$h4}P zGqIrUgX}Ptw!Uj7%l96qx=Hgu70!=D!dh*dDN>L*TT*l55*iZnxU?wRkhH`_moF^A zF+RHlWf+Lt)^`R5iQ9)n_j<9nUE8;ci!6HR(lkFWc8m z0T$kjKUU7wTiO@DANw{Kdfl1ZKQHM|I+?DXAr5_d64AF@Jd>paWuJBN?8d&PQuiA< zi0*_x{RAoms1~#-1RPZ1Y;%^C$W~3u7JDb!1}4*yIizvDl#g9h!uou{rt^0fmt}ir zJc4V%al~qN#LGGT`|jY$n3_YgNr(p>*K z+_569Mx`|GB#1OrBhi2$`nFi?LeHPuoHaU#n>JO>WE@X^dJydwmR$1&15XT8?{{}W zmGnrst09X#u*cIsJytc(n{{Y1=3{evGgc#ctN>Zk`o+e(A6efT6-LH9t*o&got1PH zfr$`BJFQ*TXCGxib7L#wdFjigsu1!HGA5t zvKp))l3N9#qHGSYaRC5UCH61W2E?%x2(K@r6TIGkQ(h$2UZ=SUfFLn|fINFLoGv6# z)c6A5#;Majc4pzv@!ub)f47sUZIFss@E6GB;rjF2eqxCk{Feh@uMJHIVaQb`E}cBg zju>$g3NzYd{7y&2;tdTWgmtA7J*?yXLXbxQ`1&{Scsyx{wO|F>Fq9iehdd)Jh6g_$ zZi3TF;!q}VFGaA{9ag4AL`Vj^fnq#gB9|h=urUl{W(l{tBGC7uXj-??q67Gzn&TR2 ztAHt>EHpfI1oKD$b1K=6HW}KdSH?FX0(4}55Ro*Hu=^r7LQCrsil;k^pPd@M#Rm|U zBd85w^07lGLLp)sxUEo#>>R>394qPrxEc}pZU`V^B`6I*&PidYdU2zF#5YBv$AT$1 z5v;nWpyYRa{Zg3D$>QmI3U;ZO&Zl_N!U8YoIYVa|BIW?TT4Wj09vHHK>|{p4DXqUu zB6(z92S~6)Ee-}63u`$6vXSCTzbtw(*4-)2ODNNAktV7a{PZrsE~pjzJK15I+zYZ8Cg|G-G)_b6_pusTA`k0vZ2&Y!if(;H zaeq&7^g=M$KL+D2C*$8Gsw~rDHn6sY((l)CneAD2p8i;4GQ?Oj&`v>;SOmg%Pes~fUS&qILP0G024h+& z5}8sUqyd&RLDPCPdMz^~g<#GDW+Y^1oRW&dD#quyGrFJ3041lZvH~n~pw=VYjb0$r z`m`n};LJcIJSS^R>y@sIpm8y2Wf9HiRDvlF?shVpa|gKJ2=jS}!9hw^n};OGSlz8Z z#Dxx`2WN!z;QgwVK$A*)-ImqjPkti>u4)T$z=%I50}_Vh^`C`PqT?Q)vQ9b}wro7V zOvV`lK2gcbL{>oIY%XuF@ zX2oOz={*VRa?BSqX;LcQ&0(crzA1v_7M(^g%X?r_+aR`>G0n7i)jZwt)?K04Duwjo zMRXQedh9Ldz@LLk!k&siR&8Or4=CMkSuL4`MllE3&fyxqNE4xQ46%@*IVbz$MRS@gy zk-z0DPSH)GWy2JekTB%NsVYCvsG+^)VWsAuiiqKD4eq(Orh*PApcax>i!TD8#)457 zlVelX5sB4dx0l*Nli{Wa`U6(vs4H)79fGo+{)@<#{eP+;tyn!so8Ra#ZbTpa$XtKC(vZQRb7HhUOZGIWh?2y;&)Y0tnquK4g*@LphORUAmw8b}| z#Xqm*O-D=Mj}}zWeT&|YqHpM};ij#TUz%Yya4L_dO1Bz?lvYRwVU_`6f1zH%1GiMb z3AY09(Gr`_6rS;gF8@y(E^qt$FCtlaZNKK^V#it&0}%T=>cs)Ajg%TxRe5 zl1+oj5crqObUr1xlE~Ih%uc}0=d-Jho-ZOqB|;OKIBm|gBt+ofuiFW%yH=&Os?q5h z;^L|GA!sh*|r`K^Srg0~&br8m^m|T{w z+I4tcNMg;k)26=psq;j>n@bgdGW{C2r$kEs{zQ}xPQ~WBg19uL%gJ>Bd&NSZ3i_?K`r>fwPr*ayC)*>wT zh@m%XRtxEnDy_l9cQAa*K4CKi{yOAmH=e%P2cyb?7T!LAz&?@AJ_#2}!w2!tmYpb% z;n$r*21p#ac%EbgPSh$EYv!ot=1@-kfJj}x8gNLGs=wg@Qz5<|-HJN~fb|4@dl!wM z@()MUdVtBN5Ix4Bg-)Ef^#GBsyqE_5H`{_ozy&yMc+9 zY6u_P!F}J6O_!0`hY?}vN$+lW`!@Q-Db5)curz)oaTcStHt!1p;$B+unR8b$> zAb2_1sK-ps)*;7n%xh|0P%srvVtcu4zr-}BWmhOPnjwHe{FnY;Lr>4!m?D(mU- zDSY!W9;yZG8KQe6i5Fo=N)K7xZ;E~5JgXG4Zc6j@X?zcD8Vw=$y z{lpIpz$H@giBAazH}EQ=$Ob&A_*uxpfp}qcluyD<+y)kRGS1l}PPN@qbk!GBXe8Rq zO58MAT>)iB&*Hzg>ol$S`?W^4t_#@GU{3_eWj9_@tr1!`q)D0wRhqnb#1krUGPwhNS zQfIz+buGZ6@#FjB>JfBJm}hNKYc02K>tSOHiw1%753ia!=>y?Tz|_X>=|&{uf>&Yn zVHmD|7};^M1FOT+{?w>kP90dry{N#`-VHzx;lmf^dEFqy#ek&iS!4zg17-yYp@b+W{{eI$c|NGQghB^jC&Yy)ca=NbEU6Opl%kOZ$R zvZSUjO=z4jAmDUgnDBR~m!zM@E411@rgNzzPfvAGVH9riA8iD{%>%zOnR|L!YN=Mj zCTkDvl!pK#O=44J+{p0@;h%fdn7d{sPac+uSeOeUH~7|dgu zB;nXTVF!jYxFn#%?aE6RhuBe%UVJZnOup}G4;9L#8bjFuoBcYSVLk^8o-0)|o>n_? zqa+n&J4nS!d^?h-o^afxP!FC+s8Z4hzOo?y6@P*iqVmfHpyh$zIrWqO06UHUvD#Ddb)%(g z-KilQnI<{?Bizu4j>jw%Bq2c!pj+4JlF+)2$UEom{T7UMJs*p-l%h5U{e#*Je6T2DdyV0w{%v)NpXNIx_!TiH(l)RM&iWba)7vgu2eNATZVGW|gL@zyip_07Tp ztjm0GxZt~uJbJN&hmtYq{pnVN+FO&U94Ncq7UqMM0&!~mKmM_F zVcy^I$1CrWPHMlMhAs7rxKzmi!!MOpsG5-PDyiFa>@2;1t2*OK;jeD#)vSL-{qss6 z*1d9Cs51W+No{)VveM-GYp}rd#_ea4ZR!mgrta7j(mt#GP@c+-tXH2w7#0Dvc9bf&AT{ zs7S<0*xAaIJZ)%TCxjtoK+OBCLiVrI19)NSDhF-QNvk;Kf8!hW1-_8nSk5$Dq-6!0 z#0MQV?*~vML$X<0S@rHeo~P@{6=VCtw0f18Vcn&%6uJtpSnmq3I%D}$!rcd^QQ7aM z`7O8`z4!UeKTovxGKX4oVfKja39-UL%G3AQKcpK9zL2RoDSlpk(B;~XBuptD^=G>n z=bt~1DF$Kzymj6m%#3zGD?}5@dTQS_iVeJMavY>!Z~;qTmQYq|gdN9w81FzG_L%R( zOPWobYX$^OU0ZgVP2ExQB|36wI_+MKI(7WK?Q8>HdLMT=EC;FihKsV|!~LJA&sY0U zOHK^mV&x`akv|)K;ktfVb+Drfvc?fMH~EQRVJU*vhwOuw6#~~XI)#qXz*YM1hracE zyOr{rcz~gEQJmRrD06J!&5_>%!`T6ALGX_BYYW~+vJe%v7?>3B_B1*wJy$zEc3l@D z7>WCS$O!MJXGrnx3m-Gbk#?bkz|7C{WHC`$z+9#Owu^n@3)&5OccVbnj zM3{-wn~G*4IolVcX^1}UPlh|D+W8BnC*Q!5foDU^-yW8w`e#CV=!YVU2PY-$%-#!s z{W9A6;d7Dvs5ozXq0ne9Na>J>8c2qCL2Hfv{NbtRVEY59ury`_6=CAPM|b&Qx^ScX zYh--LA3)o!yqu*#0Y^##TrbS9Tk0k0P9xWg{b*e@gF)zj!FTDRR2zh>6p+dTAhcDW zLUxwk{vhQb1B3Up1Cw$qpYfrGsL~;ylJWk#w7h!X?T0<_%@MKGro8$oCK*{>(Fx3G zL`6f_MPVox2U*wO{;M>b3Ihg)baVrWlNyp!bTzqzf~;CG(Gmta2At_Rc(!AtOX>#eI5CiKR0x3&d zsWg#i(oOJcyayQGt;nErK>)Wzqj8PilWepK!EW`&mspY)r=UxFL-qmay95@%3;~8& zpyr6rEalO0W$>PQi706{ip;2N9%O~7*vP=r`qTuKjzDxO1?j@ng;UzKIgdCxkALb@G zvjg0bp7C~S8a~yUL8XTrlGmPiul}K_3hqQHo+>A~IWW_V0+hXRr9y;}F|?OPm{sV> zR@7o!w8sFfs6sQGWN`r5$_Q8>1PSM8>>F+x9tYua&^UDaxa##z0(ehZs5rZcq1HnT zj4~g~(HF+gqR%zYyyeh_b0*ZOO?)tG!_=gdXx>~qPJ2BNyzwxuSy@I!@hybzP*5rc zu@Qz4eYM(6#t*g8s^<=;^gX97s%MCMoxV$|oaPpo)?seS4B+pKMBK`d(OqfNGI z=yz~|PuRuMmYxdDEMQWNcRdO2!wlHbb~>V~ z3;_HSdIX@eZ?qv(b*uL+q5>rJn~0sR%M`of6`L{SZZG)`bfW%rfq|>0VoCotY`{ex z@{>z{UVsCZ1}0!K7k2`7iuaP`mq1>J=t(>7UNXkb*^jjn5DZ3sV@PcT&)oE(xMN6H zSmaIgMOUIf_b9oV`bP*y&Pm}&Dj>Fqw-NS+<)tH228AVN(NWH#cFw~ZJ9pz)9NmQj zcmzO!h@2={dHywy|G0tlMz&)x?%VqVp}(dqi^&XN8vb z(r)*5vNt|E>}}DNy5N&}CLCo8&2746eUJSuNQ|CNt{0i!H>lfP-rdb1LZ3V(LHi&^ z2bU4z@8AIT5ghgiQAtQuwl%`=3>q*lu?emQ9=v% zDSA7IjF(eIAJkUs)$Au53I&L6HOrXBTa*r3<;yK3%WC7wS?CRdO8ezj6{7RHZ7SvD z)!x6TlyfypFb(hL>Q|tn0&pOs0+D>LpU#PVhQ#3VuP$YMUnzO{iP~fK1$j7<3Ah6w&XMxJ-)ZP$p3m6@LU~I zMpr*XAJK$Q*sUr@!ADl9lz#h+e};cQaT(h%`@Z9&zU(u36RzoTKCt04)VHm0W~-rD zI_@^E887(g&r1uCB2?H*zmN1^TXuc{KteRtHc|f(tZIr5b3| zN?Y-h1Q^rMBa(;13G={-_U)+_TzO3OX<`gjSe5eM@Ns-s?IE9O=jq9xjT$(v6L4a! z72FBY&gskiX|K8Q@wthG{(c@nY@Co`IUD;Q<>d!h9cM`;_@X`)P zr3&=4i09Rw=}zL#|I*Solt7JWWN5A;=5;>K8?Na!n$7Dy78=d#F7N9-|E_Olt}mcI zk3TSHXSeV&V%{`il7Z8}{^Nqv+etvvg3G*t{VScH!eLU~81^2RW{_|Ohq{_H1Ix9A zS9XTRr8B+}i~g@B9S0Jmpo;-ri&Dt3>u`hDSBt?IOCiKdp`7ovx)eEEs_Ti%I&+8FtH=ua+sd zLu{boi1-AZ3Oo!J3|*t8A4NuZl~Vl`XF@=fLnL`PUfxH% z!|wW@5W~Qua8hAR;cirzW2>Q=(Mm1xkGf|+YB6FM5I8HzCde@xz>hjN2&+#=Hm*lGQYq%seAL>Jc|0`6cYQ5TD%HEo#FH2- zdK>2GAHMi#^5faBbAewM>PoBBk)L+JP6(WL>k&W?Tyx>>z+RlvsR-7N@cWT6lh$zm zQ}hm<7_jHB(5Lx-D*&+t#DJ|R=J$>5A(1bPK!mpd#csoR`CqsT>rZ~CcRLQopSTN1 zd=E=}Un|xYH0BjD3RKMrb&G6ieGgHhS%4UaH*KUJty3**Q15Oy-K`&ul$ehs9-U@% zv5>fpkz>H}jFw}zjhDd9R`%VNtrJ_ zv{%NP0ZRoIE5`2C+gAt} zI1%S@mkwmFJ1Kj9{-gc2_i4h#rjb0)*U|dX->ydpF59ya3c26Hui?6vE;GdP zYCq+4Pab9%?R0eUlqm5u|EZ0MWN2N8Pkp|0;8>e-PjpB=p2p13Q`pfVdZrmzxu3JE zmTlqK$1$7YHp|td8Hjnn|5l37whxV?2a+$AY#9Q8$WJmzLjCtMUpg`*Xyt1-e%{?z zT0_mGzMTGI;7Hr#1eu?%E*#A>n5K}Q@yT#(G;pr`L)DXa9Mc|+Dr1GtHs~sl zo#}~}&I{kC;KU~Pvo=F@ztlnE5+-w{Fa~Y%tfp?28p>t;IMl$YI{v6+o9OJ>z_pm@s z{rx$y{nDlX=RrP~qi?@61@-ut+4m_It(nRLh~Wa`qZ@aZ>&f*LifixSp98++;bf2- zU~<|l^5g}R2X4#pWpyXOr4IBo$bRWUZccjTju&Z88@D})G>1Tvns@}Bp9@d3njP;Z zc5<#A(+6EH#Sba<&(Ve^Sz5L(f;`OzJ(%oW*Djro3>Ju6{*VlvaeUM2rE+DI{6ndD zTB7C}l;L)OK7rSwQ6T3wf~lx*r9!`W-Wud}maoN@HM%M{%~Yd<7v;6_Z~uz_LU!-C zlHZZkeO&k7+0o#c(#J#mJv*KjYu*zFv_-9UH*GI9PlKN)iiRgZyqT6k^}SA%3;nNC z{TG+m#IN*frWwknjB31-3$+!$xi$Rr-a5YGD*MB7bLO_~Q*`Zf!sKg_^r}(tEJi^O zDd|YIa|Q-q0Ti#zXt(tg52b{r0eDANiWfDzPjPtf7dKP116TX$mnJvYzT8*R>b^Xr zuDWiz*&2Gr^ZQy?j#dIb)W2-R1{TJzXMZ^SVH#4Avr~H&u@F#p+!^n$e{>eaI2?F$ zv-|QUl(z3QZBLGKC;7%dacH*XVqRO|HOY6M=g0l>5py@yH#|{y7H&$_O|HTHQ{wNG;d0tx{xXr7t8ld zv0BWlYySFhm3c4xt$)u``|C#r(~Cw;yLut!7NPsr;QQN8{$-jb&3;SjS@&Ig_g`=B zzkwgRNgsNcA9{rz`V=4f4Ic*V9|rv%hN2#ZvmQpu9!6Up#)clo7azXwJxts@OoAV$ zNFS$}A7_N#x*qM$8a~cXnzB`(sROCU1U{zHTe`I^; zeqRxF8O4*;9mzKm^|bRkb%+Yg2B%v;FR1nj1^Z1V`dnj12V-IqQK49B5xv3Kq`WTs zr*!?%M9eys4rla(@f1Q{hx=y?!^!lDsT_{yjHBsnhV?GL&!3HFlLVu0ksd0B1EClX zltuk!okl>+f4CHu-GFdRe70x9jTJLxSfrv6PFGI45k@T}>A$bomujttQaPQkIaV5- z7VBLp>zO3;V0dr1@9_9{U7^QISEJ8?$b;%N_6T zc&?E5@nM_o>J+?gogre~j1#R?y~HA3-)XBazJo-NW%s1qVRv0 zYM~SJ3{o4SVJfY=uhM;@59hdE_!&k$D$I}|u;R~<=$ueq==|)smDq!^(1G~%^MBWi z0U~T|jA`nkcZ>;=B>M#^=p?LkN!t1`^j2Iy;>ELP!%#2 zcGfcT3T5Vyf>=?uijTP~WuaxC+u6QUwf|+StQ!?&uWDMUeZyYecF@jV)Ajc+duc&fG0vuWlK{@Pn;fb6%7pFk~>qS(I4rJ6Nu=$i1Us-3%2dwFZA2mJUMR+=efUVT5>?f9v#y3c`drh~s^f2&#i$S{i>K zhZr)xAZ8FT#TZ+hmO{~E;P{+nbs#^q*OdS|p;q!KSM zFkR@=rCy+L`P+1FYyTw0$YNSg&+hGnT7z;}{2`?4h50B~PfVNzQ<6*w3hi)~l8Z0l zg=)+4w$?nYD6%C^~qAn}*1U%%FT>c8fN?s{Hpi99TcJlIV97 z79lBadIbF*h8GwkHv23IzqLHP?`@_LQ5f#zN<+M81~WVsU+~>?7~|p%9~JaS;LkKjOK)~^96nX-=DIZh-p%tEWZld6S#aDd@ZYW2 zD-68;z4tx@lWo5!oWyCrIGXA6{)c$MgZ+|Z1-9R%=>|@}KW4xD{QFbB@4@e~qDZ!b z^3qJFgNpJ`pASA)HXj^(sU1YI{i$qRaQai#y8HQ0b?5cLpPFt=_QTqK66eFZVWuyK z^-tf>VZ)RH`%&YZf%8$*(#tPL&8xnDj#}0u*^gVdGo6py_CI|&Za-}PbKG${$bQm! zx!`=#b-VlJ(I;qQP4}`h$v=>+C@U#!A$Z__BYq*>Zkl9zB4O00X zo(&$#!&&QBM98XUbi!K-6h4(5iCd6+JFD9kHoR?E_q^_6K zO3YQ4GipLdm$O=moL6&thOSrhM)p-#3ub;tSBsWWoYzaXS+3X14rNu>D=sZZ*FQXl zIB!;c7F}=F{P(JEeg@v4j&6R1fVpnh!%5w4H=>!VZ#UzGj&HY;6}j&I&x2{dt2HHaW4qKLlAmEAVNAMK>$psHFS`NTc-{Bn}0qH>OO7I zcz(3q7Y6|K^JtJsKf}65g1Uc>XAAwF2#_W~mOO|)%w0fkz=ZCdif)G`xR=9Qx=MiH zxdz268VghsKz*a|{uo0$gniR9E^cm}@&@t_h56xYl5KC$VJJ0^0gsefkqj_;N{;H& zMoci&^4;pboE790!`|#2nNRB)jzUV5ff)mZw^1m=rye|6Iptt>ct41ex6an^s z-Ch$8_|8Z`>R%ii?y%nIO|13wc4#;6Ssj?wgzwE7$1rWI5EN(>LjHT0M)F)31$YV} zr}*Q>5*0$a;sZ}9kJh7v-R=l1v0-Gtp~JusAOYgA24gR|K#D>tlHKPbu=GRbA2P$|J%>G{`<48AC%KB3zbg7dS9GKQy=fEtDJ@<;ycFsjJo@=<~>$0elI zt%_EiQMzyNJlRk;bwFM>Q2|6(5HV%v7Pq29|#mae9RyoZB{?DQ$P;#ptA5)nv@N9kw*Lb*ETLSgv?5VNI0Sm@fbP68jmaLZ zNx4O=rX=*#P{j%r6f5(G|RCy>YjT^>x*NCGN7@@*y5n+CI;oWBD&Xl$>_DFf<1h& zNqIgyZ;J1U5*Xl6vi6cs*VJ@a`Dlc%pP*>N=f- zpTQ#xcCaleQ48AmyEm2fQNPtE|Iu$ai>65L;$STfiSr}II2Yc@z!WwXEXnbhr}Ysl zLMkY!5<5q}j$Q&KXJj1{XRFZ}C>xjgd1%0@3aw=yOIvG_EfYjXIlRfP$6{p7tvLr{ zEo;!X<_e)v@4QvxBh&#Cr6A$T!zi{fq*cb=T5u@7d^h>%jK|h`-wRZH?Z=PZOl`5X9qU_b zJ>pii1`^HMb(utZ`Ulc+(H?(=^%xfH?JQ{^6Y~^6_R*$W4s=^Oq&4zAdoxkIo@`yd z{fcEfnOFTZ$xM!^!d3xIymdQGOM!JKUC+RAC&TDv#ZIP~@9&)~%ShJUY}-u7-Tyy< z|6iNHzst+2{~lDf9RK}OJH&N=*tqC+f7H5HeSh3}b9{f&4d#A0?I(4AI2&fJc{m>z zI(fLL`d{q5=U0>eyES;HhftExJE01QNRwVdM~W0_A|Oq=Qlu(MLYEp85EU^9q97um zA|fReDN+oG0ty(afQkVDL6A)R{$`%%oadZbv(|YtYo0m(K-RkR;&bh5?`!XU(1A8s z@#{8`8y5Dpz^JUoz0amuNnh5xq)TDbjpA3g+o4@bBpu$Lx_|*i?{p5yoZOkv-`|kr zZZk(J_3EeD6Flm=xK4cR6WjF8Rz{M|VD@-9>j-|BpU*}96mxz!ff!^l&u$ZZ7s>c_ zZT-7A==%iX=&fgM*ygvmeN_wgQljCNZb@Erq&M52U!6J7aDps`e2n2bkq;}KBO;hn zVai?-f+vdYVGu&X%IGU8T>#4jV%L4Sv$)s}L?XY&lytXU-Cq{d5w>6}9pSi01M_~S zA@nWQ@z|K7IlnLUqtgxBU8uwiVPy#@s|o;00FaPkdzl0AJPm$ku^=s7m$!rEO4B;_ zC;@h)hQu1oMgT$xJ!)65DFRp;>u^(#@^4a~^=K#S<6^inQ=@jbHsKqYS@A za>r+!RcoT^$vm4A991%rV5bpWIg=9y_R|5f68iG8M805O8V_UE()CSb_I_5ET2tAe zNs>dsvtsbhu-t&wzA-3+kSZ=Lo~u{FDLCrdr3;T^5aRTcfOWNQK~mLV;?#Aahx7-( zp*|+WI<6axoi)VX;N4uIH0;_~QNLLxqH!G4|(cH@9s1Z*c~K5w4|B0WoE zHlR9Ly~&fGOXh*eu4sQO%R3obP}yZSr~fR1aBa!=ehrRtN?Fq+Nloqk9^Fi1spF)y zvn`Hwr+0HhoZXp&jEo6H==&(A=DBSMw$}yfo?lN58!Q**wPksszj3bxPklRXJNR!N=`MNY1xW2#+hK>X=&i^apLD z))T?9+}k6p#6gY6lRJ;Ho$(njj3R`ExXU(D&Vf%EF{uUT5^c5|* z?E}|cZ?w^_5un}R;4{a8J7F85;&{)`ZpJ{HNILQOI$Gvuc`YO;P^Rw?34)))UTL+o zVgufs&)Cf5t5nV?bnRN1PG$fRN(eZ^-VyaKE=y*iE`12(1FZ<>Pu!6+H^BBDGA|td zK2WRE8~_+~YYuU@)d$RXq@Q;`1&A;Gl;g%D4f$SHye}t|_iF$KXzH8ABUQ%^W_`Fg zfcNW1LQe1fLi45Wit+ZnK1N!n+<#MErMw+_ifK+3%!KgvrKKvk;V5UDie7MUE0p@y zd;wi)>bw+XtTVT6=GUHt{`jmXTS`w7WD-fS2@cWWWnU4ra%`D24C4M|8 zA4p6Q^m-~mrZ^}>i?0RCd=@}VMgpgK8g7>`E`a#|CVnbe()ML4h zkQQfVp%u(viukiUeYOXAH@%JV5!~SU?z2lwB*id?7`!S0mdAzFQ66(^1X9_bf1>kxU0EM>TMURcLK-}(dIWV2O~ot6wU8@ z^?HWwb@!brIb&koV$<9xOxDQq3ic_s0=e%GUP#%+->BMGr@1k&!DnUIGIh zO*I5P$p=+5g$6yQ9he?lRDH{N9)I z`G|xyyNC$jpizp#UH}rnM1f-;{!?2m9JVeF@-6B|L1zj^jDZ z*Nfjr7Gv3zlDuieHOmpS3Nn^p%(me>F+-eHwF~Eb4x{QI|+(|!zO>YGon)hT- zPi8g7Wi=IN9pQ5L8jcKbRA?ff+@+&ice1)wvOAIN!;#3ZbabC)_R@%gxOD7y8e0#) z0tA!IAfG(Cq0of6JcP{ZP2w7#I1B>)Pj0A)iA=Gef6omexlkqaqXPz9C`rqbe}hcR zd#|1XAKT?a`gE$>uqC+nH{2g!BGW5=5fPjxfUuK-jbQE~;^9xlDK5BRy z$1@$$<#E#M%VYu9rr?85oWH~hojNEE zAH>V{FWBIoo&C%2^uazSV|a*wAY-sVIMEX9CrkCg(w(TlkZIuDRWxt`9 zH9z`ibIc{|&(=i1lRw*2u|NL&qNN`_*jcy{cCfqr;K{-7Z!dlv?9qFVGWIve!x(>d zzC1}RhIX&BS_xBA43U%+TcjNhfrl#aB3a!`#KA|sXy9X53Fp_|!rrp>hKj`<5WrZ} zd)WdqM`yoMQI0zn2RGQj<`M&OLi-uw2K0Iah>A~B))jvQr>9>WQxezR^iF38D#19< zRRDv1Ob(~anAlAd*rG$3f%F(?i7!8VWmeSdHPNX_LbM5=iqFQd1)BJBFlc~Oj3L@R zkjY9Z!FX;`Geb)3ap7YrTuI98r+`^8MBr-%H-N<90U;Z1g3x9M3S?)GJEEDc$QH>G z-_nusxEin2R@QyS1jn(&B#+v#XxkPXU&&_AQ52AU2?<5*lY3=2*t`sAR-xk(R5#t?_}w#2TFN~wRL=r z&>qyM4s?98WtLQ=6sX${?!R1D@*~q92Y&@(+ z?dh$zkHOaq={xfV_`@tx&B>W@XJPPdVs-^X)~iA(`jNhmeJa0~v1qJUm!h>S=E25? z!>?L&ecoXr`(m;a9wmnCE zwI#r#l+FSpz|uC7g%)!T)R|meJuADM$75?c*zo|DITh{PMT1L`Fmxw!Z1f?Qw z9HX0LB9}d@--Ct01M3`fLjeH-wd`sz=&ra7L|yza0ZsBofp@|k#ezHpvf@w>7JtYf zIhB*g@U@!16A7!bAix(dX%4T1CpNds==eKgtcfBtCviB~+_a{b9wijIFG<`~svq@4^#-`wS^K5n9{ z(X~1~@Z!lh=A6WkUdW9%)fSlwraquwXKv#e-L!@Rrk>MYtQs;CT3>NbhHuRdYqyAD z&1Wd8wOt7Kns1T55m{>UN_|2m_FCiQTvG#^l?}W}bAwlf^^Jie`h58sQH9EDG7gT8>X%vh-apR0`NHM z74YA{8Sn~~DVzLt_IU{8&A2MfTw%UjPo{|51 z=_miC8ELzQCDP^ww@{xgpk{`bo69>SxT7x_At-hpWSi9JnPOpB7}maSv~FN zjC>1DJrhIqkFy*&3qJtUmv$^+$5?h7lc_s(9W)rwxv%A$ct+{- zStFzoNC_;Kn}Lwiv@m4lAVA77CL)&J91(+^Nl<*50zrwuv7OHHxG7ETcU_M-XGNBT zl=yZ}M5iihE^)Ri6=N6(@+TWZCS?&2IP(CEIXn1FC|Yr|$iQdGB6Aa6U_w4REGk)S z4GFpQyBvCfIxqM+193Eoxqi&`0}#hKmIw9OtQoYM5d<>AWz?7hg#+zTVIX($Jf+Rv zf(Ofa^65m=(9jWPQD83z1C$!0=3DSK^t|YuJMe!gXonRpW2#*o8dJN$z1s%ex7^Dfi(r{#M!Mzn(8I8ia+{#W#&@R7O zA{6gr?r`B&PX!lZ;FrVZF^6P0h5|dDdE!d(R?UuVw?UelV`lEN>#K3O;FyR!ab0tO zUo)NkiC~X;ZNYtb6WQu5AF{#uWQ{VcM=!_+U~5tZ+fjRkugcq(b9mKm)s@5R@^f#e zL_eK%^%Wi~8xZHba4Wi6W=ra3>vsX?yMH3S=?EOQ#nHWhhkrdK+sY%M4}DpUDS*M4 za=IuJ6xERP03_jR+!V7;m)R`n`N-i>kKFxGXh^h{1z=|3oLr$MeV99(<>}hIAm<;% zh24lZEM8?I{yFAHXr~5Y3-?4Av|dfiR~}>F52S-u`52cuQ--w@@Mjkg_~u5E$ez`L zPIU6~;|R$lhmMo@K8nQirhSjUltorN#>v_RX zJ3TED2(8NJ^NGv+Zqw`Q_@wo2Uzkttf-6F6c{V%XYKM>|uS$N|{e|eArn>Vft5WLzhlIgABET7E3LjUgU`gdV zSeaC@>&YW(x;DkhQ3<({DiQ_%48gnjWFI!}t6sO6+aQ~oFH41J1-Ov6CEV^UHbd|X zy!paH62Iv=iDNIrdmYHeMa*H!Rb?Zq%ANY=jumrJB#UqQb!bQ6Z1RZ*>yP_JB~#16 z=z7e~X0AYwj}f;By_`PHToglQ246nlAeytQDGOQHleuH1YFmFEWmPbBQtbY2{ffCL zHm!)Bm-rootg3?DGPK^JzMJa1e)z7HxA)IHafgGG15HmTVwp&XoE_iovJ^)#4aO4* zyAdoTD}Sa;uqrd_9=zJ*R%=V!pS`Vj3|4D;{97Hl{gbA$3L;n*1=IZd8PZKPztB97 zb{aChHfIC=rmm?|yo%4I7X(9CNVES8LGz9~{|rIobvDKS9)kZn9ufSPhTwl;QDhwK z|N6mT0BmFcVL<^4(g{dwGMKNAxdYLOm~1likVOZ|jh@6mNQP_lb^INIIJPpRxkV@E zEqaQqbs5T~uamc#o~o2x#ui}FCHRq^ra4%~5!=@#`kS7PXS;`Cq+4`L2(D*XSl{Ek z(bp}btsM9FX^QGpbD2suhJiX%cZhj%mx-)4$ZimGU>-uu0p@YZLU$+<(nqRT@CV5(kLhsbWgNloO1WrV zT(^PjN_NP%29gK=Ya#V+qCL_m&%4H0Zcse;l)^jG`slp=PCZAIERO3R!att_w+}%v zdC~uC7yaCqt|7IO5=QmC^Va|m6~(MeJwAQI+98Fn42Q=k+O{h2Tr zv%u5(n~iu-4%@Hmv4DX`y`$8!!302^f8{7Sv#-i?-yAkr_JJMyH{s4q8wwsvBzxtv z#jQy1AX6`=_@WqO2}900^ousNoPy}DKng0ajw8}IlDT))QpTSjls^vRDR*D__@on6 zC{~wqL^6lMc7^fGS7bp-K@3JBO!O4xp>WX9NyBV$j32;)EXPAhJqFJt8{f932h>+n z!|0M?UoAp{Ck02p*KVIlb)qOPjKEcjiEMsUBT%V$o-Hb}PGoVOSw5G0wt%lSKrqnGtF*;nn=Ci&gZWp{m#YDOEZSjb@mT^- z1`PV>lYTJy!Ie+|!(1vO{5Hf=2w(Akt*uI4#m@T(_@K8hwyLQkncKqOl-ud~hq0~) z-)mEqr`*_oIEh{k#0wAGv-0@;YxCU!ol)w!hk{bN^^26DlHb6Tn2Fw_m2|*=Y@Tro zj1AU5KLXXI&u2!qrLwOIaNthzF})h*LN#`$&mp~fSIOYA!(XTWVuYSW7jK3*Ae}J( z5_Dglw{!q~KEaszaTL#&x&$6SiN=k%Zh$-d>cnU{Z)&%t(~G{mi&4hSe`{NOzH(@@ zQ98glf{4<0=GB8SfTBP{e?_oMAJ!P$x2vU?IHssVJMy}?lX;;}-9Z^K$fH}0jf+iY z%GusPs;&jLhcpqMwaly!NfI|b9A>$PoiSEgXm)Bo8hTV}dfzkSgr_AbN;PFl9JRy6 zH%w2{*`LMaHFY045s^em5}u*=MAX8w5=oGG!S;{5mBfh1sAOSgz`-riTKmW_k|cji z)yF;?&y9i$Eei|9X`=FK&z-#X1ute0It!Q1Lv}s|gJ~~^|4$V0&nevosP>Cv1+WDd>W{liF7m#K29{pukIc?=EIvW z{i8ULYy0z^y7XLp%k9Rx*{%$(!=Bd8Z_8dLz%qj*l^k*M+5e!3r(e4A5gAo(8|Gx4 zFoQ>)L(N+gtgPN)EwoLsEaLH#Vp?O4vqh3s*Cp7L4awhvT8D7X&Y{1uF~4XmkW;f^{6+m=Y(gM3xBcb)&4kg3I>>I|28IQ?i&TgPe~?l0BrFo;z7hs zTS%qd-J(`6?j+fM$ijss>>ES?f+HMW!=}OjNwJw_xWN<_4wCW``yQCCqd;c# zCK8woJGsl?8wDMMFBbv*=@t7}pBJ|=FY3)tG5D#>?*A=W5Nw~MwH%QX)}749aHS}2 zN93G$AH&(v5a#XqXip?A?`xmA`O%Mk{{HvMrUMZsEb)0^oTDP(I*RIcel7@kOqdbg zrGHTzBm1meV0!^^EQ#)*R|@cN(Yp*%Ryl~z2x1@jDPo&ttZ)pzs-GVaUlnIT$$If^ zO(esLK_egqLM=WVa>_oQC4u{1&2Si+CQ(ox{2)2hfFrWDtbVsUO$z&i7u8 z{(1Ug@bE}x(|Kn;U04zxg?G8MI?r7WOZ%ItYm4-&-JwJMgm%-L7$}+;(KH?3d=jb> zE>SD1WbO*%91!_7Cu+z~0NlcJy(?ruLn27-VZ+HQsBWG#VWeigc%HWzSwH?;)d0M1 z(tCea)MY14aSG#t^fD%mAM*pBxb1d@-c`3H0HE4Bm|?VC80o6-qENf{dbK#dC0egG zrWvu!VT^-{0?;;P^xklC8CtZ@)qW2R!cl~Wa8d~#SeNf8fOUT;U9DKavv??4m_qJ3 zJu;hFJM1J97XMX`pmc`gi?Zn5K!kQ09wVmNd9MW%a`naU?5Kk4%_JTr_;&v6pTYMc z{owH((u@aYI{j z;7TriiwJ&aNHCy71Q_@ZwP5?ZQ<*$s%%Wmgoju2unfXG7mx+6qK<W6G8JKGah}SSF@51_Fqosf%ci`UlC^}OF%}U6cgRQ-2b4jFlZ;Z zUIdR!P`g+8b{O$$oSGX2co#4%e&VI>ut!s7AxqFBO5J-lJYJA0FiuKW`xGZLe4%aq zA74W`8@ygm5g)G^1G;N|a_5=9zQ68QS0h5vQF5=Ap!j6-5YP0Ry%(W@U(~hTY)_R{0eXZOZ_|Z1(HkN zy|0d`v8i0q{r3X-lj1nGb4s zI8ttLUEbr(Gp4`}GhXgD+Pq67a_YeawIc?4AG?Gd3~Ypb1w@?4)gA+lk3YQ#pMP^F zWaKbRK7UiKj42*`ZYMxkMXg5(E)ee@&seOQ>gRh&k{XqDq=p_07qodNi02WNsL7SN z+c9ydleOpwtJ*n|DOsjA0?Fp+)WGCTE_}@$^r1N?Ro@kLJKM9GZ&By)VP>f1B~xI} z<8VE%wDWFotUToNaOWvl{6C(4{+9&y|2KG(|03d9&y5=_7yZ@OtN(jFkHA)eLmclj z65JqVSXW5!_4k=+Z{#;50Za-7%^_@z0r%yaa@(O!240K4R^bQU9?4$uS^yq1i4{0N z3}x<=&sY}$XgIXis{)`{^x8q`AY8)6xxd)PZv^IMG7DrZck_`u*lmz0kVkPTcy0nR zpv{XrKJfLidmX7M?$?<}DxLWY;B%tB9FS8?>xnqKzF(Ihq^S}Ix3fN^X)FAbq(g>rW}jP=;dcjiNlM))fO?rghV`8%Gu+u>T}~M7Ye#C6s931FPdx&x;c@q z(afwJWZoZGDw*5NcVubejjN~VCWoVgG+1?wMW@{XB^mkSaVg$_U>{ujV8lM|K(gY9 zX^&>TS8inXQ=H@?6DZ*bkZ(q!-aF=OrDeH^cyF;t9=x!wHbCZ}p_#XPnx_e_MCNp_ zsRLBkBAn}IAV_hZKIiZ10C!vg=-n>l)S-SZ_vYlsqC6IXT;#lyjBKtObUgB$tvKeL zTQX?ArQ1Z6NtEpy0}aqs1ILi5M9hnqJoJZQR~-grQ;G^FX!6rg0^tJG2{*`oKa?1O zZft~<;)WItVstPr3EQ}DLx=5m*GI25$Kv{@dzFfGMiPYq{-1ZA9236e?%L+m${X6^wDjr;g=X{;_;jKW-O+40 znOk>q-F9o>%sh(n#+5h2WK@vjUbmr$cT;`RcNqZeWyBC;D%iYsmLo{SDd2x3R(195 zV|s;!>sWsrbaCvEOaM6N8L+#L*Z_YLHU^X@ZsPKfTO{G5tKth+;KrIUWG+0{tw~Gt zMO}yBl5#F+-$gW_xbxOz3*dq&6rJ9wPsz(ly|Ixj^4Y@NcMHURuQ6HB_K)#BK4zjj z!xwh5_=&El@*PjELZR%l5sAH3DPb*9%%0dz16~sAnY{TLFa=_;sT1<*$TMUBGAaBQ zy&uUeh;VaVIWL4ylcT2qYc|S8JzC60%}e(gO)q#+8&+{Yop4Y0@$EKRcOu*2rwX}{{ey&lTx$OG5;CqB7D4| zqW`+=$?AXI_=%oU`k$oB-}?oobb}JHRGWns{|^ZA*L`C7elg{q>(k)rH~-u(bSbjg zKmSX*y!#gfA&GbYOS*X#w^*5>J)bM8s5pZXb+1n^RZd}&E`yrEnJpwqt5WNiD&rKP zGqjJ{Ukl4JRfVx#?%3BaV)l0yt%{W4s_`l@&#pOLv)4PWsas8{tgSa2uRHm%=ZNxf z%jMQ_!S$`ca;$q^q%oV`#UnYF`&8CGs7J(K$Wq&!WJvrW<;U@zsNnf+KN208HP(MU z3LV)Lm9a9ux4rB`SY+NWFd;}>^jMPCZcVbF!MsAmXJcjHq^-C%VaZbW#U>3N^SD(e z88u0{V9z>d;oxne{B6|QE1PEQZZ2Q^Q`A(hcE>(vLm4(@su?*pmxT`U%GFJ>n;qdO zwo5Kx9Y3X-Y&L#2{ay-pHP8K+rEos%^*v3NnRw2d8lvKRbRX1d>4=-xhn2gvG+|CBJATD zt)cgdqE}_+P46Z-20IowN3EKb8I2j~WXv%72D6Wz?a056HIxr>YI5T)FXEhRu8QNj zD%XX|xTAI0v_!w+@bT#3N&83d&gDBkb!4yp>;DuIFxPBBDX{N{2XrfYKvjo1G91DA zJTK$8*o9SE?A~Z>((WCP>x+sQjMc$!pfW{!>`>==jlek?-QnKhihIJUN+zU&(Ok`5 z?noB>s|%4fYL~ql!BW%VzL^io-%yh!XRM90xHTOUB6_q3>w1nUURWm$v5FZ#8RU0i z8R=u?g8Ve5UzE(jq3dtI8PZC$e>Qx=I48XN_}jw}s@kV))g#&lQd?^6N=9f>^s`P| z>M>*X?ctD3>oAd~gf5P#TS23063+w}EmtL_S1E?f!uLN^+D!43NR(#DZRCK}r^&DN z8PufYj$5uG_8&GyPc+S`?65ao<%%B)pU5>^75Zlai6tT?8eb;aS5an^cRH$7XszkNTv`$?TnCadHC=bsVJaSoOv*q}x$-KM^| zneEXCPX&Eq_b0k>&)4)gwTlHwd;44S`jP#I3`{mx-d%TXY%%>uy1~nhl~p7^u>9^T z5>j3eu?)(Ip_OB0m(6rGW^?>aSU}&Ay~auyqofYFN$Vu>@JB-q_BX~HuW-G(eaaje zO$5v|4WZK_&SJ)-?7uPn1&p;aRZ$>0`SXOiW*=Ai44okGkLXdBD^0UY*L5cx-Wf5v z;)q40P|M(7M=}f+!qf2%;(Qk@Oay3UBAfIc?TvL-z9tzl;S`*jrfm1jlyaWsv+{I5 zr4E!QHQTiyg?D_}6!98lIHQ@9CBd1l>K~EiQ8UNEFWwVFs=pS#X?BF8Li#sBR%|~b z{YagXxmHg(uj<1NjUE2J4EL+>FRlo^%H?|qoAc(l;6-gslfHO6YElk~7(^=0lP*;$ zoX^h?oK)`dn{&9)(mjN*l7(<)VkDH^dbJn&$_|@aq%-dq^)b;RIDalgH`hBhGFec| z&5lz(u19+q%Q!AwX_2NDHKb?Mn|*ov!qwQhUd0OnCFx|EAk$jY~eG#8|w$^>MQj3>ts59KkLpZ+~(D zmChYiC&`}BCBk7u)G|SqQ0O5D3JJj%PDfl`?o1IAZ#d21!-fU2&lgm)c|P)fGOSk-6}jPxI3`E^{KV4pGhY;|?`7BfHNf#nc=QW-IH zYQEgIz+8M|#h#B&6Zq}*=&<|3t&7xwjFK&qeSRk7ekSJ0#l=T#`_-&(Dh=Vb-_DwJ zANw%I*nVGKxhvz1O_eb&j69`$4bdv$I62U440n3}nk}Y|H32z9?DOI@z%-Y6S}fcU zMXd=%k;kI?$n_P+9EEdg)zYp$i6JXrPg1b)VB{tlln zy<&@e$0NE`IxAnP{?1LTkFqhMM7Z<2ndu_IsNNJG{VsWQcOHj+=@EqrG2(JQKFyf1 z=Ret%cbN`RcavFh*n7lo{`z-{T$ZuP&yE~FH_cnSu)@%CZpkZy$&2B`!6;?oE$Gz% zcw8=Zox5`O&|sdMSOpNW_+;#JI8}FJVVhbQGeZ6Dx~p55cc^7{Uy_F` z()!}X>lD`QOMKo|a4`Dh)vV9PZL#_iWt@Q()2d<3Ck?(0<=W3_Ra|(#nK0tNcAe4J zYkRQaYf2n9n_XZ*329JW(e&}I0H0D3o)2A5mR?tvcql;*Kl2e;$FN#+Ubz_%+uafP z7RN!rBoY9`yt=%Qk6OnUFd7ZZJ{XXY>}6<>nqI78CX{beoKSdodb z7`$b%aT$v1?2y8WhR7+VX^(Krn%G~2+d~__r z2Y;n{KTPPJ)$NUrVGaRqzKB8URY|`fmSQ41KmVU!i6Bh^{t(a7ugp6BEDgg*N`uoX zC9`-O{F5w&&X@c4BJee@%Wo=s-ZrlHgHVJL`)+KCNUXn6EP=-*-AM)Fh6^lDI=^-( zAz9t`kSk1u27O0ieJL(=9I1dIhU~h4-ci|}bY`hga@u~0_G?@Y{B^#$PO^D9_ofli zvM(ohF6Ymp$Mra|_+OZV9n1{BG|}+F4b>nchYLc^xo9j2GXk~3360{Dx_wh8%PyJ+ zS{?tDRgVzbMPhG`I=)zv2;#>g`n{}Z`E`|~2p)8IoZ4_kybHreboUpjgD$bUfT0Bkux+{RGgLDWGBux|DRLbse#fH;ABe$XF!P zsc?6|$hT4D3zap8=XNfY!_wzwu>jVRz&?jVde*W2rm?Up=?~OFB50-#_?QQWf}%{I zRV((FCT}DP6rYN|`DDc*txjc~${PI~-CYOkXY?oEuawRVy8VU3hO9#~4;P|wCL296 z=K#cTGWsD6c9UibYXaW{O5JJDvOZWMP#W$98>GqzU(H(F4H+X51HwbwVHXlsZVBTaY5I@Z$|AT3h*=w)&iq?p*$9o?cwPYJx#m>q)Er#?p;38sM% zVa~C70MZSB8QpFSVLWPX*n946^~w_aeED|U%pBH(2wS4EY0ZKW;_V0`#KXH?huH2m zE2>-8&N|y(G#f&22x=u^Hbc19SlhLT;BN$!CKb|I<*wdwpFIiUim5f~a38CK9`-_r z`(Y3*Jg#^t1|9fJwUTVnMg!h54H!jCCj``GID%beM#b+R5&-cMwj#x%yEHo5^|Sd@ zNif6uuEIhty*kr}eub(8uDotEMhcxn?ZzuZVn~ADDWy@kE>CYLj@2;hY`Z7h>+0E1 zMt+xJNl&mlj#r!)4pDb+>4A?Vrr~;LHhKshTs{Cxl@eU19!#u55dc*aZ0b{`tRZ z)V-$rc2ifD?*4X1S3rfzwNdi+VE^rJHY)fs-`*hCA6+W)4%O41ikhancTiQ=4LIZU zS%0c*52()2RKfY$sn>-V1cPng_B~$}i1>&*VR+^n70f;&KRs&HF^VcP^Dr^tW~7=B zyYJsIF=K?=sDHAOE;OE4N6YdYAChW6JZ7Z$zUyi6C|k!EbYV=leh@1Dz5w(dZutH} z(0j?)w}_50x19H}@{S+!^(^IjQ0WDE|2nNp#JGWpbwZyp+bgdj9U6 z^qD;>tFMJGqt4f`)!AUl*+>QxQzv-#@rRL?52*F`ZaJ9TX&zF}2aoSVz3yE3f4FY` znfNs|NvfaBKKI^BZ{P;|JMSYOw7fso=zc`EPKJwof^`S&WovC@hwZflpK5rgsU2f) z+Q$z>Q0k!>3C2Rx=*7~iHp zTz=0w`+nYi`oz!_O>d@pX!@?+^wB#r4I-aEHMCGY;w)|z9p{ewmU3w>^0FU`L}c$} zonM!4unh&WeVi5HgwIS=>kahQV5@Rw*hB^~Z8S%Z*%t}@Y*(;bHZ#Kd@4tJ{ursq? z20!w8QcI==iXYDjwGGP6yg7=UooL1KDo#6mpHnKG|CrsgF+C4|mUas~=4KEKj@VlH3w>yh(I#iCzEroZ$Yh_&wC?$9c6ur%5r zBYp@3cl?qfT2!9%subS1AM&xXlwO&$Tio@xFN-6HhN->t@lM-ZKQJj`PDYsvi@8L$G6SlxwFHIuk`8P50=Ev&#!o{wkpn+mC|ZGfA9^@ z-W&e<%5$C5la9Fi<$?akwaeddVFKup%P&zi@kyxg*Pac;lkp9!U8O&6imr2_XGNc^hR)0$YFjkA`&Cze-9&6lfbq3c|EmM~ ztL5EwVa6(4bScjB%eMZK_1iWp^p}^O+o#UW|5lt^o>^th!>SDb5I6V*P0CCZ`qozT zX=)FLx%G`D|Z<@?&wf#S+q?hnx0&1;OU@XtRyY?pXG|0-|$ z0sXNB7uz<=qaDlr`fGT_GVCj`pu?qb`d(^)5)#g_dgQxP_*IKcm zi>E(h?sg_!?7T+UR5uZ<=lJ^b%Jz*P+kZ-bIR4mO*I&QZz8Ug^u9Zq3Kl+Qxu-#)b z*s3s?wa?qU`+0vZZ@s8>pHuADgCCpc4fZxf8IRu{h;nTGu3dL{+opYf_ri!6ux?Ak zC&Ac7O^WSijnddf^i%ll=S(trj(Bz#+s~Wj$}y`51XLE<^Q8=LamP1ESx8cL9?#!E z-|WbjJNE{E^*YU_Q19H@X8*}$YKbA_M;~~dt+Xv2ia?gWKkd5pu zqumN0eW*N}$a|z|G+^Scb3KR2@4|1BwWlYGQnKEMp01D4GTPj6p?h_vvWuCOxUTzj ziVJf(T{?E(T|m)&|7Sz+JAOX1jI;5jFsgiOXV?0Y?R zG*(?+1c?Wv{^5Oc{@p7%gw6EnFy~JVH+#4APQCa%7ZLBQG3-kA{XX5Ah!FGKkK16# z@E1*m@Awv0=WXaOm&A8&Mao^54l*#<`W+tRX*;058~EsJ`S#|?Onhpv1N9Zi>L2kYf4l$FyC-+T4LlnkkzJ=BQe3PtfCJ<0j-_ynBCEml! zw-MR}V83FGaYs{R`#8@*QT?1(6VS#o0;rr;Hf3=5q1RJyYK?Do`gQ=)?NC)~-Z&=*+I{Ji^2S3Hu+yHjW(Oyh`Gs)i8^w@jH9PWnW9j;D=^{l9z=gz0Y zp4Zz!z+KN>&LqOrUHMN^om_qMOw}bkBCH!v1>8+_o>0unVHW0`^H5JRe)6|4r#)vR z6~+H@M`MX!nfLdziFdi?xf*^Rhmhj1fw^}DemBl2PNZ@h z6;u4&yn6)PZ^tgZ47i&J*A6U8muU_x&ok2wx_`sJIq1RNH0|K32PZTb0gqnY*A997 zVyQXgNjqF8w7ys7Rp`|xW;$+9$NgWOd+|9<=lshrl{)8M-MOz5*7|GdRaiR%KDF`+ zVW1w~g*MlXc+D4(5Y#D#XpHDT^q?hj;OHTt$f1bWEf?MzAoQX}G!E%GkJy^)MZb56 zeHArsdsZ)IGT=dLOxc-U5ywxlUs_{7o4?iDF-$zv7B`>w<8<62$h0l~%iZ+SuZs^{ zR4;yg(yM=oT=hlN`a82PXMg!s`)S1VYjcCkTS13D2aC+4f8IA6f6#tqPbW<5%g(RZ z%_|HBg7$giLHnQAVOKyVUSOWUMo?!Bfxb5emew>xSw1Eny+qrSa5dzJp)!&`y&?~& z$hIF`rluUy^+qZeci5FtQ;)inQ7$_a-cD+oM$KI|)4oo@IcmB=cPU4#MVCEjB*R>x z6cgZzcN8DFYFluJdG_A!XgHGT(tVfvK_LE}_ejj2-)g`yN=i48nnm5TFjF7R7aEwyHj+{m zggYEFjuQn`wlN}h4&HKsoiLejsO2qM{sWV<@*UTEk3fA`Pg9L?+#mRr>%0I=P?AJ- z9n6$J73GwH=LL_Xs6*$h;bjE=T(YIV`n#JL;%9VJI24KUV?D=cq5z8F=|`;b2stXz z*MSZZHo@btln!*H>}I}0&OKC+ZBpP{2UJUecv3pNli%%y-tRm zOJ;Qq&k)-;h7tpp@e8{UE^8X%;zVcJ<_b2dfdb=B9YAXqlEgwga5kFDs!q)g2BNbZ zMFdl+H7b7em_^QP+nMH-&M975jj%;?11)^yrHHbl~x>I1*=eoq*abUe? z9c=lSDp7Y#5?=ORF%d&#*|d9a@r($DD}zj6Nsv&^g{n`SkDTh|2X$N>*wUMVxn!yE zo2!P^Si+*mQxZvr(pdqK3pF{_?Ant?LJ?*A7)l86faE?I<$5`g2dqs6WjtpwN2Zup zQ`5M^i(o{GA=g?sk=0TBPT3twfbE{LUf>5^?(b9<0EnU6aoKkJCTLBJ!c}SWk zFbv~`glwU{AiG_j^N}eeu5a_8scnS0W(phIIp?E?=aA>%3Nal*8R2QT_UikSq=@QM z0&%~^6f`?M>u)A`m#X*KP$98Ak)P++Cdb=n-0vbB&i+~T=E)}~Xr zkGjV_>a9=;V+GTpxrT5~8=WWrovD5$R%h8W%xH0`L!2Ht3 z_iZtaFQ&hTrC*v_)Q@c*pI(dYy)?7c7HiDGrkpB45UuozNE@@l@%kb`HA;xipVRAS z4L%uX<5_WR3#^rxctg~Ez=TS49Pk0U53mg>fGB$oKLIO`O+6D2!1K~C3&yHn49*YP zz+>=b&0d)o^BEyO3%wE^>@WQC5%6NB6}8c`5}$T`%>tq^-GD9`c69g7wuCD3C*s~8 z!RRusn|YUa&Nd~GS!mlY`6!DBI_StC1(oIs&SR$$fBhhHMkz7l@+nZfUE;y1VxmrQ z5;BmWgTX^~02w6AxEKsqA_&k77(WRL79g=@0}p#$V_ecZV~Tt+faZsw>+lR!0w)Fn zQb^k2LV{$IKx6F+#bA&ZAcjm)CV)hJ4L~~xFu_o?8+4ce@$hXIRZ4j(k5{qlNDMdF zISiKCL2SRe&(Z=SYIaI(0!NqI6J?1C50i&vwbmhBtd=+MI!TfgVn$V4b$|QMcY2IL z)g)VsR6GIdmH`HZ0~QvkiG-9>ly**hij8K9?T$WzKh?G_MTD zq!H{VQdC@14O3EFG*e7nVFnq1fpscAC3X2#s}5VLjXP}YXO|^1#nv@-`B76pYf>W4 zL=kw6uY6=naexUj)e!>~*-uCAB-zHn@IaD@F4UACX21_1@F|*8#@ZRc z4o_&LAMtNQy|8NP~ci%;kH3xNF@% z;C+8MXRUqC-e>RU5pmwXdiX-)=v(`E>nBz;5m^l}PrCRJq@Ndew5$nH!&@bRb-T2w zD&uz9aoqCp^a~ni>;MI+EXGt6kHYrGVsUbSv2bQQ;>_SbC^#V%pxOYNvjAf7&&zsH zM~yKe*IDBCR-G84fiMP^XbTe%1_ko@#RYISg5q2RTBA}+LPF#GMpA@@5_o|=7)*H?CYyVOL53u73Q$OF)*HT~5 zFps(ApjLR5@LXw7-UqN*+fN~UZ{%IUG8VX|R@N;eF%Ecr6KW9k~T(l-2a=W_U znhAVs_a7&Yz8JQ4wPsa;iNQ2Bq-bIoh*`Fu#a1n|3V>3x5gr+90*h5$4$kU=CY=6a zC{fCK*1K2PZOqHobSj(7jp@Ar@UyMjd_ncUVR$pzuhm%EV}u1jd*;@zCY`C*;AQcb z_vE)CL&IU)*-#9c+d*Hu0> zkmd~t@AY8ACP6s+#H~q6^~YR}AuSb$Dg38519HTL*X%(Cj(PD~d!_?k<3rIMAt}%b z5uB{}J1cppV7nPLuF4K+Da;RpYT_}D@m6Y3n`hR)ya1`@2HT<$%Aboh8~l{y26HTO z%;%%=R1u@X5@LQqsiw*5dGUGo48V>fct`tlSCF#!I}^>XRydexkcoDeLxn$(;}&mQ zZ)^SRtMSoreEUGCf%70rPs!CGVGk!!-Q4qYn4?+84FTL)v2Z9Q|v=5oPC@}&gX5H*qcGG zRPdHCtqO2!YqsVnn~YXhZskR3pm?6 z@X46LIq?mC%S>r?b~Kzups~5Z+`iG6HF_nbMv`#Ai6p1=xm(0+vtr{7XG;(zviZ@uDAY}+r8xeg?9eHz+GNr{^-X1 zCztu-`1!W`^QUF*El=nFbkDzQoj+T3Z~QiY4qJHh*WH~Jcb8|L;DJLVeFuCNy5S4> zpssBVh?ssV8$b+CO(K08x}0>KfF&R`Xlxi@P9#m@DZ%qC_?yN8zdmI6b`tw_k3D&C zWkFIO6zpcIe=^QQEl(_$Nn+kn5jghf!g&xEfP4H&%tIQ8NfpE~-dLIDbC|~kjq3r{ zGojfNU%5o3^@7^ov>LAl)1ULeV3 z%~R>X^U!6y;s__{i&K!VV4fy`IB2NE2{Oi=Jkwwq`LANL1cj(9nOU%i_?%1;j%tKJ zRk^k-bW`RO2Rg!?y%`x#nPgrdaQOo_=QH77X>1&trbc{EM z@U9h6-?inEHA(qguW}z^txq=Rdfc&TU4b9f9v}(~z^m8mpKY)gwcXqS#d%*f!O#_ zxN{54w;n>Z<&(b2FAdf=_Uo+m!_#cy_pF3iez-jGx2j$18oEUmXu}Q(%2{aMTQ#7D z8|u}A;sYQ#3D?l_aTE;BtHwW09Rq_$;cchEiwStVGE{2BU?m02L=$g9BpU5a-q->= zZV=b+6Y=8K*57yJk^*FK-W~ps=~RNyMyEm$E^CWml!Rlggi6%64e@Q<{tnKu@O1`$ z&;fz2493-=K1pP(NF9?3S)vJ+ZZk;DGf#NEk#dXrP0<)UjYw0D4pF zE2MD8oiV=h!NkTf*tni(az@;?=z_QhAO6)^;M!qp4m^FamloY&i;Z)w*2vJW zp2Q(z_n0rP)E3?sArP}+5q}wC42&*m?JQDRx}6hD0H`KrjQc%?*znODAV>`#$UNR( ze1xNz$U~+zKF@G@LjvP0H_Y|~4pml{ZB)RvjyfBU0yYy?KKREOz`Hp~AH@Xq*%G{& z>I1f}A6%`Bn?3@A3JIK*M4!|h#k`&I`|;X>-7Z2n88nfpV%r1@$tmwP5#LSIke$&A zG6jqs48zdPJG+OW=o81OHG%0EQyv_8e$6!S5iaeF`gDx|;pb)=A!2h3SC$E~dqjTk z9^nWE(Gl>Y{{o!kIZM59DpB7t78rebRh!DT&Fj+xg ztr#us(?m|pCwDoI&<8_zD+aG%BSY0k&R3Sb5^gI@7$bWlLL-gU>W4v5oIy8tL>(6=Fl{1OqhV1OXPAVG74#;o zce~5ng0Gn+9(B1352aYP^(YuGTjeCz{!j{d%QWOA-?PtWe&Lx+f{bX?2UuUSr- zh(tV~hM%~-`&%FKhsuy3aiSn z2r!kirSoG;#~zqiaa|6>d=@rB>di}{^^H6pTZmF0J!=TJ04S~K@i%sys;R~gDQpL4 z>kC+C=gTbDqJJe7t)_zwhZNL0<;bMqb^F@QKPp?(Z*Gp&-uZiZXSOBsaA*6k>fXZt z6XvwL)i*!G*kR%!efOe0Ocr|$1F7K~7A0)le2U(r(@)q0&i6W+r>D@HKUsPL?6RmB za>_e9!dlj0JmbB>|B)30n3Q0bah_l`R(c^1eROs#(f|oS)WcByu)DNKHy7bi9k_#q zui|qC)l(6iMMSWIyAN6%XDBH0=p=)hDf)oM^1Hc@o1L&NTY@gwYN`ZCRq)An4a}0i za1?PF0z#1V$KZ@d-wkYTSQH6ePZq;{DoLQ6@2@Os%k}D(FwoKBp1XdLpki~=oCrfY z2da13xSIDZ=+Zdg9cOaw-otY27m{hY3WA-i=pnS6@3~Td7;XdTSGNQf>PQKyg_O`~ zBb<<+fIXa`_W34JLd$x_xxjuYx6j9#D`_%Q?oV(wqi?}c_RCz8a=!oHm*ZbQaOGs! znd)rpdl_UUxyV&B?*Tj{7uh8ej-3 zP6o~y|6F)uIPgReH7_v}TG*?ogZXj~_Ao>09#4G2_xFulpp>o1Jg5xM2#$+2%%L86 z_eZOJIa)(G6GVZyP{)CU)+)VRt^M^=S~9xsjv()q?Jz16&9U919x?lsDURz_o8xgB<@EJ12 zAFBT4m@o1RqXdbbHEoGH-o8@5pKY=PpCu~ac9er+jlwl|%05}G1zid{esGCUb2Y^M z73oc%DCPU#RyW%4wu5Ae1Qt9*!ceODb{6_rXAT6-a*o^z3H9kIqL+3 z&vrRYep-BhDzN2BFCke=4LJUsXxor*fSa+2q9C)ds)z}OWet@(`oj?e`Z+o0Vh4WUqhb1ThQ9LVwN6?h7qqq+kQ~JP%_rx+LyzO+gok(xOf8 z^bNP3EV-iYN0P}30)HjYp);QzU*!LSdmnF#PHeOKtAtrXLj{a zo3xM8tFMD0m-9!w$-Taz!?)6#-j-=@_}=k#_N!_tg#D)@*)#&<(DH3;y0m@O=w~+b z)~lu#l{-4&uQKmnS9-@Gv65_ z?jO1pVpLj3oya`WSLddqaJ24{bw#(9i01wm?4{2VcVE-GeEsrBRHr75u;D`O6h#zG zsCi)O$3Can9noa9@fb(zKm9(UsgtYY|90tqi+nkf+Ma zkLns~-F_=Xy2#9-jbG??Qt&_7xtAY(LUE-7=%xim_S^06@I?aUnNMk=ix_Qjm3J`J zp78NEs^$q0*uqsli8^?ZgaG7YlJuHF_WJ=J+3SgVe?68SOgG6;1wS?NA5NN4`=k*N zY(u8K$^7$lu(Nyr+5G_@zjL4Bn_7>uI5k$j>M!WDjJ^rr{XU3YtVnp6a8#^R^TYgN zLuAs|(x$3s2@hvJmCrS#m^1kLJ&KrkQQMb+zkf^he#>N2he~Z|%}+P4%Y((~X$8v~ zzN#7bCVT7;)8lKlw3u7J_H!LQyDPKpXVW_KKOMU{-{5ThlM&T(N<&hGimUbu=UKTX zv6dUp0-UL*W_x3lsyx20MYaC<-pv25o%Y%Ge}}E}=jW;T~aAhd8_V8Kgy%i10m615vqhj{<4MT19FWI$6WlHToEMnEiU&#KdvT5J6 z|DZnEQ2VPUwEgFGiu&|N+2hyQ?OQ(DS7*j*j~g4>w*z8ZYc(~Fo_uWIiTH3o*jYyU z{j%XMO``c{)}fQ6zh^38s&k99f}7+qjkTzlw$~fa1C#r|?=n(1EmJt%pZ47p*nRGP zH8uNiy~Cwrjf(ohu&}c^$Xu|W5cw~Niur!;@b$gd!y0ecKK&hh9QrYT zJK9-WaHOg3q-~Ko)-%!F=nYf*@vz+b%HjOa)lV`1whKSQu_(J9AfpIU*8cr00_G#qjHe z9QO(#1b3ih5nNl$5g{n3yD)F%(eSl6W4lP;rHdeyJNxr_PA#E{V3PQNPRoEjt@;Ag z8u>7lkc;KjK*<^I6$f$5h2tM47?`75~&^Ws4euRE$RobPWS)`K5h@01@VMsq$86#qCiM9 zosi!)%o}*+V;iH07n%w<<_!>E(ty<3k{qE#mTifBX8{Tp7I;3#dJ8E-y1Y4UCQq#Qi%_(Vb2|`o*E0Le=1~W-9&-Q-;wpx1}2`YGiFbf{?2vG|9Ln z8YGibl+Tim5FM2YDs!*^c*=B<=uT;IN*e0`LFnj)(M7?z8tgNqqy3d=vbQQ}Mx|HU zd681f7~}m))==nC-*M1QU4kSD4Rkq6^WI>d6A@mUhxwF%=vIU1ikZN|Ry)Nu7VAB3 zINR&%thSfx-;YR^g44|V=YsIsgZ+R!UQZt|VjzRj25Pj7y3Lj-op?K6f@=%S&U7Yw zuP(HWl{+bw-Iw@;FM&Oka3=sZEuIv!lXgqg%DeogI~u0>Y=XNQ7As&OcBaP<9k3bz z{m8jyRA4A9PUOr3n{yGP&-G$D(GWm)0-ZdRc{9I0^F9+Pas*^PQ^?9y5!A9&bWL!x zQRo$a!AUYAOA@ttqhvpyQrNlAzsp$oj0cGlDtoz#eO>m=lJ~kboltl{)dz!15f){4 z7=U|GYwuiFdHnJIRbZVQ;7NoIe5U*50KMzKkMpD--eF{CIN3D>rusvI<+RHF{6-A2 z6D5BQli8CK~cK)|OA9wyET%4HU3)0jiuxk*Yy`8lBYkDg` zq*A5chin$x6S$0*T)h({(mGM8QfUUC=3J!`9}301K_fN((7{u?oG#AAMU)e_2jk0QB`yRbiW_JyI9e!>u(g+ChY zQ{HWBjK0(cLi6Y44s;t5J<9dT4ySB)$1~YSzzo%(|G@qGpZy0r<^nWoGi5CYs1o_E z*A55NzP(G4h*%=|V`!))2C33I5e0@~W=X6`m;`GyC93RMd3^B>Bfo|rqtna6gl*eX ze@;X#sQUCHSI?iyW@-iowpUFwt`x^c2}wJy_d2PY_{ z^WRA4gN=Ua={+F^BE%6aO(IaQrm$8LnVlY;2Pkl7^V^zSveSA@J)r;mF8b~W6tcl& zo;hJzwVzPGZ>7Vn5k98gLV})&5iU)uJma_#Jhp4r6Yk+q=8??XJL(X?WLTChG3vSU+w(IGAaghSBY@!|ML+fe`z}PbKk+ieiW3gZ>Bp#>_`$;wmNw zjwzHjU9rxksw(Rny*<|otC&d9 zcULwH-BUha9G*s7|#=`)fCqP2YtDh8_Cl>9*(^7)#L)lX~dU z)aAd87J3a#4)sf5MizBbDbdD(dv8s}8m*0Hvx@0_Q@gckc<2OIv$z@%o!;xC^R^m{r zw+UjL9B6`$|r{R{-vy?1Rmr&Y7w$z*bAuZr)Z=&Lb@~Fv?-lhIVdhZ$c7=9+pstY?|e}FsIC z5k_7XktypNnob>cb2J)jBT>KW?rIx?{Z_jUyXY|i>8s?ogI=C!8lK=D*w+6VtB0Zm_3$xo? zb{LvLPv|DSYUMMq?qcN&BDp{R9kG>H;VEyBxMC1FbuZ0Ly|rIS>4ehnl=WL1Hxye+7Zr4kM!qM#QkP#m zJ^2!&;NyEwK7M|6n@Kd>f(3+6>cvGh11Wj5${KEw0^i+m-j z9AnzMW+}8H;xvilEK!tXZ6tjbm1o?_ ztf}##b*?t)-D&FNLRHD%u~B)$NInB^UK|bS`0^DUF*smp#&AzE;G1uI?aDQPVaNRJ z-6!0@q;vmc&vL-1nlQ>Dyvvt%JA$Ce%$c%F0Cl}P&vRLVBM#a^Hw>}cf zKWh3E#USIgP{AoTn=#h8jivPq6hse{ii**0f-=p{0v40F`7JPlH~6@12< zv%HKl1a%TPt~~U4b#Wmj9ocAp`Jta2lQWtQ*d!6=r?pMLE}HPsZh}Zn)i^9Zl)cC_b)(;yM` zw7uqY_V@KDZmzPO?`P|>?>rCNb$#;8>(P|f*zbs98oiQ9&BB=f{+{fwPkktirJT=* zsRwFqQ*D4)km=UGq_vsb0RZ#MydpB}zG+e?t%SGSM=FJZy(<(ngH;#nHR;hVb}KW5 zO90BVP7fk2vZv5ilrpLZ@1~ga^=xTGXO%OH&Av85#J5>>3ul>Gf4-FO|K+n7;^pgZ z1ocst30DfAWxwRNhJ!w&N?W}iL$UPOfYPX$&7jIej$(;GT^K7`wqa%elcZEzXuo`S zYN*a-5Tosg4z0}i2q({xj3r~_TMU`mBkZU}Taa_)3$I5thHTPsfBe0=l4c;vOqjoM z{3nyS-GrUforwuOz11%Uc`;|U!}(=+Ps*Z7`JgZxBq%0|IVb7 zz1Ope%gDl-$(h@)2kpO2LW34E(F|2Dg_+Fm`U~3%Ixk3tDhL6L>S}MozTN#%Gc|Yr z=PH&oGQ#9^?O zS@iHSxJrbMN%w0hgRy|$X}rULqy80Y7La~MI`yeg?$smsrH7X{i!RYoi>N}_Y=wf* zT<}?+zkcX)Y*C7>a-cpSe7!iDBdR;y?f9!-o#th53;a^9R{1@hM{{=gAOa{Avsx%C zpm5uxp#}Fb(fkobYR(llf}8%Xx=9lqZhQV)C@B6z-E}vj!-&fdZnO8l<6SrcM8LGZ zJQpK0-V&g!D^yWxp5K1&&QmBL8djo%*SSP;16iNHn%P+A)32&## z;+>fv4E)n>gOrz8v-0%su_EbJryVbCEI`eBaSv40K+C0xoo7xX3cNYjZ)#Ms{JVkS z;vOlXb5heU`xocs9E77S6Nm8il3eWl^FC2@}GzWAt;sXgOrv+TFqHKri5_azC z()TUkWQWvF7Rnx)|N1_y4O9nUADEYzU&YyK1aYNp(1k-EqT|lu!b_t;I)+L zSS{2hr@jv{z~o*){$)6?rH_=c3`Lj9a*~Vexc1&3!lL5+qAX^ zo>rLo2V%zGH|@QIY#jEVIJD1|R|mJ;cKJca|LfGxlK9J}z9Yw8t}OTE{qQX>)P1(b zzFZ5O%0o|y@T$(CiTY7b|C?gJDyj`1y)9FzG2qH|Y%YIP>j9IgVreZN>N&2z-I(p8 z8s_|c=h3@I?HI4WCgtBcBCOtCv^C<1vaf|4nm(3U2NomTzP!BLT;;aqGc{JW{9N+w zP<(byi_5oFUi+3+l|YAN)0&?lm)rZ={qId(bvb?hxZ~FiKOeE5UoG!SR!J}hmi~E5 znfFqlsqT4J?RIIx72GgopI@?FzlHFiWw)*AI^ZBIt4zX+Cmqw5Mr@6qO0nKQbp>{U z5(?ElIP01pi!oumG(GLOhVyz<3~efmt)&pVd7m_o_cQQ(-YDk$UW3aASy=_%m*nz4 zn@1dE7xUeapto&zG!MS!T`kUSncwdg5Nz!izRIV~*`s@KkUy$n4122fu0Zkdz9wQy zu_Avcy!Lzb%(p3x;mM)@jt`%`TM^z?m_d;kdq;h75- zV5+BN*5^U-as`Wwk*6Pb?Jh9QI>~GmYF*qhfPRh?=+`s^dLf*My`X`93^E5F1wWXw z-HD^WFwFKfKGBYf7NG~Iw2yQioMq0gH2v1=GXjU)R_);-nNM<(+Xg32=nfj+IU1+ls9;fxpqasIi$K$%(p`5W||7j_%h*Q@<-TCeNudtL8#=&pW@9B3l|mENM zydusvJe+Asfh`Dxz$^n~R@q%afj!>R3%Dm_l?}wE5yS-Vr18OfP^M|vyg?{+d0w+j zVs!u@Y0Q2Of~c_kPR~FoTd)f)zzk8$d>*`|C@QB7`XW5SR%b622`>Usv4d&87IAix zE6&NZ1P@;C#T~X1+QJd&s{rl|5VwEk^8yw+Zr$ZP4~G6sUQ4TSAKaLB_NLGwa*^FWeWY={Gt;F1m-1}C_&$lHMui1Jub&){z< z<}cV4!~lps9cj!0q7M%$D&ikHKv4Ru0F33Y0Qs#BMd?p$=WL$Tt3zALmVzB*nMJl; z4kY_A8PVb)@WsQg2q*YbQN{@cHm>ELA@jeqM3ujhm_jL1Jd~~~31}?BLdbIMAm(Kf zpYx#-Ct+^@CFr9B_D@%B#S6}&lFo60ryl$x9_8pE`OhKze-s6@Y(TEXigN4%TE3F6 z4kQ;>nbkA+2xIE}AYQe@gQx)6pVq*RqTJ7PmAYd7Jv=9LK~=^^E!jp{CR?%)q^QaC zX9lnSdr=^XeS-_jeN2`pegiJhxx7C@+p%~>n|*7BEHmXHAbubimaV$aap1#94&z~K<;7yu?deBN}uvnJ@+S(~L$9wQUIY1O0h%4J(y&5Lfswj!#Fh}@EeDl!ynr?JrtAA}= z|M44%lOq(#!lELFH=Urv&!K#xqkN5>{*;Y(FAOz3rX*anmB$V%9k)rg7LKt*Jq$rX zNsLE$&gqR)&jp@YPy!k!3&XK&>adBUK@sF-^p3!j5}*SlK=1|S6`!!-1WQ7IBAf}k zKHz96Kq)~3dqsA33p}^R*H#u8H+B_(J%^`4SPphOJ&VJf3CSlDd@fkQOcbi9$W8`; zk9+vtQn`|y%iHURl3w6(4Fvp$mY2e>U*$lIEGjh1V}Img@7@A9#u$&ud-e_dPw*g- zUFBX*N5A@C1abS;w@#=gr$m(fO*`OLqwGH>PaYj3)bN>!taHT#;}F@7Qx{U7V_%5k zxBunw-Of|OUN8(53&#s~k}ZZ&JVnDdd2j&VWuEJ-8;*9|o*Qg?9?Vc2{fls~!eXzl zcG9db7Iwl+bYR3xV8%dw?RENBwn!9%BKxo(t) zjgobEo+S^S1!jlvTnCW7J$ni4wD^35>lSTMfM0~S-~wVU3{{)sxZLn-4p>PF2Yk8s zy&nLIAVE40z`4lRDMPP}UC@|(s$n6WFnnh*0wt=5o#n8&G7ir3xMuLk{!VVt@Z_?$ zswWllM(iWtEC5agL@}z~8MXxAi+B83?p$GwTr`M$d~}N%=QYUb4nz90A8W9KJ*c_D z$SPicbG=L_Y$wuPhj)O{aKX-E?{cAkUu;1a(*Q4rMIYc8)W{C6b^c!`gy&`{;@=DeI#h5JKU9wjifUxLIRH=LYyi`oiqoJO z`fxl$LzHSyTut$xmygzL^WxpqP$k34_RaCZmZ*r#UptFSbl6CD1zCgXxYZDI9<;P9 zd0BBWJdh=bt>|Yp;n&e)dLvnZ82b&~`W4=0JCvg{H(}*V7_f=vn$1Z{JKfQhUsrz- z@nP3Q$6>!-jV5|2%sidm3V=U#1fEAR8*=YLNh#fd+N^Sy4!KdMQ?Y(bcuu7V+EDpL z4?ie6Lj^#rfS`e%v46OD+fXW1#Vo(yF`h>pXZ0>-yCDl5L{Q@oqtp^!dU z%p=I{(xV%&T4OEWsr2d<4 z=4P3)YLT36SN6MD-~h|L1Jd$e;ezNx9G&9ZhpK@;XZTFRaEs|N)n=e zp9zm}ewqIbRsH*PMZNgz*X<+cGARdC)J(<4x|TGX!jmgP1a&(^38)3heM(lJpMdw0 z80PLXoa0%?-~8Fxd8tt3OW#v6WouVvBd~`Qa6WOnwzzq4mB$tu!sA{ZFHO=+ zZ3Y<9#nB-bP4AD~yv(LF^R4qUy5sYc?b;{n(1j0>ws6xp5>IEhN83rS`l^7JPzL<) znDZv*aAWXUr)f{x;e8&-v(9cL&B*&zhWyg8ruL5-z3Z(VRW0vftuND@w%(p~zITn! zFXGS`Gn@znMA_~wFLE(l-k~B<^A$_o1vO20^nb?EVJv(;=e*@4kQm#1KV~%YKVaSS zU_2=1qFNvg#{1aqHf3CS_cbhk`0H{EU&kQ2ZD0A_9@X4mL%rb-4JUm%T zKsb{572$hhvT(l$Uv?p;aTLSp{nGDtf-S`lDIkbQ1eitW#$!*s<98Y%{f|BL8G6`-_Kb%Mf~A38;L52XofB_ax_7Izrag|ZC-da|cyX(wHI(J^Wu zLFAgC01|!=1kq|qrhsPu<3FvJ!+mI8pHrE;uYo#fy}*8f_)vVM4Fbw@p%b!wmMtGB z*jqIv;EgvoEm0eZ&w znnRlx?044F!w>DB{<*%pbS|aSfqkvD{=!YD{9oY>N$?g{Fvf#U0NXW>`*pC$<&V?( zs1tU$$UQ(}ojqK}?JLj#?BMTIlURWsojbxBi!$7ZD6Zub(4VOyens}CpT*443v8$4 z=YHoE`yMQl(R5}lXQ0lR4|HoQzx-I%U1d1Gu6*}sNO5n8r9FD~Cs9EdWcKHg6}hu+ zP9T8^WzuzO=LPLwP0p z&g^KYVV_k*(yu^&}{+GYo-2mAFhjy-O4j0 zy?Wg!Pog+s6j^g;w57biRA>;+Ae%L33pV`~_m6+ye24Y;G--I|$Wa00I7{XLd>p-& zTH_bq-=>nDhMKlGH<6zn1*2o;&wh&^R(VrcSQ4*9$cBzLl&8Dw2piq#AM~i2EEOvZ z?~xKO&iI#2E;?Z-l6dtSExZ^EzdgXL`5|>SeQ+GA<6usE=z_SzJ$%Y?jIr>3{E>9El zmy@8%lUouW>3#b(O>5qnL8nJ6l(y?v-}YCNqz{3tI;ln{4Ns0JbL5mnMsH@x-<`g& z7YK@s_JCoqxMATT`yZ>@Ll*b9o95H+@3ia=wLXC+jUvVh&ksR7HpmB7tX^g;phplI z%-Mc#;1wWd$IP;AAB?25a=rO^y^BXjKF#Wcg8krmxR^na7+Vwm;|K8u7CYe11;aNE zq5cX~kd^ztt3b-67~QY#l$lR&H~v|g_FbhbdAa`Jr4&2F(JClWL|NU>*6T0$cuS8XIRe@O;CXCyEE{59!p-hGN^q?%iKK??D+-3HD zauPK@$qYSTzC-;F~D@K0K`7HY@sqE&#fwNkr$EQCO_HxX0&7Vd3=DWV|KBZ^WNyeHR^20`oHK5Re3T+DQ z2#zkSsQD@&;X;VlyQE3wX(zfQMUEPC;>RaKjT(@63e4v}Ge-K{nE%VB0_`&4cm*F-3cV4;7 z(@iz^h1Z7FymH%pFx9phUKhRn%AGa}dvjkE4N9&-|G5AW7=AOKetxZ~!hGHDhLrQi zzJ?|^xn?K&w&;R-MDvkP(b_nKQ^A~Q`+roT^qqz7a+a1=eWj^+(2F;G0^v^%sk;^+>Fs_5R z!hu#<(vrg~mafL~bFrUADvD-05LrT!AE1s9it>yGaZVlh zGMaa!eO>;6hMFhum%KR8CWbCF$%`w{F@@77cq3LEV2f;$D=HhM*7xw|oxQ*>=scsg z81{g@SnDaG2K+5TJzfVt4CRaZo_sMx&DL5(E!)@j<966geV3?;;7~+aCvOhVWKUDQ z$~H}4&G!zdDzdXMMy~!6jz41ybF+`eEXyHkv&zXmgg&W-^I*IFmMQSrg$U}CvHLMo+7-^h8lk1XXu+GwxPb*^>Y017&KMG|TOslk&m52DR`LR^ zz4oUE7=%0sJMvJ-0@n!=SY2c~f`ALefXDK25RAYcDZHoHany+5iqRZiMXnYzQSBkx zF^(S;E=D*E%uX3LgYKW98L9S=jacAe_kH(MS1TkC5X6-I!jWqsoaqg4of_)@G2WSm z``tT2As80(Mi1)2$Z+A~-ji^|GJSe`krGgSDV8(o<#qP}uu<_|mGO9*ute7Qb(@$x z@dPJhnqNp-jv}BH$)@7N8gCb~9!WF6Ju%uuVX2N>bW2+$<-K35?efTvUp$< zq&0}y!v}B^BN}-EtU*Q}u`&7zO!Y~!-5_R>D_mh9<`yA9CWuMhFPVoni|;*kekS57 z&!vi0y7ulIghbZ;plm7(MW+B8aoG=8HF{X%n@k1dI$vQ)91V{c)nK?5!Wxyfn3ook zoXWYLMh$;FWsIXqO8Y*ICmE-n-h9l^oTlzh0mT2}#7Y3QSit}i^Zx;VK!Cq} zQzz{pgo-i`ujgwXf?dgVG^1G$c>t3b6c(cy5_{m02(S-EVHQnP5oDnOoHw0^7=3_9 z7N}Der9xS*phaMrlTw)uV;PICcn?6Z7G}{WyEzuJm@L7GG$J9J`}LVr`46lCpM4?{ zilQ-O_m!;}mS#tu?x~fcIsckQ@gia;4uiIsJ9n6Z>46a_fzkMu8rPT!sEo@fm=d~| z4p@!O$d|ZvVBdJ51*n)V*Oz$Nfh$s(jwx~)$Z#{qnZ)IpMNwD*l8W-s24tWeWZ*rD z<(q|dN61ivABhan_nMDUSg|RDxM&PJsvTose$cZ95rKk1%6C!17uk^^TVMmS2?P~} z0q3v`JBlGkhL0&TBaEyMvQQJ++vAfDV8>Ai8%_T7~(yx z=>v`cBTc87fXQ&Js{el;m}G(Jp)newj@hBLs*MCFaTXe*7Ydk~$)XJknI%e$cbTDd z36~kzqW%YgE0>qgI-`tLqop~MX=4D3L0}odmy9kMoaR9x=5a_^=rML%%5f^eM zn+AXZ>9LUw00ak+3&({NtDz#NRiD#ou7%YAKgbFAuzUaT0NwQf*nke?Bd@S>5g+NC z*>FBW$rk^Bi`@VZW3;3ucpw)50=-P$oXNdx!vl#IM|9}G15N$ws zg3+g}ZyBx6nE#nNm!ex+tit-B#9EjsN{u6$wZCetjESKuN0`kjjBop65IT-3dZJ@n zU$%OH+xV(+dAHN*SYUVtQ;=K%@{R>@5D8HWKXjwOun*CY25ayQ_YeiDxe@yC3m=i3 zAu=EJF#sU~8zh1W@nHj3kPR0LxW}VdpNSMx0vbgU6*{pCJrN{SQY2~muxOzc?P&mR z0T&DaS^5&XS+NEdG5|_24}U>;CJU(8P_q0W4wtbDe_E34u^gMx8CCEZL?Rlb(Fdjh zeN>q&v)j7xfCQIdBIBWzyU`oJK@Gt%9FwuM+=~zju>j9-4}I_tagZJnP;dtaqQD4_ z8Y-;;-2aRlO2BX{z|r`j7x9Q` z4;J1i_H7(owGV*oM3xixb)WNCJvVk;#)GzPF0 z|6nza!nD$1wL1r_mzlsvmbKFuq0b1x&KjX(`?e44$tHTD3_Qtxxxi$L%F^1bq6~p9 z`v0OE{8v{ZMeig;wG~A^WR0!)4?2{Uc&0o=8A=MoOI>t74z$Z-ptst|M+Njm2*gJk zCSq>X8*T|f;2MwTQ$>J;DHo$bHam_DcO+|sXwlq621G(rdP1o4%-qvLzB)~OL|Hks zJZV%zH}okwB#wq9M396@-kgCfikJ;NmxlSz(8!?@daM%+s~e|)ck8yTx?d5^&;jiw zT zqES1RW5W|bF2*ILlqJgqNj{xj49iWo6hc#!TNS9%H;p=2l4BFiB|X>B1})W^HUH6B z&0hsw)jZbGVzP0RnbjSw)mNP*vs$+aHr8Mw)n!f6iD_bHjnZ??JD@^+j3N*CL;!=x z4~*gt=rq+-{YdQu*t=t6A+@%*W72;m*gQpnbPd@UMF3Xt3TKdM*U|u8kP2fU)MxEv zyVFn!#XBFQQj7gsTn$*J?bx3k*{uyysI5sS)jLjIQn3A6P-fe%t=qfJ+r91EzYW~M zE!@LR+{JC&$Bo>{t=!Aa+|BLW&kfztE#1>i-PLW~*NxrTt=-$r-QDfo-wod3E#Biz z-sNrH=Z)U!&D*T4-tFz)z0+WEJ5%g^+HyT)4Bgo8t>632J0Ts|_)XtI7XRR2opRx% zVD`8|~H@&ET~ojs{-P`AwLQ$<_n@;2$pDYYQb{ppqCtC zCLX~L4Wpc_(*A0}FOBbPMDI-2doDKA3}f<^cTW zbKc4p&5dxbm#JRiqR#7dP3j1ZtYuEgbNlFVp3i41(m76|C>G>{F6#y;!Co8Iv96+| zPRWruz`d^R>mBR=H|b&itl)m^)NYN@jpp?o?(Vt`!DRmD;vVi0t+jm~ zx3vE23=HmRO`&}*qZ<6~0}sn5_tlb(V*P71TOM5-`!^J;f@6A7QX8? z@AE&e*yG;www3c+QuIKN^hxhiLtiFGuk=q3^-(YNQ&06(Z~ygIkM&uv^;^&NUGMc@ z5B6a%_G3@>WpDOpkM?P=_G{1fZSVGP5BG5|_j6D8b#M1~kN0`6_j|8S1i;zp#rJ_9 z_H_UYg%1m`W=OMU_^<$HV6r&vfE%6w_+&!(i*Nac{|MG4_?zG3u{oNdcSRV$Gj-xE zU1EapGWlZS`N)Z!;llZ^|KTcAC-VSZ6T}F@Nnc&^EGv`xVj}yj-zTm=JD0EyNf!=8 z4g1Oe+rM9%x*$z<$SV4o`&*(fe^4icmpjZ4{KCH`Dl>J;5B|!{{QF?8{qnB3Ph$h{ z0b;Z}vR@Me#G~==J+>qJZW8|YFWlM>vtV=yq5=^71pn6C^UvTx0$a!oIoMFZ!-f$F zh&cm9KtzoH5{?;=(Um}c1PxwnIG|(04`j5Q%xJKPN|p^j3QX71rp=TLBc@z=Ga;EN zH-!!*TGZ%Kq)C-7W!lu~Q>am;PNiDa>Q$^+wQl9w)$3QVOlR^VCve{|lLu8`YsW8N z+mHnfu5k1XBtLr5=m_X|VAndp=tydeV;3YlVmkl%1sso89CQ56dITv_D3e_6;N}xI zN8*=m^FVSo)Dgn7b#Mi)i&x7L;C1reoIKsQR)iLS+qrwNOW?hOm^BOJ?71OT+=l?JPNM~>@*LbG-EV&3Ayp~%cmETR>(v@0hfsYf@~m^Y?wcmGmt{Fh7llv<=DyZ zH^LIUYeAA0*rlE2PF&`>?_!j3MjC6h@kShT)N#if#~KHiw(uz=Edn0oN1rt+D=3C% zEClJEFb0?pB>NTs#>s*Fkn&0h2aKpdxmr38%XmD|2$L51aZevzIP4NbB@G$?0&F@Q zU`z;s!_&etHDct%b?(|n7aj{W^iV_-Rdi8C8+DX2nxHT%8MP|p#~mz`6u^zm7$krY z0f+f#N}3G%LqKr`DI=E_!`Tu-)=q(xAOCy?X@d+h%*YicCPAWy7Bki`>{1{qNN^m6 zlt>VriO3jB9bKn5bs)Lstn+($U~rcTSR2pl0wSNPtTK%V!*jEMR6iZ3G~dpPJT!D;*#r@Dn5<58zU= zWq`P8ta;J|$(jNFJyMqdEJop4eMm_Fwt9x_=+ECQ`X}Fmrj1KZIy=nvE_sX-z+^U4 z{%2)@T1H?z13?u?o+$2>dTOexw)$$U;T_8z1!mGmk^mI&jn+a04)dSEUM=YX}$%9{(UZ8bIT=_CbavlTOmvGMr6~^B-${#uFbcJMtSO zzy&8*=)T0^;I4s)Ar0znf zn)y`AhZ|aYN_~F%>$m@Y{0m)OfO6Z}2k?LGgHnr=%L}^Eyx(oCZ8`%^Lr67`bUaLX zAH$ffaHT6DzhD=XB_Mx2$}>TcE}=h`J-VCZFoZ* z=1?j7BUsWBF}8ZlhJgQY;s0F>c9#T#kAV?kn*`Hhld%X1MsuW5C5#10Z0LD&q+Tj7oum zR3b>^5e5eu4|yYdVoSi3kpU=dIp|B@^fZB|a|MBfJG&Y9HffphiP3hFgkB}nr-=wW zL;wv~LokLV5NgO#mb0W~Ep0iYN0JgGZ2IILEbu~pSc3rzXyOc@T@WYgre;tvMB-eA|hD$MFa-W#eaZM zgb+K3$)soy5S;L5B|L~5B0ABEUKAt^Ge`u+SWlS7RHieft0v=*K?tDFd(4oggC%TX4Qskb3gDS> zBS{~T3KI9MO@R-2fMG-?5PT>zsuZMaL`-5bC*h+JEl?1IEMwBU%tIS0XixLz%1Ox8 zu6d$ml4{rijsJBlXCKYj>0y2QTi^z_Q8tCBK;RJs#l@+J`q@XIjB8AeKEw&%xGX=! zsy1j!)gV;O2y&|H7G6X^0Y=h~bB}b2hlEr=ZG%E&-QwKWPLnX-%?B?Yf`V7-XB>hR zZh!szUjS=|xU%C1Z^K6|lc2Fh^!NqQB=Jo9Jmdsvyo)%r4;8J|g_74w(7$hR@EgB=sj#>;ez(Xc-k&XNn zh#2J|DZ$kcv?-?n1fZBBc}TO!P!a8F_$d~%@)?4VN_1*O47iftK^plJGK}Fk3Q4ne zg~H`AU;p{bgBb~$ff9k<9$C+O=5wF1qDn{x6mJf>NRp+KWJ430C=j7D+AgByq#(M{ zRQ7YFEq!TBQ^mWC%yg$c{b^9wb7}l&QOn#MYE-9M)vGq$sPAG>R>xY_v!*q@TJ`dZw7dLx_zPV@EsMzovGztzB4Y3p*p(K8gXH zt?jF1Tin+sce%}dOKxLi+(wahR>a-zs!aRb^QL#b8MW?);Cm?P4)?o_ZIyr9Ti^pH zc#ZV^k9T+b*jkzP!J`uJf=6896Q7R150dbREIi}S-nPbV;_-_I+yEQjILC_(?vk6l zDgP)Bxyn;cahS)v+7>qm#u09Dc;B4gG*7w9)y?mkC*0rg9y-Ji&U2Y3UFoRSH_eN# zbCeG~=njXv&s&c1qGvtoS|9n-s}A&~hh6M`mO9S4zVNeCUEU`*d)l3T_OG`)>tm;T z-H&W@x657Rd53tu`L6Z2bA9T^{=3loZg<2d{ccR@C~Q@*3n-1%j+HQ zhgW>(JrC2ukNo0S*S6OOPj$cNJ@73*z37d;_kTZL^GN@E?QIWw!sp)RlPC7vdC&RO zhd%S`e*N%EFK^*n{r1aez8f14d&BSk_bmT;^5I@}(z_n>9JjvmoBw_A+b{If@Be-5 zLGF9DgPidQU>G{6-^ zK8+(f^Ygd~00(7^zNzp{%#BJ98`R6#4`LF$t~Elfi-+zu|ZJSikU1N1@v z8@(^ALn53(FC;$NTSGqVL+kLq>TAOnM7^7%iadP50t`9Qd%~qS#4{vBKmUwGN!&u8 zD?b^8Kk9h4N`%6bLpYKHM553{PAtSpEJag96erZ7BM1asa0X|^BI^#bZ21Uu;HdtVVZxMpZOM zVmN~bI7V5tMsN(rpnMO-V2AiH3MMFpYd8i&m@1CK3SHbqVqgL| z-~eeH3I#v}Sr`lsfP_b|sMMho`-rE4JV=(P16p{esX>lk$cR6XubX&@iU13W6h}Fl zuDghbSWw2Wz<_CxhS@kZ6fg(tfwYJiuaE%=b%>IWSjeGpglniMqyK0{UgU;a=tg72 zg`t>_27;WW(FT&F8ilMH3=oGK!-@fLgMH{1;&BCxtQUCVlBMD1z4~PDLTuoxRZUj%7-F=I(P-MoJEA%2X26c%xH&l z5P+IAio`UEX#B}wIL1>W%7#FIb0C@dS<0!o6Mc{suF#luXc?K%OL}Plbkt1F^h%*n z5qh|V(CL9(;18E{3O*W`e<01+bj$k*9#bQtI%$TE*s5!g21Br@f}DjsXoYEr1}@kt zZ%B**cmY_T1usC(#4v(fmiU z7=_sY&I7fXh=@jB07_$wOkgO=e^?sJR8R)(1eRbV`UfnS2X?pybEpS8;3Vh4?VZY1k$t#^ zZZO;N!rr=tl9MQzxcLW#k)pNG2IRR13&@3~-CYLw1NE(6_KgS(=o92X-XJR%UEm|l zcwBaPhU68A`^{b;XxrcAg%`*L^Yw;bkj#IO6wIx!;z3)rE!YmuUpAW8M6p+a2nL~; zk{5%rx~da(Xai0-5>`Nfw)kP1`QacIlJnSyXlR3v*oSZ^gO6}0V_{-8@Qr)efx4v! zRA`-G@&Qi4hgg^b8VCtLcz`+)rnKl8Yq%RO_F^?Qi1XM?D&q^4TFvR&hbvlTDf{#!KGOz*PpcqL3&4|dypa0d+UKCmn1<|PN->xADCK(q22&u#TgMCnjhj0T* zw#u_%CUvj~7it?qs0T@)0I?y6`KVllfrp5o6L^RcW!R6=Upb}JK={| zDw%zl*_c?1a0mdatDI|Y4>Fl0skO?e=YYg((M>jew=0<2gQs!~Pk9h=5Zeh(A!?*;tx* zNQ7Jnrs9E^gI;V&iHBQ2$A@4EHlC8}(c!^J?2(X@n$)H##;2PWgA|*L#4IOyFa+dk zi6e-{X#7TCt5ToajWdj|dR&A&KjvEdXYq z2T!o5wD8J{C>L}{@ST!m)Fg3T_+LOu3;sqfw;Aw#kq74xa^mp|@csjN*acKRBovl# zFB)%tmS_xv9TWiOY$1pNAcO^Ca}rmklr7pym5X(z6YmBFnI7|kIBEf3*%UqpUeFlr zKBOwY^2E7oME|kjdlibiaqkp=Y?1IA2vXS(H3!2!uf#qNk!b8aATM7@gl(7yYapbW z;PgF+0K^ptcK8LhP2;;MbscVqIhLCZs|l3?4h|TqQ0b(ahyaj;o<~?7M#gPtn8qgk zi+m{N0KhQdE_DTP8pP1f$F^BD0gfe)c2-Y}k`QU9rnCjfg~&(^?AGpS!gFUwVN>~< zBDn_@_}gZU0cI$Nn85Rn_>g!Y1qykwXm5+u*vx$woX@V0i_mY30kePJ@t^5Oj<)fMa`pq;65PhbRp^!XpptBxYZy$-JX$C@{s)12@ zw`h7rN0cK75PYT7j0kT5eJ6!k2Ws&2#n@{io{YlYXH7pZ#V!a>=O%hcpI68O-;nja zetZD6f?Nm`0SeqS7VTGANCaoe!!ZaqScjP5SNoXayOD=Gcx_Qh%!gp5x+NPeD@J2a z#=lSW-zHj=ugxx~Z1&Y?W7ril7z4(hreq_2iR52piimvX1%UF(`7rmhLHFMlo4`5< zM*m=QjgA8$X#so?g}AAAY(V*;0r+fqF}m&;(^QyrKuD8V|Krz{G&3^{I0vszd4RYF z#h76f8|Na~#m|!17iv$M< z_^@UdKXe2MD%d6Pra^=X86q%e?IuAK*!Uqux-Z$k0j^TsEC7t+znt>gh$N{6=06{f znC;^=0OcNn7M`WUa4s3ce;TrB8w+)%#sOZz@+$C5-AIyTrVJQBfJv!u@mRGbh#}sm ze5@*DTeJ?@0IBy>DkMl&B}<|Re!6m}8J=c}n=AfoDAX#}zFHt;v&PV}=9IKQlK+ap zP;IgUQ*S;kE10lh#6*uHPp*79^XAT#zc01!u;1??O(vv`H|FN#n3hu=Xc{MIv62OR}4!_QDs@k5b#_>|?yHNOm?fGY_S zC6R#$%7!3S=J~eIJz)&605JUA6UBs7O?Zz)?F{8!XD9w+K`!Dn@{fzdBz99^fjHBn zk39yGBT)k6=$kxm1ojUUED_+yI0OAdh(3}aFi$fK2=Gq>18vsiI6)93UWmRdq--do|c6^A-u;HhVfd;(z+P!B~k5o#AT#Og+_VqngdS#EjK zT%EaeKrX-NMnG_63Q+2v0;$>%i%FX2hCZg+`3yWjKw4H*zZLXsTR;4R!Ze)(rb0I8 zjKyG66<|}22H22m-jWcVMwhp>ggdT;^&lzO6auWljUPZQdy@bVJVTB=VH~haH~2^r z0Bx_g97uB0Ov#{URw4FmCJrkZTV67<6Wu*qg8Fqi3C7Hyd}6G4`YJnLJW z2Vo)3zsjcEozFi59kkFx6J4~?NBbOsg!}Nb&N@iJgD^1d=3hLJkqq%&OXh|X`pWgR`&LgN|SUny@mzeEMEK}113r!3Mu-p-W;L;;5fgB+ua|2*8k2r>W5XU+n{$s~J z%S`bAGe`QC&n-4M@l7}_3lM?qztqkQzRdbYk0%YtPR*kE$U=rA?Jx)@a8R{cCv6~P zBTpX=U_u^2zO}>m0GI6Z`*9M{6AJ-$w3G3pZtO#h8Edrj>_07}KgA2cFerDs>z(?{ zLjX*~V|Qzq$2i)94ex=EJOgk^tTe(Ah*hvv9T6b!eAhD0wEtvwV>n;}ZE%HbOsg#d z;2s3Sr#K1*rDvyt#}J4@vx{L*WmFMB1KxrLP(K^AR?eO)zHUl zV9QTg_LCA0(1aiJP#%UEa9P?Knx4{CI3R{s|oQHBI3Fah)~DfFlXmSEI4 z5)A+aSK|jeu2v2PsB<1H$)z}BVY;6YAP$9t8XW?ofJ}(976A|dJ(1#$er`qp3ZNWP z#z`a%+!0XbBH4oNOW? zN@hNCu@7W$OrOe>$0Gt$P&xLKC=191Eyn?(0f>|zBxMK;Wp%-(TF_Ml)g@5%SP_;C zAOp`JkpLDzRd)2$q~QF3p-yfS4gUg}ZnBa!rjt%>qD@w}dJn5kj35f# z#qZF?4}5&$8|#=|U=E29p%8?wh}#D>hVV$0U51B+OUJ_&kjyWFXrsfzf;F)zkyE}h zxyoHGbDQhjp#@ejVmL#m+R^|qY=tQIq)zYz&;T=RB{264tN@BYU6~PJ3u6ducF0=< zGHBr+ZDLLY(wj$^kk`KKy>5873$*vrv9cT!Lmsol-Vgl6zXTvKOmY-m0B0#lMHmAc z+Z$N(QdYans_;s!VPA%bmni1VCP5Z_U;O?9!TUlEOjMjC_nslcKRfVW1dN;r)K?6E zA;@?8JERN8*v1+r3V3WxULh|B!v?-E8UKbrCbA$H2;}84c$uXfBK-rxFAe9-30ML3h%~v01aree~*)x0VvtZ#|iA5YxrXoV|h7j^g)mZ z;1H%fH_?h-G@~2MTqGN9%Fz+9q_@M~I`3J}<{?s`o1*FFcKSM@z6po9W8ms|)I6Vd zj*v&aXGot~Xs%8UL)a@Y@oqQP${jUXY)vdkPsi4KHqUbcBjj2G8#(v-*Q%j=WnoWe zQAcXFqpNN0Yhydx+TJ#|yNzl(VcOf`7Fw^z4IS{vav$u#1umd*ux{fDFw{0Tz3Xl7 zd*eIb`d;pWv%BwqTW7=ow{wssf|=R)U<(UorNVjugzuWoh& zkUi~cPY#cM!q3xD*s`^Xo;a68-$ z@A$_@2f)i2Jmpc&U%x}X-tV2l$B*!%XiVV;nsj^EGjIA-THT{)C-*_}`3s_%ojIxg zN9+lLb?9*57=j?u0~E^-zW*hM@^x20DNM25tKX#d&*{P_@+F&hLn5&-}Y4x{{EFi zLE6V3b&v&ZsNeDRUvnUyGoXSKID;%Kz~a5#=}Dl`96&1oOH5hA0sahG7)cmN$JsRp z2%aCE2wwmmhm4fRRW(C|xIzN8K^;7Ta+F{NULb6^1Ej$p@EJ5O zpATNg5-EcX5Lcb(-~axRVHaAKLI_`V3}7UEArp!qb9mj4NCPUo00fH81QMdqz)97q zo(XElW;B4jL5K29-X0=HB9`ECoJ?$N+7TE);Hbl$@gL=9^Ek_cfq8=`XN5RAq5X43igt)Ar6$;@bW+APiOwgEObBH1u3IG9UV*DxM(VU^t z1P24e&~XsnGQNrqO5!OVgk=(2m;D{ z0W@%fCRCmHu|X?@LtrsMD|iDj&;gMcfCD&!H*f>ESe>OzgDjAR0w97ZR0Sev0z%3H z5L6uj#N#~Hf&VNB0M=cdMLNSZ_#=^sUmiHZG)Ti7SltSgq%`nBYzzP#j^s+BWJSio zG;qU24nQ50f;oso^NF7zyg*^VLn%DMPcp;`Ac8z~LT|U{QK^g!7tU*?8rP*~s-iX62ynz)!W?t^)NnJ!*nw?+1(AzO%^0pCM30ZrBxngVru1XdL&d53G?O43Am*+7{W`cC0qVwTps2Z zd}K(rh1HQ|LB3>FN+d;wr&69_?Cs-b8URCTWYy{ABeZ93G9^QzLQTd3Bme_F-~uW{ zV|zxY0h|CLJOX&=Woa6K_`yM9Bt#-W!Zn=aP0Zy@Qj2;9!*cGQMBd>&bR|SafN}a} z)p@2g_R(0 zPA?<`j)+J*pv^p>!!f4mngWuJ@~Dr(21Q5+JH@Fy{0nTX1LS-|SQtR>Nhy`CUfuQJ zALPS2kVD$QLllI_)Ku!F(uHLPMn()k?@?;n2&QlC!!>jRZOvyU>;u}ggB4X>jzR-F zC29{E+Cx~T5}tzD^$w~YMg&MjJJ>0nrW7x%!8LTMCsdsR0K@MD>oW|iaYX40+J(4E28d!0)$Vca?;fyNIv{Ss!{{(b*t5U>mU3>)1ZSyoa&nD1OJhF zgTh{7IxK6m#;Fy>k(#n89cb$SC_y%$>g?!-tkSBj;%dlhDjmS#lSb*3Dr=Wkjm8c@ z9Fb`|z{A=32dd@+FBD6oyyW$fg1~z0JaAID=0iRxLM}XwH~azuu*iH)NT13B9h`+b z1O^ne!#fGU7!?AuB*3ip=|TLduBJ`X0)v<8?3G?amhORN7{I6AZ8n_hm+}IgifcFI z!#U)s+4Uhe6s0r7Xe;~(F4Sn_N~1Swm{ibSOj*%CjLQV^!(9o03Os{5P^5df6(Q7v zBv3$39K=~1Os;CFh)RW%S^zWr>|4yy0H^>q+`~qm9h6q70eF#YB)~sZ>Hh#MiC8QN zG6a@BWuTslN0ll`SPTID^g`7^!9QF{A|`}b*i2ybDxP=($4Ch&=x){ZZs2fi-cke> zoC7rk2H}K5-dfRHkc+dh0@kYS;HBjfMXv$S%tCOl_dbhVVrE7Z3xJ@hU^CwE6d5cqZ0$dYNTVdoyLGTSoWwo=*1%wc=RPSm zFw6w_#{MWAytSQ2{@$Y-hERpAJnXfI1l z@l7;nV2m>vlyf(6Y)o}TCaCQ(1_v#w%pfmGI81>77%~9DD*qjlMb#yQE=+M-G$;UP za7N7Ystm&v2LVj9z(cHy_Y8n;h;!A&P}Nm13}Y}nS6vEwOkn-d9;~wgv@cNmu;4Rv*b{O3A#9%XB zeCkU)6u;Ef(`4Ww&I)gBsnuPdB%Foz@X34<0zVuoF${t5-EaN6cQ#~Kv_o zAQmEKL;KQoud35OO!;=2-EudLoUV3ooby|K*8i(wrT_#5-?%}e*g-uM0*@m_#99L` zy23xqX$)BsMPFYbh>JBO06xe8Gc-d&kb-ERvqNNHnjp^Mh;noX_CYxJ1*eGcRmsbCg5)WvTy%3aBrV|Ct`8aq40tPR*=LP=x;pmLYt69P*BEmzcK4dx|#cM zb*DLcTisiz!#~pEq6!yR3vDdl``y~?ea8CrZ zv#0(Z1Vh^`k99#Vs7(}5-hr1zU9*I>>jqCZxVF0VLmcxJtxRBv`yRkAK#OkPTaR?NIRhN#djdN~BbHmZ7P_g6*+P!YHr?{qj2~$RiLR>env%BaI!|ne= z?nmk&C;Cyl{;xj7_3I12_{&SWeR&Q%ZfrckAN;n`o>{XC?rzBd+|Ww~dP>1CHs^%b z;>1%RNd;*?0RRSU*2=8_gng|bW(3-=F7ytcpRnp)^EaLnOFo2+)H5Ai2wN#Pq;~#yeGyt_J0Ls2$21uGT zkU;6qS_20B{20+d#d`t-7+_R#rNozeFtlsNzyJYP_iVN_fMH&<2wfTJYxr*$xpTw* z4X8`Xrhy+>Ew+p}_NKX%fB$V-V0Mq78+z-S8E6r&8#)6Z4JQ~H5rJX@hz&p)8rI?1 zq91J%0t@V(fta!nM%2pGuFanaB}(i&AdoZR!-WTGYZ!TQ<;$5jcm5oDbm`NnSGRs0 zdv@*Hxp(*eJ-LAcz~r5of>Pzb*q%=r5HLR9EgMe0g(HwD-!C(c+Tq(n026(Fp#lqj zUW*O2(Mp2vmL~AvCpHwmsZ1giuz{xyE12O&8v)pJC^UpBFh`y~IM`(#-X!`kF>C(8 zfFE_{=)skEScw3FY}DCe2&k4S;Gc`0Qfhz}_6cW-7l83^L<}|L@ICU(i%9?wvMJF4 zO!n#JACzpW=${De*#GC3DIQ>^o;MV5gqp5;6RN$Y9P&{BBau|HBswuLM;$6ORLZg# z;V^<3KwF4$4hIOqr;!SDgyVy{bcvw15Z&9e&p-KsbEKgp5`ch9_E}~KBX)sjh!IOX zF~tFV6i>=2ib`gpmJU^C&_b8GHPJ;IiD>`^=c`XP9eGr>j|Sp6rIpERj*^xtJ`DS(-D3{!BA76$+U z8+WtZax)9{k^dwB3!YK;IDS2C(EvC0A%={J?LxRD0QFghKm!kkjkb$WvJGiuPvl3% z-bOwm5L|@AC6FTmGr$gfU18|}2An@9jW+EFS;-fm-2fD>Hd2XA-i z7~p|t{^5t7TsAUb0ayN}2bu%H6{{q^pW){pe7e~xGz#4#z>aqK*~gi6-0|>cO9jBf z9K5*^tv41!j35GP@s6h!1_l7|pP^nw?NtKeD19Dz9+}+^ygB!rE4Se$HzE2ok7pT> zyd*3(1ulX7A9`vL0D^X-*c!JuOPUi<-Am`kcUP4XKmkmIzhA zirRVj$^VC%Alw8|H0V>`=GeEX&%miS23SER@J7Dh4ZwB$I9*C!)wZ_{!wniU3<2K9 zkNC}RclBFF0Dx7uyX9?f0OH3`1fYa(Xl@_W7=mvq!j5mWq#k~7$O0SayODg)TPm?g zt;Rwn14NL2K^Opi_%V-tj3Zy1QUC+-c8|R=r6l}1pAsIoIVg4oD zSY-o<2@+^NhX7*GLNuk8%9bdT09zOX1O8_KT~dX6s&q?B!Z`-27>1k0{0B5aqRYM* zhARSSrvHBP%T(4gAt1qs)R?o%f7G)t4hc*|hMCA-3Lu}xq)Ix+;H+~FV4w!=8nHoQ`W!2)gjFULUfpE)OI$Mp$`=&2u^8E z<-|3CYO&TWIony!eipQ$9otBub5`YCbvn~bjskMgKk-q61i)~|V&z#-?JP94mQ5fz z?P^w=N(Y)p#g1ixTUT?Qm9%v=t8f9j&yo4kx6bj6YEyez_b_*#YfVltp}SqfQYS2^ zZ4OvRy4&S|)j6hZj(Tr95!9L&v**k%a{>z4^LAIdz;rHob8Ft^e0Mv&1c5g^F@Y7h zVk5&f01C2k766MD!V#A6gehEM@DKnB{Ah>f+!2NVd?1k)7V(I|6Il{hr~i*92Ahdh zTwTP%asUq4WIo!Fk7bCrx?DK|aa-JDAO9H0L1t_O8qkGQjNzLP7V?rS%wi@Zhoee< zGGs|R<-e+uy149T9X0{e>^RxVVHWe4$!s zhQ{FfwF_{A|^OM;i!-T{`lbsW0!{MLKq_*VI74e;vWm_iR>@HcUA zk#PTdJmn`BX~_G_^A(#s;}6d{l^GuKj*oYtaINZLk$&`#%M$1}@9fjPBh9K0UFhYc zdUQ~}^_71e@G0sl_| z1yB1P@b3yx0`2enjE@5kZ~^tt$yo3FO7Q9&Lf`i74Q9^QCJ+SS&i?4``7n_CvTypz zkN&3511YfRU~u>}Far6H1f?(Ij4lI15b}af>FV$JYX6J6a1aTjF#mQ>2&qs3y^jfT zulO9$2&WJRMNkTLD-40~1AT7^#qS93&ji;{!OTtB-tY+IsRE1d0^cqMddvF{6~>+yVV533LQ%JBZKun2vS3&#+>!VeKIP!YG#3vF=wB60M{@CwoJxk#_{ zgpaql&ca{&Jgm5kodTd?i%nDEiM#8 zP6s#9`h;*7cd-8a+d8`9vQ6Bs2ACm12h5v)uVvrjRaU9`M9NiHej}aHaG2+Vb z`DPFc36BtQ5g>060D}<~-4PKHG6;cj1GCZgGIAdyu=^ZvBH!^K8?htxPWT3p_Qa1N zPmv?V@g2J`B8yP~J#ijq^5m$Z7K`IJm@y>@@dxK^3J)?MP0i524Zj zqVY1dk1-*WG#xQAuM#)YQX&x(EgcdgHxL3vaw~h10LjoGr!gTDkq_6Aw|I~fX)_6j z^DRrW;2bYCRgS+VPYahW6@l&!IS#)jjyhoP@9Zn4EbbA}3n5KYJJS=t$WkMv^38aW z*iIAUrcxjcFfQBj6@ySb?~5q~Fu(9~o)8p1RZ{tg?mTrbK^KqfK=JP8GCwD8J2Ujk zF6%qeF`7=S$_mdtp>ECmQ9Z+>JWn*1h^s`M4nrsIMa4$q;*&sKY(HuAJX17mVzfdn z^g?-5LxYrTJXA;t4K<52;ASuDkpGlPaSlw~WmuE%8#nNcjWJ@QM%PAzfON;k=#p-c zPDM&WiH+_CK|v`g0Rcq;5l4q0oq}#O2nvb{itgd}f1Vf5`}^g6AIE)N=lA@4dmo%m zLl8zjGE#N(M*4IH&k8>VSsO3B&+0~)3|O0t6q>x7H@ zEj0T)Z}t^&?Ys50U#DgZx!1@DbI^~Gd~Q>{7aYbWrR}6@;FGYVYE~WeWj_*l zgYZ2uVf_({b5=90E0EQ*vitz&tUzjRJfzPQR-tiaTkd1#Jq-Lpu2jtgu==8Cgqwf| z1h!5TOO??JLC?@L3bm37L<@rangP&t9LMtB+gDS<%Am_0|nur zNR`(+RCuUZoWL>ICzzk0dAfV&F7WmAFk=geE$F8DPajV8zUp*E<{hBFhu{rgL%&kR zoAcL{J1ZIIvo4dgu1lEErqPmN55D}$6$vC;C-|Wz$di6go(8LCq}Xrv)3cclG{Nfq z1HHk5 z=k;}iU6Q}-?*5ZIfd*_UA&J<)an*PqzD^)(h}*z8Cfsu@Y!Z0q?Ix_+jmojoDW!Ua z6=1542`?mYd%u%rZ{lfMQla7Ja`wD^jijdi^Y$$^H85L0RLQGu!bTHhz0n%{RMPvr zk0ezvN+;|k7N9eB~Nq%RULv9`#0*pu!XH6fzC?RY8%-zYo zj)k-ryLl84Pm=n|@m0$65(Z2J%uY1EOnoOG2jKE>)o5^pcB{`@?4_&iJn4$_Ds^LN+7nVS&eEY>8Z$59j;y z;-M(c(R03T9BV$#=aT0hkE%Rck*+!iFrfaYX``yf?5o5cJigj3REA`)#jpyl7JvFR z8;fK=L$SvaLPLxBmVsOwKyObyzHU-1WkvX}G~W+4yjw&r&U)V52iW#-p2BY7gFBbe zhRl2Qet7}`IV3LRD<)hT48y6Y6Pg?^t`2TXsk+U; zb))Qeb00b4u{KtW4wSr5(#WWm0ztOy-VKfH6O!$`tO4&Z{?JIqG%?=ew(P>slA0JF zwk`c`o5SB_eC=Kcx>b#ba${Efzo_sNnUt5M0sDO1Af9yXNM?75pJ^K0K+aV>&tN43 z6Owlk{~y5J4pph|=IH^3&tL%4PH(;IOdMh2v^UaN0z0xLFwX9)G|z?VFB3jYh>+Yb$;o(Cv<&{nY`{RbA9f% z+k#WfvIft54o^@Ep531fDmx)nC_t$}0^XESZTTRb-mg2M&o-~kdtvYV6L)2~8VQdV zx9l3ELW)K9)gt&W`SVI>pHu~sHw*>XOG?^$%}=MEecjF5Mv3Qw%4?d$m#)pD?a(ym zCS(R+52+V=@X*_X$k9SwA>VsdH5L%2cUz%{159M%cLAD%W#O)DJ4@0Kf`TBPqV^x! zkR%&w5VhFyZX@=&A~r=f!WfpS(*lM(qG)9f{3`C<^(qge!!sbJwSNDEpFEtkBAc zpBLXZWc~1FjIT z=2$cAliuiQpri2b=j9R?GqJzH8;vK)SD( zo1?B9Z$O|K>eS;DK6RGmpD3=NiiH=B(AE8dOMF=?$_?T>`tqs+MeJ{bzg9&5N9tG% z&~$AkWNre13(oQjM`MUg7iPKxNCpkr)l|VFx)5>^%1Tf$QTIC_@L_wBqYL zu4OT?T|?or&)i#Are9#(t*|1FKBFXfE}ZcAB^myhsYI%OHF|)T28pbtdmcs}|8`fo zB3lB#ft&fRQ#jM>g#p(~J>WRG%*H-&>!I@W1$rNYUrdh}=_=khF*qN7w;IeSTlRvc z=hy9X+<*C5NvF>QsR)XHqaTXQ0H_ijstReg2wyfwwea=Jn8}I;F!b}VS<}l7sW+HA z`b!flp#iVbP(Sr!ZtlxIQp9rD@&(W-?hz9h^h8OC2wPuL61#UjDVaNbkCcK;7Ud7< zJN9swW(v2?;r>J%NKrZ4nlV)?kx5+9ViX$AA%}p57Fe_vq4U$`;$IjU!7C;8f?5+S zl$L6Hxxu>m+n%pBc^ft4KWgSNvS6}7P`^o2|MmIeEPI*r2P!Qr9gg(bFA5mMJOjOU z#3KI9EogdtNmzcgxFw1!@#;tu4$zAAy01C=7o@9p<%_IffOmVptKD~d0m1_xvj^2# z^gN|o`6g1Uq81t5EHl`|4V@(|vuF=@%?))5mH@o`lc#d{t&Vr9=fnXf3x`{}^N~0F zT+Ir-3*E9+?HTRaokO}HPElA?)FyyJy#{~^X{lzqo=(}xF8yJZ9ZBkGU|jzGQ+*)%^67PBs9hz^y_mZofyiWx3en8*=+KL@}6z3PHKx}`|Xb<(*% z{9sx@xcPL}MCs^s&it};JXQa!|C+RxGNdv+sdEda^~GK~7n`zUUsH114J4>n(0Hb& z!>T@zqikg=l<`n0@3$o)4(%`T%IOi!a<3^rwP$&0m*dL^4ehKW^0UN%`vzV``~Hv8 z+*@8MB>EW7m9$hvi`qRTGoMWb_6Uw-UIo3}Ho$hZy-#nCEsCsDiaii32%fsGB+*{x zV%-P|Yw^ji5U6zo1xzUCXxp{1j+0vqlR}<8EMvU0JfQU|2rf&mY1vYzX34jmoV#mt z^i)p7x6jM>uQ~!z2RtdmojtxMdvg?VoT(n`3-5*ilFC~3kSAy0!sO%UfibSId~K>H zO}f0~@=TEzBx-e8Qg$4!pC>a{9|5p>5P4k1j~!qirZJ#tcEcHy2?Q0*Hn^=dkvqel z>X1orz;n$X@YRaS8d1TE9L-dhccQ)jaThL^OG@)Bp`hhJNLMn}`|d2GW^0Fsr0$+% zxYAX#kBmNW@{`oo?Z=h*^9!~|fuU{|b1RT47*Mb=OKsnfN}#{sexjR5-r16Q>L~qP z=gr)8Vv2)f1(R`}pBtFW2rzh`N0&$(pa&5EW?^o^mJC7886NMeI;q(8zErc_S>ceS z*&fsHcv3+2?GttrGmhEo&o7y;k^Ej*ySVQciuN2<@0S5Qni$}T3}e>&8Jtrh;fnmV zjFBQh^!3hU3YAyaHGV^RDZxw>Ay-mq9$Cm2y=ml+Uu=!GF*eZ6g26PN?syC$Ac;>@Wpy=?=1Y_Eb z8CaOkHQd(~1X(~Ld7k}!wFlNs$Bf?==WLLHUTN`XcICu$y(gA(Ou0W{^BI-q4j z=0sp4vI-_przS)|fYFu(RS4f_?Nv@O9@dr76ZW2TO|DeN%l(`$TSI%8c!x%^!^cjH z*!`%Q&!)3XR-U${o9HQ)Rwt%yZ*qQKrcy|kWsbMr;(KG9lB;<|1Qnjh_wh_m4Z#HJ zni=2`DVQbEmpbe$b2zACeefDDj?Z*t(D$A*A2EaQQ{7k z-H>l0aV`JIQvX7L7%D&ns{L?0I`2xo)O6N$|fx@&+8#i(6pZG3bUhLutTv7WB|ICJ^+2L8H=HmaNck2eBaR$G5MM7 zqEv4{+Dx(dAc~_rjE_FS4SRIR0whc%cnc}>bC=tOgQSCOCR*37jUD|6kwYNoyxlKlh9BkV!Nd<5dGn6CvOaMa9isJw;(DZA4?rvVu%KBk8a zcLuiS=&-gE=_1a2dB4R+4q(@Nq9>JpR?1ch9-zRfb4|sJwQVv63T>858vcFm6oYQ= zJ5Tg(wQ?8*`Z*aM9RGavb0+ZG;p#CAhFqSK3xW94S;^(P7-|X@b5y)wCysuDoq802E?bF9c^?BBYTTfKyIQ z97VxIQSt0aS@qXg^EIrn>2zmlik<1mG#D@N=ZdH#F6xeHM8!GHW>!1vY>*7iTe3#QKkN5}|P) z?X!0xvwOUQ{!`r0*?VW%$Lu-%A{pOOQv>-EzLn(s?##JZ&iQwi1K`M|P{{>5$IU+O$xS_}n|E|51Ykclc#E-g^)DoC*@(DVbSa};W;6zVt>a(pW=@GCUxDl}Os zlu9c!+%L3LDYA~rM?m!y_jAmx6#jc*<5!_Y4oG_WQy(n0$Akq*a-vD^xN|WbXB3G)z?OvdeR+4Ur z%8$C@aIPD@e;-a!nnleY)W_-DP@HkjIfLTAdma#WR@CTcZ+=dnw1V^+GkXIl^qQg5 zo+;L?WbZUAsZ&v4N5bz-Kg9MGb#>8?AA=4t<^)5*218W;$^+K;!nf4+mIXX7!8%1h-_8{=vG}5OaS;cd>ys zezf%U80ztgO@~S{%w3*m<8gV~gLy;LDTmh6^9obBVl57of;S9O!Kv>GAf7+I$x+_V zq0soNEZ#xd@gxdop*yL9BA=_2eNIDZaa1|Wb8z@Se#tD&Wm#}b2rw=7Xt1=}%09up z>rvLqqbTY^`LQJ59pv@on&Q%m--ZBv!o!yR8Xl$!0Nayl!w2!3RsYiT#C{{As4CqX z<*!Q9L`~ByF~CAwDYB(uYpziG8OrKbs~8kidxrInIn53d9_m;dewWu}n&u;#E_<<3 zYPYr=@aV=b%J)IALFwB>LqGrkHix9eq6_pG=%y=bx$f4l5w8**s9rEo$~n~Dt^lM~ zP$O&_&_RIIT-p;HZM$@V39fe56>8;J06wNH{7s8-1+5(- z)&^(SVmPjrEKNn$b1Z-pp&tpbG}VIFtMxgnl3sUf{km&!{jQ~V1H7hztyR#x^{*M> zeA@0x`P{V*QUSaOfit77W@V`@k1n+VD`7ij9_<&$y|j zk(yDuKFFcpah%r-{LtJXYY4vB;ph8{K`*qfjtHGT zrauIfDSEIUO~XG0S*Aao!)~5i#Bx5A(Qpyl>>Bo8=0akuRqJBkQs* z^cLxL`<0#(0zs~dMYAj7TpIT6-3@52m^Pkq-yBFjhV4>XLGf?T3ACeLE=TunKNfns zCtdLIL+_2B6kUK}iYCcG6X(SwdeZ9-HFbK59VG~$FKEJ##d*l?aG3CLg!ISpGY-B= z!AC~EPV;;djJthGfaO$3f(THutLFFv=E*-jGXVt#?eMeL^gV>0-S8e5FeWCnA9X?Z z_uWnH0{YKrcv_9q$;;ZMlEC(+{#5)AotS5wsr#N_DE-(kIj6tnrtczCp!j{Pn*ac#J;#p6>RbVdm9z!H)YH}V_wM&W zkjB9nt>+xTV1kfbC4Bl-#5%_F_aD(Kwh|BO!nMQSdmRPg&SB3M7x|gM+8eO-w=4Q*_fF zqkuxnK^nB!{H;EK5f7!-9eC3;%a@=ABuabp#T1C)noU(T1&(pq%?Hk?MAp=}8ss*8 zk=qAO9N%rMN=O;*rmCX;%GzW3SdXrw7wlTHNTNQwl3yk=3#RjATN$-0g5Nh z#dE^;=GA%23P?266!VHI^9CS!$OemqFd&q@3}dRLRNS#2yI%h_lm z{;m~ExUgTFq*+91$HgQYNl?qjR^F}TY99SRT+QsHEi?Ko^(?!Fvcp-*#z0UQ%Tkj^ehhYM!zulN*VWTaH}wqn3;-l`Nt` zokpTNj&3_vxE)B0&&ejoE3=&^fBAk;&>g!1C}hgsys;o}Mws@N{F=QyODAj+&1MM7UbEd5{aQyq_Fdrl1wYMUmvK zC$RZDSdQ{&_X^`)MDroF#L!QR&(^1BFlMv{TV~(Z#3guHE%(=w zE31oJA&On1ayx5m+rMvvOrWJcrmx{2N*N10MAvJdeEXd1P2c<^NGitIeW6oqPWGhV zcYBJCQoe==*{T*44Xx4pPW3B@@>2zEAo|@tXrFv7RxBkW_@ul2l0hnrFtFMqjAsq5OPGXue+(KJe3c7Cyn)-J(RN_q+o;aBjqOqR7JL=6~}2 zqMM#+U-09{mh%&c_%!{S4at_{;5i<^iT)=s+KIJN)a93f0Fk-(E<_sGfqIW^0GKsnWQ6lXBM*svjozYkKG(pFF zQTx+4D18-c9Zot zPu!&e2fQFfQ@FQP_EQRboEIZKi(#*uDqkj7PPHV~ z;*eZR>e?nU!%UnBg!|ex2Yp*VJEfi`z8oK`T>OWZR2In5ku?;$@7ZoB@;Fh}NUW}= z-RR1*L0MzTS6l7xgt=xv8#1mtUVZYlCiER@S~Vd}eC0UG5J%H0mI9o-Xxz;LLXfUB zz}e7x43G{tDyMgRl2Ahxvi~G0G}mG*FX(ta6aX7##^q8lVzaBCl&K=`-_YYH)?#1` zIL1C@aRUJu?ch|;LQNG7f0)@V+!YWs$g>Qo%&)^|=vZ-ZEtP^2Hu-A!kH|u?K3+Hv|d(HYu@|@IeEEZ0q^HNanDL%Ks4#MYIo3YdD>^9O26kUIQE$8YQeaXM#Mq3dG z#v?$U@>*Nlq}x9jhg`nZHv{+dt6QSjBtz8x4SF^IRu|?EUG+j5DUR*JAm;7~!uG|SohhF4MK77I5Bl1Grjg(L%?%S0a4>41ELo{L&KC>taI|&a^349D zfQ0YX4;lP>l__%!_Bmp=i*3c^*fS8|N50vC-$onWjs$HsqdwnEq`DuXZo&Af4u>2YJ5@S6am zq0`_YGV6kl(&;hyN7H@Q?51mc?U=E-WCOXe}aZp*JdOnqBko}>xUlm0x}bJ z$O)Y2R5ZACIy+&wnzg|JAbp-k?^}3PahD4XdDNG459$hRQ5Mx&K7pElt4Wr~8qu*B zdXc>qR`=G;eBU-VjX1i=7^YK1QF}I%+kITYzOYAGaA)d0HJbX9Yr~IZX++((LXmYQ zTY$APtT;W1)=vd!PJaMbB{JA3(^55t3A~m0Lc>g}iuu;glGUrEaTB$h?i56T^go%o0@>}l?`TnZXMS7* zWT6rJL0k)cnS&jCS<_+TY3fdqmGE-2Caxc=Rv#jhjTUT$qi|TQ#`)|${X+6X%5js> zHu{4JqtK?Z)hk@`fcG@7xGYGfexK7F7w#%yziEgnr7KU^z{j3a-O*DkDP2#YiQoX% zL$A}*&`VvebYZpw0IwXnKkS6RdZV#-ds3wasB>TZbB#}`uDUzZ{pG=L>I+n((qIOz zF@UaUCGlp>1`;rCp!=bpodF^&px}xs0nWFCWVTwtDxg00SM>RjTQa#B0&%MCEs-~C z3YpM!Vc1fRWB%dni_2qoi%jhNT%Pz14#%1EIRGaTB3UD3Xe&kP?fJIpjiJ)Ij$tbK z>yMMYhLVi!%EYQ-aonKYYh?4b$MeiLxDuGAc1{rWo7jhmWS(WP1l}9mha1aOE+!aio=~x`?-8C&Js;l{+`&Wn|mjpP{7RR zu_ACaJhMh*ok0_JZtd=3S@LShm?^ zdGIhtOee*DtI&fT3HUiqo!H1dd{$ng(RVgThFmIrnnCe=Y4bPwQG?+bw}i%`4FA;1 z4rCQR60<5BafxNhmCSC`z^E(l%XDNs96#_g=AOFI|9qrNQRtXmRoO^cUpBt_aY9_r z(1FTnUa{m(ft=x-0nPb{$fHm((^aC9&(GpLjbI}C`jARP*9`d{{M6xEd5F3&0M*Z! z7$*u0R#WrW<>YW`WF!w)9J7OIxAB(zL1j% zR$32>->*e~OemBU)eo z{X~UMlwi1zFmrM_eWsM3j+MNt=|EyJs8xG>dL$G&@bTAMs@UUozq=$kzkTXgYW-(N zzc&IjCnsOM9gw8`6sXcK_4Gu72F_g}1RkUw!)f zH6`w1TPyDO(x-pFM&kbccpLZc*C#TWiU2?mfPw@Hc>+j>06rwY{r_lBiXAHg%?kqU zAb~FWEjp3_KO~^12@HrnM!`O&nqKo`0^(BltUxn|^|2-Pu@_>(HwcK+Bm}sRW4@1P ztB>~-BdQXQxS$j~15$}n(w7nNYQ21({la1WB85zFWeBETMOcMV?Vj3&InGi#>5ike za6=!}76fw^FLM#^dWObhm4wdwzX-gM5zxfl8YB28yIuwR?z8E4lC10 z?8g+ord>_(&g~WG>QCJ4>J4CwXqCaJGf|xq%p&m~IFLk1GJKG7EN@Uty-N?QbN9E- z#{qST!+bUQp^sO(Rcn}R60x>rB3hngk-G&$LSnj7V?#H&bhS^1#?A`_>=i^D2CaIY zzt~H=i60QN==05uXHdr5E)T+QV${}j-R@y$U+Zav4cVMtv9?yVryFrf%)bTJeU+dV zn#g^JTfeoSQ>$qx(0TYq%}5keBJh%@90lo@K>SJ)vV(B8oyorD6iR;em#(E5GEJ48 zQk9r0WuK&P4$zrSgpQ8H9FC|EAFvSh{YDckJH^$EG5Wu$e2&2aXsrLdUMREfgxXN> zyZ*35#bQrg$IPLjkg>8uHHZ1J;LmUFU+9%1#)WFeDz|i9CdR4{4NFd67nK=mNsL$C zRI429cLE!E)EGUU&vpLmANrIz5PGJaXS*{ z<4bj0T2v`bEcO8M*-bK(A)Sulk+f^}tIT&@(P^c=DV-B3p~?@lD+Z|$RH|q3ev#n9 zEu98#5}~TlT(x9 z*2(olm1V(q?c9^ZGNZONlj$wfmpWz>Zna<{l|L>ohL{9|vR)?^EJo2PO;cTGz-h)8 zOf083b|yw1gKrt8(E7jM%``j4Bx||7?>Fd_4oh}DOA=zh(+7d+=@OUZ--mfl)`pGC zU^SOBFZBr1YPxAs57~6pdiuGJxwOOdqPp3vr_TL}$wvsYkAh~@e5josh6_IJ%RS#Fy4hxr2c^xWF)hR*m+xw-na+5D&DSN@teN?0f!O=}kEv+2%@ z;4SJo^6>bFZoYXH52*Itg8u$z&0;?o}bH>!vo= zut|mTNp(ppSIT*tJNmvyHmXUs)>&2^CiA!7T<#F34WaUSl=Bd6^jZQqtxnPKnfZVH zY@dj^w50Y*bf4w*J~=LPxApOc!>O1o%ZM^7QI<)Mb=ybWwl;r_h+9j3rsh87HZEC< zj#+B9UglSlmi^yYdfZxc8k(z+7>~PU8)v#$++&-yy_lk5mA5eAM7eZ-fhqXzBYS;W zs;JxM$E4UMc`i9?)#1mIW6^AbqKo9TAkK))Ph@9rn|(MNIS9a?FPuA*Vv2 znY1_4OE4#u_0?Rj)w&|fJ{uQd)SB53@f2w5D`e}Dqut(CLEr}E4g-UkB>&tuNJHE8 zg^tx#9y7Awr|;$0Kb2$WU>_S{4x&fc)g<#d?i;P^UB?|C5{D+|oj-M$e(K_Jd39vV z@Be6k;@0(#5brJ(k5sFGm*MX+YR;G;P(W~#fFcOk&|o#SWpmTYMx@K$ zVI6y0XgPktiWNq(_j2fASuPqFn%-Ot#hNlE4>ft|_`#Mnimb9VMuxN(k=`@TH`Vyx zug*p?g|Cq||9)U@`H*zWh^ltuN}Foc<|`i$CWd3kwGtdlP|_%qiei{*!@GW=Vp28Y zWrXK|yo)}oo(IF^hw_JRn$DYQ!s`+!HRaeLi)fqTO^<6eAL5=bex%zH*Yk{L9;pce z*p*O?zDw~s>*BaMDeSqyZ0siFyrr|_IrRaXCl;@|oT#|j7ppPP*yCyPZxiRVZ5F{zwE{<`Z_Mo3KfsU3A@E;?xiH}F(6!%bgw^) zwo&_``Q8RI)jXW~b1w(ti7EO-%Cw6a`-&SZzgN^_mAFtLrZW^ z%>Bjv^5l_(g$2={3-UI)nTx%JUkI+9eezrTPrMH_c|MR?{K-S4h5&~z92*Pr$)*VRW`@yns3cOH^Ibup%efhu=w~ilG>ws|lsjr)MpX{o(7@1TswLbl!L$jgFuj(YWUh-O%G_b9LmknXtQdo2 z))xT1yt+%2yKj?eI#%vW8YMRl@1V(KXY|!2m3#iDx*-iHelDj0J@{FXoDcF%vS{Ek zs5#;ttchWuQVasG(KIz2^X0p&Xn+DKabQPR8CjR*-SAZQR^z*uy7#eYG&|iJkia9^ zn+LqfZ(}J{TfYihVEmvUeSm1y-vX_5o)Uwar|vT68)pjz{z^9 zU(wwEe)d2rxF{m(`k4W4FTN2)nI4@1yqu4DdT#MH7@a`+4NuSSC z6mZFYXGu3!imnD-y41;<$TY<|%B#70?$QP=MLJ3tPTEjjPOo2{xx{(mj8fN?TP9QqTBQCKAp6y*o(Gm{v!+|uu20vFr z=rd#ziHAlcoZhnpOKGa$5=xCRsYL6`t&A|QU*F>{`ETfF3(_55BE*KMnu0d;O@(A_ z0SuNYnU=sQ&{6!nK|%!hw!!Gb*Aao!;OW}1+sNcJ=-KUhD)&$F8gG-+MOuPB6$HQ4 zpA@~UVT#Bb8@YFp65WKzy%7=U`>TkLQqeal$d?;#PieJmmi_AtSQ3G$JA;#{sO-;@ zAD7?=jdyDEpF=(BB~k-w|mr`3^8B9{EdKK><&eq-kQGoDOU zMn6`6|6HBHz|bx~y5_uu5$C)0J&{b6eWTU$&-tF)ht-F!GqL}ZeTvkrk zzcPq9Gr8bf)g^B z>h8ENJ!?+}M|u_;QH>1UidqJ}B^=F}XShDQ5{pc!_-0Jh!^MO!90aCxbJFfY|B=tA zW`=LEzP;P4R|XYjd6Z7E`YDC@mgUWF@%!#q^JyCI8X(qosn+_bY)hzP?Nh?pQ0Cw4+Do0O+1@{!BdZ`SX2V3AMZKRsDUeb1xkN{*_%XW(zkk5>D*QoVSsLx1d9<|48!IiDXiwLD~U#25{9{d^pI#W=shV)@9E4-h_e zq~7y+b>RaD^+C1ePwamL>nAd9YhOLVTj}|u$GeD?SJh+ar-9GL?82Rtrd9!uVIU?g zEXy5hOJh>4m37ac8=J;j5Vw#q@LK#s=mGl5(Tjf!BNE@zZrzM*)RU;zuI6;iA3^vn`}ZZJn> zsJlD^*K9M%BdGgb|DM5hF&O%e?bC!69P&&I`$P>QNSM-`c|oEnCl%sFyrb{febgK% z9LZ6=CEcH+Su=P{S9vR_pI$Rb{jT?e3uk@vkc&dS+{gDO9CpidzujlO>>X;)LRhTEW z=OjY$&=uJ*bEIZ_U53}UL>Y5eP^ooE>+avpVNE6N88bOv#>BjvAPK^R1{(Y%6F~7o zdIfF1H!$vdAWcc3xCcGePg_V+BUBwUsRd;S1{zH3eF4i5K%boJ`sKa=WB~o!NFN@< zy7fg0EkN;~sV-caAiDdz&2Bb;RsH!jRnQ*y`|cwM-7}vHbLPRZ{W1VuGcwsfDWO{cE^2q1}(>#suxrw9eAvOs$0h-eVq z4fT(vMp_y_7M$WVey#+()zCF(-P@!|+_EBSZZ6CFXxv7W`+{Fp382BzJfChedaK`E zFXR84@Q?T8``q<9fRJeD-Zk90z>rq&b9xW;Y91bryeFdh4W@aY;~upW|1sR5(OiIA zMk(9qvl9zDyvFDvjYhx%40x4hQ(V8lLv2&AY;5Kxj+%S%IV1$^r{ck>Ubx5@SOw4_ zP_RCaBqv1oCk;;R@l(js@=ieIaA7dwZ4(lM9I+2?gRo!~4O&BYqccRMZ_-nor3^u; zlmK~&0C!Q4oTANe-1I1CE+avx+v9bR35n0FDHUfT&rhIiPbVn5gaGuJ@bWl1yP&mq z?zSxt7!w5pQwt3pPwGPV`qM#TfL=53&{isl{q%THw**grEpkic@|N@i`|d~_0#8@A z_nr-VN-y)pmF?GZ$=e!(Trfj2(p=f_j_6+c`;!)#Zv;!QLH;OktG&pphCc-d?D$r1 ztnugJ%2*YZ!QYt~^@xd0URit&Y=({tK(ob7u6&=-EOTFp(F4(=qI40w80I_Jd=nF0Wh0wNd;$r%QqP#k z!0PPxPm#TkZa9HnF3)XKrwX7A?LdoylWYHBfOX+@f?6@CHp1OU)ZzY*CEt@B5c&Xd5k0P!7E8Qye%MIzl{^o~>)q1u!jPO%DB=N3PXMc^Sjeq|wK^36?S4p&aq%jE`WT&tAqN zqt}MNB>xo@QTmnf2<(l$PbF!g9aTVk+>T{Mw>JH1LRr8f$}&fDoCfR>V0}6}lBhlU zjEGhA&lqm__JxUztwMbOcJO8-CUDfG*mQ8)yeJd1z5%=9D!te5Mjn#Za5dF09Z$FI zgbN}tD|v30~{^OIH@fP8w=zpjaaxjfqH`d!N1S!2Y+(1>J#8cWt<4170ch2V1Z2l zM4>ksZil{X$$ZZiQox*Z?FERZRw$L88&mvv(8}kt+n}Mkr5+vl;01dyRo%69eUJ8Q z$O5zBsH@R!Moc*BCwoTxT>2a#u=~B|J3E{1DQnNVUcTLu_|ZIuOh!t4Ur>tn>AE_p zVp``!`!)HgPTE7#aQUt*d_?%J%;8i{v@7g2QQxB2@WgC{i>yH*dOqg0vQawMv!nP{ zrQngmCN~TXB$Q;EhV*!_28uRPm;)ZE*5M5H-o=BJtxbQtvJ@u!)qx}`7CwZjig1z` zHQD4CLdxdxzU7>P9P64Jy50@newlw8#Xi;j8OD=>Pq<+<4z6B=H$D+H_ig?TmXW4! z)J0P&zknKU{r2$zYfmTCrizTgpFyE?_*d&9xZYyTe0kxv%sxHkKqjg?iEi0>X(`*} z6Hsk10pRchg-I2MW$Ezy%SU^1?t3j?r_33@7en~r$tDzz-?zvvC=Y;{lf z??t8Y+oPH}-a5q0Oatq8PnNVUHS)ofn6#2R7XxS1gNxi|N#hSE%?_)(_mG zu(eJeibi6Z9_bvp(mN)9C2}(fS29VVn0HbEJ-TXxgAK=6{TFC80;P=LN_^{*LKD^@ zI^BeTU=UoHcgQt6K>#tO3#fJ9I|J%E=~n7Pi0t(lFKxWMZOQz*RnnMMr&}`};N2;z zyySW*atP7u;I}o=Fr8oopmkiQ!I_wckUgocAyShZ1{uNe7z0`qG@ZqV8__pzJ z1Bk^Q=uly-SURRrOO1)i2-GRF7?5roC2D=3@iB}OMMN< zRaVA5WW=(zp(!!Iz}_cyNj@(3XKs zQ2bkhqQL{#a(8jXPvS4#b$fI1Aa+(XjUQ^mgqH8#Luf*(e)5in1zds%ds;R@!M2dQAYRRT*Vi~;>bnn^(P zmeJ~#yL11*sC?y(e?qR1TD>3d*i2CObV0KSg0;U}#gQeY2Wv#tW5N1UF6+F zbl|w(D2PWHgMTS(Fg;+>%65PwAZD>r=9y7dKGT!djuMxJN07qYN9AJ7ml6(Oqc(8I zY3&%5`SSxvvp)L0_msVX*Eg)%p0F$TwsdfPthikq92Xq|+P4={Ypc5lukzdW#n;pU z601M;Asrs1I6)VJUEFUc8fu~kCII`sF@E=YMHJ}zQcw1+q8nU!#jAuHt9T7TC4KA? zmT$>WG-C~CHdIFv286@{I9w0-RX*mO8hfSov2T6SiUvIS0tMd0H0D|7yvSqs#YcON zaUiphh6hbFg8*rOrI~GGe`DRoC`~4YF%y_o=%l~>xK`Uym+rG^&B3K+_@tNn@@0v3 zhD%P0L%Q==O-hgoOtn9aK|TH*-80qgjh9dI==wL9J*`t@>X2IQ77xgl{v4g_-|;^G zx%TJmLGiyg8>8>&x5poFz&?W~*vHzgwAc=_W@5+=I&Xc&|NRx$y~v|?eX6TGQv(62 zM)`w%pGE_6UKbaR>_h95pFU&yKkU6{P?L|hHTtAMAV5NqUIIuF5JK+|I?}NKQZ%3- ziYO>5s7OK$y$cEmNbjK|HAoeZD!oXNCWs&?ASIXI|NPH+&)j+Eez+wib3rkd<-eYPKgX4!@ntVUEV@6GRODJOy?OlZL>_}u@ z6dPhK8Dc8It4Ks|Pd2$Asm#WrW5iVjsBS}x2VR;Gg~vej_$K#g?lLM4{1F!y4Nwlz{Id& zqv7Un!;7(ayrTC<=yq=LsN1A%|DgU44u`Fw2a>B#OIKe>hJzkhr(JIIFJ14S5kFaG zp40Qq7mZy@Li4m{GTUSz)%2GtIDb55(c-!Pu|~M;&jYFbr)B%LMSO`{`%z_al)aL5f3ejY7Y|FNj%vz| znx&3A%Z~e{PR7bk=A=$n%1*bWD1XW*r&0hl2|!{%Y$OmL1}s7XOJN|2B#0&kYCwXT zV_?=K*i8)89TL?;4D~ZiEIR-XA)URblSnk_7}`A2=SU19ok>~?3 z^s6L>pBUt`ZThbsNa}JFQkoHYmU=G@gnKYbNi!#Tz{lyRxdYJcC9$sdQOBg%IuAXP zN3^T-Z(t{uTbiBH4L>Snv(x3E{>0%Y&G2xGbDWzd&ofTclX+ZvHOiyD`_fdbE*Ihx zs7f1YD;-7ji2VJLE8dfjxt$&PNWdJ)O1V?cUWGbP!N4Y5ClfbmJn79}(-)n%IaJHiZV*i8?9%BvIX1Qh~nDR(4eCOQiqjKN(B*s2}<+exvvY>8b z+>sVm+!aRZ%Ewn=o>g!g?CAyx^`bpFRK0ZW?CR|PGPqUFbhAo7 ze$POs%3x$i_KGg2rkrWC7as*7YhqWa``F7k+{-Ab%Iu-6W#t5B)i7j_`Wo-oJAqUX zG(xZk#=}lFuF|=j(H5{47-$1%>V2E?mfv{^bt1L%k{=oFSBWm2Eiud6A*%)Qr1lQ+Uw(M^O9^2bY5Wezhs0#+IVsxm)p2 zwdUzFmfP0tY8>RUYtD`oU_czvEpAP%cHY4FF;-cG8P04CRij65>BtmU$kQp_ytC(- zUhOIS%z{n9eZ1z$m0De9Z%@TqJ+6aCw`7f;$p!2x28!$l+^O|Xm%Cwn;BjX^;O2p) z+m7suI)|e_{>VCMYi~ccy5Ps&9uF16?_7PBwTW-qcYLGh!-ci*9l*{&f+i~PVKpEW z+a;WKcGb=6;T~?rwRUB71j?T{o!WTWKX#Q~35ef>lsb=wD&oUO4_fvTQVt$uc@s3B z#XYVwf++ZJCPi2+kmb_B0c!#h0{OOb9R7{PC&PXM;i;vrW zj0EXt>&OwFwH%!JUvptoBy{wXe=|2QzhbUoGuTgIu1jh-Org{Ui1;KutWQEH6tvVl zvEDCuT>rLAIXC+GYx6TrR4IO--v6P>eW^z|20q2Bissfnukz}oq?FiG4ujKw5jT`8 z?2tvfaJU~@B0R&J`tJq2$2NUBh=p%;A`qmcg;Dc=K~d5qD2nRcWS)GMGkz$!QT1AU z|8?)5JaGj<#C`%owK3`WLmfGi)S=VJlccO_eaMS)avLIW9HksD3ChXiP49l6s_=G~hGvLgmrdqoOwX z&(!K&)=m2Sy;$OfZiI@rxM)IM+tuDLPd-EZ;sR5sjOzln*@E6>2W$tMHFzRUIExyF zsb4z%^ci73>PPy{#w*VhZKiBop*CpgyLmdHjXzbFBV&rOx)@huYB-oc_BBl_fxiIgVLCLRAs8E_`U2E`HIG$u2+&} zhc9QK`zhVODAsf?qLP*4G6Kj?`%5nx5q{f`f9<+mJt*?~8NYLw*K(m!^K^h>>PI?B z(Zn7zE5+cn2vl^uawHE&tw1Uc?U%{hH+93l59q%Wg_NeKUFou&Lw?eRr+l&*s${nvp`Uqt_1{8lLT}jJ~*v$Ag^r@A)bzdN{TT z6!Gd`vhlpt70qw(TJ6mv=iYz#(#AKB?+m1Cg|Mo>^}0KfXPIZ!^!AC{c$s6@YxR_; z?$foNt7A>gDbF5$Z6Q#zX{364E_KC9e~!lxN-Y&iBRs&xNie&Gc8kNBcXg<1OiaeiRCb&H|gp(%Qjh-v`_$!#M5_ zwq~&?4`QL`UJialNcUl~#Bi<4eD+bTLM-%`B!+aUKa*kY5Z~*|#CEd?%TA8zB5gey zy===a9v@w)IIe4QSzY|062IyzUR~Wu2jS#~KZ#^QCH>*=i-&u}l@V}&{}2kJ2F_f} zeZlX5TtEv9z$s^;9^8hcjMe}+vzUFpg?Si=PS7aTu>3tCj9vDgTxNMzS2S8DjQdhW z_NRE!D~0x-Dsp<0Ft>VAFIDD#PEmUNedbeT-atAwfR@LoDt{=;FkZ}|r>bBi&mzkx z&8WI?w8*CN-fT~G(RdlIEsV#wrg*Z_b)?Xtx29ye)?=wB&A7I7w!wS%`)qG*+1D04 z1i@=kM_OnjGK=5nt1DmXiV-w^XY!$9xi?wXZLaS_^&o4*()QM0xfj_DL#ijW&~U5Zp%$zO_6`?IzbjitKqEk>91 z?zdP&;es$@v&TyqOn-rlcS zUrF)kys(<;HFkG3&3mO__1()q>#ON_DzUYUK-PO}nMC2jwf7MU-`BEY^u^Y*6Rhs7 z=OnunuIHvc{l1=;5iIsSKl}B)?*;j}h2IN{Ys5sL6E+kG6Ll9{0MLzW6)VzZ{Wff@ z1wKzQmxauW4S`CInF!@i*Tsea)a}X*?AhIDyJnyMRRFV|s)yws@eo9yCQo(9oP#EU zy(r4sUzpsCtIQxRk*vA}JV|hhQmSmUEXGPj2y_DugK@gzH@+r6ArjX5GixkU+t~?Y1bT z7xSE(8f|pjT`C)-5mQwON&sGY&wlr_MpHY8{>z!IC|K)^ZKq>L zz$Pih>U72X3B_6pYjl8~T0ImC2>wl_2;eKB^y+<@eij$WnlIC3$U+A!GFZ9+vMjk~ z_LLc-@EzDe!Y2~0xLZ*JkE2&8EMz)0nDgZUUN8^vNpQ&a%4W@$E@>0cOJ30b>eqEI zh7>?4ugB7?W%U9Po0TT0(fvZTHu3MS)$9*lc^ zs5`E(99!g_hyPkdC8N1e-v3Is?KPl53U=6r@Z`LB2V`U*Z^bMGxv;k#kYw=jqir`K zgMdO6wYvV9hXKk5i=jMsB-of@UY6$bA!Ol7{$8Y4WL2zWf;<2|?}OKtiARt*6?2&$!~yhFnhFZ_C*hy1ASnJ5uvda7KOm@YyOH2 z_eE!gCC_&qfjQJfgE5KV+g*ZTK_O33?tq9#5HPD1^2o9SSP~?&c9QXJJi2dWj+3;* zJg6`X+3;JKTB200Z5LBhIk4!xLyK2V zUb1YTRyB^^a6%47q(PwnRZ?GqGk{${<3CF(yXY|4&;4|kMtU$JCjcdA#FB52i48_c z8GdNOp$N{0u|M%g|hTuOVat;!30;?vrNJNT}h?QM#X&}Krut>*=>ea zTlm5l?j4J+gpBL(N!e73p-OaFnVXE#jM>EO2@1%HlCzR}vl-%X%JV-Z_5Vak{rezpMA z65C`b+x_iUxJdE#M>@sL?KYHw#7;Yl_5Ga=_B+Kpo!rkhce>Ca62H37C*A+`Ni?tc zSC2&P=C58%m&9(L-1z<7&q}MsyZvhWo4W&8>Wh1Wx@_)yLxv*%GNehn2XS)cw+TD5 zT{gI6vE62_V#49sceZk8^LtdVAm+3B+@djZxnd!N* z;4)aYtgHQ6--~K_Cw$Rr@dI*wn>vwLo4)t~`HiYu^14R2-6O?A3t2Mf?7#Xz<9RIj zsOqd~(BXy{)CZHVAbBWXPG2bg*p%%9+|!xZ!K-v_H5%WS3=GxdEHcQFR(5AzG>-p- zX|{27g8;Y&tPafg>cC*O7!A<|Y9Am# zqmxe-9Uju4!s)7c^S70c(sM|yFKS{uqHZ_pLM8`0f#=?e#Oxhmi@^}-DQvJ&6ex6y z-H>^`?h^AHb?E;5j3&FIyzcv3Pj>}V*yQn%SDrJ{^4X&~)k8s#FixAV<)6b2OPwZZC%#@1fw|c;`t;LqtS}21*!4uX zzsicZ=xU&nONQW*9|F}^sm~S1G$=p+rGfMg9$SkoNBEK!`4Ao*8kv?l1W`1zdm}ZE z+ON+6YQy0osQj^+atrW;mfKOC{t+|-Fu`5T`g8Txt1wJ3jV=x?a`7XF0DC7^1LeMUOsMGHWl4R?OWtutU3Dw|1ndTyrgUa|k*!rNkG#K38ntQD|kr zg8Ek#r}_sNKL@7)PeA_$#wXJidjAH--K5O6kh3cO4>0ZsKLf@y-Q`(&(qU?0ee9xv zgxLQC#tBYaaJrr09OB!517mGzjsF0~mPuH~Iko=)#y7*t_oOUR{21T=3m97mV5M}G z4y*qG#yO`AG5-R_Lc)>%0>-)*=Klv6|DOfM|G%l?|F#wTa@E@X_o&UClHX(Y&wl(K z$Aw({GjTh~{m-OpUdf-S`?Wv*OnY=)+@J9pci*4&UM<<5d$~{fvHulMEqO2>$oAl1 zfhbaXuo$7Zb+8m;AbI#L!TQ1Ba`K(h!lFvXK(lum-* zs`->GWjnziZDuyI9!jx%|V$O~$ei5)ujo|tE7Z+(s2)(BsVB|aF? zsq)J+@}ZI^0LO&LyRvn79p3^8xASWb$F@Lt&xh~jFKRsBLBehe5NDGORGd(BF57Kf z3pl*E%K>ttx-{_EFzZ}8{JrQ{8xnjybLU{E9fWn{Yh(xb_c9SwC^EgOE_}mF`m8tl z^DSiXu%4NXT^iG2VzD4gy0{vu9Jhh{@Lie}b$X&;K^`z(Tg{6RFt6zk>6Yyl+O{Nu z+UGg8QCP$u0v!RX#aHZ_xj{uTm^<8Iu}q-mfdcwY!DTuQazugX5LIYu7Kc!y0Sb!g zeN3klFMD-%$8gBNmh(JV4-FBq@u3(8)M@iNVzH|CCOe7;OW`gaIvZ3t{Q%5aPq4}R zc^XUea(jypJ@{S@cKNezO=S8t|IEjEo7tNzu)SAH5x@v34Pb&zt30VDjDj9fcNFSFKWS>&=<|lUht} zg_{NzXx*N&TD}(xydic;_01EX+FUIj4RlujJ0D;ivBQ^qKA2-H=IV3FL?9`qh`uz2 z-W$jSuf!PeaiT&Ve-Qwe+jX*Yuj`7vT;Sq^>1!l7LL{n|c)96{E=i?ae!)a$xYk7F znkR0%aico;YL0JT-}YNqpfJT>MP??y7Ux_2vH7ouOR5QYa{Zqr~*_@9LElUb=61r&EZGyFYIdL9jCd>wnv)|AWAKGiY*N)(Lz;;M3*z?^xh=|3zR; z$z@p#v>+%p^Mf?Q(ElW`)-`3HG0pKG48-MRn*Aq%C4@Xtjq4bWMG;OpfPWKMGIEth zu>$E-y4i{UL0}nZU*q~0fyIctQK$GX0*g<6>B_$dtX?@%%{uh+{}5RJUl3UT)2IL6 z^y%!R2Y=V|^Gg4IFRtDCyFu!bJld=pe{l4pZngAit8stp=qH(4>Ug`I?cwoGw@BIX zuRg_}$Gd|DQYU*~tRJ5Ip14zX@@MAR&y)T65UJCHZ%GeN57+X_PXBJ!{yaU}?vkP$ z?~OmCoE)s4DZ%vT06NVhb}I6*2vWwRm7iNF7!5@+hoAQ#(9ak`7#M?bhd+6dj9BoW zp$L#@#<`ZW5sS@lF71y z>Jpv9=}DbJA_kK?rSfe$EWfofj>L3w(_SXrRdWKQ@H)`b3|--V5*h*Mt2Pcr`ef(? z9L;xdmO3&#_h@6LJAi0TfFhrM31EoAcM5luhtM;$1(Z(QR-EETYSN)We-Efst*%F_ zA46!lBSHZaKRiTT!|U zK*q8c%|t#|9q25@=n>^|4B=msfUEi*BKfwqGwEJB1C;VUf7}Asad($W_GBBMKzo9z z37lVO$X{C^BYoYzTi0(?7l9Gv5ukfdUp{F`e_Myg`8ZG0^!aB%>};_V(AH*;wO|+c zmNUk^VB-5k3%T_VKp-;v@4(-Im)`$A4lxf=`TU+1lbkI|G>tDD%&WQeRy_4y*;`RO z>!u+06>kvctr+=P&l260e7y4f5S2J4fNu(gM~;>U@h3k5(A~jmf9C;{%`CREKu4_% z6}-l&WzO52HLfKb!>er_UcdHSV0$nMIO~hKvmvr$3k;xC6u^9pU${j*ANa5;fN#g9 z^O6o?)b5c5|D)w=MhI;{I)XqzXc;ng#-M!7903KBZm*q!D@L4i^xj<5J_J|efqLj)NYAHtyjiyrg_YXKCp#l`;6Gm%^Lfe2 zH$~DkG-9;(+q+{gpQ?g^vX-)PpN=8hPu8<%ii^!PT!EItb+_CnUAzJE^2sTI44rKJ zLA@8ArTHVQ*m;9Ex8#!^u+t_w66xoX&>`aQh-qOWzZ7qT@r)4#+$9u}mK;?zvX`Q1 zUyGiP381H0dM;3te?Bn5(RKbzaiO^uCymL9^3xIilof3xhAuVv)_Rp!qRy0Io!P_RgOBbHXx$tjlW=~7sb zS27kVoL*1${a#*c^FdKEk;-nf;$10x{fr*uLf?*;JX|l5)Hb}AUiFdoc4-sC(Z(}j zvFj`Titp_BNwx2dODjbsd+*09cYbiKn4B$iuY0<_AzmS)QgF9C<8?}YK4iaOxqe2# zt*Cm&Nc@Z*R26BXjlnL_OJAPHtg~^B442c%7H95Adnny*mkw20jFj`ApGQ%bcr!=x z=BW9%X|g|Si@c!WR4grRFELZnqIX&#_ND_Af@x~g{y`dsN4dHbl!=A^&bRhU`We#o zi*{=aMO|F-C4%+sosSiZ<26ZQOvQ4O>ksU9&IU{ML59+8ijJA$@l2au;>Ne7&x%KZ zOCRYXw%g1Ue|#As(#fS(GN{k?1w@}$`m!DQ75_6Jf=&&n99TFM?SH1~S1V}FDcRn= zm1cF5b~V;i^PuY1YT?E0cbBFgWWTO#;ApJ1<7wG?lO;A&SdlFGP~-<9%i%)GGXM34 z&3(?BCvBbIFP6pa!EnP$9mbV#XU*YQ(;AL@ISdtlIoXYUXm>Uc48J zgcrTmMtv850MX%(ZysyRJ@+u^E-fFO)|XQHez&`iWciVl5)r{5M(G!VEWBCGqrAVA zcS18f_0-QV#IPr5GmkzevLG@ci+fn)O^gA>H3Mna&H&jZ>C@r)qhlShd|S7I)m~#$ zp_^G8@&_Smbd2J<1^4X7nZ|}|yi}KqKVLQ!9HD~wNL9p=4D^q)W`af9IG#)S;Iigg zzIYkl-05|X4one5U!(4 z%+j)QOs4<+?WN={`+12oyORedW(m{*(_e~nL^Z{RW6~vVLA%iA?W#xW)7Roa~nhh38&T1Gq>-_KOJEZ{S>6?^}WDO zG*KkVirq~6W1hU;H;0*i*@451ksRe~3%6JW(TR@?FcT1Si+yIP)rH*bO63UDrG(-5 z?;hzkpYL6fAt0^#=K0Pg>&t@0VhF=HK8|Apde%Z?w(a30*@^cIfuRwv#sb1A$pqHh z%JgNYSxG11ckfqyYmAd0X>=t zR0z6}gz)wDFQ%}IQrYK)sGRk=WnBKn=D!x)6s#lfwyO>sDkQ>h#;S^YURO5&Hp-OjuX*QC=Oe0z;pIo9UQ*-=Rl&3i)nCmLv?Z2#5+dUkxkj8p} zOxLv8h_F=Ys`sHzconI?Lot%Za3-F0qp$4%6}~b@@$=nmlQ+X@4Dv=8Ul48h-!J*6 z-7rkrcdHQS2o-wwR>{V9+gcSEsiwMA7VM^F7cthr@HB@p&CQXEOQ0zVpIfci{!{(O z$9t+ZRq7l5@V)0#6AFf9^eBQ>S#a!(M9yY~>4RV8Ejipfe-!9`gh+Q z9j{`M^@Aa1d+)hU)(p+-hm-pEa#hu5<;;JN(Gi>!(k)yfyz$Tc+(dAD#TfBOB+b%l4Z>-fk1k z8yDFI4mw}VZohxp_)Wz8u*dH7SB&QIvf{vD|BKUImx0C=E%U#_DW`k+10U85(*KS% zoc<;y9e=;hcQiG9mVn`8%A{XVL`|F==!Sv%5Rmx%YO^w}5 z^ONs(e!Iizr@w0lPPQoOM=$rADFTQZCLNK8;Yx46faLG6M9 zhmmMAGa#lonr9yHXDBcmKG+3EV~PO`P&6(cA#C&DXA@K*^I(AtYIht}>~{F`c`$zl zb(jY=AtqQDZ|RPraVG~rW1|hQ&Ps#PP{$~<*U>)?qMW^{4Lr`C8NM|EWg$gB%b;Fo z2iav%Bj3PihM*)&1Y{w$j2Lk~)c?r)Y|$51X5LDRV1XL3Rx3Pk`Q)0jw zN`M3kt~3aJ<^f`}fCah6GY>)y2ID!{;MXvKWCr|8J~clEP`VTXCB#Axk=Jn%xpgpq zQIz}}uz?ShnIlY|!vT92?2d`ZN`^gUk5L&+pecv(T|n`EN)&pNBsf7;hoXr^!9g^U zrt9GK10*Ak%FZMB^dKQ5gPMS&d2Sf(gmLC4MY{~@NuZ*4*~82)L^z>|cU%+sIijyx zy_pM+ois!xUWjt2ip;c$B;aD7$AH}~pzO|~@362~Y}hFg<@F|+gim^|oXVFUk)r_Q zOa_^8(5T9Sh%^b|1z`dxFh&G*!2%Yx9VSc;GR;VM+Wlto1I(LpfDF5I_N67`?o!!nmMr~l*pw>`>XP8g6q!Vd7Q`Ap0C~T9-gX z<=AUj?vVLl3G8e4!D#i#G>uE|o&$`bhlvoCY%ZG&2!Ha`n#{WSNH6xNB2+YQA$1Xs z#t92bq(NBbM>^qXNFLM@^Jy+?nUj}5b|~70H;L1AwD;<1-N|5gQs5JIxLZ9f`a+o9 zRE{DCZJReV3_$EC#}Yi?ML4RQmFzH7jPBcfQDQ2BA`QG(Mn(TcvYdr-7 z)^n${_)l4nVj0Mol)6(&+v^FHevI58{Z=XW%Z0GMC_fM*AMMB#5OqHG#xu zTrOO6hdrf&pNqtcAbn&jm)$QvsV{?VRIF0O%B1ZoL>ej|y{=$ys8B#u&>8z3T2%>g zRdFKjQQK8IKC7f@C8=>$yR1}d7L{Yft02=Ps+3B(@G7gL>K|{bE*_QIim*XDU#fn1wo=QoKnit%Rsm4bA6PC1kTxcPivS{)`VOLkx)p%4)wwj3L$v_c zK{x~lO+>+fl(O3kAPn|HV+!l*X~wq*C>V`$z|o>IfyC{)MA~YoG|+ui$EF25LBk>Q zAlvQg`$MoaRB_XEll4vm7lj{aRc!>%e}HU*Z09Y5NzjPzAS)bP)q*Bh9DtIc!ohcW zV_=dBFvdaPnFsZivmJjjH1o`-oDBFlw~QYl4^zMzI48(ZT`(3}E>6CN0r6s}c(=)j zW26w83b2Q6ile|5&|~A4>u1;0WIzK2zXd?LLz~--feR*WN;sH@MZwxMBp4fVYD^`V zYW=eTs)vVyi(yw^wcaH9q8~jccT>ut z1co+OwXfr4-={{JdowgbD0t6(I3}WFp6;A2UAXA=e)>a4;8GRvU#=>#Q`hi{UaX1Mw_{*Z^k)W(hJ<_2GP1$V!^R&eV-AA@?mSditr~|Bqa^W$ z)&?LkW1KSo!8bB>_{D8Ti9yf_Jfx|=^=K5MK3rSe2(fIoDCzdajaT6yw@#4V;qCnq zeZ$3*sp?Q}3?kSAnqbtZtv*WfWw~~Ov~lRSG)38)Hl`PibYJhSec6+(N}V14c^?k9 zj~VY??+i!Lmf`B*7f}WD@as5O`}{z)IO=8wZHPJ$8ad=n;epjR&H9}nZIu8iEMlh@ z78=%jWE3+DJ68c|27< zJCBu~u8xeW^_^To3^AP`8-Fw=qT#f7s%X^LPcM3-(ZKS_Eb1Zzb3Am;bbR<|Av9t< zATqUMy6-I-HT(IKbbo&?c1b~_3AWQuuo&WYSo&r<#GEmL?qArAoX)xk%0f}S|2v&v zG@f-bV8*Z<{Gq?T;iJ^xfR_3K1MiALY=x#rxq#KQZRGT)V>lfeC}{emPCq3Wxln~Q za4@4@JfgM70D>eMMf}XL>VOynq&uaJU9iasx!au{ztyGdtzEf#f!cF%$ zX|Seezt!9<9K4%*skkqvXmDnxWNq6QoJpe1I{R0?TUzM_tN;WlhW6ygY=G&aOT^D2 z($A9{s60s`9U1yIBvL%cut%WR^XcUPL?`3?q3hPQUykoZBn05Xo~*)yHXPX%M_3m_Tyv3>>T z`*yqE%t(*}3a6+1T{lxy8ii2~#*{wV=Kc+}#sL$M8fALVeXb(r&eh!cQ7csa^c1bx z$oa;-Z>G+|9uVD!;J|l{Ze02|GJU7}=JK-9>x*plIR2dl9fBN3f7J!%RlQVYhtu;)%xf0!^&)xo-d)X==c5-n@X$Y!fIigGKeQFj?ocoUFJOfcJ_MWMbk{})uUv2-`f>9Bmy`A-j^D$lK z)tZU-;npkUNTr70jZ1i@Zgy?ezLm=WqfX7X6N{1uXGRFJ`qBG%I5*BrsiqzksHPIw zE2h@(@?0ws1h)y)s#$qX?4Y_O=iFJgD1*nVKwI6jm#8r2gt<+@Zh~nrJCUHmOBhCT zR2JuhPME%fKM)!>9|-Xwnb2yh+JQ^x3k5R|jQ-3B5*0O*S-L;5eM;>%Jf8#g?+=_i zPaFV{dU6y?JvRFLSk_J3Zhhj%y^JubP9hnPtVtHQ0$~?*3Kz0SS>U_K?(I4vE$p2i zC{crT0;p;-GC&tOC$tgfo}-HaX6kjgTsjW!c_q^iqE2B{D)Qt}Y5x;ktZAnWmX)ib zZeis18y0+r-%B1W-qhSZBm8Q=x9Nz=We!NQKxbX1tVJdJliUZfsYz9j27EtH;;PRj zg80zux5HYXP8l?2vnh_@Vx>h@j*lKY&-2-JU32>cI`2Y;2;Y!y$N4e7+K1ZWv31n` z=4sEaHivaP(T0E4W3#tNI>;jmkxpJ;A+*mrjS{FtGsEC-ZNM%`ey7@fenbV%yE*Yo zHk6Fu^pm_{V-fZ;XTr<0=K!nb;9{9Ej1#SPWAxW=zKp!>Cm)3TU6}OHFGr)SZ+d1g z&2p(x`Gma}Bt3DjRSbF&Rt*;g$NDel+GNBI>BkZ!I&IuM!XI}WxqEQH)V+obMAF1M zd4u*cs@r8VY_4&`h0f{R$JEmMQ+K0Kvf76+0Y+2#I_KDLC}F(Wtp*2aZL=+~Dh%3_ z*>r}aZ}aD{_4piSK|aPBrn5VxVZ2nvxYH$;={5h?qG9>BY^iS(GQ$l7*fW_f+;)rA zgQR9SBm8@FVD->5_sB0=tk+0dJldWiI@wNe{i#4UG0(gZI8Fhz=Pv}^0f{$)DGsZ~ zUr~?7`BgBjO!&1g52jXw*40H=+?Cot;n=hcZ3LdDd$&KfV$|ZM#a(KKyc08;*VK^! z1y*^_*H7R=<8$bk@Pl9~5uz6Tqrm{|c5HeC3oX{8)!qfKD+t9lUSyB9!~fM50y0A^ z10BJx2==R}5y>eCGylYN)mJhjje?ACi<_PNx&E6y3zGQOmk*6IN zO6zD%qk!7vGboP1x+H6vrn(x9Hr)6V_T-a^K!Mjlpo?72Cq4sD7=IBZzLhSStjf}1 z1U8hzp43@nnRsHE!5^;dHm-#VfWYtt8UiR8rMLP?z((H!1{p&Wd7prFh&Fmy(;@Cd z8ho4;Q#&-m>#frJRoI_zcnOF_X(}qfg-L+%@q8~EFF`=8HNi;UDE@-zc61bP2%vcq zq7o8h5i|y3P|t5idH1B|owON767iQPmV&SAx0FrkqSA}Mg}`54DPqE>9}8fCXQj?X zHZP$N?~(U}_My_J@#!~)(8N6OwKTqYZRlHrkOxnnppijZ6u=D4b2#ft5);}qM<6b} zIE7@J1r?^VzsZfyTvdXPnvHA*HW&>$maEOStEz^Zit&K zz;C8$wex{_PpaJAbC1KA<9Z73F6uA|$+o|>4s?3u2~AL<5QG}664Etn^v?H_Ig)dY z(dgN4`tn#7*cfVFX__xoQvGXvf0SecIFDG zL+{!G@4q)ynN1oT*hg8V=L!!@ttov>tUzzRR^aITqr?#wZB!i+>~)%u4I*)6?Hu-C zY-$)Cno1%s{21A3c6#-(UHajQMG2$HL0uZY>QQ=w+l~FHan4XlT~_erFLW6iQiBg- z2M38lp97(Z^I(SCXbAhudsJ324Do970p{dPA03PMjoY&Wc|*@WBJYx-!+sO#S{dm=@4%8eW$1(1O41oVxz?rK>S# z729-b3v1IbZ8Z)X(RMOvpr%Uu*rBG-chz9!c;XUvR1UtZ`!6ye;2r$D>uEyFwXV1biQ1XZ#gVM5&8Yi*QFNrkwp*XX>EA?L2nz? zsW51S!n|Cx-P||0P3UYtLQP}+#88l*A_5!tG4$magqhBSUosYWl^bU9CfLOW%)VlK zM}l~sHS{qMAE_Ns@=H#T81j$`y{;&JOWfSu21U=??7h;w;KYeL>@I!!QI#Rq+GwG; zCVDT$@Q73X%?$jHT8a2htpuLX@m|r?rf^xjiOM)?nyCduN+fdn@1-c^FG=g7pj0-2 z2ck_(u54ym>94~p>o^+-coj9qrUMRD-yVJoLKCYepfRG!3MUY}vB~v7rl9I|OLXJo zlj!j4W)L84zH}z5q#B-L4EY#-7KiP#xwj z^b}%ZE6g&q#l1j3w$G?rJVpK+Q-464Qi9HKY+YtSwDgp$=C-0Z31iEicn%wY9D%Z9 zWPiy7!nXm~M@(3+82UJb2@4gfgkI^%R0E0HOk`SG)(U~rtq-7A@=-o+QFNcAl-_Gh zc@xyLBAKuOMxycs0Z=z-C6il#@!vq}49LWUWVkj2VFx{M)cd{OZXO5%Tf|HpDq9z^ zgV+TTFJO}BrW^J_W*GoAx%|UOc~v>oxUR!qEegQ$YGvaeT!(2H>W;ygKohyLZPKYr z2;<8#Dwwkyc@e7whS4=C`g_`H=gSn7K|8iVI>#ls;;rcgB>Y?by}?!xyvuwr@EMb= zasGvs!D`z*U5aa4aocXJ^gRK?o+k9Sf>CdnVN4avT};D5yWz{AOXpQgHeOpyWSina z=+vyy{6OtT48~xYc(pf=??+-CzYfw{u&+S(KT%%6y;QlnQJ9L6_-} zg)k~$`k=hO@aiDUd2sMk+_5h4xC$v_lwSLyEyy)Z;t>CBx;Yx?oeB*9p=}nlX1tsV z|7Bw4LRY)aY3h%+7zGWj8$}Iq53wf_89U%yzHPtk39={_E_rw~K>@ADRqN?*I^low zSoV*7KPbcE_ov!#_uM#;_h27OG`~a_jhtSpy zM%auf%o^)BBpT?A7j6^ zlQ?=kXVkWO)UIRHest7fdGyBb(VMU_+_^DFp)n`e7_XNRt!WVY^MUKrY^@#+MO`OB^M$BXcJ;Fc8`mMZ8yzfNn z=wwVa&1~`{HE8PH34P-rB0VUk5i^z56q7S*lXEVdC}is>$W-eQQ#&7pL%cnQ(2 zInkC}ZJXz8+sb3#re~i&JJnut<)i#`i}Or34^v?xqCIE2_w#k?4^toY>>7e5lN0ST z(`JTp!avVWRSG$Lj5i-Nu)nyns|%z;{yr^*FFyE{b#w?w3D_Wrq%lSJ=Z|f6tiQ%j8e*V@XnMdO>}VTG+eScm{|KrrrqeC3RJCI1m@And>g^ zl@{+m5>JzmBsfk5ij}kOJ%h|vvGSw1(WfZUQnd0OJ&F)3Wh+dd2Zj;*hc+jYgs8IU zC)Rc3bLt-uq9B-Ax|6&j?$jEwK~N(nB=HwY*%xCDDpKcT>-Dot&F=2K_NyKMYi*#{ zlq!(S7#3V%zb{G|j;Rl2Yq$o}D=`!9fmBNaGM+(dJ7{5xnCq(jnTDh77q|Z=5_xdw zzs9LdxQSP0CU5R1Y1v}6zXA**7{8rn^IuS-Qiy&g7U{~Z-XppEve%uZTmK_g>lYS( z#QxHp7^`DTz{Wysk6;qt==}8K_jZ!V@U4^uw5$Zp>f;8 zki^s|w*0U}^R8FBGsydNXUv||Fiq~-S?b#a+fm>CA)SVZ!K{)XKL}Z=2-oC~MHe*p z>)Miu4EkLyhA^j~2?4BaY|F6!X$V@K42JTl#X$d_NDy84P8@;OkCHc-@gl&<@cEGp zk~(!Qo6C?I>s>c`2tCuzpho$1(@^m+OPxpwsxj3U*pcN52Wu-pX~rKvVZAK){c1f| zO0D&YA~DrYnPk!X3&TB(oDG2mdCA22W1GOPm4!>_{Zmd>(j?OlS{6pUv39rMZ3W6%;H!zm2vGn3x|EmC%#Cc zOAQ}C5WL$A)q7JDYA&6GZhB%#BP{V)!K|$TTWc5q%P)ZHKs#lPGLK)0Ff;=7(si&7*()vmE`lw{nOQ4!Wh1yM_WVTT+nvzm<2^# z5^h6YB7*nlao>xOU{u%gQ+qNKcp+L`+|{}q5=?Z-G%W}ErT1SP+5{!{nHVbY;f#lh z-%bx>INnF4U)Oggqk13nBHp|-ff9Sok#V95su~E{f-&1dDDU0sFE_3n7oaJ$SpT$R z+k|-x#$JX7#w`kO1Wx^GRn(7DGc=Uo{UJ25$mm%0)+bt?I`ry;?r1q-wpPKLx6Bs+@lH5LeoJ}&&r>`E8Hz94~vcG6?vk|;E zyWwd3&+z0L@$9d;E!F{^dLvD1DF_HJkLN{%))g374q*6)Q z`Q>xQJ(_sM z8I{alQFHq(53p3{dmR+sTj|6L5{HCt5s2a8!6sdsaZ;LVli~PB`qgK9Iz!1EKaY-n z%j_-I=oN?u-5?HDTWoqKeQ`L0;fU_p$I1f|-*eqx&Hl3io4{BMbV(A~)_+ZYd?xkz zW$K@6&kX1R^XS&*3J+oIGr6aGa@)~aOWOnD_x`EeTpq0V-aGlH8lT(wDg3xwum*nI zLe$oDad1~adqN(LCSZ+$Cz1#c!ZB6z-#-U#)kl?MDePmol3Dx*xl%ap3oc_|=?dIw zd}T4*=|U}~_NgL6zqm7{W)*m{WLws2vi`4EU7M}|{(oNeSKhjO6Q$q0h31ANJO!06 z2+NIZtRLkU!~D{|>Emro75N`|mBsG*I{06Dm5BDo=9ThKuoRSqtUX&Q_dR$f@Z`bG zyQRmB-HP80V`&YSOC-O|nAf;*-U!s?87leZp-GioYO)3teMcRqpXLRdvbhVdt!Q-yCU3Vld%r9QNi^XJ|I~wh#{>3tAQ^GuQyg)|!9(mMu2>WvmZIN!h+6&kM;PsJr>qbi&+hR6n6cX>txgUa zYkqfJCH&<)tJ&oeKHf}E*u(Mf2&1LrJJj6P%QX~3Uj-UEC%y9Vnwg2(49fl3*gSDv zIPOKyYx2TeosWzRF9^ErDNT>ooCJ;sh>VBbr|Ct)zlB-5zA=91gwJi)8N`n}5}0%9 z9}jFA-}@tV(A?_mH_a;MX#Unb#C6s}kPN567qnVUN>1CBpU$OQ|b5EPhjk&E`J*$$K=?#r6`GY_;B)C z7u6>bt;*cA1;4n>lAuOJg&fEK(9)y}BLHa=l*v094N^I~o#~Wp9hg;IlYAxU+4xHL z{4^D0?2|Q7I|fQQ&0%0aLLp<&LV~U+rjKAbKzT%m7f!~OdL|2ro424R#(uqfmhSiq zVB!wZQ4*a4$lxwux-pQQSyfgb{WcxZCPcxEFRF%@ZUd$(oR{>4cKd7MGg3c5+?t!bxAn2GH7eBx ztH~X*3E)zFRCpq4+&XChg8dLv*5Z})qEZYUD~*W;^&59e+z#6n0rn>Hg02S`RR_GG z!BM@ma!4qLany8p7+i{sSx264nV2e~y1ci_lk2$DfZ4Giu^PU|L%f(|9;iviAD5+% zH@9f1%U4e!o)FO8nvMRPon+zonoKhumYkPG@OY4 z2q-Nyk>B(5E)y?-t2eZjy!cdC%Oa;bjSFq#wV6mAUtM8Sp~ZLQ2k1EW#)JTEmgKI9 zysKL@_3`uG$^j^=$$qMCBOjCQ=GTAz$_O!(YgyF2y(_e8N;el~ZE;4r!KUB;^yT07 zxcIj;Am&W6C-K@+DT`{BN9Qy)bnj)wYE0};ji6k=tQ;#OwWaP$k<$1Ik`rE24c6S= zQ0`~~Axs1huCf^e9p3rc#e4>B&X<&xHim}~VRxO|iRF-xtKpO-zsK@`?jr9obddn_ zr13FvS@yIHe$$07ZzM%Fwe$C4V$~cKyNU)&3VI4g# z;{*Nt`lb$dTaFATe{!M=W!z!A$KmQva+ercF8LNp;Qjsae&NbX=HK%o{9%kD^o8SJ zvszV1x`-9*xoN9Qb$I@bh<>BIto4rsc#T1riez{CkSYn*K|hj%2M1B5h;sqN2rd;n zN*ls_EW)Xw6|9@c$e!gzlK6+j5~aZ1mkYi-sl0q=5&XiJAEq6lM7kZd#gN!#{ltU| zRq--WfpiUfZ}D_Vk%@((wUn6PsHN28$2##RPvWqMwnL|jAp}iTI&p$Wx)>=EYTY~^ z*_l|vz*eHN&`b;&&}Sk{MJcWhEn6Jf26cZ-21PgHv!3pAC${{leZNUV)>A}V66!I& z5t=p-R2Ggt)Z_=RUK`rfmpUAw}H?`UI%yy>#q4MIu`jygJZ^u=8_=`hl zywb*)_;q)|iz9D!<@YNc*ZsXOj)T{`0rrqoB(r;lNSe55u*g-$coF42yz=Jy0@@CT z?j0tJH9t)#V0vzvnfg60){U|OXZiBn&ZQfUZ~8jjRGNKZSDL5;f7Dw?MA6)^!TwVA zX_Ax~j{6~Zqe%2nAf0z*>>$J24}ZKM-s>-z}*BU zh+wreM^TA_jq8mE>sAmZE3%=kW8`lU2DCKq&D?#-L4P2sSD#dcbk&O3)kjvDW~b#f*#Sl&)|MP%dJV?R+au@k&Mxln~zeT@gr)tz9<;|mLeuEw4RoOyKrtK z-=77U$1ztlewUPgk!8t^%a4WKE(`oe%jwhITh@7$9OtsnKp9aKef5cl^);<7cMrJ- zk5bL;?i8Omk4!QlSf6$0cN|*!-2XAz#RPId!Y(MKcXc zzpd&-O=$Ca(ELW6p9bGN)8{t)1}jCi(j&S)W)G?CSt)KFy5)5B1tS^8I*oin8{YTA zK%vPv0oFsogs!ZpjEfmX^lPey01aTtVn=8+;_Y~H9os|c zv;h04u1B{SGd_ANHDP!9>)Os?(mP*0?|j|SAgnh_B=n^JpyV|F>QT+}M_=tjb^5Zn zowc_tQjx5*S#NSDXjp-}zU6a%e63iA(LpxrOb1rR4|ih>Uxe){r=n2u6oJQZw}nM1A@CdOZ6UV-qpn0pzL&{ zDJQQrSGKRg@?CU;3RjdYo}WI!n~t%8mej_9-@~V-ez>r~`6a36Oa8!t@v*^VFZZ;N z>hY=__DRXKpkNY+Ty+3(y5V>QnA;_gQy?snc*v?c(A^gRl70LSs=>0 zF)COfI;t@`K_Di%F(z9ewzx62Qs90=W0oLU@Z`6!p~ldb#`uLsW8UhDai80to$zJ; zgyqJE{{(92w;Oiqohf->HD&!sw-dO1djCE5IH~fw!7cXnATg$GS zc!RxjQ);$viZqRVGC#7?JKaw^swE>_4%IHa#OY% zcQ&Qp{Y2kP!)nwGen%~lKTl35CTf?S*2k}sAK{k%*vz|Vh`*HFw?VMFL`kSL*{5po zdzqwAZEC|A$fvYJsQkxx;($=aTovCoWbxXaoaD#VCL$GjTR7+!ma8q(iQ?_t(aZ7Wha7#l= zONVglKuhaO;kL<^wgut#wSzLo5f}mA4X$L?Y$jhh2<^-Ta3=a;?wq zCj*0t1Mb+-A+5!C+5=g^Tcr49qE4!af1yZU6m&YhO~0yD zH@9u3rcK`!r4S>!$cI$k8B=N-Q`;GnuKR4XA@cHi9Dt(~eK8*FfaJ6m^QHD}y;S$K z?M=4!2&d?18Ma&cNEOi7&=g%e$M#MJ`dA%J2qyvYs9TM9Dry{vIGXgwPW(V8v`qqn zfkS1-uT2BPHiG8e$G*60fBw;~Pu#k>h6M(X*q{COKLB#QTrS?01)MRDwxHlG}kSHIbrRW6xU)R{4Pv`Ju@DW%9uAuqm-`J5e263rj zp%B20OgvrC&}AMGHGZuw2=GpWZJ_rMf}Iq{hkzM%%UQ=s@Ui+%kS@@wamyv|p#O(X zwmpe?0Jix8|2BlcJTbe@P>Av=3EkPTVeO%=RM)Pi%4VYIpD|X2JAYq-2&y%q zacfk1-4U6mh(C!71A*ho1YA213C|BKQ$KE$#$-1-94}j;Y|@}E33=bqZ{E-=dx@?n zFfZ&>XBa0;%$hqAN<`Mlg-q(3JY!!!n^8Pwa)A;H@eHxlpr1>9fk8XsRD1JrfwC5`S_;h&ioK z7IXT8IjB5_sA#DL5rBka}M@vR4x-7@*vTQ5O86RC1xzbg91BXEKEm z7)FZQ_Q`vOu$O9?Z(r&(wJGk5S?B>zEh6PlG0Le&u-iM0Hi%Muir%4&dZ(7o6vR{n zB{GOG9)p;-hbzD8{qh&Rn6G91y#F>aYx1*gP&`7540oHJ2&KM~?SrUwB?69DMgg)m zx2$#Vg-jiydo4)0OIH0O#HRcZe1soWE0s~QLCFY45-N|#SIC+&1u8RND$R`v<1tp2 zk%VLY%3~Mm)8T51GD=K1anF8vEChn;G$Ot?dfyCULQ>Q;tD!h=dy0DlYa9qDuSr1pLl|y}*RCqe( zt|uC4G#Gp_a4#oZ(MUlLKA0%;E2&5hSsQ73GG_V{!Dxm+s3_=CUz_NmMiV0J%H@{T z{NFiiEA%F@?LkCT?tPxb<75Ug?kGTu4B%SD@S35(N8oPOLse!QP&`B>^$09Ew!sgm z*IfWeP#mOUbrv$ZiOy}s$spvP&W^Ep23zEc7qOLipd=d0LT%nc7z7zf*w7; zk-^5}yNrJZOO(~G}_4(@Zfc-W^s7q{!=qav~TbEoxm;M(T0ts>eWHO`M1%Btd{CP=t zxF|mboDTKT0W*|ifc}HYpU?M50Uq-B>+}C+Nrt~j{f+7T4;a2*DKP}BDmUW$bpnU# zSN^n!AX}e4c<$hz(|R+e*SO@1gp3xlb?8)~6x+fsw9$M2 z@R$`jNH|ncgdHb7Jw}}>Vuc)0JOzXMFuRnf3L`b2jb}MT|HcVLzki4&u=?jnjbbhY z$w&rns}X#2z(mzO9}rLaaq(~Dy;u^Yod+Ruc8Cb5=3sjY80-b zAN26xnCA43j$8!(-=1HNr$=ydE3ijA}z>&Cm?4#3T8e&lS$U_O2AwvcD zh*~y8aMXdBOOr;rLWMt$>yuE}rcFl~ww-XCoXcnoZQ68f5S(eM|B55uwJWvd*ZJ@^XT`t zgxckP3lw$2Ah&la=KZ@AWWsw;5ZZBWi>M7djLGg8*0SsjQd7`c-8y9_ZJzg?~Kb!wU2CaB%!)o9Dsj zl0jy^+8U#D!G|**C2@&6B;2eYwum}~@Y~bMZCF-sfLaGju0*TMLo!=x$a5jsrl6J2 zyQEJZI1)>{qkl)F(|Aw3bYXRFLVc81(pVgp8KPMv7tt-h@rRe%tQ?B_%9e1R=bim^ zk2V!h{<_4M$N(?wdW?l4w^riEr94r_zu!faQV4QwJG4h?)A|I=z``EOq@oZy#vDiO*asfpHKi)gm;JkGoFVJt$5=-}MvS1z*|K8Xa z3mkkcG$!}M_DAk}t;pW?>d^0T!R`uSC*|LXgEdM#^)dFjsi$SMu=0NRqG5Bow` zftv`Fu9k)8w;lv_`shG1 zQL{-4*6(~9&bkfGORmgK4uPl|U8^|eOL3aaZny1u4=#-h>LqGop1S^RWpkB}MhVm` zJT2dR`Ibp<7V{W1d9@up|GWp@Pd{dy_w>Gsfmqk|&=082@mUyb8?lDKO>d#)*js4% zJ{s-zjyfe@1i#X5CZNJAY%U`lFsVtunHsWsmK~s3y=_SUOuY`O#BdwgVn%YC9t4x} zE)~Eq*fCIylmx{y?sqW*(@C3VDQ1PA$TE7Q>ezjN)^SsjbzGLFZgR#*xh>f*x2!jw zNhxv25yZ4SD!FQ`6k4h|TQ-e)C`b_}IRa4d06Jp?ySD$`PXkIfD3m*9xR?_YBi3wL z+_HmYPCqdA4C~72tc8>)YOhiLT(6s$sVe}E>ZcPF=ZCEXW}BK8f;%PfjI`c(M~ne{%ifRvB6nJi-fnVmDj^qp-+xsXx$QH}pcjN&au z7lv=qmb1Nm)?F#eGWs*+GINmJsGYIR(RTB(z8>Wh^BlEbo3wxSC=ck9ax}VvN$tt` z=5EF576hE~dy|gVPAHMw(P-NXAxg`uZgOE)4c9natMl)&N2%jAq*A4%?*Eky%?_Jz zgzuq65}44cl?(8V5$MNcSFDq#Xh+eDHZ@i$uzDWs|~zqVRTXXMmM6}hX> zl@a^#99Bq!GmX1hsiN#}(&O_oDV8E6`GH}z`ZX%=KlNm9!ENYmJ5p{HgioQ;HfIva zOy1x8uUnyQ%v&={FD`E=g;~X;BNX{P;lB^W=?eWMG1LX#-jnZTV;G1HWwVtDq9-w%YcJ^dewzO(@x=vfDQPS#kb4#Wyu>1e4TIsT zSoOhfKOy}H0f~2iTGHK8{O%NV--)bX>_>m6;K~na&F9~Wy9?)oqAtp}+F@1i^8Z?f_|M9IJb{i zkVA$Nz#xBD5mFa_YVub9(CLnthV3n7MTv|RX>lRhxyPyQi$X-k{`K`W|0QnwRmP@k zJb)ZBsrsM0da!!mm9&}fux;7uZi9TxWj<~RY;!}SN2C1>& z?&N=ensBvfL$xd0$*>StDM|xJ?HYiuRSf@jVg4#@3rFPK%z5}qYRVU$#6dUzOT2Br zR{iZsyhxYuhQhD(sZ^P(5rUKCdvElhW^Sh^<(Hioc(psKi8wv$)`Q?ptL8ue zlmslhiX`RjH*YNvK4kG?S#c8nZ*ll&Q(2r08Tr=@g|@ z;mB?GHaeXpS2c5E&2G0#Px`xOs+6eC12m3T>ISCa&&je&^c=%@u0}3>&P`h{+@mHQ#{FpyE+MV1ls}K4EuWXN`8(60IT>3a)MxIW9u2)*4K$@Tc!4fXS&?{+j!3SI6<6A+vSR%w$ zWQ++Y5|qdsXddl|Lbr@Aayf7nrO7&>*f?G=bn(q*v#N6c(UYd4Q03BV$S-W6sj2e|2dPNoO7& zAu)1k#UWuaB4b6xpmjIG{869j!&Qs#eMb0I&3AMrZ&xe}!n8di<(c~7k)68u%e!a2 zmU*&jcKvsw`;-FS8VB`T;Y(!i$n@)7^jJ+Hti5DyWf>If3w0m$+w2z@#=aFAkySiK zs5873Gw*jg?BROB;}Fguqj3Hu!OcKJ)`E+{H0{DJyimNu%DL9cDY9QKY08!@LVo)# zoC)=b{JTA5z_p}LX8op5C=XGq?xcMcNgs zf*5QX`y8Z-ERGRo<*QDi*JqSf3<+Dpj8S*D^PO2PfPd8p{k!%ySF+IqK18niG;1cW z`nkm5O!q-tNdoo+#h$Nv?_8X@=1Ehsw)@#cDKZUk;ay>cTSSQ{M;1EBxEmFBl%+wR z*+ryrYrnhDfMqCyDPE63?=FKuwXFV3p=DVuFz^rfyLbZ`BWr%}*GOAT~yiWwml_Jo_U9oe zedc4b3i3bWEL+H2-PWu%s5kb>s?cl*4HyaV;F$))+5lW??7{jvKo3xOR>K~{nHw}1 zhfs{hjSp6A=njyKP&n*S6~i!^c@IZI_lvb|#Cp6WoF3Pl35OaF|*yEX5{)E*BNM8>{v=*g+NjKMi*8EsDKSQt#@-Vg>tSSJs^CfqX?sm@+?#8qSVmgpd>U2wT z1E+hHQbB8B(RnPRF`17CVH`M`VKkf47A#7N=_`ooJemSffI0oj{w(iW z@P3`81C73WLNuHUhf_0t=OcwtjuBWKwdt)KN1IVD^4 zIKtk6CEo2_9TZMkHNw7!W>Xmfce!z>1ank0mP+5k&ed#DP~x5F{_`!?m*|&-RY2($ zC;psyL2Wv6346jl4Zi{tpi(w*_voIERA6*>8QsPp;cg_X-szGb!$}#>f zIyt}_`>0fA7nUGgDPtt~63sERb@v)aQ-v1!Tr6(3S*WjRZMKhc(Ig49dt{)yWF2t3 zF!|lThT~5x=LVW(=ov=>k^MEO_NtwewAo5D2-Z=}w$}=-*kU^$VY@H)gzNrbzGhwI zIQ%Bme}1dp_?|`;vBF+Si zBy(1L;Wj2~MtY2@F$LNV*M;jvBIt1MqDw^q8*e>3!GOpjFKeNq6^D#-Nt)#jyg;P# zN`Jd@kBOIjxJPUkjkjcK8lP)sC1(x6HHgL8-J|Whqw`XN6I#mC0}#~X97NX8fggO_ zLUyDZ@y~JiLZH;Qn+k3KKRIXFy9eWp-Os8@QPl{m|5#SHU_YAuLqG5fCJqP~b5te4 znm|fFni);^lxsYg?<uCkW*kMisqf*1h5-c#hUBvj4<#yGI zF}9~;k#y?N@-8=(1xX!W`wtx4aJqEv4tTqRngr+Od4Dy#R z;^U*pL*d~i)j_36qMz(|%N5nXtUkk!y>|?w*yT2x;1R^AMC>%C-ez!|!ahiYRU6=h znr&#L{U&iG)iE0Mqwqil@#Gi&;EGMctq}jt0|X7_-m2dqmL+Lw@YBz}Q%hUdU%3AHv4+H!5y?tgeEIG)TL1E({iW-#$NRn{nFx%elE)lX zLiuWH7NcJU&2}rygDR#laqQ zw@~By?!BYtdA>=}>}u)^qkO(=$95{=WoUDCO$^6}2yIVh>x+N;&uh|LIX;fmn_UK& zRr9xc8NU*3=>Ga47?~bO{oS#h;LVRKv{I)XR^sDc(;rf~wvBGj*JY|1a_#T?13wHs zAd~O-_$=b^{fi9w&d)F6|GW81rqBhb98+peN1eNXTz{4d|6a@fvdHDa)ax7=Sb z!zj<$g=0`pxE$(dKiz!i8~^DC33Z6(rEhcu@`QCh=Tj{RLJZS>L<=4m$6I@jirt~M z6#b&R(t7n?;rtUxZiBY#j~$%^eG1z6M+Q&o05_(c^tpSE%!Rg#Q>_!O$SccrBEqTS zjw&_Z+7ITCuXGyFakuR7*QbQE>igvIPrm0za(HB1ZD@g$t>~52$56_!;cnJ|A;+vH7N}|^K?1WJo633 zXX9hx zJT@!7dJj;fRukAl1EqAK0h2S0#in2)ug5|ZRVa}k#?8wBxKEKF#Oa?RA;hae)&&xL z-NbjVlytTbsHE)Pt&F(V2cGzTYd)|6BNa7D@Y>WM(36*pyLNY-?GD;Jt5^dICOI<# zduDHC(%uC%vi9zQWE~XGHqeAsJor|;z z_n+v|Tk|I}1@Jt@m;+2HxK5BfOpCj*?2ug^W?Ex8(!2r3H69&tr4|`oCw} z3->9skTp}Nd7{u6{wJAXv%;NoVXsN)Tqi_)%%TFI6cKr|%n*rqfV&6S^C(9=H;!1+ zg=Ix78%oSy_SD_@2CrD$F^PO@?UEI_W`A!!a^3kMMbw6Sj!D!z?A{O2q(e+ffArD=k>B!8=tivk$0%5K%-8fcPBB~e+5Q!6M;mc^e!;+E zV|N~9M8<9h2EB~gtI09F87tQ6z+3MY9unNRo%8)4LnjN$1zC8? z-zTo1J29uDkS9OY$9dGBpI6FD#Gf^)zxnfdK<`!j)mtM8)r(I8C-IkCckcbU-U)az zeEp*HO~QXKYI9!he#kjdIJ+F9c=hKL_Ua*i@#3}>^;rTnZAk+9DUZDJqKf|!Pz8Yr z${&d3#u4^af~iW?M;~;ezRNrzxL|xmxdC-OW@?n$8q4d=+iag9Z-PiNIpPFM2auW|)s~I{|CtCAz zQqa%0jzaV`2`#$Q_jz~-GX!7$hYyuV+B}3YnG5RD>UL+sBe=o6sZ%NkOI|DgRsZ@& zh*Y|tmle2Ej!*WPO7Sp=|0+Z z961})N~ArxX7ttcMhd!jZ_H7U!0LYyf+LDG=aDKqbrKIrj6G7lSaqv$P1S1{qh`(rir4tkgFQU6>O8Pm{^#6qViw!&Ri zB7G_IbC75fwqA&YwZw9W0$=wNQRhJ4qF9g~Dk1Vf(159BsdP4?;XS?2*s{X2;^l}& zmE&fLjMzmCK~cTLRkL|c`mLwSAkk&iV)=yhZIfYSi&cBe-Olv4ZT^w1j>j!FuSnOr z(j(hE#aiv&q_6e0M79S8wK{wuT_2o{?1*S@bvj93A3liej6ZI5!IN&_NTa&2Vr_0z z85`rmQQetAZ5}YPchiPZJ%#OUUJ@Da=KQ02D~{WI)XCm2rbqSFiM9LP`OgNtC+gA^ z)E>}mO=LUG$kD1Xq)J?x(g63>Ie**+HX zsJV|I(ILI`{l0LvL3}K|OI1esX?h84JhUVB&3`3(=N_Er#2DK!-p@x3d>Xx6;!dl| z&L0bZikH|#R;; znY;3;79crp%kHJ=Xo75C%HTa33Z=_K;Q8r^(qeZr=v^%02tK*^>*!0&X(BS8D>W(I zk&(ZGNcA`M6rTOhWm0g};BqpOWO_}*Gofu;HT$$z1;t+B!#l)C#sS7x~z_#6cvtfb&I} zMjx77wn6H#bb^n4sT&0*iimozoO9NbOn%Rofu*LElJ$<;5${y)Lifl;A`s89k9!_| zx$yG`*zF*|c@p~19HM-}^Uhd8^=^0@XgZu+;m&tGnRwHNfB&M{5A8!R{airT_o?|k z10rhiyO(e2!6w_z$r-P+%43-wUulfYXM-2{=$o8jb^53$hg_kB&?jq1oJIEC(O*Yu zYUdgyQym10H{bOh-qhi;D_|cZiLTZzFH`&@J}osZr3wI~rIF)qcvoW@p&_3jCw@RI z1n&etXIOsfJ%fy|t&Z|WyKQ?>K&hQh0jQu9;0xxN285Go6PV8*xR-=0ulwddWlfL_ zWhzBmjH2_=8F4DGcn`l}ZO)il-D5XTP#RBLAZFf*cOA=q_E-*>W!cnrl%Ep#)DTyjfFB;(;Ew`R}%gCLTxcUDI>F!H_XsL@{u^eIl2IDkMu z`ww$e=DKqcSCW-)(wnBR+-nAiYh0~H$}|C4*=9Hk7f;}HR-=Ai^RKKBVn4EXNt8kk zWpKgJ9>Nhx-&zfdS5TiE{-Mx*(K@eJe$RvR zpZQ|l>8m;@<2~;H>l|Y@q6Ixtb-!E}u0mIInB6-Ej>C@0-<&qETN^L&UW#8^r|n6T+nHiArZcE&ygBLX;%1m8Y|uS@UP7D{3w!iI{{@V>P#AxMDrSL&bh<{yRi{FMCBr7ZohG4ooFzhkn=iiwO*MH`6?~_4W{F14vX-U@2T#Wr)2vA zB)&DY`?>O+q2N7c=dV?XU#xS->+9moRGrSjy^PM=l0>VraP24_n-HfC0Y1nn^Rxnh z*Y(BVqCmnf11=^FRo?}JjsTcxa$Uv&a=O-2?yYfHUkh5MJ-f?EQlBvzE#Umdh(8ESW6 zEx$7o2@bf#h8k!wSRCB6ANyOKAFbq_%9Kj$I)K9t zg69gStZi?%6Sm$K_pa)m33n**wdH$iMr#|rKy;gUb+Nrx*t*fB3;@V7xbaIo+w^VK z2c2n`CNzhp-=SvgWW7<_CZ|@a@;nX=r~KeW)A~zui6ZSotZDFNFBg5Uj*&bagUPIA zy9S%?4QXF(o&Hx(V`8tqyC39)MfzmO@cjY-`YUz)M)cj!dCe^x)K~-heLl!e(JP87 zo3Xs^Fk$Q9=+h@AF!>8L_04!1AY(YcGq6u@pncdU^7?7J_S5~LUX}8vY07e{hyjKG zb5{I3h?rRP;{oZkA(wRV6w!a((Pf7Nq~g6D>AAIw5{2g_TBY_*2`3p*Zs zP}){9vvnBKjTkDt=xc3#Zr|5$Y}EU4+&KC}KVJBG=!e0gIISdyVNaT8&ku(UFWM?U zJoi-Y`t^QTfK0da@VV9N7mg9yZ^&L66uemZuixPH@Gqt3OJq++91Q2#UY@*`PCk5Y z7pKdqJPen826uRw+d6Q1_)0|PWthkdhDbb8i0ygZVgGXB5dJkzfDSkP;T4PLt12V& zcx4=kr~!s-kYa8`xYvqB+31f*H*Am zK{QjXEDr6>_^(FQ9p&iA$F(YKsEx+;0&R3N$Bo!+s$Y-aIkMIypRi<~pf#GX$(*oj zn{b$$a0+D7qb45QBws+0p+lgDdlP;~R%pq|ppTR2s>#s6yVaYMkw@g!sL8OlDb|U} zD95Rg;VJZyrJmW;cnBet>y(e^bcPBqMHk@$j-uI2h};r*j-z~A%xG*zx*kHFTt!>6 zd)WvLf8*L=c!B7VN3eG4>i}J4a z5+me&F*hw^k$*-_)^o(eEJ?8pc(Nsfcd3)#wa`ko#1B?e9)f25w}{tqCH`EK!E+S- zsOiW|GM_D$yhM)oxH(;|*M=C-SL(TVDImCuDhHgzRDMp?k{_mi8y!TK%w~$kq;u8mvmQvqQsSZ0*hW!A(tU!$Q8&lvoOX7 zjD}mZcTA09`-}PT&lDsoUJZ+hTFoc|8Zfaoowx%9`K=!7$e~ z*fX8r*`OV(o;?k}AR`2@2C_gd(VY@K6WS_q-ElAt+|X%{_hBo5*rwfrhyB@_Fp>Y@ z+rSMLTrCa3cAebq-6`?^0;4e2*Pz#Qw%+YM;01o*j*#GnlHd3u+)2<12F?XNlMC^H z3$kEq6<*oY0^k$5;0`VgyA~GK1qlX!`c) zxS?j7o~Ml0qQrOqj1$HRs%{M-hhj|~9NDlB+Q90#L1A#>=_$w7v+xG4&`YYB@exY z0Ox=VUm+a*o`ms`m+>5O?cfcJ=zITg@fkl4fc6jJKJMl26817Gkj zuMgh<^*^2eBl3_3xv=mo9)Nh54~nJ$7~%07|CR}=8RuRY8P9QciVgXIhWWth65(G^ z4-Zi=0A-(qKRbg8o^)|9=9L^>YR|L4sE~*+`$S65E;iGe8->s|0fyI&<3Kh58+S-qHzyV z022EU4Qy~5_pk#5PYjU-v?0ZEd9K(1t2 z0NA~i2+Ua<;6@*-e+pdH+Y{rNJ0Jo;U@Ir!&pu@W1lYu>ljlke+0+FE@hqJHLiHq3 zP{`9|Jv#p^FoVYu0ycPI21G^o56d}f0|qEDhi*WNbGim_^ymhkqyQk#x*PIO1vYt6 z&R&HQPgei}jP#unz$l)le*_41^a)fbQKcWp-c!4P**zd{=X-r z`UpRo?BGuT0-h@b1arz^z&r5l`{%Z12Ef3aeTKO&FPHAIk2&T3F>Zj$CKK@=0WNW8 z0L|!0g%Icl$V3~X_~Vfgeq0;itz_O*Y$f^G!J8lygox>$LMuJoD6ZPd@wf^Upo`5mZn(UCL-p-r9jqEN12@ zN2U}bkf}NCCaY9A?Rbjd4}N(1qn&!*7(k|Y63Hb$0Sry&wNCel;GuYKnSw_D0d71i zKSQla6_|_~{OD4Ud>ufbbRvjAAQzP)K#VI;RFPN%=aI*dAZ}#o2$ZtT_6QLbKm-<8 zW)amsEkTlrCMfm^XNrF!z!A0(6#xbv2L5=;yLH>OcDe858lVnY8g#b^GC1)Hm~_yS zCybTOqUj%(+z}v?r!d^ z+-I2}l=AhXi7Vdt=;r=Wx*3+9<}U&jvIz%0tv_-p;dUvGZp4`iV1^$5Pa^Oa%RL&5 z8y%mm`B3ej?Nx6%{>H+`lMn5Sxmp468b$-e`WQfPH3c|e7m5FnXP2u8S-9M;9e)^gg=H8i&aR#+{E`Z}GLI<2#3!0r3WYVb1089Q1tw z)qZ>KyZ8Qk@WU5>{5FFbG#EGsR!XAt}Q+lC7jGZ6Jdg4iueX)y;-@Qy&2HGXNtrDj(u7gnb;R zl)GWlS8#NV>-ZH&6nq0Byc_@=2gS)02>=Vq%!f4Qu%@iYVHf4VgFN!!iiEK)ZN|i8 z!?FP$H!Ms>F8X1@$Z4Zd&7_t9BwjWiRxah;a6d5;fJ~bI5xpx)lbY5fUqKCeP=qE_ zp$iS)5q!aqVEn*cZkiZB5+fRBtb-c;Q;+)Q*AA=M4}+%wR;JX$(Mt>jT;O^|9xzhD zLz%QY1h7Ib*1?Yei40e~qR9b2(lZnxLqu*^M?DJRigw@)S?ZI=9hx=5Ln);JYv=|8 zgOt5cw2&mBP+_gqM9ANLqyb$x6+EIKA7iw#m1EeHEXP{bD1c-yy<>@Gc<~{}S@9#m z6U@lAcn^i31|*EQoqXZ|ofhCj6gOF;UvVU#Q{2%z%kT}1#!@W%$b~ohNUIshK!!2M z6$9sJk}7v0SmdDX6!w8+1RDvt7`2vaXjLm{iFi!^*#1-iA6NrM+5(cmf-<#xfDvnR zxDpg#!Q^jFeW$*5Hv(aS&TKnK6&$A&TG2R_u}h-*AhCx`0mPH*W`91Un6RQgf} zqW~@7b?_|hAlXo$nlKCGLL80whnWMpCb_WxP+NgeA&#sypfH6eUBe)NBgP@z%}4?P z^JoSG8q@$#x~|XT2*O7;bIOm5wiyjlfFr`uqRJ6=4|)ZjEVXDum{`Umj6#iV&an=6 z1OSfSsE1laMx@MS0y>LnZhR&qVOKjL7>~dJp$+{HLuK7qD)DZ?zV-z*TRa^5G zliOyi$h8SOQK1i==u27+X$Q!~F9dhC!jUc6qy_@B5kTh9*<{oZdj>pw!`CfJPcozs z(GUKCf@yR@E{FS}le<#^qHyj?ys=t=hk@@}?AuCC85aSjAb>S+qdjUvcd#Jv400@N zblsrgfRmSPX@5im=kN$Pc?8bPxI%IN?~Luw#{G{UG}E5O6Je^KD z0b9_Hc_cAi@sLI;35#*qSKP*!OIWCVI8FThaJ8)g$FPrOasctEo@+rx&1N%p8o~tnGq^A z4G3@z@H{oZm=9Ty!4ZnuG{UYZvQ%mb1lh2j128e;e@vZi1Gt2`)^rwn#DV~JNNO`1 zS(AMb!whR^NAKRVt``8q$)q>`J?eu+08GTn25XqdI0i73;vawSk978H=`U@nk^l7H zNIl5;wTv-9KlQr;F7XYr8NT>ikk?3?bGeZ+DU8AD9e8^#9JvkaX@EF5hgw*GXSjzx zz(7LVlzkY7DR=>9xQWR4n*E~^gX6#pjDrxw4|SLW2LO^r@Go_MgAb4lU4Stj`JcJz zy!G)R*7=$-D6d~JFdT`Hy}JakpbK|X0(xiK^ZK^X@w5S$Yb2tkntL68(@ z>9PCCA0O+wr}!X2nFqlC$(1F$iUI(kjOa5y%m-=^t}Ie6YseM4v!M17022}vdZ-0M z12bgl8D&BuW%7_@nuin#!~lwgIs+5}hyy7S6nLNmxln-rF~wR400E#yL2(CPbR7Xu zfRqwOuOb@`;1!72#5Q9FQ{07{KtoS+tmPR1gJ7U|SOyVcB9C|tCG4wd;6r%e0_$6q z1;7Z1$OZVwMJbY&6dC|yTpwRt2`J*jaZn3y{049oM`)8R`(wcROPFF5M14fUV;TVZ z=pZj)NOrhK-TFp;2uI#&IikA@9fL8(DT)cyE2U5Zfy60lXfzX&#ee)EdJsE^NQz|) z#tzy?gA)KHcm_fL89|1jM^k*DB|*Ds3>%g(55Y+;#R)~2fJmKm5rYdBg_s+FYqC%H zhIRNFxu`-^`UsO`pnaf*A>cw#t3WAAhjMwxK{>Wil%DjErcB(#vxvhxoJ+c_OS?oU zJzADC;6xE=05PzxCGryi(76UM1M3)N&G^C*-Q-Q}QO<{Z6JuEx*911hL`)|VfW?$f zII|XaVNS9CVa_-CPSsRQG8h71aU9kRipVU?!+eukA!9K{EPz+l;}p>miSG<#1TBvA{k{-L=nx%L=+$O z9vyuXL26NdsWa77u_Ps&$o!)ey^|tspCg46&4M%Nq!XuTj|vT+Ds|C20i!&N&=XBl zHC8P{@k)N~bBMa|ZA6`yxCS9zV+ zJ8{;cGgUaj*L?NXcAb-O^;drV*EcEGaV6J&mDG6c9(@&9b!}8`P1u$2R`3y4daYQC zm6L#Fv4U-rZ{^sG1=v${*MNoCZ9Uk3VAxqDSvW=6Ze>`Nozr1eS#8zV?ZH--y;z+8 ztyp}u*^%wpmbz7ELTD7&? zxy@R-Emg;ZJZF$R%F9{A{nWhe+rK4S$9>$geOs@ETzj3`w;fovrC7N2TZ!GM{n+OJ9pA{+ z-MBT|=mp>8Jy`3N+wR5Q(nVXbU0&S1Tl)Rp@x9;E-Cm;2Dy?#cP&irR9pIHkUbUUx z_jT6zC11@=U;GtU{iR*=P1^|8-1uEzyLI3R_FL`++SNT<%T-;z1!33SToVS{`o-N3 zPT&+i-wD3o5Vm0AZQ%A@-t^Vm1rFR>joJzZT&{)QA8z69#bFm7V*aIBd=*}2@P%M- zAp(BlHl^U?<=zz*Vj^~4@TK7$Zr{`mVk^E|(u~*Vh2iZb;qWD68y4Cd{$UU{;j;zJ z0chYW9$oQeVGKTE&h=v0wO`e3V;El7F)m{|?p*hUTm&YVDcD~@cHuk!#@Zg1U_D-B z!9|H^n1UZzzik;*DBk2bL|-a)nA)A=_jR0H{DrN3-w$ToVFhI!Zsl9$fMXDZT6qAS z6qIIA+Kg3zQZNM(LEEWSWn1lnQ5YA-RonBrVMStFG*;Ay$cSd$r$UO6qy=SImgP9M z)fX5AhGA4l3f;xvV{k6w3&vwKMp|9w>=)q-BxH2_Td++>#8z+L3HxraIUfoE=xeHv-71?8C@00r=9!O>kXa<@`l zYP$XAJU&^NZfZQ{;HDO07xrlZNawgMk|LAi2NvLrU0`~S<9m*0_B{$^umLO}Gr1LL zlSLZTCG1i?=zA~#w`Sz}-CV*&328uu7pUmS!)VN2*}G9xR)*g!-eAWufCh*!1!n8) zZQIT!WK)&7kXDK#FaWyy2X(k+*d|^Kwjvt&00TVN((c)+cIl)h+NJ*Gv{ux9`WY3D z=4g)E;t_z?Hh|4$)VL{;u*R8YC2KZjZM42?$Cg~!-Ywt%$X#*8kR$lz8rI;)&Fk{r z-EB<|1~`{OM(dM>kv$e?MOEzF4)66gZAI0VXpn*ua0G49+ z3;P0S;08@l)NE#hRtN{BV1icg24bLt`g8zC@CI(sw|3RFX^;iS@fK4^XhhHi6aOSd zB>)JQaDaJhTa|HVxP}g|m2A!fN0Qg{)T1bLcxQ1xp0wD);2@e9KP7wtEA7;6r89|6+2MF|NPy$6afF>Vt zy(WM)c=I?f)h=*5aS#_P5SQ+7bS6@c-)7WE7xX1p)FB6QBc}-~M{@>$bOYcGC$o=L zpY%$CTtEf*wsZ&&cLO*9M0kVJ0K8sc4i#CTu$u>Tz!0~Gd$1V#qCfgOG7u!HDtTxRI9dn5I|yF*2U^B@tv6r2 z-KQVQhjkzau`{ayko<0-d_X#Nxlp75pyhT5JHgB6UD$_f=!UP%iA>msuww|dFz%s8 z{5^2}QNfv0U+zXVh|;&O2ylr`>IS|4rwMpjgKOA)Pf%2OnVa5!hTj)EMSn-)H-2hh z?APLYb{K!Ka0F<8eg!zb$=3*g_$TmR0bu;{UHi6=nm{Mt=p~HD>faxJ{MMm^fNdQ; zXzlbtTjxz7wE+;ar8A%)(>`zA+T9B?zz#ol9_!ID@JHXN0ZOt#RJbg{fIs=xk?Y0} zUX+jXrSOagd_(zh1jkgynzFu@C%xc*FQ%13Q65bN&%*p-R7kO zQm|dVe2Q|dcDUb}#GgF|YtwJD2?O za`n0pES7l)*R=y(@ZP_Z>1t>HejDg&#rwt_wL@mgAXr$Jo)nG&!bPTzB<@~w@qS;IY2`;bORFbqZUMfipN0yfq+dp zm(?Q)1q$o}nq%_FG@5L{+_M!hIQ?S*GiA}|&JY8r5T5|k4Mf#54E@srKf>Y1&;U^I zw&Fg>2p~Wl=2#=pR05>D@p$qN z0fgv7N>wD9D4cr&+4c_>=al4=IpN?YAAR<@q0dALxB^;;APTh8DHQ!E5Fp6$y*?pQ`wH1fmN6_0uXxVKZg!#XQ)z5 zwIqWB#PEzdlD!z?j40|eOa$%`_YVr$=pqo7j5-Rbq?B4(h(@>d=ME491Xx*-0=4jB zkZzh)5Mu+3_SONrF!)ca>gcqOGBIkTtN{VyBgq6y!UKeD22_wK13NnA4zwp0#nX}$ z!if(l0z3+2TRhc!uW$nmKuCcHCb&mI6j}(60U7@Hz&Es+r9w9FgdxCa^1OjTJIN3P zjJ?q!6MNy`OhT`A~?@IKx}KTSt%N@DHIY#K){}-JWNN0 z7gqSpst!5~VQtv|+@=x7^VJ6{j5wZXT_Dgo6O9%gG_b}rWCt=8o$J9Jx7>5nUANtL z2%_2O zrF+Swj>ig+iJX+i9DB+3vKY=3nrmn3A95b4k1p)We!L)=o0|GCxG$?dyFm;fKnsX! zfQ>wTyd1h&2+&w3>ZG2^PITIpH7p~5OMs?zuZx|a1n{NEB zf+(7?6AR}xvl_)vAV|`Mh4A5tdC87CDqCFRs&*TJTrLcmi;*jOH#9_@Aj8sF>8UFH0FzVkV0dt8yZih!oOxrWr}2I6VsfBMFtfyeleWQ z)v|_-g8`0puG8E}OlX!PkS&v$JOZlp=E+ZjGL)hmB`Nd9H|sHyb`)ucMOsOl1?0jU z7m3XtNcFizTCH+1Qzhr_@ww_?;Ts1DOpR2@KWoSlV||Na_(XNgFbyP&BFr4$1O?6b zfkgoSYxo8$iCMBM9*dC!*@+|^W2D{DMgfGd2s?-|gzR_^eAYw>1O+g>QvDB6l_S+j zS~-t)KuG|>Jcu;rP@QA?&zWHKULOSlwpLmMG+i7B10hv83l%VUS5#j=E%Hw&9cz`X zWM%K3wIqmI#FBiAz@d_XAC!V7i8K7Bj@Sqq=m}Jq`6wt@jKB=nh{F((u~P%Vlnpe= z6nH4mX;7K@4_L|)HV@k9E>YJ@W~NU7f9%m)>`;$FoD`+js2m!Ph&!|Fq!1djMgs65 z2WB(_Nu;0-?F?|J!zjQJ-TX))sR|lf)@gE$oat;L&_&r*(y0O&n4?WZX6BUtPHSW< zM)Rw&jiwjRk|pN`c>wWR#xB$`fDxBiv|3owM$39k><)wxpn(%SGGQ-Jz=IJIq-&w< zY8Y58V_AZmaV^cU+Q3$gHX)U<)fx;Y?ph}ljfGAq6noi6Lpsuuo;2PvdrqsV5(DNK z5~v!W7YN0uEudMGW)v1^nqu*gG>nw8B#^Z-)0l>VQ$5}Qmijdb zxfWF}ltwI*e>fo+kAO9GHG1fDC~Cq_J1%!;LjXsNBM83Y$uFr>UL_WrTgOiJvTL=n zxvG!Xz8(On)Q#UMXp3^V;607|KkVLsa%^_;cwY_nj+vMv|slSQY?sL-kw6iG&%tmjoHUe zq@FE{N_FI6u)G#8uMdhr4JtK5In{d**^pXYWr1K|9?jU?z~+h|av%yUdm6YvG)~qw zB6RAJvCz+YM2~f>t_AVv20C;U+}iaPd>!sHduif{LluD{%5*)-H!vin8(3pXZsreVSpd%m_rX-fwYsT zV+%ttIJlz}E$zJk7_N)g>tjFr#v2~-&;vm>?&pBI^ul+MDXbm#@rx-ufEm5cD>b?u zz?;i&AJCuB9vY}=bxmo&{o{21Y@QDc)=0P?H!S0y4rr)WQNh!#(uD4Jus( z*oo3uU<}GfQbCCn-j5Y7-9S*DQM*(oIIWltU){Eg^r*_uYrXD zh9M5t!tRtA)|pO#P~rFG$pEyTK1f0UI0h6tl`-{?j}QYH%wd-B+2-lPGJIa>o!Z=8 z8f|o-?%_*z96=x$hcnBiXE`hJ~+cVxI^s;*KA>dEb#+3 z+?($SSK__>gB#$X?0lp}h$KmZBRwob z0C121>|!hVVxwR}JD!37C;>O=BQ?C!KokT!2vg|!0ZrPZMO-8jURudPkC=dDKIq2) zI0QZJ!#K!uE(Rd(e<48hgO$uWV26F4J5f{Fu~%!W`N_?+DlJ(Xe}L@vAtnYG$RE6U<-@@8-P=5|Cz5s;Su-%&@XeE=EUmstqs1S}x;6u}wnhx=`Z zaI#D7$(C7+PI5|Tbr66UXaRVr3;}Gx7+8jKj)DHDujOPv#MSUKob$kwh5@&JRQv-OXW(Y)gerMkO zgK!o^IZ&vM3@CC&5q=%$ddZG)f~a{$k%DfV@c6(OEMSZbfP|jdgLcOP`T%s!rvNO@ z5Ns#KnZb-^M}O|9`^nC7Hm7z7rvbTNj2tJtm1vKusCUGOjzZ_>P$-Qe>5Fm46jf=D zZij_pO7DqBGL6@7n(3LMX_{6?e^$r;k(!4B$>92rLyb0IxC>U>%5wW>~tu0oa?#L>%Q`9zxwOH0&KtvtXbr1!4B-fB5cAc z?7}i^!;VtH8mz-g?8H)RcDPOd#i9zjV(h|R?6X4b$8K!Ma;(O}O}~&o1%yP%g)@*g`Y{ug2%0^nx<}A*Z6492d$)bnRl84C(EzPRz z%ZhB&`YXiNO~jIt(soD3KCRPQt=vFu)&i|{V6DtH?VL=<*orN2fUJ$otkPmF+UiZ& z{w&;j65WD+PnN7u zDW)RqW-Q98?C#dA>+&rB?9vJF`YvP%@81?LQgV(-g#Z}pn*`GSb`;_dXNFZO2d?ow{@E-(E?ul#1O@z!ti zey{4{ZT@cU>udkUaMM!o0P8Tc>Z_tHnlm&S z3omfX+VIMPZxMej5hw5mYwz_sG4ejr`KE96NCE>T&1ZaTmMs6EiXL#;+Quu@)q0W;^6~rPFAUFcC-*MTmT><1t_#mG75lFZzw+l!^7`KLFZXdV<1hJsu^=lm zuTBLfWfCz+!53`OaQHDLcQW(JtsOJ(F_UrvKr&E8PD(k>M}S#ayP&60wZ%7 zm$LrWauqvoFY7KGmv1nOG9)i@0;@Ce@-aDcGdcruB%5*zyYm>Yb0r(ICzmY=FY`mY z>QoeR%83B~798*yuW=m%bVCO)FPri>&ocFfF+wXeJZm&aJ90m(GAK)3Qc&vPwn zb0uGK6F)NVnsi48^G0KIMl&%0yD;$5b5P$j3H$O$12ZW9Gf;oBI`=aJ8#F{qHJVOE zDME)S=s_4*G}+)nE?2W2GqU?)ZaOpcM-wwlBXuU@vp|`O0nF3a;t zm-P6mb>p@(Q?s;EN0H5Q+; zYGbhfQ@=KBhqF+(a8zTmZMQZ_Yiwk%?O9hg5?e4mo9<>)ci?q4*?58v0KyXR*xEox zX%DtGJ9luGvux+KCM&jZ$1!iG_FtcO5uf)tyLQ{^wQ{Gmdbf8=!*W>fwLRmtK^M0r zhp|`3b9%>iN*nk(|MOd;aNeSBbwl{c{)1IJ!!d-yD1?C(_ySjV(p>YdUBj$DZ!#xO zH@<@SiFdGJE3Z_rxZ2KfC;9DzJF*)Gbz=K9{1WVn5A9HkttTJ$8V9sVBXeGtILxwk zHj6F@L$8jv?s7XZR2TV-6RwRoc+R4Dh-dcWMtOvD`DGQdGl;_*Y&CQQ!kqMY%0@N+ z+YVmk_U+k{?lkJ+H~#_p&GZ5*3=s`sW3FIuBL ztf~vJrNeq;ZSkzzI^pTvqV?Ua^LnrQ`mf8b?M4SGvMR6}`>`W?vMc+tGkdc;`?EuP zv`hQ6Q+u^r`?X_xwrl&gb9=XYyWnQ}w~PC@le@DQc)6o{x~n^^ulBmT`@6%tW;=Ae z(|f(!yU4Qhz3cnF^ZUULbiV_9zzcl3{`z@_yRYi!iinhQt9KMjE8<*!!a0wntnPloB$$YeRmXoE=YqWXd88O z!6>ZTcc>D22pF)22kKuIBZ*V18bN3m``QaIz*t0PY~4?t20Urv0kp#ZH2}%u?1SH2 zN8f)3oam!2)IHu*0GP{=SvZ7BqGK;`D&083HT;5`p43$YQL(SYJV3wjH6|!6zc@6% zdQdoWG=em9ICn5UY@l9U3dEA^gOF{91>}Ojl>T{~{%ehg>I1|-fddH^GOw$&`s+FrtXM+hli?*ZHw8GB+_$FMyte&U6O3b+f zG7v?!c9ta$aBEFqf~_n)axKk}ZAsL9Q$l>$kag^V14MHbK;VdM-Me}B_Wc`paNz`L z)^sOOz@>IQ|J8w|DME8tvO4msmj}|fcH(I5fCTFi0YtC>IhuBCjzFgo39NxO?N^Y4 z0^IOhHxFN-0ZfeqgC?yHrW|m@8*Wg!OrZXti6+2*UVw#`C>(@klsBAH<%?jr(Zs=4 z+S%tARM7fo02IvGrqgsc=6BOEHHZab|gAfE5sd2FD@(QD8hn9MNbX3!dTsCma$9U_{9<{%P+$TBZ=_ z!VEWr6BZ0LR8M1mG`hMPy6n3S=J z65uD9=mcU!A6AfK1RqDt8VD%~9jvg9C&j5yv_v4eMw;{tvJy*8_{0@Q9seoq*R4?d zB3FV8wKc&Y=NMqMe>hmh6ttLVR2oAXTQv{!Y8{AxIHu`!fD;gTBsva85oE|w;AqTG zZaN9cHP-~1_L^vHO%<&=sM`{eXbYkjK&HC=_D5{BwY3Xcl4vvbA8iguavi1X@neAX23R0TrRCYEpr`pc=9`-afI z5XMw`93TiNuBLs^PGFv(1W2Hrtz2m*>bQBqTWPigfZ&;ZvbGQE~|Zp8R)?&u`YY+s`<8@ zmw%k<+os-c*Lowh%N}Rbz~7F1^Ui^$tn73UBnX$qq9MYONpYDdf=lw_E32aZv49zL zq|$2up@ZV6HbSI1FX{kBOm#=M%Whh z53;dif$?BPbRKw(cHn~*t5I7$=b?=eMf`IrVXB=;JJ$ctnFaBYh+Ux38{uF;X}IV`F!Do;1Hc03uHicU zxeSnj6yzWYiL#j0Bp4H+$vraBA_lYok3$=p@19~bb`;_YpbN(sRFE`lc&z`}CE zQMF3WB_6lc9xo&R6*84!7fP~$Q{-_6N92tau-r#9*pSQo;LUEE z(wo^-nY46#V3hhW#ux;EmXO2&N;i{*mS|%g#wqi0HiZV}CCvU8Zlgy;O^c@1K$1qfu*2Pq5^h{br~0hkH| zMO^X6e@F#1wAqI)2;d5NsL6MBBjG7LgN>qelNuy~!ajJ>B#tm59-deeA!Z7Nc<3Sk zXWB|fMsq+8Zpjt-@k%;^kTz`ppyQ|6PzR*cmJZaM02osfi1+jpgJ-~Fgqw=$0H#`1 zH;B-I?Px}Fj;erN%;O$FIKVEBGaEwGLlP8lY*69_8x>>&9#_O#J>CEUbEF8RvunXQ zbP*}?t?p{fi0ol|ArKiZRGG$ircy z-NUsCSzYU17rWV2NZI(INbAG_k2aVkF_PqyNfr$#LP=6lAmB-c0BtX5l1CKQ<23+A zfF|&W)Kwu1gcigy0y6ww1+c`2upwgr2S`jU2r-ZO#`PwfS|2!vX3Bf~Wvr2^rV~I{ z6MUeen-k{8RvIdmeIO(M0s9z@iIG7F!$m;=8emZ}lu1+dWON|agaC^`!^9K+BLec> z0sfFH0KPO7IRbgFUKl{O{H$d^R$I$n>YJqd=GVsvR`4`xfq=a2ETTspfQe~5Vw#53 z!G;I|bp>*S#V7_-M_>w2N}fYAIzES_HUh~?GYIlD zzzW1%f*{cVieLudGSz^>0tRwJlaFDLjsRjP12cS*;;QaPUknikFzBJxPwitFZLMZO z679irG~;QJRWdX5+k#Mi))!{^ETan&og$Ed6P$$&L}+u4*@b2wwV13sIwFr<1dR|! zosEgar?Kwr;vRheDu8U4s_0w)N`Io!g`?LjfYlDe)cYBLzW!00kQgxCA2AVJNc0Dv zY8T)E7x=)3b4Zzaw;o8t2OrFVk30~Wl2t*kH{Z)%9>2FL>0OUoxLZkrFtHuzAj1`= zQjY2D!P00tm4j*Oe9Yr)bt+ied!N@ogSHp`%0Jt0XE3WCe|cUyf)!`NCtKAVv)X z6RnW|e8_bxf7tm6&VLrkKi&gv{pgwRF3{gq>&_OEAiPByUN3e~Y#&67#NZChz7^ng2(FhYUNjLfQnh4|d<9FXB3>O*OG;(G?q-Xbsj3U4;Z2f6miwqQ+15-rn2Z_@^X z@{pkbp34tj0|AeS_>>G7;^7lQPD>u@1J)py;EEsy(HbU^EkY`?LJA%-;W$9S9T?%k z_yVhVVY!rT`5XchJp}_~=N~ZO96n(kSfK*WVG-5=3UdM&lYuV=fP5-SARH^QOtJpz zO?Jq~9n63Xwvh~`022+O*5D7?h9N7G(ckn;|I$$%*Kr+Ljv~?vmTV#!FwT_V!EGl0 zPT87fa4xRA&}trzV?9DDO|~Qwre{lX352fUjBG*|{tJmD4EXrLnvl8Rnss z(99h$4(Fa`A7JZt?qLUVp#a@RzQW)mwNN0nO#up$a3qoeRG@Ik5x{0LBVQ8kEFc%e zp%EfrMYhi`1_19SB@oz*Bd!ION+}xCst^>QA*KhGpwEW5=7=EAsSwTfKqDs{OU(X3 zWFBGg@-kRVL(^a=3PZ)q#K#bS@z&5n0URM5P-A)Y@Bnh*7nY)^>}DXsuN|!aA*4ua zKZq-Rq;MS=tp(zt8_=N+A!61T0T+Gf7v}-`K4qpNzyiLZ8~!Y$$N}&IAjhP_E&st0 zq#+GJfi%Yq8%k~RLX(TqO?F0;N{nI(1OONpYfC7z+zzuE%kQ&XGbAnx9of-5&l5e_ zkpYt=AAN!k*`dQ6BE6ob9q5h^$l?^U20rDHk{kkh6lfjNNFZ#x&cGOY3?lODWV{G zKxjGcAquQALMPNkgYX|_X@zQm2%|22?BGN8Q+9w7=l;`mY@!-QvL^2T$0in~DQT{f z{c~{ArR!uB5nf{&`A$m z;d1Jd0m4MKf?%qsfeKd1(Bx_hhJYG#tOfQV9H!s}@@fwbix|jY4PwbV4``UuU=6-O zMn9{UR0_GCrqvq24kTwaLMp2W025Nl21w2xkE}0$k)r0H2X-N=NTfpbVQ0i7+8ToZ zG9e#+!3=&0AC!+aL+YYz;8CT=C>qHv@t^?pDaT0FRM)^9N=XUkK^ z@6#ZuS{=ZK8i7+i!Ba0M#g<_VxTvh8a~McfAAW%fupkA~lV0op)m{NEz4nkFTodC0 z=&{TO8Wzx-^ax7g;Xb48z1U$n3{^|4MgXut?g~&T2BJPf1ud#+mVT83fMGcbkPgB$ zqH3bms;LG#43FsGHs-=6-X}xXLjV*26I5qJs%Zf{L}}Q;6O2M-_rVz)=bV0KpmO$S zMK))5#AM;&V{H-v!iFp_FDH#+=jLu1UTz3;OaPo9V(Fn4?zCI7DIcieGMwiW`wQ)D7-Ya$<(K`Cb{amb1l7T{m=0UAb! zRDo_#A10gR!R`o`Z*$?q)D_Z!ZeM_&RnR zg!dm{Hy*Z@HnjB|$8k-tNo1!MbhGAbbtD7Ekp zHinmfo3VjQ5$K9w3`j%;PeFs1A|#?ifgLy@jA9GYRV}%X08V()B%+!G;MlZ)`_>YM z-`9UHA|&`XZ`Z_t(`O(eSRf)`gy*oD8bA!RV0dHyV}-|Hhh5lx4N@R9IE4)&)ToIs zp7<(qn29-;49*Tec*Q%Jph>`e#6Cyg6_=)^NA(%pgC!mQ9qMAn7$b#5-LAaXs z;#$&Yh=X`dPI!$E;*6WngqiqajVz3TECND}geRhX-}e&EcYPb$00h!#b>QnyP(Tq_cXez1pbD zS~iZ_tf9KCxB8|p;;DVZty$u!(YmVV`XAW(tpx(CO`@ysnj`{yWd=JP2V1Shnz6_F zsP#In^Lnv`da|RMuy>=W^O`rn`mve+x~?(%vaedQLz}Ys+OGkdrVYEWy&AGT`=SL2 zv7I`$8=JOu`lqEjs7G6}QTw%9yRYXutI-;_75l7%Tep8(w~afuM;o~{JE@l&x>H-Z z-CDSJd$@PIw2ynQ7hAfiTdkA(wX^%Xue-VRdZ}%iw=Wv9pS!N3`>heXsBas-yU|;-(_6J`+rK9nuEpEBi5tAN`@Q44z!Mz1%e%W3+`%7wzlZw48Jx9?8^RZS zAi&$Q5xm0NyTAq9!`0ilEu6$D{J^7I!TGzxkz2*>8@*ec!Y}->W&Fke+r};Vv|F6K zS)9g2oUda%#(Vt3eH_JwJi&wiT*GJF!GYY!KODqsTp_HQz{fke89V^FKt{j4k^H)g zJj)~8yr;ak4IImTJj`93ySbdq>$}HU+{API#@qa>`&-A!oVUmP!cUyWnS9Hud%*L& z!wp=@&m7A$Jig<+$?rVC3H`nkJ-m4wyUCi$|9Z|x9L-7mvrQb*6&=F?8_y-&&y~Ev zyIakd9J)gt&E4G8)0fSe8`Pa#!|lA)n>)xYU9r;|$$#5@gTTwz+_Wnj);*oGe|^d$ zeaT(@vwvLBF&w}D8n~%k&S8Dd!<^B5y~JbP(vMxmi9NGJoYa~7*!z64m3!N{oydj# z%k%rx&%IuK8`~9KAhyDyIp7!s|G~(*yEH1D&ddGJnO)1tebLJs$Zuz+h`V|*-P0p` z+>L#@KmE}a-rkMi7^tM8YlG5To7=P7+OOQA6`&MMA>2p(9K##8bv)V)K;umzBq+V) z`C{TLTj9I?%pLyq0)5s;p1t`@(BWO)2Y}t@5794s)tS9|)g0Z2ejP!cA|SloPr(4Z zvKRb0#ZpA)`@G(pz309B&igte_Ta839iabUAC%z-aNVo3-k%5l)q%ariJk1tyyLCj z0LTg?nBM8#ozKxe4w^UW4V&c|{_d~HEvSv*#r)%4p2!!z&;K4RL|VZ%(=)OG@b$aK z13$#!{^W~%tlFaCLYmEHh8-pT!)@H3slhriKRoaUeUHfF!^Vc!6H z|J4m*TLpl$iCVI=pPzu>$Ok|9wO#nXzxFGdA^Mt+b;S2Mz1%n5qN9KON4?59ozDQe znxuc({TcL|93cJ~82C@%Km&j3?Kw!Wpu>j_3jj+8v7*I`7&B_z$g!ixk03*e97(dI z$&)Bks$6;T#i%^3u0@-(!qGHth6W7iGU|;^4xit;3oS3Lyb&8R z0AbOA1mfK6RJGwh{{ml}T_Z;4UsVEYpiPrCOIE-?moR10w24#a*U8*eS?+u|u`DaIgc?u)NtWSGT6=eGER~M!gG{UT)yeY> z@;675&U%wTUm{4?q|G^4aG-10vN=F{6k)($P4ahX)>N>u?t=FLC!AnoQ8mz8ajlo% zeuilh!GUnewVGgSCA3g$sjcVUYq51@0D=-a<%Bc8G#CMHshQRVECsD1$bEmwBEUdE zJz@Y|9Y*#X|8V>Xv;rc~aAQ|hPC->2YUyd%-A=S5k>WuV%HmWM?YR}9hC2qy8EZ97 zBMl$fSmU7q+2LlBdaPk6lM?$3QxJ}_Jr`Y0(?wMqlTONHT0v1-=w5~end#*m|E&0p zJT4B!(xQwu>gc18Mk?u~l%ga+0{gVXPB-(g!wfsuv=a|21N>2xP6(VcOsPdV0u4Xx zh_eT#tNzhWJKl7|&plzVddfcw?6S`_-Rwh6ns5FAD>UuYQD1H@X!O#v|H@41Src6v(Em5sivHI3aY52 zDv*h^oTdZBK?=|7O*klEQw{?HpzuvO5MZ+oJw4dW|_H3nYLB*l5EuBl{pT z00FMt69plyG8^lx@jwi)xmAMD@ig;NGXMhfi20AY=~Up%HwH&=?Zx@w$~Yubi3;`y9dP$Kg~xwNAD&GhDSygWZ`0xK-B zqX#{7(fqQU(wIgEgj_Fs{McUizPFHyT`XhencvvyRM;0bI)+cd39mtkJNd6eLw{GSw*r5HxEDgjWABl`a@S05|L-898*J8}y+I0TAF4 zyz|XJ%tnoZw16LCg2KN35rH_gNdwtX2M`2cHrM&^Xpw72GZ;{=J(RFKr;td=EWiwS zXbg=4L1OP>@C`G z{sAq8Fwu!n8~~<}QIHd+aD@zLLDf2`4^|9BQD|g zfNm*dm5qFcIt(C5N|sRr=14~n{^`0u>_ZtP+~){Ohy`<$V{a2FNb3ZEfp!2-NaPH4cr`}wBOE%xV={b|!zmg-rv-S1|2(*mJcTGK zVe|xoJqH)lUePpiRV!f}RtQNPCcv3yi6%9Pcr}ZrOIt<(mngL7M=c6Q zq$;&n2HgWf*QwA;ffbtjsKo%h=@3PQ@UVzYtYR0-*hj%J0x&$6MrHUyRR!@^%rsg4 zEMyyT4o-&Zf=3Vz*#cE5N+&~U02!{p)l8U60ET%4rlhHpI>;iOK`2N8+Bg6}nye^< z{o^?`>B4_dZ5b2wr9%YZ+RYiUjJ-7%Lw@_K&^Wg|y2u#|OLz&gg>@g{m;x2e;v3bn zR!onLEDf>Yy5<%{g*JQ$8V@PS1MGs8%#45lxF(6xx(T+xfQK)2|KbMTrK%O%JclkW zyG(4v7mok9S2HT2u_BOx6Wd(jP=aeAlUcTt=imk04oR+iNR`1lA%GalzzoQBc%Pc3 z?Eq|R8?&GQl!vqs3c|!Q0d#i{QVj2SHCv1N%veSphADfgTSAH0F}NB<=>T?&3rD`?A7HnTY7EJ!ILL&x#s*7JCtn;wFN|8Mkd9Z)RvLo}w$f@E~b z4sit|eT&B6{sX!YUO+B#%?`UfB%Kd2l_UZH$mtTY&FK5;t;g+MN)qDM?3l_>di`rC zQn#}I-6!A1ee3uF+J!UK8Pr&qXLOOm4fCM)u4-%+82;fNSNMi5+~8DY!n)ONbBMIf zp*qd2Sc!L;M}lM zcd^f9n+!p}A_l#yNFLfC-Ng#zE$R2*ydBMO~aH0_b?(`kR&^# zuJxFAz0(4h-K+%N z4ly|!)re2L;up{Oj;MOqFy?qA-#1Da{ zK1fj?figoKiaI?Im<`;FKigaoKI8}1unT?+&LOgQ2qTE^V?&`R?>7b+#6Jdz zuyGu~phh;);R<*7?oeP<3KsBt6Me9!lJ(dTJgb$E?8hjdtnc6eBiCxaBRf`=AEE(B|v z6;J0<0Xow{r%*{gaWzw*T$X1WSY$)H;|D|W0J+c$rNv2<K-2apQ~b2VjDV~DhV1;IwB=UehsTv|s{HP!&q_Z5yX4!QLY{3S}mP(qIwgz%<^ zh_rf&@&gqCbnn*<@NgG3gn;kFI~Xtz|6^nuxClu;Mh*(5QtaSy6SVwh8I1HXe zkluB5ZljN5_jG5MNTe_n;*@rl_ihnZcpnKvA4vdHuuMF5HSkmj@W?a&kd3vN4fr$^ z1$j>h$&&*phj)0DSecbtc@lY;ktAgf>OcinFfV?HSy{9NLlA5GFb-2t1I$oLsB<6fC2m6hAoE&}*r8l^(2*#L2H4n<~IoH+)ER7+xnfI&kK zu|NQJ&<+%#F8Lsu72`*DG!Mh2LdeKqj-w7}35VtQPWkW)X5a{>vj<644}IVRm%tA$ zrVp`D1<(?jHn0ZX2?WkYftMvt@^A-i(0l#)pREIG^xz4K$(V}rnfkB{RDcD7cSN_D zo7Li*z{w2t@CNEKp%tn&{}O33{2&f>xeJ!HN@p+yFxE-@FkAyLmvwoUd8sHOd3HWT z3}!%}t7no_nUX@dk{J368!C7Yp`Z-vpfhQX|G=DmzyZ79KJt}6?)eX*qz-UUa`~g9 zc8QnSxt-nlo!%mz-;hj7iU}Foqzd7o%Yd7@83kP`qeHoseA=ge`lnQ>oa}Xe`-wl- z;A$@Pnfy=`u|^NN!VmF)QE~YzSwV69Ko84cSVq*H_~Q)g5KIEVZkJjMCG-HmaBKNM z4L|^9SkMl)77w+6fWZ=Q`2Y==nQTs#0nadS3*ZXl#tx4#O#)Cct{M-SI)UY87P`7C zvuSw)umYJdZt@VU|B6DW<3U))g|)2ra7gd;XaS&P z)8MKJ#8d-t0={}{?m!3SCjhnNN0Mfml%=SQDrj8w5FlW3mzoQu^bf6yZr@-`0-!?t zsXybU4!v@q=^Boq3a{L7C{Zu~5StD#CIB38s(quX5Yejv7Z1>&5CQOu+TdlUCxQocUj5xa$;kbiq5sKot z6QD7r3%p8HLaH@O)f;*=YZ1$97Pg^cT3{9~cfOiRvlcc4?OS1IkX$_HyX0$F!+S_1 z7P^buz7T;%#!F|8E58|0xtD9ejT?O*F%;U1y|(*f6#>5ttPvVq5}M1v4y<1dW)0Kp za{pkx{}AjD`pdt)`@6x55jwHJhdaYGT*HXBz9AuN8NrAbQNaa)xgx~7*qg$s$8(T` zTHR}G=duyUOT;JP!zR(h4xt3+07N`^E`y81?CZoPA-+M(zS_veAfd%a94Ta+5omPA zA;H5SL;!>k4!Olgk5p>e%S>mi#x|VCdc4Pcyb+w$$1@B8yQ)rR@n?W+hd`H=+*2^F zDi39mcq5#|hdjxYT*-&4x|R&6hGA`S2EUS=$)={bq^p%zV+F4;x{G%;1)LhNhe9hQw!_({#k#P~*OvBym&0fLE)AbPFoOtE@5$B8&>8ug$3_|ZrDc>B< z?mW(tvd-C@&-#24>|uQL3=#NDY60yL|Lo89JZb~oD67#B2@MkQtP%^2EChYf>>SV$ zEzuwJ&y}*xtHBWs%@Q9C&=0-OByG(LZ4j)1(dJCi0v*yBLC@vv(jGL@kJ8Tut8#d#4cB@7)`C6Hh@IGgz1Y)y*FpW)UNP8#ebjoGRl*QkBiy$#yF{o8bH z+qo^=!(H3Mz1XxJ)5e|JkzLu{+}y&w+EXpr&|Tb+&Do3{-OfGTrTyLHeA<4k+9<8u zY`xj-5el!p-p&vTW3t`1t=+gy-8UW7<-OePtliAr+v9Bz_F&0}fCMuYCm9P29k(|YQJu2^E|EQkozs~6Bz37zQ z*-L)iWKQLzuIQhB;$&UwgZ}EoP3=)$*yAqg-0tDguHw=T?uS0$rylRDp5K}d-(xQ7 zt?t>I9_#*2!?v*x%^*nW&KfY3>*>B$Gt%K}z16SX2`_LAaDWBV;M%xA?fXsRZ=Ug1 ze$Ms1@8!%QZV{^bNd^7oGLlP=dP|KRBT;2Zzkw|?d@U+*nX z^Yo6__U`kmp4dGP?^Z4C_x>UkK5CSLA3Kj3# zzFy@ykMBiJ-|D{YuAcUfjoKyt==zQAV2<1j-|6Zu+ZaFL|5cCKbkFTm-rp@>-P#`W z)?L|3KjlFV>UrPjNZ<61|EFd05@(_z27n~dz$U}M8gPOaqfkHw&;_gT2={R!l0PU1 z(IwK52c_@`a_tQN;My*_2F~CKZ}Hk=@Aiw|>39wIY@hL2-}@+!_;Ek}5|sQnuNWgo8rg!Jk9N8r!me{L=d zAaDuao`0KbU5e*v00eC58b6LaIW{r@jjgc^WYAf#UrR)MaHKmBMU!K}4y|j~tX1TP zZx(L;HE33yKaWE18F!@JzSpTce|{G3Uhm+=uPtw0?@pgb)2oLcU;cdh_3huse_!#i ze+l%Rnh1e&nmGWNdw>|=9|4Cc5S}0g5TJ!~|M)8an03sd#(>qbNvFU60vzz4Oh)@B z0tm9XjiV!UW0A!p63j0~8MkY1ycuuAk-YbET+b~Yw~FdVA%`TgNF$F#QltGm1W-Y9 ztSPWV5QjODA1mi+hcgA+xhISP3}CH8|C&VL$$wnA2eN-ov-@7%K?fzYP($lma?AjqEYKYo7qoyGcg!H8QZlB<><@nS(M6&#nOyWX zG^3b^wKh=-B~F7var4kZz1z`MS?t@5PTY002q1R5HOt8S_9R|HY+eko<2C(g`ZPlIwBB)oWUiK z7vlvvWRXWExnz@1=5^jsGqb}=ew=BCKLX+~$4YvZ(M&c1FwuvXFb7c7;fb(l$4YOW zJQro9mu9+Yr=Ny8>cJYgR87bRAYh9zA`l?KV~?$kfdH&Jb|M1A&;kUcrDnTrx8H_4 zZn<@>jcftH0>K+kCRo80eOQ@0aKQ&Byl}%0w{HLkT$v}IcJf&!0>me$ymHGg$DHl5 zi>PB0EzTn=bJ0g9y>!!0Ph8xj|C0+8b=O~qJ$Bh=AFC}~X~#Wx-FN3*Y1?h=J$T`V zC%$+>e-GVw<(Fr^dCXf^>-O6JLLPYMug5-n?U_zKrdV(Np1JD7-@bhF&qx2z_R`|h z&-U{g|NZpmr@wyth5Vhyrbybqdi}49ANlS#Kmr!ffObOOT;@`v@huR1{ySgZ8c{4Qd}0>0xW%^(v4kg_ z;t{dPK>>2njAuk6yS%6r|1gFzi6oR>+cLH>-E{0@X~bh5eYidaR>eAO>7Lxkr7CC4 zNsos_WDMW)JwFaERfNdE4zzlfMAp)xdi!1n%rjih#4!+>V zDZQdhW;&-#iz&b^*rA%gkc%6JFar`&DGLb%gBm1gg+UAnmM)CKSja>dn&1h7XYhkW zc-dBy%u^vL?P_MfsFSJw!GU84qHBUtKq*WC&s%O$0hw@_mEhqe45;#*@B!u?5|Aaz zFw`p4EJ+RO>9Tml{{o&M1e4 zJZgbl^g>2)7>AbzBhQ}@z!fFM0SwBPmVEw$s75^uKYLXmd4z#Z0#!^irn;8{wBi@X zJdr!@)=)h{VN>E@gCpj_k8t#7AHkGQMil@FS_}cEKS8NRV(^T1&;u8+_=Y`6Q8$zX z_An}S<}2th*1fby8ewpRL!1!}E?|L0e?>ty+Tji$Y-K|!!p{Ky5X`j(hN&>A&^;jZ zSB>QJw9e6LuNp7~$`;8~5ITa@_@Y$^eE>mh)gwd?R-#MrLmrFZ1V0S>h!?d=9i)flkXRK1Zp9PBm z7=aH*#G_jiY3DmRVBb2F!W`n5g|TKf4Q|NdxFzu~fX(}lF3{qYXI(LmRRP|AGz1#a z5HSZJu?xd$Vj={-2AnnG07rO(8=W{;nz^Bg*ZS8R#Gr!!ZW zZ=SjElT)X+9PLp=aq>v+f9z&D9ek;+FzpyISeZsC3q41NUT2SEOb8#c9! zTTet&R&r?q8dtP*6fC0h*u$_Q8V}0Id>=)#5;#9qstf%ZE;-Z0tiD z1>#3ONXiP$NZn%LlBqMsQPUy|;*~7&DOe(fjs};50T8k+vd+N^M?j+;>_~CJ^5Knc z@WUNS-3YYkagA^AT($dfJ31b^56;gc9i??EJ4m0J7v$m_n?I`)zA^gJvmycyct$>^ zv9HH)q-CQ|Iy{Cp580ce9(1SxG|Z8YYxIHvnqr6LpI@5)9BVju{=Ed?w+UWfzf zqX%yAglb6)efS1;=!X9zjUUv)d^m@T`3JAVt1CPOWHE;pG%65W!q@x3eBimzQp1od z9g?$>VDJjE%ZGg%fFiJicEE>Nm;#xTu50)Om5Ya4_=0bkhjPGxEKvrVbBF%elxS!J zW!i^uD1)psx|SM-GVzx-U<7{Pmca_e=)#9Wh^|Cj#HrJWw(F@UeGA)AI}xBw9_$2d@@BvTAsaH_6yxoeq_g-H=N*axg?x@LGhjffNiTmWV` zkj+qr+OQX7m zOotNy2D7s&k(>yY#57%C00N*#p(2EOkOT@)fN9x-ee{xkJP^;&{{_$xjY62JZ<#0o zD42t(knM{U<=Y5|alF{z1rprJXOM?+D;O2ThKU-0215sjNe~%S4B8L?EHDR?Y^{k9 zN}AjScbv$7kPN}3nIT+^(+kK5X}^LzNPpZ)0|A2Evcg(~4auO4$E=N7M6EHz$kP0f zupEHFf(OeaNXPt}v^={3U`^MgL(-8tuvh^?(7R1ZDxjIgH)srQi2%Iox(Lve*Q|{q zFoWnylUn?cS_~%ToW(up#KkC+4^b)U?3NSR2V)>C$MZT@oCsLlh>W66(vZ$m04ZX` zhdk&-$72AuO2w~nPGw35Sd4%OsKxtKDb}!giSx3pKDg}wh-y*?fD*$3*wF#94mb#c~d&s-N$cccMm%4P6lK0}z>19XCit0cnL` z5)fVZ(DU?1GdxdV5C>qO2Tz!YNWlkBc)YSn(SP`szATY{C;~FzgkUmJ7%8(I*oAv| zkO+xKC7BS7fP%@35{+;LcSKC|lb8WGrWiy?6HU{H{H=eekV$;OFSV9asErC?%aRBh zN39JV-GdP!jhMs+$$Uw?5|Mjq(K>}Ph$F5~2^s-u|Atg04HH2Tj#yDpVT65HhM}w* zQDxC5$*q6b)n2WQ!_3XgvBQ${ii6UyEqt)`q{I)Y5~;g~nW-6~c;JK1D^Mr-4+S6ur{jnHOuG)D z0C^22WFc1ptwxKH)Pc>Yh55UZ$RtQAq>VU$UD!Z;kc6?B2n{fYaj29sFb9f+(kYS0 zg^9&NRf2V3S$If*eBh5UtQ#7|JE^-3ec^|82*Md@UGS%6%?5_a&i znvE!H7}nN(T`x;k(K!NND7llf3Zl9O!K^xY(7NlK)-$|Geh`NVCD9gWsbvtwscTP4 z#H(+;&Z84o08uG7Xoq+>tOGgxWlwIkSLw>v@omqRNyJ+e z*no98;|)-1Bv3{TSd}|ig-x1AqF85;|D=-Wnz2$jsk_gr9fp&Qlwq8RtGtJn695c2 z2chB!8of$+Xah2!6f)3)0-#F~%dLkT01Sp+OF4sOYk)4u1z(J~67dhfnFx6@NMrcm zN*RN~?bvKkheZ1=2QFExEmLL~2VkIvt3(G^n8XN%5efzZvIT~C_=I*qhauPqA8>?y zp$r;LO4ne7$$Pwq!~iW3mq?iuOQ{+_HO>UV;A9xo8wOl)A%I-!z1VUR_j5VCOc6bP z!N2s|prK%7ors`O;T-Ai4WQ7M&DRb5n7l;T>0 zic!5nrQ}M{f;ol^0r-GX<_9;;|6R**lOO$w0Z;(-CBWe=UJ_|f0nj;jRDehTf{Y@7 zQQX$)G+yh)Qcv7Y?e)Y*+y`Zl93yyyTOKVSsJeFj2WZx=0icdRaTnsP=e7qZ!_F=nXjDKjbHeu)~DPqOlh)*SlbHEHYV27HvN|o&foTxC0ccazB9Q^8|A3OjzotzPMhGVKv*>?7syxU9^lcW#+U9vs=(}MAZc*i2 z9U5^syI|4dt4@%q+yj}s>uk^lLAI7B^JjH1WKb#TwZiGQCWQp~7E>*aGE{6B`RE24 zYm5$qOm3LQ#WcYNmyOVC%shny$c3|dzhF{qk8W5g5pB|TD%OhS*%?eM*}Pul2gj3V z<|Bsb{Re2tI}{|kT2w+SIgsh~*6Re#KWJEE0=8+fsCP^~hA7>Q|sI5>w|_!fD% z12(9b8P$hasDhp0)%MzjrL%*5_=PDLCiI<%0?CJ4XaYP~ru3b0SNev!(&HM<%Qg^j ze$a*s9@zjN@FE7{1Lp`6JQ%GO*To(HdHxp$??L|r7OfhV)K~zz?1KzvYvtUBahQS^ zV1~aTfK14TUl4|mnd+o}pjW3|>yo-jR%%-_Yhv}^i!F5JDP=Ha)J7}<{LLlyBHty?X=Il*w{#XI( zmabm#dL6&{{yeOS1E9+XYCw>_v66V$LV4JME$k2o(LJN_ z#CuM=_a0aQ0KTB}MrYrPV&)c&fV{s^facniYxvWh;noSrMt%speB6lE1-jq_V*yZt zZzvj~dytgphHoHVClA;GXm^*9hexnwk(aJoNMLcf_*v|RrWJq__&U#LI{{VT1K&$-_lLr>W^yj*wNnmL91WEaoH`*r2Eqam%I&gxK3Um7V1A6GZysJzQ zply1{1&effD+x|)wV7oI7YB5ijAqn+lIy!k`GN0D0~x~w_&U1xkpuQtH_!bE@-lOQ7xFNW10S;lvx3If3Fdnp$3gDV1JNXfiWn8F#re@+4c?l z|7Y+Z!h{MJGHhs2fB=IZ$P5{fu*evT{|Iau!yux<0RkpY8K5y?#3E;cfZQlX%Rh|} z8&HHOputO%2MLJDDBvVQj2~@ABndPj&658hN~Cx+XhwuK59&M^VPnUS4r6K*DWFJA zgMaGnnK%TZ$bT3oTs0`ts6~?;$3$p(5F*K+Tdf-OvC^)=t15$BBKy=TPc2mw=sT6v zA^}(TqBKN{Q}M~f2@f9}4Dv0Rl5q!Mtje%zVi4x69sPO+h}3@#%wX>7d11uawfFMw z?fWK3~8-vkK7lLm_!|39+T zol{4-HT?VDdfW593SaMD(+}xq?=IDUL!6DZ2U-cWbscyPO|={Wj*J7F66UBQ9Al^8 z_m4o$Fu>n>O999m2;O)y!3wVE!-_%+{>K%EcSU4Uiyg{1BaJoMcq5KE>bN71JvP^1 zJNyVqk0*8ccqEcZ-ZUX_TLds5;uSYuFNB4KFb`aC7ETKc_x}^ zs<|ec$<5ToD}4kp=0XP8c_*HCwz(&t!KnmWp9v9Q#VcnFF`QX}@}^S}b!-BYqLE5E zDW#QKdg*!~MPQ^ud3vfRrlFeIq^SMHsAyNGmbxmdt-AUutj&EotDUjh|9UH~x$3$r zuf6*Et8cW@3M{e38hb3V$tt_-vcfvcEOB^3J1w=^coT*4?XY%)SL+sN>7 z7yqL$x;!tZ^QAUxsjb8a7mV}BNh=+zv@wH>veOA41TM%sr`vSYR^v-_)ZD(@HPBNt z3^v4EAAGgFV$u@QgZgaXN3Xmz=9x1twBL|>uD97Zqy0JQq$fmn&!xZncIA+N`#0ZF2U0if zv!Mf%^;bQlvCen*Q``sJwL7zg&|B{F+Uw4zy9|mD zgm#*p{OIP3VASn)E!^J$*N3>BAuoW06JO+l=sNc?&VvLi{~-a1xWo48@PLThm=mW* zJ|Gs&fmW;*1QS=e37&9#xierF8JIpQs?dZi#Gn5TcbWPX@P1@0;{PJJzb9f4c5NIZ z1EomEqaA^E$1p?;Xc&zt{J;ilsM`_PC`TkBFpM}HTn@!0$us6JihA7P>5|wv^m#FV zMYJRj{bk8E%Iu1!gjVn52mx$Z!vGvOh9LCfIIFEP9V#kahNAS|{1=+aA9DV@Ci(Su70_dhLswq>An#6zNo8s0IT1k6)>koZPUKg$Q z4-AN758n*t6X!;|WfVZ3&Im>=Y9LQsDA0|dJ0l~Xx=HnIv5}u7Vh)ekHZF2fgm|1| zBnR41r-o9eS(GSZm1R*@isT3e$mvvRRRCbv(f}lN=1BIm$L?W&i;YAa8gY?PE##|5jl-t(&JXtg{ACA!QbBXYu=mI)gEd zXh>lMj-XvZhp9n3R&A25^I;tyr^z&Kw`)@UTIuwe*zsb~04s3BG^D`?%?{uNqYy-U zN5O_xgaaZ>XoWY3L5H817ZK3lh9-j01z3DT9;*-p1hSEi13*F+M>E1K;9I{sl;R)a zm<2Qm5Qk}SLl!`=NS+9=257u<2$p5#7yhe>gRH>69sV$d&2eF9veCWp?E)>5(28qB zg9~@M?=_@hh<^;Yzz441ee=8D`Z>T6-rzcBkFXP@?bPD`dbobRH6xIa4H!T}JGi+JF| z!E2yJ6zt^QIU_<7rPhQC<40DrI^!4dlxH??NL=n}FOK~Tc6Uc9HD(HNgWVmf{l0ro z(}j?{)}Gd6+rf@*tYaS5_(w*EvD9|7!yOF3LObXI4Rh3k4hC2NFxugbZp;H6aacD! zxZw#4U?Uv_$OJwLF@S#u+#~{U1T^@;j;_KxAM@siJHk*+1-N1#^PUGhqOi(!TyERhfkQ{~v!?$2zv%j*J_?we+~gH}=tsdz&NQp7;m4)y-~q zgWwtYm(s@PI6SWUz{D!*t=KHj&!B}W3n8_ zxzY#VTGkBUwC|4h!%uDi-zLQ7kWZ-sGGTFgrz4Q)@kTfp;0m(LwnB5~$IWxTbcKku zZph6AH}Kr+c-pP7VFRu{nSIL?3aw@gH9kaJ8rXlbY_7&{2vw8VFgMb5YW!R#Kd-I* zWIH5QNKl)7uq;0AIYLYSby zp&&d6Knr+Z!9c-@{|MKW48ZE`LF+ZfWKoF#z+1rqMLE&UFC0KH1Vc1vfd@3eA<<1B zh)r-*(IP!xOTA9Rz+%oQ5pbwY*cgm0=3??;k}K|F^Z?`b6(g|#oL6xmV}%*?mV|4}7#p2AN?00K~_MbuEpgA4{hXRUQydzOU=09}bGJM!@ zUFK$DAwPQLNUXsw@B=zz=TZ!)fs%n4jKM#=A1`dkfVdViXoPD*=p3?91ZsoiUF1;+ zs6G(rjgCP)9z<|jVM=OZbrNUbx#Z-{-8TZKK`y6Pfm>46<^a6kEm*{W^yVc_-iRiX ziK3`?E~Q(%XpEu*#mPf~nt_2T26~3+RbD9ue5pdfPkhdgs<;cu&?lyR&we(lL}?%? z|5$`iO=W<369$-rhU5ki;2;lL#FRZkHX6kJH7GNX!#U^zoxml<)dP)bz=PfeBNU-U zJU}q?0>5eGWVvNkmZ)W3=tgE{iw?s9Z7G%s#Y|>rsg1xm82x*q;Co*W@f1sUZk;(tDuTSdIINhLZ(hUtD2I9 zPa!Fd?y4j@<9GhUuomkjLh3;Xm6)C+wGyC}4(C0h$aKJG`~`%1(<_8 z^Z^I#g15!x!7jzz<-;x5fD?QJZ9ZZ+Ou-8P13v7*+{wckOo3tkgBzp=jS*%x|ER+j z3;_o0gF4JX54b`+u)>&RY|sv^J~YBR8bq$z>^=~K8LUBf=468L?4hKq%LOX|U_v~U z>=k4KJODw=&g{sR?8%11zvaU(n1Lg-!^?K9KKud|U_p9RD{VEU$$rBFI;U-Nt1}9~ z+3s!1wnI8h0S^Gf+FhzTP=OUB9TqNZx;CS{vPKK=gF3*05kPK2xTcn_#=pfw+rI6~ z-s>LlVLkML4_t!DL9NtM?fm`bPF%v*+CbQjZN_eF1H{2O)ItPg)G}m5_fZ2Ce8D$Z zX+9`}4WQd(I7Hmkp55Th#9l1*R3KQ!R0P9z*2Mc48}V@!bd@`K%Nh*V&~HwXzn#6n}*=F=`fjPgT1gkEWGaBV7tOM>qR zL)-=vfE@_QK3oIb34j7DaQoVDn+)3}4|i_7u5bs#-UqXS=?cL8vcor| zgUA)|0VnXkhOh*)0|hI=Hw1~&RRjvQ!#zy#JQy%ESSb_>$rfHO8@I6==ZIz?#9=Un zQ6L0QWW;Ec22cniGeH-$LDxtZ%t9Xov_vJvdensvd;%a$!8Y5Lw3lvvw!>cC>X1ocmc^;h?F%k1@}ymec+~$a zRdFE@9O>e)A=DQ+6=&rWUqzcgVb?Vo6mDa;XSdaL|4R>vx#X`Ik#} zol9FB!MSFK_Lehv8ELkY17kkjI6xVCk(W4=|2sK!r}>&kIzgW{avwTvV>gF4`m`DM zborCVNS9}KIdvtUkrNhgqmQQ-PmXt#sv8kvOFFC%bAW#kw552e7Zs|<_ol=7@lg3_ z$N1-nI$)7{cSHG(=l5~1IIH(Mh2wgxKYKi{4!ewzo==-mTZ~l~byt)4Uw@18XqB~F z-{O>YekOWNi*+h>itl~(RHe4MQ2!<1dwW71HCdv|xUkH?Q#-*cwzl82P#=wKMBVu}RDb*j@H?xSA;!Kl_MNfs3}Z_a zttgtLLP({Od@`F|_C3qkO4%kSG~*^^YZ>@>C_%Y1#$_lNHvF!!7}XU^Pv->=v6 z@mw|Tyj*uP<-+@S+ZtMqr^7-!6HK~QK6EBr`0!}I`(jLQkVAK~Ne|?YyWmXoJO}-t zIJ9TJvG2FZ=f91gStk8#P5oS^1A5M=mstTs9rO z(KLF?^vi>$FJY!*kxgR>re8CfzUG^bKW`eZGX3_p>07hu#D}Jd&!*pvKXXAL=Fm1S zRd4#le?NX7yx1Wp)>5R0o2DcWt0tQgp%e|}$3GyE8Y>j{qm6_M?|*%W33wa_TDacJ zI=b&r0zBG&C73Nn#>{9xcFlV{uVU#wE@ybwV)4WK6}FGui1$C<-9?QY{+xMi8TxqP zvl)}k{3xsb`^#}1Yuvmjb@J5XDfZ?~bMunaZ3|WNU-;(j%dCnhojU;x1aSV*y>(0vO9!K-|!D{v~_eItDmBSgt+AXPGtTV6SNNm5X` z$7jzLpRXp!a;qIW&;5fTFrU~FEYF#k_mtR4%ehiA(h&U0Nl(nawsfG#E=Ae>W9^Hf z=T1fTx%RJLj+D97_FT;=^5JBeIuRP%f2Rd^}ZX&gbdW zOAje=rK@IJ?7g?i_7Dwde8LXjA=IH`4D0*T6>l<^!|#9*pm}&(>2@6 zV>LH__BFlx`+KtO5i5T4$~EJnr48HlH-|$VNUGV6h@l-S(r({!Ifqct!(7@yj;3uy3Dykiw5G^#9e1o&z|?W z=AzCK_$&RAKo;4{259?iv>^q#mf`*E#ay=4f8BFW10M@oda2W9JCvU;@XhCi{yF|D z=P_Ja@ft5yuC0I~|8k-5g22b4@crp)xO?{E%J|~U>n|4{s0z^+pVQR60NQa^k);=< z&y>$2@?I|aK7$LfFeR4hqrNvQSQE5@JUh)^P9Hh~fGg+n_Ez69uV-4;t&d*3R+pmA zxAL0dF@CEd%5v{kRrB~wX3NAqdyQ6(zfrfKH9UOf?MEo%^aA z;X5K|Pzij>{#CPpZJB1npqt4?kIv-|aF^7V^3D5lAB+MlRyf(UTLf=h^6xNKs0ec2 z{L{EKl(RkI*S`8jl|Ep-$-X^${2ilW_)?@}*6>sWaiibzqJO|B=z`jxZ=y8}<*(hX z{%?p)4; zwcUAIr24;w;*5ZQi>1#i|1FgptL-kId9A*;Qu`%fZ?$f|a&N8i@0#%#osDbcce~)N z{q-(|s{M@~eU1H1M_rABt>Fu|4z|Z`gc)s3sFWQ1os85t+?mbL2>H7pdF}Au%G=+E zd(7W?hx=9?w^#=|^Ht`DTYoi{4gn4tz-EX0x%-=lRHA_eyBKgI`W-~vq=kfC3(Ad2 z{+&XDBgy|4zCZf|Zo89!&Sp{-9j5-+*;(>8FvGENQnM~ymcrxA2!kNZu?LEYV*i+t zxFAU`R^(V4Mr1w8E=YnqqpMxsXg%5~u8{A!U5B#UdW=g?p}^a&4)u`rSOQ0p&aS)@S~(M%(0FEjd!x=C2XY8 zXM2D(dW>;x3r~ST%2`VcT);b8(b36@{|yb1?p%Q4?y|&W_ebD@t1*1&Hg3=3y}oyT zaYhE7NAL~6QTq&-dEhlvJdJ`t$bt=aKp#&tA!3=El2SV@Tshkb>|H}?g8d}rdju9( zcpq^3b0j=WC?%p73Xt245XIhli&xF&*ab{RJ%+m^z}L- zd*XNmz77Ws@umn%uREI7F=#P$cubBD`Dv{bk3UVpq9FvTHiapNx-KO(D4%<&yvb=> zM-<}J9FcdLEPK#TIU_@dnfBN7E&|Vi{c+yBs@#aCB`Me-f0sbR@o+oEv*n1XHG%gkKLqr( zN)`25LhgqD40E6z^DHGx%&|LjQ)#!s$1V8zoSk{0HAwpF08(@#Oq(wzOEG|ahHV3) z-I!8kW*U`r6m;TXLEhfk(~LlV^CFFHa$YAO9$Wz(>8tguM6CF7+_mhp;#SiL^}0=H zI|0s;-v;0JzXL^F8t=>^6+z4v%sKWco*smDPya3Mb}^8q*!hn}=(|@OPmu6G)0(sl zth_Vcb+bnabQc{|ONdl^&b;3pp~P+Cyn23I5^ohOz|Cd&`;J&Iw={avh+$W_W6VB{ z@X+fZ?8%Ki*1TEZi-_=OQtZ?@mq+~QfHu2|N2}-1Z}L2Gf5eSMV^RYI1TMY5iQ#+| zQ+!xdT867Se#P;(3n!rkQm?NgLl{Ifo;h(S&;``$1pf43bRyLc|4VLa0A&vb6?isz~Gi#Z|BDG>)zEw7my-e5c zJU9CJ_he8rzHcq~)IMmtZ>xv<$1>sVqb_P?P-|qaq#4q>g zhP^AP<|fnlgoh(HA8+2F+1=f}q6 zCYA5En)iF{08@v8Ne?L^{~VFEyLUO(2FH%WqAwFr$~Vv`A|fb}k7H8T-U9IMM?eVB zG&Ia&8iZwriR>tW5Ku4%?M^@)D*)0MVQi&n2#&m;!3T9>BVz%HKp~4kSZ*L$G?+q? z2E=zrU?(Dk336lb9=-Cy=0WEP2;-wVQAGgCfD$njiA0#T7L2WYPd z8GsoYaTS0-*r<|r0I4g=fJJ}>5>DgBAQAl+&)dNt2}Rh}L9K~Uw^EoJPq;n?osk(W z5hxSs40d&5dpPZDuoH9k4#*%7YD5H0Nk~Nml!z!uM3L#S z+)P+L6Ga4|UxE=aSkz-Iz)3`OmBw-7C=d+5jzzK8C5i7QN!24;#*lJogtQML3K46- zs#mM6OS%0TUB5tLVSuJOiVP8vxdjqY`Tho1_33Q zc(ec+eb@=A#X`^Ra&a(W$9 zLLH(~Q7`0X%c;nNr#u=N22^dND{9D(k63QPQ(GjK(#tqpQyA8yNGWr;Z$+Orx95hTs~yT z0Ogrd{C~8ZS_0(FE|)AKMjn~0yqL!{go!T(#%`4jUQ&4*T>=wvw{~B zH?xR$6N%XRb3_KL*D$c74pG2Fu`i^72l9!Du=6;Mv#uoYI_xDq7t)^_fP^x9NU<*p zhjzJ|bpQ<<`|&Q=ccnlLdb$P;1-_jrHx`y*7&sk_xX6!)z=0E)31}nWZ+FI#IHX9pei{f7948--evZYFlNQSPoWS=cUj#K|ax=m9iU1FmeRC&W zK08->2Q0Q!ap--TG6p*e7J`^u(>qBDgr}7va6TsZaG@YOB%iB06T$%H5}v)lQK##O zC$Z@q1gP@Yswf2g!eW)aecavdTh(r_`0s$=A+d1HK!yGUI+p!EOb&df?8G2>Q~;TN z9B?Q27ZDJc-RF>KzcNOFN=OBc6#_1xqly9%V(#So-~;N#TG9q(~ejHZ-V~^`_eBc_H;s4PjGemSKuC&y(|&c z8Yc4H zJjwU8?r3LL-bpvzs>Loz;W#Kv^yR^gqSWjTWAonL(iqw|K1|KKY>2tOrK}H?c5XQyvCn#6J7NP{WP{9#_-mwPmR6b>JcrV z7g(4HDKR>>-eEC!nf0}C*qHB5Ojt%)740H=RP_DQySfj1@5hrGvz;4HX#&pd$Xidt zmwljRG-UWPzieqU)0kl{-HfkpWE-eI8dka4H$(Rse4dQ;X$JaI%cNAxx%J1)4-W+< zTE3E7P^3rA`v0+N9-qi~EN4v(6|exS~;PeZ$szX z49}T#p66EQOl!N`Xs9*OPS$UKrv2C>v|VJPGpHxTC$!Bg=YzwQPLy^>`WK^{D;>8R zA6{U3^uXBM>sZ z+_m!IL+}KCqVC)cA~b5EyCmb`QK@;9;s>uYVHZc>XZp1r(9ypyBotuSaZ0+Eu}SBF z7znKc$3_Ywws++8BwYRP-X(q;Mv3i}TpZ!_7lTUoDIkLO3Oewq^H=X=9RKIgCK+RN zQ~8}SztdwYkV$WJPaJwShi|n9{Z|#e?f0=1EEFWz{aBU$aTldB7Frc*2zCN{VW9?) z_D31S2s+FIiwY!aK>8s{gYA$>Xf7JW$m)Im1;*PA4FY<1T0w{7%H|D)u~@bUj)$+L z2i;C^3W-m&LR$MylAvJ`I8;pn@ zU;_dj1Q9v*@u4*!ZntD=T+^bz=#5vbJY{=SkCb2M=E^Q{LRhUJtL z;i23~(7Ar#D&eFg9d=eog~JJYksb-hLN3x^9B7p=Q+T*1@UjkOM`*r?10AEmjwOy6 zqlNzxGytAT0)#1$Ju`7caCY4F*9VPNK$ znD2mlBI?E@>6ts*3oN|n67;ImJ2-aC6-S+tPSseLc*il(x=JcP(51MKQ4z>o7AER@ zE8qx>{icqcn^X;XGS-|sMhO1;UM=U@iys`5AO~CyIrBSMbL?s$7@Yajbn<)5>ck_v z?<~Uiw$-nH$|6~`$k!F&#NNm!O@R<6aMv(2XJ=x`EnC-qikmQHO`HNt{giqSt2p2a z>HWfsy#-cB=N(L0Axg-!D3}=>966ZNdn->oHOv&2=bw85Hx2nakmr9gXZ0(TjtHVn z=;MC=>7B~>Z^npo3~{p5nuz$hI>9 zVrbMX0-3<968Z|G_ah&<-RttHNFV^0F^g_ay&8L>Z7$Gq12`u=-JOZx#)8u@u+a-W zaLgbpkbZIUJHwH^E%&9Q6I-;%JS z37<$LVh4g4&~yMna(vT$a*-*5a@6q4D3T;ei5c-0-7 zu9k`NBOnj_(^&`9uF93iPRzkW(6HHr*7saBAr!yJ#B~7a>bnqiazV&<^s*CDZ|X%n zxWw2!?kNBj{kfj+_M55>N+ZDc)(Y=GPKo^(}Dm( zB6b$+nFIpqkPmbBzmyCC@e&p>vPw}vp&^U!?DPid1odf!=dLNtl?ablpPm@&~s~&}Wbmq8jUhm5_4TFojZFvutIOf~r zx^4T8R=77uh+q6;F8-S3|LuCk_Bk4k_-y|!hCK?9c~<=RT(|Qo*|{JmfjombtBk|K zQ%g5d{e4gE41~VCeEEEQR?PWFjyAC+<0SN$?`koSw0WUGUH$>~0rX_7B3qCqf)N(# zBA2XP&g*B8N_YFHw!5(4$v{FS#CZjC7jHm zzk+RHaY(=5PM!#{Xg%g*F->(+)trTILc6%4$p5sEB^xJwH+!qj-2XHUmX*i3^D#;!yNpxu7eSX^=K{9=E>zIx&NROirDedbDX$_E!)Pzjk8H{1KMut4R?k=rb=w1-kf`GXx9O^ zN*1V-%U$1)F&7=5wkzp<7o>L-zJK0y|J$t(rhf-%O^)N@&UaqFN^V;!NS3M`gi7%U zcX{434;E|a4&S%-4Lk>pa;r)^O<$7T8eX>K1?{Zrg}#mflnpOcq!3$?s(kfR2li&l zs2H`rB%<{KHYh%l=t~qBZly!h6m4TgqjnETW`1e0S8rT(kSm^)a&zEv*%fYeiGV1@ z2p6!FZ@g%ekw}LLZ9yMp(-`0+Ok;|vzXnSb2fWaNLe?DQOf0FEe*{~S(+C`wV;G2t z>vmB99^2JVy6yk#n1<6M=Hnd5d;s!mAj^#^g|ymOd4;D=|`5M1m+Q>GPwV zYDFM-!;p-|A^V-8&)#bXB_?((?fk{Sg)FkGX!wqPd0rhmZ*D$r1?eI~MFH0eK=6oY%f+1u%6^pyF=vlgCQ#I)ES`Y>Q!f z9e3)V!M=YCUa3FjF$Ur?#o7bfSAR6hd7kXgIXA1NsWCMeW72>syx;0(L;V$MR)B1X z>gE{$b$@mFhs@D|xdrpNhX8xs30k)SU}q8RXTn43Lm;9gv_r+U+=KY zJy^YYLk0LOAn0LPP;oSX94Eg|cU!7w+@%yssC_)6e0W^#vV?#e$iyM`x$Xs2%u_d^ zg5uidaQ_nxCoX;C$+$6bpnAJmg&*Wp?J3w_=%2gyt*7zLyPDnrTZzud{=gE%hUn#EM&{WjW`5q>AN#N?Xt zMZFp$+INanxiIGLAJ~gAOF?u!eTey2OA?!(?tIlv`zpLE?>3!kJ2X8maMmM3sr264 z9O0pWxwp$Bcb{4p&1;#v^fG>Rq53ATSlsA@I53VE9mw!2_<6GbkKl|1u5kUXI ze1GHZx9`6r^cx>Nxw-h!rf+?2^XdAr)jOAMevZoD_5Sxgi-l;6YH!_0|BRAY{ZD^l ziYqdBg|-cGwwX909fCV`-`|dZ5ISSzZ7C|f&SgDOfOPp2{PEoTJLzvHejR-k-|WDs zPta+ErarFk82av)g`9bFwvhgCv!JW5K?0dRZCoxzck_8;7mKfi^l1)leX??2%6j#$ z&jP>Q7wG=LgR6Jwl=OWslDpzr{XP0%-#vQD_oXwQS;rT?&hDDKXcb}d>(!0K6QW0=}wMef@H{^hPjrh~NCr+acDE`TFL@-*;JiQ*1xi z!!_QopQ{S3FmKvvi!@ui#R{E<{M;QfKb$EE3;BK_fA#xwv)}xZ|4pU*{MU5q{kMVU zyBi;V9Q=-K_N%;gxI6Uo@N34u1JdWcN$tz5m#pRmUi06)48YHvrOkj&n9rVJv~8M0 zy%-=r29j!qkj1TNGj@g;$7UJBH=DOb&Ee3NIZ+eTgelmH@#zs`JB9J@U9&(VZsuak zMvXatam!K-?%$`D!K=;Saz_297WQ@=f}<53+5!u;_*H|OOF3#lZB?MQiaNANI53p< z&A9y-!V^u>jV=2_&E1=3LMG<0vzEeJEl586D8yV#wTUGshF5O4+&qC_Dl*kJVQ}S` zD-O4rQq9*k@%xlEmMBASwpF&g#S+?XJZz>bYr)IM(BiYS@M<*Qvh2Ovf*ZELwp&dP zS=#zpp`dM+d>scfZKrjt3yVw)_bqsbtXvt&n0S9P)H=Yy{EANJ zaarqIwe8C_ZJx5Wf%}$(o=)Ys&Ii;Fk)kHjUY+uM=Gqf2FGb%yqFNbRnean9FPqqe zPS`#!Z~m{=%(2l{e4-UGVOhV|7N*)Yq+%xlZDn=ew6@W)Jv`A7TW&|1ZP%t+#|5=X zigh7|KV0Kr1bcO-2N@>JHg{Y#kD6$tQ;y5anrKiPpY}BVsyTj7wdMD>xX*i5?~IS- zIhdAz>$cai{~T;ma#SpCWm(+Qwf3p8a>m57*gj+SVD)Tr~PbC zhgZ+hp~eSlPgiPBcX7|h+MZAC4iicsoPoqB2JpRFH)!ytf4@fw;n*|Q)7R58;?+Ak zi-!}yg>K1MnU7#%meJ1^N~Q1af*qsIq;?mq-2uBs5p&0p6wt{RI4%XDaAX5A zoFQ?$q;Lzv8AUw5TUxk{&|DP*?wm`w#!oZ~tOI8;mP1^IODRA0W9g4)Hxu%RBWKw=JQ$wd* zD@v(miLUEiQu&L~9ZJukyQeF*Ye@#kj$m#i=6R$KIo%q1ia=D>rOGWJsC1pTO=XEA z-C-VY0=fNH{+SO8!0OF zCpUmb!XEABJrp1Jn@X~`OVS92Dg;xb4M_8iEm`*?70MK7jUj)bl$Plpe_0SlF#k5#jY!g+99`m{;yyW;bnLv? zWL)I!=fS?uor59ni`1`L;4Hue#o$yQas4Hhr)c{jx@o~&>W52)a6 z-~3Dx@6;JHDw5yGhUeQ*#2P zj;}NHV=v#^@Gz`51p;0cshsR0Uri zO zschM)+@wi$MQeY#DBwh5U|Oau<>v(lb*GF zGu)B1VkKDq@swCAeRkzbgn#fO`=09`gB)7j{cI;9tVcaMSaor$KjCZ2kL+GUo1Kf> zMB?75*ZO-p*f?>l%|`@$5($`ITh&NypEX;P>0zL}Y-P5(7vR5{eX?D1Cg1zo);evT z4X=)#Q}AcpCd zjV(NXbs#w9Upf?O;M)pKQ%rMvDR#UZkG^U4Mrvdw%f2xH^IKcdl2B=j1QYmBVaUk}G^ zfCcZU(8B-hM{3<5<`{2i)&XEeu+;)piCK^%>MY0R3|Azn0!L#EvRZJ-^VlHWupgRT zh6bmSY#+h!ndIwtf1&@oD|-WoeO4SsyQ>z(l&J!jF##=wdv>2Ul1JCw{w}k9;8^Xg zr|)nI)aP~hP>kx%A+hIWa4-llM&024pLf^rfx7SfA@8(^8o}Xu{S@aYD#2D(S=qx5 z7v7ASF&cwvltRs2?z)zed6L4l=w&bZ;}P{`LOeBpp!cu5{bi4ZXtIOl>Cm5bsSE@k z=MMEOmRju%(G&&m0!N>f&OH+xkxyaCFObh>I!oz6uKXp+x`gkg0!&8CgKHG)V41Vb z#0R$LI7|QFF)9sOklBj3+Zqqt-fm~H1!QRg9)E)?b0Ltfr@!ejbOY2#Pz5zu2)KPV z!!AYv{4Yen|s<)no3h zlVpA&7%q=|dr@$2ux#DKJ2C9b7EuwU170_!b;gq`T@q{&?8l^0uZg#_ZTH18gfkG3 zOvv@6%MmL`Ga${0RCHOJ4x;0lGGNB+d9@2e|*Ei;J(&Y|r zgs;ZIPsjb`{NL+H&2;p|9;Nu*tfP@K|H(7qMnXlKI39B4exv47Ds%tY2l?Uu6fu)R z!e~K3tZ*SSQ;rZ40g4I(!vbkAs+F9&fma=3{pd^-mNs{EfVz-Ral{?owu4bAFF;Uq zOVSmd2psS6C6gE|ZqhtWl_l&f$Kxm&msY5Vvx+2ifppn82>rBJRg4BdEo*Zlmd2e{ zjMgpmv5+f)kqidBPIn&5^!$*lcJq(wc&+c3YX9XwY7=#L<_9Zo{#F0c81i>xb@{Kx zB!kSxtA5FaNM%u_U3rRisTP7~I7UtWeZa7DBx$r+P~wPgasmVg|FDr!e=i-)O7IUb6T|aOpv=y?i)l3VYE9Y z!HBZx1*hBYT<}7&xvJ;Vls`Lxl;(UsKOs+AnhBD>xXkR^X;} z0w-Qw(}4!zwj$brmiik)5yHN8Qjy{zJ5o_nF$U7na@j7@H_NEtSXHd5z(RxIW z%cq_@+M$@=-)apI-gr}EUc`A$dngaUnFCJhQ4R)tL7R=OzU;9X4%Y}L3{QgSicPh2mR@> zlki3fAr|QTd+F2K`?Y&d$tM;(F0Ryn8IQU3emlnRYhzn>sMbfNvPP{>EVXz0cU*rQ zGILx+Y~OulJ0JBz-5t!8$c>JP|5oLuH)NbR;Dx*-@LA%EDtaLBYfg~6Ok1e#sO!xp z-7oHso@l+fb*vwPvA6dB0!Wdy5aKsHrd9D^+S(MHo8@s>p@_HKs!u?;$Fh? z$i-XlK-r6r_twT9RqZagC|xt&Zb~r|6=ytPnJ$-vRW&ewXM8@~UwU`6Wy)F>Z8l*Y z?6J&8tM%Cp%B}d-MS#6VTT>cZjWl@|^GCwVcn#D4sAe7Fj45q7#(9e}R+fK&E4ARR z<|N9SNTJR|slXBKay*)x_p0eoXlEcQYYz~N!G?zg6WBBB6O=^gFf}W}JxehNOzQ$! zb-y2w%(Ue8vdh)PSOC6HThPJ;;vIk4h!X@N7iJ(@DR>!jkv{dhCo{sR--0UJp3m0J z)}r6JPPsdgkJ>E#V7if{v9a#BD^P>fINQp_FFczq%?x)^^yG~8!DH^XlAQbsITC}d z;H-7>h0H75o_7Fgpn$C-REqyWf19H8z|nQ3QD38}!k7UG7F+E?B6SNd1k!|c6-%dI z7#~!Aedfddu^MVetqgOC&2r}xI_FLcN9XOwLBsjGQ7;Cr=dESRrOMmkl?Qp_<3Xl4sr?bC+7JC7Nd~wK_+eCtpwfcM#lh^08LxIS1VuhpaZa>uzJi$!AEa zH0y^q-O`Fw=QLC5d&KQ8^7oX_>DJWuidhQ&oKT%N9IEfT8C{dRSw3&NS^xR*p*9Vo zwqU{A(BJfLGRl-)X!_N!_K3$i#WKB8yDi}Z|Fy`tb|?EBzuPdBH}?slxx`pa$}B6= z+rE&$w|K6mVdU1j`;C0jW!KAJN8Y^Ou4ws(qq_w)JTQ5EKQemx3h%p-%yU0QE8^VG z4vi0VJl3n-6#_LNREN;w;dtSNOoClKlg2ZV=3F)_b=(dn!9(?b(ZOx2R_t zr{NFYbZA$u$Et+RNU-V}#5p&TQW|IfmlQZtxsg`W_)9&^u;;4!X4X*SoL;kG-`&d1 z+|9;$GnQdLMSZJ)w`sw~+-NYRa;rqUY4K#3(QuLa_KP!3OXr)7Mr$g!EABQed$5eg z+SLENN@-fTZf-n2RQcz1P19;XnDNAn`rrDYrnURc#y>XWtEF?K5T9q?{oH=P4Z%pu zB1=C=V2DqG_GLhOLY)yjw1hK(QEARXv0#=xHxI`FXg$Og!0r@qo!KgC@o9OnNL(+%QeI2t3nCI1w}NkR{;{@2uidWP_nJOM(9rvra*C_C=__tVw; zrvw%U4d?<4E-$~r9Joskt$3zcAq=6?H${sQr7sVNXy z1~F;AFr{mUmu#fY%7JBNr^VvJxqHBV`xNlesC*11ZG)G+)BgJ_-(3z*sfbDQokv^Y%RnE z$>2An@CWz+D1h<1Dt8+G^(yphiRcllyY#ms*9pZY!pa(T8aD0PW`ep znLN7TwTaa7XvDXQZb6j^S5Jr)+lb5>oov(C&)+{M*?_h*V}k43WhFiqYG1;eyr(+Z z$bovK^}Q_x<2&TUB!G_0&oH2|qZjP}X6K zdUKm9kC4#}fS%ARu3>m#)Wa`<<(Q;dT`LNYixlRgtaN{|BdQ&l3Rbg`bB&{2mWMeg zUf21hapHW5?3|}ge9;l%XjDDrnnQTIj~9D02{FN&UBc_HKy(pMfgXtQC5quN zUX%p*pM+>n%KLd9g@cbO%fKim#Pm{|emg`%M*>`p*RREM76N*ykOmq+6&NPBhpd1g@1gEjNEBpa7RC{nzv|XsJ!#Md5x-KG>_(EEuofgE#Vn@-gwZY!pM8#&roY0F znLj0&5c6_~(U`*{Wre$ykcXXZBxRz?)_hoN+ppE@w+^q19)Q5f_?UmCGB_55grY6_ zC_F$BACPa1IW6ecLd@vkbN~|bQZZJ!G;Cu|ds1Qg7(=oalCaTcN-tefW2moC{HL$O z3@8y1MZBSHPb9oIUQ_N>wwX-+GLKS>j*vNLc8 zcrjOc!Awz+;@J{xiLZ-+rHOb$4e}q2dN)_gyOv`d+OPN4k<931xqk!>6N)iF0*H+J zC_rkMBI`s1uYjkOewYf`f0i0K2!Trz1qt`3~gvJYyU}ogV)C5SR?F1&-|>sXuH?SUyZB&7+=A9 zt#saB`S48ghgNIpT0WndN8ehxXbz>Ll?sQdd_b{o7$Jz?B`SYxRG2N0?XX9(NZZ>y zyjG&mq80!e^Vf1IUUDv1U+I#YY?D9`HRo0)&G1vF)f$4ldF^AB4p%xki68FV=!*C2 zj$h={E898lyDHBLRDt~XTS!{dUs>M|<^5Fg*YXdR^_X?$cApsdL zCUTRo{e~Mc^zt_+FlD4Rh5|M^S5r_d=tSizNXCCMU2V!}rR}8TkY&D@<*FIAjWf-b z-@XhC9Ki=yUh#p116#Yb3UD;wb%2e&jm6e!f;N@Cqq-HeLN?(bE&9Xxav&NMLjOBH@ylyj}zgAfubygv5>8jEAMHqbOEW~ArdmiTC(izoJ(Et-df03 zs*>lVDbxc*rCZNoq@J#uJ82z(iEI&+*&?A<|*2j7F%7T!PbsGdu|0bZ<)h69wHI%5K6O5;xrWk8EK=~|0 z6JPCVLCk`|==W5;yEW^*k_|y6`@gD3mNdC}tT$RTju~OKIDo$m8z=m*rl;~u6FT6r z)@)U^D&7PwUTeXyb%3FbuL`mU<5A-=!dh_;+iP~Lt7`d3!q^~JMlHNSOI79vUuBK@ zqxB!Nv3A6b+X7N&5^9ulFy2_*KJ4R)9q`v)h_awMIzqc$5(k|7_x6$I@v|{s& z)il!cf+#B7Vo6?qi}y+iSGs>s$(NvUS5oEEisvTYbhbr(0`i70)>{3(F-<8e;O9O} zTcj0hp3&x^U%H&v>Wv_Je+UxV+F<9g)*Y$_%C8(4UUvIT$qLa{EBfOpleebn|JuIF zy6;VF-)<;Cd{vBvJ@nV~<+N1eL zvG|LH`sSs7u~xVKtme6FZ9hDG4GV?X-)G(>(vA5T+QF+Kym$0U10F8xIMnJmG}dlJ zYfb0gbF0z~Ue-s2?YNZJ3a8fvb8T+}OR z^2RqsnlG01raigCc@}KGvoIn85zcH$NoX<0l7qlkcBb^;^nl@7&DW!G@gE@)?GV^y zH6=y+bOneUI~22b`wH*w74~*_9-PD5mXsr%z?($W`F!HnMen#-Qs_#r-R9n{P-Xa}akRVt(rhG9JwyVE=K{DWJ9uWF4^GslE z;;suZu!z0A2tvAj>c{a14>b~2=SL-}7aMYaJL%lm)#|U$jkQ3xZ~bzAjY;rHf$Tj$ z^)T(ro7iucBZ`76zwK6PYw@O%NsnLhpTxW#4>Xw|e+&2t>=0%66g2GWj24WJSd`go z0ZJk)1Bb-=tQz%1V}n5~*sR>bY`7K3*}d*p3A1^mc*Lf?(>bNmuyx-k^(iU!jG=~$ z;j~Zin+A&eTy-0MzlI%}MtP*nTc15t$MvtFIv<2KxmSJWU23FaA@9HJQz0d1jJxr# zd?GiJM2ltO@RQt@0@4hVm5K@-0DY;fbArBAFgy3M64y>LqJlE?uQV>>^%-q81mcgA z#3Rs02`JMWv;RbSbLG@!(ZB1dr)qFLJ?_%$@_*~+t{;ghR$XfrCn(Gf>$?-T?mV@n z{%Ha^Gqq=||0#=_ehaXHVEGg#A@GAX2o$eDU|eq23iPuoZNnN-mPTw2p0Qh{>$4~o zibNSIC4Q9hWB%UHZ*QcA8rJ4c!2A>z^IGR4%|M9*a=+EhKa}Et1AuUF0=Rkqsr1a= z{tWxUNW$BLrlygXTah!S3)))36(D^vGs*t}Z9tO0S1YLggZx^X z>nnf1kM3z;^gm!g&mYX#lR`&lD~}HZ)ptYk8?e40?mrO!gc|?A!+F7X_`$<8;`Kg2 zFc9#s0gwW~?g<#ksNSA~>HbBOsK8adHv3Uq_7p819j{@}b0v zdo*A}H;^EZkRu~vFxO0AO^F%JSsU=r0yBsZunGMa6WvgsE1^b}I+bcwt5>mR)w-4c zYgeyd!G;w(mTXz9NFho@8*<+;i2@?n+4pP817`Bx8~~Q@mJKK0!V$=n@0S@z?eOh^ zkWDE8O!4}znKy2LNRs~$1dXZ!TRWZuDDI2gE}g+=_4@d@#P4WQrz>6I8`OqO?I~+5 zN6c*PUj=jW`ZS1hu9k{y^6s$N#ro#um5%i-qk@HBL*vMmGynHTU#u!Iuwh@G7Bn4u0jTt%$CC!+qGkXL_yMrJ_u^BjIo&k-W1n%Rc!3#xSP_7`QwC@u#5o-QAOxRA z2H?)S`|{flo*{e#j)Pt1QL4N>1kj5wzW@`AFvAd2X~AX27yycWsG;JEZ$@eQ3s9>7|}-;0vw4Z3bvLpgN!)ViH8)y;wkK~#A0{`IN|1LCIT{X)Ugr0AZr2- ze(r&aq9@lN4T!~*>IkYPf#D|{j0j)^KPc}BLrX5b1oIRzp~@_r+G-m^Q&wMc(!eMO z^Rr4;S0WP*BbaGRN?jA9a|}L-RqPoAC8D(<0xrQ%KmMY~jngL&Tl?a3uj0SdAZk=&2mb&Q{p>=i&`jyL6?Q-1QH28al@KDq0! zON_|k-Fl>_n|_;$inj4I>23X*I=Cet!wQ9onf0LNAaK7Ii7%rRO% z=6aZcCn}H!9=SorhSD@DH}=tGqO$kB$KZcv2i*2mahEEyeT=_n*7_rQ$@I7lraFGH zj#m;PfE@nw>tHv42C|KHi(ytooTU=a?Moh@v)KPo_rA1M4QN7(g2N)R zL4I`bB=BT8P1S~G$eo+vNRBd{Nn>;m_oUVFop?4U@8L;Ko5UduBw2>74A?X z5(V&@8)~72>?*<;fSd}1R#3@X4VpQ%}1TqYPCUNBdV<4B9pgr`Ekx>EF93!AZ z0jQCYY2;!R&3Kg^A`yr}B%;;`;6oz{;EFaWqJ1#wln4w!jAVr5PYOAZAYKTK3Q=Sw zy$H)OWHOll2;v(zbwogZu_}y^NA*_H05eeWHLN^?E7dhhRjwq6L(GaAr*KB6bn}#i zOJx#iNk@rjBpFz_V;-rA$bpbjDrRKnJ3qD&W#EKHm(awAA zFre--C|4djmQ4C_pkhI&LZwnsM0%w}44sNc-!c?^enq1zIb|}d8PT^GREJ(UX)jB< zQi8Tro+_OR2%b?6NXB%8HZ2QJJqFRKymX})8OTfj1%sC=js>Us^`L`TWjK%qpcAcab?aN<8dteu2obWt=3HZF0KKC1 z0Cl~qyIRRly&3?o0961YQW4I=wu_J>UF>5a8(GPIWw4bU>_09m!^{rVr(oG^L@Eoz z&yK~iTD>eWU-;0`ieeX3(tCT_qfcJN@%gtTI_0tx@3XvcF)ya!GagO?{cnqSAyQ)u9v;- z4d`%7tKRS`x4EB=}DkB!S?CFj=2NG@)Xk$mI?1DVJnMsbSwdt)0XnaW)D za*LsC-7fF8$v!TzmBS3?5FZ(pS#3oIAbg zM2C9Jm@crT)lBM0+nLt2ZmWGwP3lws!@APDF7%_3JK9w@8rXmS@pFNk=QZc~*q+9- zuZb;UC(Am|+aC)1QWOoS$3os1O{~#TNIu_g&>= zd%NBZ=eNgM>}ND5eA$qGxW-3~?&xmT-tTsJe*diOc9T2TALqBTUp;V8ui54`k9EF* z9`qXSTiMPw^uh~{YNKBq$3=&Ds+oTDrl;G>f{ymYbG_|@V;i?z4>!OYP4zFQ{MVxn zGr}3I@UgEQ-VnETvtyp^jCcG0i;Gd$`{m-xSX4tLV){n~1$_{mG( z`dJG+%_R@^w80+Rn6n(|55Ie>UB7slyL|6SH#_2ypZxhMKI1qa_Q$m@YMYO|^OPTS z!db3%%r{>1fu?!rO&cc+h0UZ#!ZjbO#uiP9@`etp)dhhxukn_ro>mJYX zJ`dIoF!zG&+qCcP)=%gEdhhtY4FxwX1pQ70(=Gs|P6pe~2ET6Q{IBfJZ2XSz0f8_G zE3E(e%>@~c_O?v~zpwn%4+LSb{-Dm@bj`}dX!d}w2PaVSP%jIePy;v6)wnSAn(+C2 z58HHa2fvR0@NedpQ2n-W{>ISqEYe1_#gR z*sK&0QT$NM;Al|3R*$*rkhGw03Kh{2zw8K+a0s*P77Xj-tiw!pcSs+ z80Nr$)&Ls+vT_I{!U6Cy8us!ZUSJgRz!9cF8uqddO2Hh&VHVy%LabmG;8H3fAuORH zEv2CkoWgRZfg9{`lpU_Y9L(xs zIMhM^d%-^OQ$NdbLE}LZP+%QS)IA~~Gz@ee`r{w|Vn*LXB))+ix*`OAs@UU8F!RQ-{T;VnTNnRrx&4Ets^c#3I0&prHrXg6Up#XN_ zal9cM7~mz+#xih2XbpQed9w3x|-Uun~feSzb7@o;mpFth|VN15LT-)LqO(js&p-lOK8oX#rYC$D= zLrsU_8KXb|+~6EqMS zP4tFZnIv)4Rb0t+OC+{FNr#XmwPV@!9|)lyB!L1HU>6z!CND!$%M>TjaZGF#S7GFJ z4#`G@0;E*+XMr|og_edc(lxTx9U>qT%)>WE5`%E(loB8xI07LC00kZvBTB?xGRYO- z0bvF7Tf0_NmSK!owSKB-8LieD`sflGLTQ=g9}WN#9svayV{IE^adyI6h*LuU2H;{@ zfvkq+C(_m_wsHq{;U1bYLK7l4B0wYDLI99r9A@?u6yhMfM?&-h9(qOqT3{n2=^yA; zZ54uT_aGCB1#(*^YeLsCbG6>1i%#%!VUNVfA*yv5&~l8p-V?oBbTvwkhdQ4 z;BXsBaget<_F!@LK`0ysCWir5l{6;Q)+rEnen+T5R0cMlX>mLkb?c>QtQQC*WHAQj zd%Llt$k%up!g|Fxt!%oP6iguMeGy)ld^=37|uWvQ5tu^0##p-K@)gZqbrNg{Dxc!+1% zi2lI`93fZ)RE0HplQ~&FiPvc(rA`z%f_50Uqv30Alr1 zBEk`*Aq_ymA}}H*2KX}GSS1IT6e5B%+Eqd*!kg`53MPkXn1Y!bR+NXrIF!UC;CY!h z(jX9Ghf+e0Um0g3I;tH~Xnko8+BG^8{B}k~{Kh|Rx z+yh#~g<7
$l1x{*RULzdsdF(AVR*1#M-MG59XL}(O%Cj>Y6K^$;o7d)455yeb+ z#7C+CNTy{-GWtmTbdZ@usCgP5kl+%gu-sW@504YrF<# zb;EPX`6h~VvjvAFbq9MKmNf=Iw_96uNC%%yM7KLzfEMO~UZ6Id4kXp!)n8}FfDX8R#j#5%_MgpAw%vhv^iI~!8k;n+1KuM3R;=%8Q zoFc-URLPgF=_>e}jDAUzLj1mc{KtV@vWUun9AO-6LQ2V10dgUDbcY%``i>B(vCd_O z?x@G7;-Va!rL0`UDc7-lHf==eU50#rWy&j>D#+11&DET}nkG;sMjpy8F!uJ$+^&7m zn9$XvP}#+O+)dcpp3w5FF8=0j-dym~)ZN_My%pO%3)zp{?fu?;_y1%s0>$wB-cG+5 z&*viV=A5ts&w;tsG8y?$}tnkLZ@BRKgtzPxwoec-y=|k<@1)t&l z9R;_3;2nPk|3301zr8N+=LE3uW3BD8{pUly+J{~YMbF%~F6|=E z12IqAG|>ZvvGEBk>S`|*_kP$@krm&a77elo>2TP&Pxw^7_>G_J*^KD%kLvRg7(Gka z3sOB{z4P&L)%UUM>hbusfBTb<{&b(J9{$%)mHWxR{7XIf!CtCj9n{Ug{oVilgZ+h$ z9scRR{_X$%@jw6dfB*Tv{{iBkz<~q{8a#+Fp~8g>8#;UlF`~qY6f0W1h%uwajT}3A z{0K6n$dM#VnmmazrOK5oTe^Jz2{We5nKWzKyoocX&Ye7a`uqtrsL-KAiyA$OG^x_1 zOq)7=3N@kh3pcLZxpeE=y^A-m z-o1SL`uz(yu;9Uj3mZO+II-fzj2kC~%R zzm7e-XaZvd4A2ffy!f$oV3~(COVIa&3Lu?_MJozK0(RQ9!{=!|$nx*|pMMmAe&Y>D zV1XM6;0iwqDp(E!0uF@#fjJBEQ_mg{X^_o=?mWm5f)jo?p*0*DNMea5DwN=Y^T-p% zK>{%HVTBM?AfbXAij*RVABygumu@IxG2Do2oWGgoti2{=@=v83FoH*F-p(} ze+D{G5vv|Fs79(@T9B%Mf?DYmhwjR2T{)7IPVxNNfh%-k)1boqroBYgc z$afGtvre)Kl3R--*UGb~K>z+2Pc0F&@MAmfJg|#`_YCxIy!+B?Zye<4J8vJX_DXWe zU**V6jp`62KmrRoldP0AJR|Ug_V7z5Ka6~gMlSk>Lpg}#o{}^__zcnp8GiN&sNoCJLyH+}bjy!BK+w40 zIF~BnG&-D;k)t|&PC-2>sg8BkQbhDo7mzNaE5sPzq>V;~LNq*q9WV zyqN7_Ju&=YIV|u)5sfU9JF29D#L=I!?ZXVg!kvm}DqU6fJ1~ zeC0depGp_G846$paReHi>Pfg$eG#979LP*lx=0Wl4n*vb#V->I)S#MVp^jo>A_7^D zMWs@w6H4KPFxog)E{LN8Q6xx*6+XUkNOfAn=^poSyMV>?A23CoOnYg-vHs(x7tNFd z;H4vXC{Cz!tt*(=wWtW~>ln%6-T=DzH+Fe~0g23LVWUbt7IoB{;5;H$F{f6748Vow z^v`)T@j9yofs11;tFq1tOSMv#AN{nfCL)k20W@F@!GNEFsA1RG%GM&JGQeors0#xa zpoeQ1ul{X;> z$RdlCB)^u?4hw=}b3=*{`wpZ+)17Yej@FBUVBr@5TID}lO3$bYB#BxT2nf)cPqPlh z4H(uihX;@&7z!i;<)yEUZ(I-x8$gl_a?o!7>)U&9Ap#EAg}yLqU@C!*jmwxq1L81` zWHIxqbDQuUDm-1~%8M9NAOI6uu@9>apu1P{LI3-qOqIW*u4?j>(z zwY)Dbdl}4PcBas3=Up5N8pjkCKyx1{fd1NR$qTBP^bC+Qfv8jf59pTv5fy|Fz#MlGr7DG@=Dh1Cf;6AZZ27LmMifS>)`jVpldZrJ^>Rz}Nweb+~CC%@FXQe?40r zUsyr#2*LmqT@a>zXdk#E_JGHfDJOj6(){RLfHn;gEK7G=)ZP~_BA@`keW=-iJ4L2W zoNARq!O{C_HmpB8DJXX-AH2vE3S9f4ar_k6{HCk0mC27@OV_`W9l%@lMUP*cQ4-B1 zRHjY<*9nPZazhKJoTU2@2@gcKOnN~eCp3;Z2zXlp+s8Pr;51~)NeSQhN8<*7Hg650 za_^QA#ykG;`iXo!Z*?>~Y7yLi3q7IQHbAB{UUc0GBvYy~-w?L{tK07cK#>wo?f%G6 zr(6F*4n z3%|l{$qv|L$L(zVKylebt-Z`jx-@@xO1f%47fc*l)gq9N+cr7eB(>w{Pyp zKm68TUfb|T{M}=({nmqj|A%Tn=T)zKx@CU*LJglpe*swkc)iDc^@nu9$9v<4fcD3G z_eX#4$A1?Xerz{^;+KC|)&N~#9;Pq_tT%b&hk5=tf8zIm@YjJDcYrA9br>jvW^#Qg z*nK1zgDseV><5F(*MbqKgYLJ2J(zxPrU)gh2>{Kd6I2$bwSn ze@Cc=210}zsDWOXgBHkxMTmtaXoLTEhD<1bU8r$e=!W63gb(`6nCwPZ%Xo%DSe0HdYi`ac)2!&*5g?hM$fw+cp2!{W6g%MbSd3cDO zC>?3|h12JR3rL8V$cJ61h>fU!q&SJ5=!(ukhhDe;fbGYC3RsAvn0>gYiZRHBkobzf zXdIyEfT6gH@kfiL*oM{Di?qmzs0fVDs2swmiL8i!f~btX2!OFShgsN+xTuKG2#(KT ziVKl|JD7az*AYVKed<_*Xt;_|m~piziLDrp^{5??XpCVfgfHQMyVnrI$A_JV5&c+w z_GplXVvPr>kPCSd=g5!`36UY;kP%6d6?qXmXptGIkr_vi8|jfBiH;yCk|RlyC25i; ziIOR)k}JuQE$Nak36n7?lQT(^HAxUh5D2*749W|KkLZ-KCrMOl=AAe2dI ze4${JP3a7w0F+88m9j;YPT7=5Ih9$7V@J^cl*Dib58#wPsg+|17^~$B+>i=W5S2So z0K32r`SB1;Pzu*@42Cce3BofUQI$JM3`_tA9N?5#sSpZ)2(s`g8~_ObvX)!1I(bPL zh^d$ZQ3vti72EO)2k{3>vkWVsU3HX-p43yXOY7%&aeuqbnb0_Lzz&t(wd zRzwS;4vK@958(*cz+n%elSau6wE&h)i3<#oGgLJIZln#SsTGas6&N56gd`FJ;0F7! zA>8B&nwb?oq*%@gCz%PIOmi;nAXef)2g(T%aWD>wqn#}RnkUg}{6G)501M8dRpuEI zuCou=X%JLW2d_|`RmNcZzzwhfFYQqO4j$r|B9)*DVU@rc3{E*W#Yqqda1LLR7R<>N zuA>j&QxZP34p2l8*ZG}U(Ew_xp&aU+3&A$@a0^1z1Gx}1u!#|WbwdA8qB7c^9g$7Z z_YWr)aNqG|*B}js5Fm&-3wh8A(+~|@@MYcrE(7oa@ZkkX3NA*F3)3JAL$Dr35Dd@| z4fR5puwV#lAf)}$1(;B6xbO)7umXqx4bwmix@TJT$t<}1&?fR~c5U;2LuHKQVNze-J$^~?q3-N#pvhc0_I;0$OuIc&@ z^J=fsKt=`;A+WFx&9Gh~N)UvJ3epN7#L5k-;H~%K4A)?)`brB^>ZDpK5Ds9l{UQ+i z+OJD$u3r$cBTGxtdaLHT2F2>Fk{KUEQU`|l4}@t7LJP10OR$-l2(93yTwo9cfC=!x zw3G4&@`I`++X_xf2P!N7qz}un9!o8V0IY?2sED}>@u>+yt0_VHr2>(wyV|QbtFvSI z1Hr%#!SDkCk`SEK4)<_Mgt-cbdM-yp4ae!48p96xBR2aWFu;-|gIgsNLT{Cn4-0}N z)bm@9qc1VK9$B*w+90`<%LWUt3;0o<9xkoGAXWT;Ey7E@#*4fJ0X)om zAEB#L)qA{!1tjuxyu*?;>p&0U%L_r9Anec$?H~_y5CNE=RTwfyo_Y?*KoF~AzSR^D z8OEHC(+=KXQMU{KzydrE*^<1=+q}xnNP=5DpCBMi0CX8FsPj+rIK(!TRtG6pWoO zA`f|x3-zl?OA}D}P%a993HxBcx65F-)(#B(2M#5`@1;0OfDQQ|Px&yofAu323=dH- z08v~`49qtBa1Gt?z2WA>?RyV%{f7CR6aq7GT4Q;S3h^&klp07w;*GYsq`@bF*Q01t|TA?T32=kUe& zqb4nI4viep$mIt3;72xv4eoF$#WF{YX-4s|L^`ygFM`N~07Vb&(b#aHn&KpJJOB&8 z3|NH!1v0&I=DNVPL&69f+FR}*5SCrWqeCTkT?imx4h(hLI-AxLA>x=@_o zLDwjH!}(R(r=TB>vLVew52-*1T9pYfgxQU(Lw-ua=a38o@Ywh(LXWgMRQ=N5k)jex zJS{B%kApBL4ZSJ-4>Tg%P%zjyI+Gs~%aD_xW^^BgV8`=N4x~E_5#UDatj?$K-}zMk zArW9D6;j1XMY!>h2)XcE-84ggJ>b9-54WI}?d;RP#W?IF%byb9OLr=Gxn0YgUsNIn zD2Ft+d0z5h2*!pGTxpeIxgKG9x{MOa0-@0C9S*v}BpyuI3IGi75Xdqj*g5_WcuNo$ zOxOePvqQopuEGf>4GcWv3X0{^Jd!i+AOM*lBUEyoZ_r!iz)9Tj44dQ%A*3+aU=2ks z08A|jtAh^PB_~B-1{i$`J_HZz!2zQn2nlcw>Jmyn&O!swnqQKtNTB5w!sQk6+eJ>H z>LLKEvqFo`-+f+2M18@2Zs$P`Cy5G?H|Y($1;7mSU}mSpN;OJ6=rHI4rqC(c>AK(~_~9VmVduuiNPYf6@*pw+ zf+~i#3t0XK@~{ga%_5<^=)I2UtG-ysgaS7mM)*Yt8iik-j$ES)yksRMW4$_74h*R6 z?S;j+e1171bPl}WLsHHn&mQf(K9#Oqw+m58X1;U>ZXui`Ci?BE=HTDu7T_);BL%(( z;cWxAh*hM-MKNh1tZ-&i}Cg0J$I`0R!by zzBKVZ^fk^(ee^f?paS>%v@yU84piu&|_cXfc3StA^=$6EcxKD1`*P7 zunXmY2Se-%7{yWDUi+o1Fxk+$ZlG9yz_))jCbhqza`LID??G?z4Hi!=^3BUg)8BIq5d8H2ok}3^)W3rD_Wb+9 zPvIqg^k7Yd^(xOUe%AgK0LCvJLWc_n5U`SK9lw3a{;m860b53n83)AtxN-mrbNi4D zSm|b6y+W?q)pW)0-hqzt?p(<^>|fE30t7Tz)2$spe1!(^WVtewGq7RBhT_`wpMb4g zIo|7vz?{aF4Z7sw2QLZ~ea6U`**hk}ABA1z(zVNS0A5mN|1pZki@^ZEdpOp78knU^ zxN8;cx(9?MBZY_c#mU+NpD2B-%C^J?R{-8q5VEB^yl)wh0SN|LV3sZd&#kZX?j=KJ zjA0DtlC9p{`LjaZr+6Yb=aluw=qssPcbQJOUcSZ|T28S4&uR950|b0ngArZV=AKuA z-V=TLTeB!$^5c(EgfKy?=aggqeMKfy^=so=GRUk5N-KFNob3bI*bot@TN3BAaE43Q-S1_IEX zmHvPy$&Z3W$jE=(vc^CJ!_z`GYk2Z;yoG#3?6-d~M2fNiMQZWI7*|tlO*Y$f^G!J8 zlygox>$LMuJoD6ZPd@wflh3juh_j%5dN~UUl#oeIA6*6j;iYEW3el~BKpLo^N)uYB zA%zfSl&3oAD1e!aHtGmFtQKh)I@wBvY|w!WACW4+rW_5hvHQ^f5S=V<7`SVhyY5%(`F5l!1XzO`Kc@5g zRtTOUN1iYa*rgkMBne>mceQcH%D49rKC zn~C6EM#LVIr82P)C-NvK|8sffn|JG6$xee6IN>BuSm3 z^dL+LG6hFFh~5> zag{;=$Rh_c3IgdNK9o2GBJzvH_auUm&IO=NM+gKiz=DfF93fk58UPmNAr3=)AP(!; z)j#ZDn<+ei8QwxlK5k(HCwwCuToOS41aA0?95O?3UqcE#Jkfv~QUhf9kOdhW(GI++ z4Q)SDn5ozTf^5j64-UXYp;m&Fb`)>`m)OS;&EgVz#DV~J7>ezRHUKy5gBWI5Lp#Lw zj~29X3NHW#-g@}MAiD7^1i(Z*ez=BtjKfjb5F;5Qh@S0m5j(HTyegD^Oa~COsE~B7^P0NI05cR>J(Q+Yr7LA=OI^xRuB-qPSK-e%xbT}36oo(X z5JUvZ2fIueBz^4LR7n280gUit9!`u2{!S%;0_~n!$7y+jNuOOO zXxfP`&=RZD;r4TI1IWNLj3R&qV3!@hO|1Z!>)h$WE=x8Er|;Tgj&cZKi@?;D0F>|z z2vWmdV2x{XAwv)P#ZMVhA#8u{L0rL^$G+Z0Npg4VSIM@jh5N&75cI{8^0@ORt$B=( zxa-}sCfGV>*~}32hLulzV;#2HibA!6pMTspzeA9ykA&I4bZp7C{jnK7$)pegV8NHLpFH%>9?Nj11EjcMi?8qtAP zOa$UAhD5`w%U`~gRK^VJHG%pcf}(YpY3-(87uwfk7=pecb7&xhIWD`-^0pvtlaZVm zOv4^PvS}TG2^eMo?oyMj7oF=iZ6yKtAjMQJJ%9!GIT>iY32m34$Ps<8Po@9_mCe1J3xtbe(^EU-&)ia+{;v$Fgj~j*7O!vVKT;Kv4nA^J2R`m3- z$6fAor+eM&o^`z2ou!Muvflm9CsF@B*zf8ABz)nFSIlATH5Yv29sl?xYd!9Jo)hKo zir47jUGi?yD@!a7c{tsBub@xz=SN>@tDn9rs!z87I-gS3lV0|-r#+MNZg7rs{_}0p zeC&Dedp7lc_rb^f<$+&&;`bT(|2RJLa{qedcYgHEH~!|Gm-XdmU;Ep?e(!A${ofCN zO~P0Iew?Up7V?9C{Kc<6_jO->+N&RWyFb6u0(?IH zBR}RFJ_Pi5ZR6YZ| zK%Dr zCPX+6q(SUcK`ETV+e^PAL_#W5!WNvs5H!Lc{6X;}Krm##C~QFrEJDmHLm*^5G|WON z977R=LI-5P5`;f1Y(qE1!vO!UDV6hck}zs);C5Zu5!RKrvx zL{DtPK@3Gx+(c2t#8O1X+dD*H494n7L@1=hJzPatG(|5g#q#q&UDUxZTt7%u!%IxV zUfe)M6hKd$!BG6dA)LV}B*J7w!ErpsT?9p0+(BN9#`fdGPFz7Bq{Aab##+R|a*V?* z%t1}`#dD;_14P1jG)D`p!(S9egFMLn!#`CNNOP=5Ohmvw{6$$TMq}(je}ujZ{ZTlt+;?!Ai8qOkBWntVVu3M{vwXk0i-1gvD%J#(*@#8??u8oJpDgtVwdT z!!=~dj)X>j26jC9CTuP?w6D5>GEOf|ztiYf&$%kacIJ7~4{KS=f!a3~5 zc;v>QjLCuQ#E=wAqAbg-OiP=TNUS77p*%)z6hVEQMY6=jb;Qet97!XrLY$n-EX>Fh z1Wca<$pj?Is;tYa)XJ5p7Ha{EKrqXuoJ`6bKhHBihNR2P?8hxpM^X$+o@7g!j7SaqNkGI!8KlOcj7@A*%&Dx+o*c*4+(xn7L9U!g zyCg&pBt?CMO@>s>B-FpSq`$TQWKLu}O~I_Z zylYE*JVob>&fkPj&eTaU+`_S}&6ey*UF1!aY)`n1$@dISWyDE8yh3*z%x6TzgAJBr;yrjXw*+tkSlIX%r%0m>7NW!l8gGxcvQ}{=bWDRToFaR`F)5Gk%7Z?SO z$*b*%PoVJ=(hNVl%s>T@Qx^Tb)iZ))_!h7f)cCx`(sYHhqC_11%i_AM_<7TJBu3AR z4)hE@&x;Hn3Dr5pO_gK`2XzKiZ~|wLg$0Pvu!u}6ebx#+fL4$iJA#YniHvRu132Z? zMlHE6vPL<%0TfM=-P&Vl#IuXTx zpqqP`1GixlMP-Oe=|7Vzk7jU{X%#t;F&hTt*SpHnO=XjD?N@fSOtQ>ac&(Fq{gnNi z$%#G8u5i_RMa>u7QnUDjeNYA)5VA*QS3ez;fxy){@zvb_fmd3~*gsu~qZA8iK!q1z z))N|0Xg%5`G#D(s*1%|hw>z?>y%XEX291!4BS;U9P=~TO*{&cER>KYHDcCy6S2>Yb zk7Xz~DOg42**57q0k~TF>I%A9ShFzOgrSU8!xAO?TCQCrxSgIDR1A}yo-$zoDe)6s zeZrenh_&EbK6%V&kb)9$gvTUVq`h2W>;hQ$26Q4 zO3edDmpi=#>UOpxV`V-s`2_2b%_N5Z(d*sDn~42XV;LN)?0`coBFgg-1wV zo>&1y5M52Mm)-h;V;rr{e=SVgg8K90LES1C}2(a-xU^M`&C}%ecb`z;NY5IX)pw? zfM5xxU<b>4PaNjk-PG|UqWwjQS#aw4DL;;8cXfOwQ;08~y0Bl%?e1L`(laTVb3U^=t zA)|+B9;jz|hJ2U?2%(0RaG~&dpk8JRj?iZD*#~Oa3VOPrcAz0PA%KQp2WV&qbJmS- zUk9ZZevI=?sh#c8ihYR|K2>Ay#P3Lt^TO;{{d{_r^pdY*F zmG3#}l-@3T9f0i^05&yg`Uw%++J|fC27C71OxTC{X$Ni67HQV#J$UM<&f!JviXhtQ z7>NLmXa|L6Xx8F|HMjaE^X7h(sy9we`M7AD(9Ce^_hrY3qj29&~UCoepSy;AU@_?5UmUuKsFmq9=eBXgV-h=}>}f*lFAN z4Wc$`q>h3CK<$=Z?XCa;bXMoBo@dFnXMB!`YiNgdSQ4{9l%388Ubvd9;0Z(}1;+O3 zZkUITdh2}12SqRme(;80=o*dxplOJf2Rf(_ci0LjXot2E0CUm`u1J8QhUma3>G|;p zj{*jI7VQ?Ahj)%>ACc*n$OfIRXI?NBxbB90IERMril60%_f6&nXa%vrg=emCL);3l zbqQ_S5W6V|{Sp8bcm{Xyj7NztLZ}Bxpn%O#hzh|RrH*G)G3Q+RhYhi(0Z;*KxQB-0 zZORU(Eb;L45Els%7i5qMzp~b|0P@<9kUS#S^lld{)eQ+56Lm8W*}-c9Ko?Tr@s;p# zAN!fv_y;UFhkG6X1{xyS*zmf+qtx)-`C8dTHKVnW4#vQ8Ezei6-HxmI6n_qpu+asT zzJ#m*0r+|hAqSVO0PlDI$#b7UYi+$eDdz|ufMhLykzR)B2sR_d(K9JZ5mbzq2=l?s;_@n^w?&Y1wDFdG0L zrnXvg^X_t)P*kKa=T~93dX@9wIfY~gB$+Ub6HoCKmkeN#ab{SO8uyF`_y)F++g1t# z@PhO=z<_p8364OLRu>dl=ZJcU96>>t!yWT7Kl6XM1kBltdFTwyL6WXe@@|{;{=8OzzNn-51f@}O(!1A$=Ba;1$a2NFN-&(_;F4;hXM+jg%E(QEBK>t z28@!AQ8}w9xAMuT@?jWumPlouAo|$J@S+ibOb85>E|aEzcS;Y3DHyglQCsq0lws$J z8^-ga&w7Rd+wBsIgyqs!@m*NDaF2h1r=~v%n;zSqbJRgRnUTEy5h(uUCmT^|M#` ze{g(&hyWp*wSNW={yXAqA;X3Zj|@O4aU#Wv7B6DVsBt65jvhaP3@LIX$&w~dqO4c| zSUQ6cuvv?^^4`A$`c4`A(~cico-`NaGRJRSyLx*NoEs(}r_q`JR<<uy5E?mH?SRX1{s&&NVnd zz<|MPzU>TK5UNXT>6{+?qfe5BX9b@!qp5%pPj~ zeL7pudF}QJ|LFQv+MJ1TbKaEw&$VlV0uuD>X;f|Fn5_HKwZP08g8{MOCLLJ&_G!n% zck@R4Y%q2Nq{)z@H%fX>^YwlUPu=q}oq*h4^YK=g5zNe!k2r=zBpPd5 z4HV9BrPZ|804V%-U_=N3B@|Ij`6U%q!CjTrg}_-QfLYB9;08X0*ila*=AkFnb^qiC z*IDM#6q!DSs6bEx_{hObGd7VT(OXCrq<|xdwR6*T`5~ngQ+qhI-#>Wubx#B$x%$juCBJ%a3Dsxk~Now%JaxpPhKR zOGck~i7Jnt|7tPfbr|fmZoAo@0mOXuL3dDoR{k?Ux8H_4*grlv!puIr3?SON$z1rT zHYp?PY{w*t%F;h=DoHFtAhuK+N>&u6sO+PGSEL!XZtG9yK`w|D+}K zL<_>|<&kL*z=%Hj_Sn`zuUpe~J#Q2iYdYlheQL(1CLBgYP6YD^>yO4{D}R6LD;=r5 z=1qVj;{;(4AvbL`(XsRqzl&YRCvOv9M9Zc-?*l}sKDSc{um(4NM1%nB2$73EcC7_h z+*PrnV=I@7-RvS#yGl7LHlpI!KitQ@q&ScO+p?16C}%mhQAz;NJID_taveA5|AQ3( zywK$y1U|gcWn-6& zgL0^AltC~sk7h)mh_h?pF36FT!pM#k7wX`QYV?~dMnrmUa|1or(TsnzARgU7N5|X( ztxMJDA9p$h>2Mg4(Cv&SR>B)iB%{TD9FQV~3DcMYK{&=CGLed0BqJM%67$I83;~0Q zeP}`!0hlKrx3GZ|z7Y-rWFjBGFvF7Yu?GTRLLa}N0v7loy5U(ZlecIB9{52M3Z3yF zD8L3h+F%7{@IxENd1FkJCXYUFU>EbSU0#TJG=8XK4n1&1xC8>JEeye4{~cn@09vq* za7^I^z%ZrKdil#>ViFjUoFsohkd0$H02BM@1@PK3lL**hAHSHw1DLTpB~hb$Br>6C z1mI0@ijyk1k(@fH@Jna40GeG7u6`bxahcXtXFsH7YP!a?+Dmx+YD{am)t9 z;T*LvT3_;^3>#pf9hpMqOJho`i(QG5uvFpiI11E{?xPk9c*Z^Y0M#c(Kr{qk1ly8& z595KAHEVrp9N>BoP>Pb2?Jy6OgV+Hdk_dn!o9o=?LN~f^5&#~!GZ1^`ttKE6zzJN@6L-*I01tQuPw0`0 z5dLEU-sJ~9pz%u5iI=?mz(+TfB<&b$v&L14tEUGTqMPUQ24=(OSw_N)`&m^ zvdWWq)S^15XyV4XS9Pa87?qA|9(-Jtj^;r)Cht=e*UJy^dMwD?Qvzc6 zu@7p1W{ALGhgV$bhc17a#~ubN3N^+n$1G*c`IzzmI?0cD>|-2w4UPg5ZOiZy^i%>+ zf_yU_27!VAnCv|-E8sg`p46khuR6#AcF_}c7|$S&3diS0UFbg#p^K%7OJSTK-xV)K z0MZ(Q$1(w-1efJfwdP4aaB2kS@}4)n+gOA?{Z=Bc`T!ZWg^+tsK%@o{X%Wsq|7C${UFr{lm;65-o%LPybG7JIX2WfyA-hL69-#zaVxe&kw zo{@W3&gd);JI)pVZ-eXo?=6SCU@iprixgaI86i02Bd-ytgW%j1SvTnoV35=mtKO<# zJ?mTlT%1e9@Fh_|E~dO>YLEaJ?$G?;FV9H5{}aad#<@!3`r~=nFTEm;AHL`HEqpUA zfB9dx2=YI|7}+1L`V-OqNU*>8s~lhYXi9dQp8pXLc*7GDSb;0hJNnX>9tGK;ocUdE z|NG-V|BWO76!_7Oow!371i%OIocGj7E zFyIDqUY)!;+&uXeohh8!6rl zU=NZ+45CTtZA1m41Q3=)4yM}?8sV9cUPmmUMLeMsM&UoO+Y~}!5;h?Y0^t-|p+^|s zny8=@CLtqrp-I5sNtB^S2w@mjgyrQM{}KwJ56a;j(xC;Op_<$w4342loFE*6gbv~% z8*W4z+M((3p&&{`749KNC}JKWA{Q>=L=d8zAR|m3N;IM&Do!R!Vk1%^8?quJVj(E1Vk%l9E^6T{s-Z0wVl48aM#P~JKB6u{ zqAnWFDCS}?CXy@uVH|p*nfM_milQ@`;x%F;bX8*^`XMwTAuwj)1-{=la-$$RVl|2) zIF2DYuHrg+qcS2yJMQ5c*5Vo7;V_OOJHlcj%A!7+UK8FUK+dB-@?svUV>uF}IvOHD zE+jreBSI>qJ3eGNg5xjJV>&8i|3!Xc44xx7Mx;DmqCp;nKW1Y|nq<8(L`Y;^D(604r!7k6byg&ALL_hkrD(pV zbN1&f8mCA;=54~{b9$#%ZYP0eW_5leQJQ9FCMR*urd~29Myh65uB3uOC}%FFXeMY> z;^#xcCU;6`hw|rw{wH&eCv=`?i@InKjv*n5NgzllW=^Mxs_0W5riOlKNJ{33)}oEx zq=Pc(F>2^+9%+h>Xj_KogIefN-e-KKWO#O@el{qR&ZmD)V}=eXhq7W!vSx{5q;L9Y zfet8@cBGV|Xm5Jx|B4Fei^6G~KBMUYPT)Ah;7}xG%A=DurArR!QTAw28mL+RXZre*#mqaJ8?ekn|b>6&(CZj$M6 z_9=kw=YLx1q8jLMy6I-hX|3AoGRi1J1Vb=1M42olZF;F`3MpS+sGut8uWBiI4(gO9 zE3ww7eA1+J(q*N>r=e;kmLltuHmHzZYN<}>G?Hm>=3}cur?KXyW#VL--s-xts~swY zLlA=$e1Su_=UPIhmxk)866cvVC%IimIB5DTq#Mw_ZK;9>(7Nctt z?I4mUJkIRSJ|fdDBU8TSI5OkVhAq%)qA+f4FKVqYlB~(P?KQ3^Lzsddgh9(T1TF~X z)1sll=Iy)%VtOH8VYU4Qli;{AsD`C(IVs9 za_&hwL^LG9F}%SVh=~h^M8$S)>cZ&Qs%{U8tQfX#>~^I?c!CcA!V-|oG&F?i&Z%0; z?(Y_1|JwrZ{Q>Oo8t<*ftuq`$D2zfFSb;CxZQ>s9^fvD1QZEBGw_>yn=n(z5$UHmo&hP!=Z~p4<{<2A(1`eL`ZvYGM z028nP4^rS5QUNRQ0yA&}Z?Ae1mvQl~15j#VQ2$OIL zvmSYxa0;vN3bQbrjA#qPa16`v3=blL((n!Aa1N`m4eM|Z`|uA_Fb@Oq5EF3`&u>c_ zaS|)>5??P8Gw~BcaTJ@Z5KD0tTk#ctCKY4x7ISeIgRmBRaTts77#rXVlkpj&aT=Q- z|LUr78@urvhb9}t@f_1}9iwOF+HoH1@gDPWAN%ni19Bh>@*op(Asg}`BXS}u@**?x z;Xp8ZN^m1f@+22={gMeKV{#_nu>Xz;0BiCmgYpRHsxSCLFhFnkhH@&aa_hO=R;sTv z)Pe|zKnR#X9O&*swC^hG^7VEBEWm;+2vi;TvL+DWaM+dy?E*V^LcV!dj&Ot#zyd9# zUUM}-9ryw_q(Z|u5{38~Uxb9WT*EOK0t41BF`NLeqVh&mb1q1OCS;F9bipXBPe;6k zNo*M%@k~f4U~?f#c5$E)i0%aMa_S1eAMnJAe2#QPS=D%tZ5==>TthGX0}7bK|31XT zZ#8pAbd8^d)Z$ct%7PC(78hZ2~>?&(rCv;%5i1g%^~J(t8i@3TkDb|Yc+0lp1R5!VW+JEIa}MAOb7^f+I}BG4uwFAQtMZ0W?g*FTAt9xxrA( z143Vj5d;G?NJAf7hyyr+H*f++Ed&cU$b#GKw}$5ehr5kI*f)Mh#D`l!E)WAG zoQFKf^XI%kDF}r)%mVMM03tvGhl7R!RJS2G0#_SEW$=T8cnl-(gI#zxc+^tb!>l1rtEDG$4pX_<0^+_o1JjEj#)NAi^Vv6bFogAe{Ip zz`>VjIXBEumhieki25~XdXr1@Qq%!3HxMF#xF?=w=NLauc|NS)c04%_HfZ0wP1dJTR zHzf5z^j}ZJgGqyceDTCM009B~wx5}F0?dO^97mI!f-AIx#QPa9Bmj66JbppIGwg#r zZ2E$`Jj~~Oh1Im51(eGt$Deu3%FokrL?Ay%12FBxO%%p)B*#s>T2I_n#LK*Kn1#$( zc#U6ta?}IG*L+W$40qf7+LwLC|3k?q$2hT!#c1-Hxz}&Uwk`w17QbH=#PHE zYmICJLq6ogHF!KVL`46wgX>q59Pz{K4_2%BMakC#{~g!}J-B{o;g?N(L+5{fdaeHH z2ViAPi=DJXWeY$?6~da8yi1!5HSjuQ^dInlLq70=0Nlx8YIKWhho@vDalOS`TEp5FUshhMx~ zU%t&N$6&xo4DIxhx}*`vKMmQsmf6Kmo{gvS|L!>A%WChwXlxGSE0kd59svpXNqj1o zF4PZc^%)x@K)}Deam)#2Cu@jm&LlT?KE+vbo6n?hN7Egb6b5tq!Wrgg88bh6-iU2^ zs*cQ%yaGO4X&vs2V&!P(@hfMcY(sH{2IS=|Q6OpoI=(&cNsemA;uap9DhC&KGd7#1!1A)mEl1>`T8rk;Ig#cIN z2}7U`HQP+00U*G}n({cKMl~q*;ibIv7>UP|e+VF?FDT;CB>(~#kw}1uPPs~=0)VN9 zj(_~K47_xL5C8;h&=D*fb%4O~nRJ{?|L24!{SfF9%La(y8F)^rjm80N#L(PHy$OfJ;1X$q7H$X6_nE?tM=ARbM z(Iqv3EMVrIFa}rvRUqoTb09t8tno&Q>=fw8iQLeKR07g0WH2kiOecZ_B*II{t8V=# z*8-lAhl_tOB`L3;ti2Z7Y_;8%+it!6_FJLEEy}DoG_v6@V#7f~Qm+0|lZ5zDS86PcVn2Bm< z9LuXi7AM64hMpdA-DjCAQ9~(ofe<*S8L|ZZni+yy(1(>teTj#ZNl`~B_aeyPBwk2? zK{|hu72m<%+!J;LZ4trMt9j{a; zI01-i7{x2k0FY<17BOi_f0&>y1gH&xP^5C;QsD|&*g_Y+5QZ^~Nl=DDu6oGf8~EUZ zIq;DOtg*{JRdEZv_HeIx70q7j5(p970s+E^ODJwR3EbL&4l-PUFy%;+SyogY0q&!B zCW$~>RAa=Nk!)#XR9WfXl$stm<~Y3JqRniBvls2d8aqSJ9j!q|0hp0z53CARPU5r> zt#N*Ny5V66$+ga~A|)@Hhc!~O#*zh*jAc8S6QLMIM54r!Co7K`Z6gpTgk?VBc*NjN zGNHs7ZbK#^)H?Ek|Bt&VErtIOV2Cte4lA0W4CYWriY6#J7?JLQ*CU`noJf@ctY-iU zAcR^(f*#v72^h{)S&WRpm3FLS9#K(JwNP^}#7IscD@aN^UK5y;RL^t+Z01Q!6b88E z5g&43Ml+0+w393#7p)OV`~DHBWKFGZ&4@sv^013=K%pLaa780G1IFpBhhB}WCp@<) z!IIbvj7}5EJlX-qaeB>xOSC5Fz<9m+c~pimmFY}rT2q_C@Cd%(M=*YnyOzMK5bf~> zKimNxsG!YVL*$|nU4%q`Q3YOaXp04&!4Gjf?s2ks6K6WPuRmnwgaY{DOI4E;DRMH8 zb3`L1tzt=(|HNS$(m;`v?CJD%FJxwv1EH=^K%kj5se6hsndExN zaF#sIG$uJk=p;^x$0w>78`KQo18X?Umfl&qZ90pP{t=Xa;E@SKfx;b(=$L9uvLjv~ zi=dH$LSKA}0Wkgp1Lyd}I#^MGb1Y&Vkv(C8lQFmfoGLy7`IDeHx?B-{bZ5gjl{?Hp z1{0HE{|W=%E!RqCJC+VZWfK1IO=(RnXujFu{lVaHiB1_oV93*gE{s;93hP~fCAvxf8I02?0fCTSJO7Bi72w@7+VN8nQc}dhqb6j+zA06pQ_ZAWF6)*b)mmM%u zDoM!Fj(muN58argIin8bWC-yeN@xv8*0B#7nPf2D!OK57E2gr5L@n_#3O~H@4TKbe zP0I0xS~gOF)-0$so?)w7{9cf8Oz)3nDG1hNy{UcBqZ@(0jZolzlqhg@L29{2{}fuS zcfMb~lxUidH)=sxu{_fbCG9#GEBz+1&qpLct_Gf6^JQuv73`yaJ=x7p5uwz5AC>_D zVdxQ!Nws4+pC_55=RprxROXf|IYJQg)Ew<0qnr+uFF4o zga9x>E^GjcifnM)kJi*-4tii0ctkb)P9N@us_KW82p|*k;TO!nF`_L}BE>)G!v^v% z9i)o{*Ww@WfT*N{X&x{F*T5ViO$p`!1AD*~;(-;4#k~gT<>;q(ngRnI{{Y$=;Q&1$ z0ef#}mSGGiVx?ei7#>g`et`BA864N zLGdUA;1jO}1dISP^uJF7B zVlbzGmGF`=hb<)rGd2L|nFN3@EzB|B$u^2$4ET#=IMZ|T{~~u56EanU0Jh)?OA|Ft zvojlRCDcQGw1Bq^@tNEbE^i_)_;MW&^O;OSG6f<6NK+-$qXEP~3o4T(-cdOXz$RF8 z9bLjQ&mhZ8f-_4qB@T0I1i~$+GcI#;405MhfJZjTX+8MTFJb3|1fn>P(=}NlcUY4F z&Xd1bqFOj}0-iG^P-8K(GXjP(G*JUDVC$KLb8379HRF>$OS3$j(-6xuI#L5Afrl|+ zqAlO@63lWfGgL!2ltZsYKJycHs)Y?d^iXi3FhLY0PSixRGbc!99bGg%(}P6wvpt7% zMqe{E$muV60y59@yvWlhmQzS+;zn__NMk}hUcx%@|1(D4#5z?1w^WEpjZ{f{^g~s2 zMQOA|v6Ll#BpenXc9W)KAy)G|Au!|5POgGdfVhP$v^x;E_;QB2FK*Q6qINQ_%`u;S3a2QZrRkH#Irm z@g$V9Q`-?G-jPcMf>C9{Q)^64ZPd0BGh0CQCSWx~A9Yn|YT-3$4VG)Qm1LpTYnL`xbv9wkRboX}ZPzx2 zYSn3lmS=0WX}7j(<<@Rdc4(FMZugdNg?4JuR&Mi_XkWH(ixNE zH)a`kSr?aJBbRRhcW_e{bHz4jIk#|I|MqjGmTgCubQM-(-&S(VRdDZibr*JZTQ_tA z*J>#@c4hZ-b9Qr&c5-XCaUEB59o2PvR&P%>Z_yTZ3DF)uHCJ%|wsg0bd$+}5eHUs~mv_5$d?A-|kGEi@w|Z$8Vs}+}(bsrQ)p^VJcHK68 zn-*K$*L?Fgb+K1<#rJWocYWJ8Ux(L#&-PPa7i$eyfK@hZv3GBAmt#TKb-UMsFPK-; z_I?8xfbn;3=a+$nSA;uQWB0dtcQ<(zw}K`3fJ@k1lb3{h7lf;pU5R&t>y~O?7lQkD zdL7tui}!eE*LgSBXfYRj1D1nZ|CoFi_i#ISh7A^XHTQt;7lW(ViY@kgpLlG8xPcLv zi=S41!T5Zo7;Hs2dd)a{b@*Ggwp)RihM#taZTNmxPqs6h)Xt*VK$1*xNcRrg`N0|UD$!+c#E&tk}ug&3l=8&Hj*J%frFQL=@*WR zwTlBdg$Y=aKe&_m*J}TGd|?-L^EG{q)`xp|Y{S=om3Nd)n20YHmJwKqP1%w6myE?2 zm~WYfDOi0Un2tXdlb;!y&sCTid6{+Ch(-BqM;M#!_J-})ehU|psd<}MIFU~mcte$24FFS+29XWm!+yGA^%-y@c3f{ZjV(5c0oMqQL2`UH zbWZnoUln5&pcG6YFV@&~r_yPu*d?qQtL0UEO%<#Mppenkh;7xQ<@Y3-8l8Ojs7cnE zf6*Ekm8D(Utj#%MT?%!xm#9%9s5SVc2iv4IHd$`%P7GjYIwh}9HKy4bi!=FQZvq3v zp(LDnCH`O^l;H=0|KJ@f`?7-?vdQ^ek+xlF7QrlAlfhN8lZ00;EEf_Ro_Znx`@YBC3u@e4d7z#%|)`Ix4AW2Tw51dNw53$sD~RywrU?38z%VL zS#dRiNt+#K472~?xIKrk%R8FK$%#S)HI6_vto5;T3@Ud*MexEM;~S_k)TZKlg?@*< zll$6cdnaD*NOAMS^piVd0=Ro(K&6W%u4}<>8(jDshAyX#`a34H`&;gN4+PsJI?}v9 zJXv306!M@It|1!cUdj^5E`-$O2Hh&0memq#tp~|T7fxm@SvP= z#XG^a2;d8x|A9d+F)s*U4WMBfV8bMgAQ+(G#KRM=xIq>eybfr=WBx(J-=J|cf!m&Z zP!J&(;sF=5>K~Y(#HFFduk#C>{1+DJ01$y0=m8fr!5!=T%+vh76QLETJX!?80ZRPD zRl)%r!5g@N$PM$zlYBiyoWxBW#Z{cebHvCYMimxFmdqT@Wx)z&VaBBd5@eyyJK@S( zyjs|tIh5QabUZJ<+{Ix$)Zd`SZ#;60B@rOu8l+(k5M9w3Juf%_5+1>G!kpN50nar- zAlRJJH4G6nAmCT#p8+(vSFD70@fv6#VMZ94P6Ni ztl))RTtt^_|~G9mJbHQ!9#{v@Yrlq8*5^ zAL#3-U2+QAz#BGZy(ANRq_%nl{wtspiLN}jACv~D8?q96_eA6Vg1 zfFU2oo~SIPxEzQqXz3azh8hYW7nq?T9ztanWMW{&B&duXu!g$~-yHV--k9^&5Z@sn z|H9xRe;?-llo+1~*YN?K0VEiLM%bPm+&)TnChF&5>JP%|6(AGhKAf^F^AjHhu;DJm z>Kn@8Mb?2HHZdMx#Ul*D9Ns=Xh(;UYlMxuQL^cmdPGRfW$?M}`9U>pBPU0i;VHyzs z_7Gr_@`5bVp#q%Y8!SK87(X9)A@Sy8@b>{4KmzgEiy#c*8+haeav}Y_0U&-s$d>Nk zKPddzU2BJrl>h+-|6!Sz@7lU{_4fR8@{QiLZ}C_~cpXtj$Lrq$|6uLB z@k|Fqz@K*e#Li>)Y$wJ&1Dc+Sn{ORCp75d!m{{>*Mym%Cehe7_t5&Z63V_|YZl1NJ z25;^gc2nOsw|_~7(~KHM)nY)J0Jrpn6t(}u0aInhB4K5 zN`Po<263uys*3>uH~W&UKlRUzK3xJ3a7j`FKnB7yD*e*}KaWAN&uJ0FF_{M0s8iN~ zHsN>LLG3idfGZh2q}wTqv1S1?@I>&>hz1R)R1D9+0~i+PP*b21=7eJq|A-nHRN#v2 z8T7}40|>wfdj|j`PZ$HhsE$3oh~~}^|EPdXn<_l>-2fn9Q_e&G2#};Z0$A|OKIsf#sE%?C@LqiUs5F3s zy!?nJA@xW?fdac^gur-9DQ1&df2oiSJYfj%l{{}Kb`O&P{L540lz*iZu3F|XYN=YS;8kmz#5XC-Y(~!zM6zp~nVPVdnqFzOi z02s8RpJMLx_ul{l5(t@Ss186OItRt03%p0RM<2iZgi|1m$;1`p|BxH@Tfj5&aN!j& z8A0|BuDbI254}v@d(fB<#W5a~^4%0Env@Pe$h!m#sh)oT##_ihbJlrh6nXC1=bs20 zq%gxwGP{SfO+qWOqz=|HK)F6W0eb4Wht0M@{)6>?7h?n8 zik1;s89x#~#xE zxWeiHEdImDKFeSWXhZ_!tx$feAW$MM`~QHuxwP8Ou<(f>yD5XHy{Y2RX30keS&1ptG7Z;M+*-V-Wd zxFZ4<96%Aw;GemeZ7I4TMW8UG>4H0XU zBI$SzCPrkH=8(x-c-X@J{l$<1_|z587bpSD4>IO40yFs0j>gziBf&D*TtbOCtR2g2 zyo6>(6cEgW5L2O$0n`sS*tN#d4}@DY2=oeJhol%vl9cSs3bSXvdjPW?1#QQ{(s)05 z`Y?@?`I?Y^`452-)Syc&+zAOVzm>Xkg6g5;|9I}m%wa?_CMk8Q*b1agZuYVrF4bjD z)AP`bM6{P)?HU5w@fgMh@~mi0t6JB})~K=5lK(U0*UYodvVG1_Tsy^y++hYX_>~N= zi^#C(pfzi7ihfp^lv6AikrSx{GKU3%DMy4#^>wXCA6UaK_<^s8L^dLfh}bQsnM<4w z0|Vz+MjQTm23T690bR%iY@#sO!a`20>4V2 zTw{>Iw_^aziN*m8YH$i2u5gF1fVWPue#|P2hzBnaXf}G9@1O@+>{3vh45s??9sp&} ziR9sj^X?R(TT`qKiSsFB05l`0RV`~_{|Q^!=4HA2o#p2^y1m0XlAmEi-vXDhi^uNO zw|))mRah!Z2UYI2{Lv-wxYxs(_DDYc{cn$u#SHq|SCO)GTog8Z)I~0n#Djti)-L>4 zzz&3oiakYhpX=A?YIPVXzHfk6>(|yQ6+UKdtCXiq>}a)jU!>maSPgLPKM3H6aS-kw$rBT01n_1McR9jFatdUAAe_jh zw;S*P&wCI^tE6CH9v*^7rlAx^|8i8XKkVq9{pQl$Dt=d}--JkL_h2e*)U(pJZpQH> z=M<)TG`^=W?}^a+Kh!n@A_~y+?$RTXVkxGo@f7JuR)9x5 zJsu~(6dc7sTGy%&(MH|u>UU&vFU8#0K(|45{bc)I`Q|v!xz2aaoGhan1LjZ%6|8^~ zMDk}K>e#{%rZ}W=OrZwMFq2t;w;*-Q!2yK8MO>c&y%oUBsgiCai}c z8eoT%3;+ZCAiFCF;~;8K|KSVYSRA1fhm&QDfdH6@$1QAdg;RkiG9bu?Jo?}OOgv~u zJSCgo<6>ICQ*H=G*hOpt6@j+@VhRsv@f*hMb+BurGJ}Nc)&wA)#Wx@h=cu5>`aXst z*{MSa6b(IMK>$0nqaaDj$KW}lqZ!TPapF<+^^mUgnn#3I`S^ty9Kn!1EUX@V@WCbc z(La5}q6$?Kybadydmx|^zQZ<^Jnq1T&36C$HL)Ww=-~;ryB#us*T*ubfQ6pyK|q(6 zd3oV^pvMeomL&9Ne>O621;I<=aCN(oJ8W_WQ}914!4Ho!09AK&S+{lb!eIo5AH-k= zB7X>vpfg{IrUigJz7=~!&bKjx>+s6-5 zkvrxAc>KT~Oh*qq!4L7!EmOxI1mH0-K@ZCyF#+OxXy^>mF|iMTNGN2udIF#X-w=r@K_?O6ik=8x0g?$~ z6aZl}4Uq^N{|++%Cm@P3;SO{VTmoPxI#Nclwq16J32k@^&KD6NFi?e<3uYn_)yNLt z5I^FcAxDhi!vcjok1JZ4w^wln(pG0g9+ejR+W_*iG>O4IxsCw^)k1n1_cr z00y~;3CVy!0u3?I4vqK_cu+|e_zx6Pe4B=cg}91Fg>3hzNx3j4v5118a#OOnESpt` z-LN|0;*S6s1r!%3kQfu(aBN6*V?4BJb|6X4&<^Txhw+q>0U#RG7!&YtjoBzk+!&KK zwvck@kY@vtF@cMwMq+3Zl9Lf!Vwjd{xt47CG{^D*WKc}SQ3SPTDP{wg*diSGvjt-? zZNgDE|6K@91i+WaLqJ7v2FfTwgE)8 znZof91JD3saGArAKecx`fVmXlv>cn+ny?cAlUX2DqFpq$m>C5TaJgoo$!3^29CV46 z!vPs|IRPr7n5Ahc4^cOCqMLvv0Kyq4dI=HvqXkCPPt3`O&>22M0Gkr@nh+tHq-mN4 zftp29B-r86u&tf53!kYBplTVpT_Z@(gB#)DWAuK zJ=TDm47Ho|84=)f2A0!LqnVu1xr{OtU2U168oHqz+8ogN9A?92`q`j9QlWmS9iiEq z|0KGM{RAa*Q=#FB9IUyb(~+OmF{2To1m~b1G!`gm`Ju!iqDpg|D5{^lMx!1Yoj~d| zOL`m}RH4fuq<=&Jgb)sdgCkEuWxn|+P3of^`lVnRreZo}Av&gJIvfztj7)+iQFNvn z>S}Ab7v_);kth#zkaGwMrEa>XeA=ge>Ku>xr^I0ZgxZz|fC#U&jMb^9f{Jr+nV4(| zFIMmhh^cc(1YC`pshYZ}8%n4KARL}*0QBjpd>X2sI;e%Jb0?ZujQSj*3K*oybFbPQ zv6>y8Dw@bKt7oOFc~q+gVXDdDtHar<%pt6tdaTHrthQRHu?noiVXRdKt+dLk|IM1J z(Q2(zW2)79s@B1)%c`x;A+6KltyZC};;Ki^imuoSuDOb>QFE@S3a`pKuk>1~;7Y38 z3aajUt@|3Tx;m@!8c5^{HTb%%*O9K@im=NOu+u881R4Q)aFp8?quRvj4EH#tO0}o389?t|@z}BfGK++p-T^tM|&TGMldv0kbcQvNn6O z!1}VkYO}Apvm^VgKfAL*YqBJJvpx&3G0U<{o3u20v_#vqI_tBrDzr7bv_&hmC+oB- z3$$PM1sbcG~Zu_<$OSE!3w=*lOJj=3lTeo>@w^eJk|9IQBe`~gR zo3neHs$yHXXuGyli?~obw~EWHcZ;-s%eax-wpKg2l$*GiySQOnw3Vy3hAX&0%eZh` zx~8jEgWIxctGbapxkwsiZtDI2?>8@MFfxV%6qvv!DCDqRX|Ed%3@Qy5@Vnd&IoA z`>@!%y~i87uS>PUTf4{$xxP!W+)J(oE4fVTzJ4pS@*cz zw(tAG-J87Ss;x&52)N)3&VUPna0CN@yfs|E+N-o8JjDBIu$vpiB<#N+ytKTV#Qa;h zz)P*3d%#2-!qbbzR&2aOOu>Eoz9~GmQ{1;>ti@nFx+na^O3c0-+`$i=#ZxQ2Ol-W8 zYq>3a$9PN~NX*9UTftt8u;v;FIy}gO90;8Y$3*s$*(N8 zZ=A=x+{@6h$Fr=#TWrQ?JG7xd$jIyrq42|hEX2DkzVr*r|7yI*D*VZ*Ji-7Q$&Ea~ zYaGJ4e864o%1x}r(`>9q|48TE5Wzh%`+U)`TDyTT+TFX z!j`PhrX0TZ`^E0uy=AP@NxaREOvAf8&e1E<7Jbmf5>;yaW5%8-1?DZP&_ezLL=l zHd@1nw6F#MGYv}GC7Z*9+zBsm3~+!2(=f=mP`;|Y$-%nYvR&Jkz1vD--L6{Aajf2= z4BXxNtb?k`*wL@-t;h0R*yFn2>I%kjtG)2;-^*R#1|FpX5Y)sP-4=^khbJA$91T(s z0w>T4-#y3+&db?*;P;*1I+xK`Cfgi7;v~)-|1U5Kf-nFlo(GOF4bm_N5#a!>a1GI* z1S)lh)4&a#uoQJL3U~SsU9bv|pa6)V2@$a3E&k#Wu>wh+2c_@`!hy^WxCYMP2}bbP z7=GaYn%pHG+ypMGA}(cN-sNOo=A$zim2nx}P#c;d7HFs*P$3mmVI$&!FByOhsPZkk zq2{%r7&_4n`Or>iiQPIZ4s`GZ)9?sa4&Eb<-(PO#M*HYmF6oe7>2@s{l)+0x!xbij zGAiRPEi)h*F(kEc3Gv_w*kco#&N`LiAY8&r(i9Ph?F_;23ripZAK(at90-=)>%RW$ zz#iJ}m6q-tFH0?R8D; z=do0ThBZ$$NtJXSShc1MHtz6IR7>$=!a3{N&gh6rIPM?aG|t`#$j$U-1?%hW$QPh6N&hhBYC#X2oa@(a^iUu5Q*-n1(R)hClqdO=dYCeto`1ZMP|g>W{NN4c!`ovn^=O~=YQOf+ zL7;L2FNFD_FZvJ+AdT^ff29cm|7EY)T+a4>|M!3&_`GHuMUosK;0>NI0W07N?-=P$ zEclQg`I0~Rgzo^ZKoRYb56eKL8g0jv|M{RF`e^?nMNkKuV4aT7zoNhTtl#?Qd-l>C ztmpdnX0N%ffBU$f`LWK(*CVZ$+qQrv+8WI%vP~$?39X);o8B*j( zk|j-^M43|MN|r5MzJwW5|K?1ZHErI+nN#OZo;`j31R7MRM~)mD8r>K%B1MQ5n=&Mr zbm>s4RjppdnpNvou3f!;1shiESg=K(N=1uy;>L_dqo%b;R_j9kSEj(vJkf-x2QWYZ2kdD*{j>|l z7xvyGut5hOgfK$?|Bhf!noXvNV;X7T_`wDz*!!+L0=5_<0trth{a060 z{~!H}u8@#~n$SaU(p%^qLPtQlbd+ACgEVOY0s*A=rqZMc(xi(LigXpeBA}vz^de0J zL?nmb9_O6#zu7nYdOwCW))@0WKXbmOBsi7QJ%4qz;pNJ_yO98}`dqCnqck91A$+6;l6+EWi6$N+0a9ph65Uk91V#Ts2XV7Ax8%ONWAN*IAsEhjuQm#t(6nCA3&pbf{U-O_%GIy=$9epedI_`QEaI(R2hQ=P=-QXRZfYQY8&G+n5%tW-gk??U^63* zrw7Lw$+&{!e8?FIVzg@-Pbvk$ZNR18v8hL#B(DQEN?k7i34gnOWMMIP`nWrbEt|1T z!fjm|?PIfJr77GeB@-R*&hBC^PP{97m}a&GH6@X}6vk9JUXz zt3?Thf7(3PyUwXfj?e_1p0l!e&llHCfRp2J*cB?<;gFesS0pU{rtz_Q3CCY#wLIk@ zDjvDl&1+7*AKdO0Qi|)?Vi=kdm$|TZht=WzEc%gQt!h&M7$M=Tr$=9e&vjF z!tk;XR)HH~&XTv_+V>YCmN9J0@PNQ-IzOcf{^V1{yU0Y;eIy1lV1}?!A&H7t=C1mN zuRSLl@(e4z`)}X+8Ix&qpoiuM%3s|BSHH8Vp2P7U;GN_a@Z|us_6h(^QJ__=A(*`G2k)AY8g&-AkxiP&p%2=S%W-}0 z8^@dv=S(>a+Q#DN;u+15`Uu6&H@nUzQAP9|!cr$G@EKZP7cjp`ERr%7vI_eKPG!C5 zq!b}{)6M^km!(B#MRz1}ZrcE8;iqy*f4pwjly0as-4qJ8yvG@4XfvKn(;k*i$I*%# zQYiY9CGYo357IlI6=-$yh7Nc6u{Iv)Cwm()=K_3M@=(1DH1#{yayoa?d3@fM8Me4x zvcabN>a;S$^@x|V(S;NwZYN~#OuS+Jg&Ec|Dv*Ncth2e%21w5g_64IW?tRmwBY8JS zp@*qv-&43F_iH7?|8SW715XO=v__UsG%rWZ#jqNG8uiVeiS@tqVeii0WY&%j(@BiK zkxy2V5Qt7}Fm~60a2%#b8znMt?xnCVg=K^dX>r*U!>r$$A(SiumW}Z-*$0DI=C<@+dr@ne> zEDYEt1*knXkfw%x7_sK&f0`gki+f<12Nq0V{~VuXW8_>K@-InhHRz#4v@6Ft0b8FR zZyHYDba&P(G3%5jQ|d(eQM(~LAM`v#@q;mmbJIHrA5wmg*Wt)F`4)`! z!zYe><}*OkvS6@{(btO0bOt73+DKg<53p_l@855@i5uNAVkZV_wI*(+B~sx+_pfK6 zI1Z_}8kU*mS+Q+XISx*(LQC%nKh^CB2>VEikDDl6m!CI)P#SGutgndlaa-1XO3ZhN z&+o=Bvy}fGC$ea8g)12Ylu1`w-*v3yUk21uK#>(6Cwa70Z)ku>_o{R|M(0TUsc>Gq zL#ahu$ImUZGYrYN%G{^uTwL#2Cs-2LWZ(X(uiriJ9OupcG%YSCE(^?8u5ua*H$;3& zqRez&*xgrRK(HAS8qDsbfQ%?PT+d|Z6WM$x;p9BfCdW1D@z+Xtb4*TTYX3OKZ@E zT__e@(br9elpiBEOQo=Ph4d`8V)Ch_^ted8jeC{AZ~Rm35|=Jfusx#WKXL?4^C$Cs zd;{Z+UrafdMQKH?Yy4M9+@L>XS@Q|(MCKv z8wa$?g`i+kT!~U>yr7HN|3q5bji?Ct| zQb?)Hi#irEJp*Uh8*X^Z2Q8`-=E(NiD6VeLk%aUKe5g}*Li9jHNH>F<#^^<2R8K;{ z45>U^DG4%+p3#=~t#2pOpwGS;)WbnE?6H_kavTwt`7lH|$IMxsABooeYDk>m^M*>W z!Hqi5pp=_T;KxPoP%r)gcjljBe`E%9nIkI3w}$q$Dpm2#WpV~-#$_xxhq)f zN}lS`3+EDr?_R)q3 zDGfmY^xl@j{lFxi5AUzGOt=&#RZ{ULUafGr1TGwCtUA(t7hGGh$}Fv;bXaewx@TfJqN!RwL(2!2 zgp;86W(Xq_iIS#}SLR|{|H;@+k7{=w^i8QU&`&nW-D)aD*d#hG!=907VH{^9)>-rm zEN`&AHGWFQ(T2%J0i*zQdnkWC`Yq-}6=Vu<3dxeD;2e~R(j@imcVtu-A;!$O_JEU7 zezNvfX&T-LhW z{LyiZnqNDE)G#nNn*=un>G;sel<56~L-Z6`qD19oFYsJG$#9_Sw0Gj1^>)@O{gnCm z0Oco)hw71keTv@qLeRI zK>=@PqZru(mdmyzU3wwR1sH9Oy!n(A-kun9o+Q*m^E^q{X&i6wMWS+^LycRpKgo7lHCjR6ukZcR$cS_kq`3P0 z?h8JsIDyG2*@+ixG>*TE1RLb#(Znvpsj;CCU0__0XfK?-_eWInau^^9k10Sq+JTZ2 z5zE>vqTSGW{M`x?Q3dH9u{G#(yxL)WM~T+waxiR>RICFWvo`kXRbHNmGq1u5_w`2c zGS;y|qD9()Tn0ErfU1kGNN%wO1*G9^ z^6~5`Z&Vvf+pFjUvKjW3O{D0soji30AsHQlWOmOT;(HpLEU+EhMLsh_G^cOKB4iAN z1Z{a!rq~1~MYKVt2?4FOA(LH&8!-QK=z_y%$GvWb6wk;AoSCe5cLV7kdhd+d9RI+Z zAcgq&V0^Bmg+OjwY!ERyw1`0fqU zgDO_|+t#bohvSy7fhKpq(-vQ|Vk0elb5(XgJ=^8Ye(&=w*9%L%Yxm2%0BKYrat#F% zOrZD;KeQR*hL<9^z(>@BcZJC^ds!t>iOv7;h{OGCR1U?Xg=|5L=1#0nHQ`%3sF1{n z5lY+HG>$fkp@aZ`$?JYjK!WKZY-#`O+o3V@VEqIpKKszPAuuZBAY3wsh8axReQ;IJ zvM+wn)kH&P9T07HNCy9?_bBL45JQ^^yjn*cZ+vcQ!*HG-W}y7eE*Mp1~LepxBy7SuZHQu&H_2fT#M>Bnu5P6{N6!^D`|Xvi8ds(^Y>bX zwZ9`YetHNB1gtA+!^ZLMz-cJ#91BaMJ4mqJO5{2}`>21`gF@i99;$z*AZbmoR!HQz zO-2@;ZZ4Fdv&QIzQ+ z3W~_e1OB{R{*!MSP>!Tb4kyDi-Oh;(%eKCFtbg{%^kG4EWT9SoRZD6e{-U^!cu`LL zGu297jVF6dq{?ljEL*&Ib@-qS^`J2O;;Cm;uYUTA_oKPy zlqc2jLb?Uh-v;2{>+a~c;pfw54~B>t?_mFCIRAB@rN3&q%-c*SSf5WGWV|2y*LOfU z&2{-*;LoDx`JzBHBb;vb@ zBWIHG-8$qRNuhcQ8^Mcd z^yh!>ziB1>FBOj0CW}}%8<8?jTiLI4pTu65N}ko;6uFu@{_XOy247bAz*dGBxb0w) z_Ez|@*Wu#L|9Pr=S26$dRK3L5!rZH=JRXNMk&biREeqthBiv3Wz;dB0}ISN&7cb|7v*^x>8wtaZ8ty_E# z@__%lPW*ECTF&+KZ&jR@T=KV+q26SUgxjNwWl00^^5qGSCC6PK6y}WEr#;UQ;3@Tf z*2`bUbFYqF69{8kF5nN|SdT*4EmUPnDe0|Zz1(45k43Fgd2T@p!|9^6llk2Io$Tnz za|^yP8N@lQ-><8M`9JvfKz^v9DwHUuxRUAYZ&z2X_-9n`zES2M?+lyA#0CE5-km;? zmatAddxM)Z%&RUo`JQOG+_%1>cq!T_-^^GB7M~Jr7Vqtt*O0^~xy)gyqUoJ!!aobY zN(%n$7D$T}X*WH+5br;loNDYtw@rF>P85~|7+wx7Vo`RKf!5X0;;dplMWDazrh06V z>D-dOtZ(Vn7h9pRdJv(S7icvRVVyj`3Et4Rv7$|nqpCzbB0r=>ZS+e{sYt&azYPJ& z&7%l|k_qq`PCrIyQixJWTN2&7`5S9@HB|mC<@*nM+sttO-mBcZX?i$pGW&)(Xqpu~ zws!K~?&@Z}hi3S?t4Z8eh(YSE*gvmAh~uu2jD5L=rubmJ%ZN<7==C$abi8Fmm&fk0 zu0WBIUK&j{zv|=j%9K&ZL&NuCSI;*rJbMMqHI(m2Z$B-I?K8Sb%p<71r9>b8mr8LT zBQl_k24<;jvkfJv`J!@mLJ%EM2M{ts->wVH5&5(0;q!n9=^b}Ef~|89iu010j#`(SQt{_R(ayIPkvWtn;D0N z&@J0nN#~F}6;_na9iM%DqkbziGok(^7gSo|MGX}OU;%&ECI`}+*ZsMBrjq~rMyrxs zj!pv8U|~eiP;yGEPhiQNu=@!>h>dG<#Px2Fj1>|Uo9(d^LYx9<59N9-cbK9nMz5K5 zNi+&S^wshW!P}%Ser4>$9}ne0hXqF^bAz}=0!L(O24VEn%cRvvZC1U(WGfsv*~lwN zK1BoH{v4p0Sx)9pm?5=^*5YVHLLluqnP7}2BUo}sbXlQQDSwFVN3qT#9EtZ1)MCUO za)ai93;upAJWz zGk=t^*?2O2ZUD3^T=KH&-PwL&b-kyZxwg`im56+b+4c`WSr4=Y)c<{&_N4ZGT$=5% zj6Fn9H~pX?3984~e3~%1T1_GS<1R<430MYeF=!|NJi#;w2Zdm&j+6w<(m52LYgqtm znEQ9UnSPftGcdAk`6Y5phf=&DT~}4uTv~7_thJhTw^$EhE1$mlvzq;9APn3(L;V0V z%=WutSe+3_4~wW~{e{tE>oY+3M+}iH>cc=%@mZRbT+Jadj{r6hRctFb*5$39?VpuQ zG}aW&_GSNr9aTCVdI;L*HQN8&u_gw6Sq`ga|9jqaaR-kLF}fWCL;0xvFr#STH{<-yx8Hs3ZoAFbd&90#V5DFo*hExG-4 zxp@Db6~p%W%PimH!v2?PN$}maosTi{sd|N#Spre+j%Y04$pQU%a-^#MiML9xqf5 zz1F7J_Kg7-{_?#9H8R~vTZ@9j3mDyZRp7Ab|G_w*FuKZT9T$@Q%3!J6(mmo%L`wD& zNn{<@JHw%FT`uDEJ__?H&kXtT(HRFV!(k6aZmPNTF-@vbEBq@>{1>VUxJMwkf>bO! z+u9=ayX%NrVb0nUoj$LzU%vs}*q4<|@s#DQEaVZ38~X)zT+ZFPWhP%TIe46YN?-O+ zYCR5h$}Zp6*jkRL{5jiCd@yJzA-5FuHN8}zcVUKq`~+I7ZGNc*z&Z3GeOJF#&;M~Y zBSXKubsUCYXQ}n#SiK@uk@be`$@p(Q7z}!ia2B;4(6~~W>OhgGKxx1D!(=q1IH3jbi+bO7YGlX*lA~1j0vrdN6CnPV4}`@AWBip2%mekYA>O z;tc)tUDcA~`_D%$4JPZ6Y%Scylm9rsbKm(J|1F;C6ZzWrD;lQtn|7zazh^(PpUwaN zr*oLLm-Xrmr*edO>L*ThL8@JME<)%n2p6`Qd1Ua@lcNN6RJy7Iu0!>Gjk9g?|Y z(DCthqGSh%S$hSQVz0DhygE4ZE9jHD6GmASEWP|`dY!UZa=6%WPJD3*6T!kltxZ9d z4kvq(B{nQD_~=5?@$a@BEQY|cN1|SlNG8WYui#9d8_%2$s(J&K==gN9hm;~1%aTE$ zZmfI6#S%HT;x7ykI_M8N>K`b`Bb@3oB;f~DGGh4_7vj;v6xj$Vwf2YjJH1qd{I5d< zBa`*ttO>o9HE&kfnk%-*v^n;jIavx-FqO>Om4rF2-_Z{1IzLvJAy3b*N4IHcjCp0P zs%1;xJ;@m&IG9*6aJD#O6HKk6 z-W$tE&B9y%nV^C}pCs6O-#N3r(?H6zG*{Uy`!$>$Bd&lrj46XBR4ZJ86<>2xa+iKw zWPVJQUi&5s*y2UimNlz#@W;9;ND&kYSL?B1j zt&*KvIyb!w|7<$oXu@~py!#KVdBvika6|jlUXFU?w28VUX6;o*6^4slgl%N^#OWy{ zLFP`iO(vgh;nNgLtm3#9XCOfwQ$TCZw*)6dt`CbXV(Fr_K=bwrMuQXpSZ!}Ga$=a- z2z1&DQeR#bZF7~YA7-QkLH81srZo^fnkua%s#jn;-3_-LE#Av=O#g~{IkRN(AWJ>h zDj%(DA+1pRU8z_mkdvm$+&Y6BSOw5pzt_yTWv?GJku@)t_3V~_;Cky@&055KCX zc5)cDaxF1!U{`b)wZ-3n>-DJ`TAv&(`ENWaXIZ}aS+LyyZRUIdyYE{y2XG`AmLx?ehbSc+>EeD1`fZg4 zQ{|sgGvsMf<=Hsfkor|fWNniJj?HTymahT32Q?HW2vPV89k&ga3J=PgG6hf#0t$A@ zOT*9JX%%T|MON+1!&zU5K77a_($3%5&H@2Jj5Hj~bYp?*FAta9O`@LOr625MF}bm$ zsp++=9>@Xm9YodN&`jS&A-`(U4>B*YX?Xdhaf~RG#uNIDyI5R0j78wyyO0^)&9>b+ zZf)?4kBgl4YjY6|8A3;MRmYEeTJ%i>V;_pWH7&~N%A;L(mJyOF(1p1J-Z)%5U?V`2L1?%KcP(?HSNu(%wC?3=GbcCSd#7{!T)3Wq)%sq~*Jd z*}zuwiLu1*oh0WQGj$!}ha4@}0EZ-0z_A+c7h`}UQ5#`8lm2V;=EZ#TPpg){uO%)o z#9Yn|^HnAe)%0B{lOF|UZssRr9rT8ZCuaMN`WDHb8|i;agN@O*yc%f%tD`S3QU?^K zCMc(_-laaA)+G%vZi582rcX^q2f}y*R}Zx_^8J!At>i6-KdUI}D&PmFH@6(%y*+sN zu)$<`V5m{*IDnoC9HaQ#3>gmm`&yT*(Fh`orjU@N8}E%6vb(9DwI%5}ryq?^((ne*$hWZ$9JR?kBw-G!*+O?NC;K!}OiW8M zdbSKM1)jb;L`k5*%;>H0w1VOcTCJ2hqlZ<*;xwih7@LU{Uw1vj!4dpJAOq9w!TV;7 zhey5VK`dElYD5||F^FCy4LG~W6E^`fB;&19briQN3W+gLe72U;8nVLQyyK z;L<~a(iS!^V0kal)yH%e(mdgkQ5z;(tEQ_&2IYUH40p zspHl7uY`yLNR)xhE}2$d>eaggQ2`_MyE3{D-5KP^H?z}(Lhd&>7@wC)oTX*f-aomA zdAp91FqjI`%J0Z8Mo5ok8mtEGEeC24t8eKZ$e7qmkt7A=_ji~EjLT9OeC{AMqIhq% zp!+8w=g;yR6W8mCfo$MO$L+hF%Tf}{%@XJSG|WM=R`^bvvZq$cLFN+K)^V~nS+e%s zoyfvYI!>5r)~wyjPRH-EcQ!lk9LU~1>%2>pb%J#{A>^EyPURQk`7fVfxK4?$08te= zw*gB{6`l}5b{K}lO}$H$yV*Is%QNm2(W|K>*af7VR3tgEd}Q0;?rn_ z{^W`4Bt9SxGe4bWDJjEsmP$}hM;=(j`B-xO0~>%6cvFVC37Wk9nItl~F0S&)p6Bw! z|1W@(VRHAqV7%gpmgw54dUj7Lj9|}_Mf=J+oWa^F!|Hl7*qe-5x!%fM7sK;>IQ8bd zI*Kt_h|%cldg{+}bJ>p;WIfTko~uGM8Hrqpw)3{6EWztw)f7z?uSA0?f_#2r@4cSl zEJe2P^LYqZDD(B^NJ;8T~XBhle!Ia;agh?Aq+t$9_SfV z^yMpQQEF^yrIdnP2eX9I7xvy0XU3$}de? zN}|p+2{Q<`&z9tbe&VpDc=&3Ph=W{YYf%Hx;~B1gyIp|$-B+!*G?2|#rIdEJ4nJ0R z@uF0P?+Dr@+B0OldY##hz^WA{s#URjcE23Yx@_l&mxxeE8T*^Ws~t&)d)mdKMV;6) zp`|WX+)f<0u7)&H>im$xIMb(TAW_`PESFg2$blkO2D{2vS8QG6yc{E7p(d3H6V;Ck zqUSQ<+8zD(tLnbI>Az{tO-oyI_`90(lJ`IbkgFIb=J1NTe3DDMJIh&NQp)T6PfJPa z9|qzgKj-oB?A3Smz$8Xj$*$e0Gt=q2St?5))i5~l!?mS*|RPi)>Br25g ziOufzy8Vi{VJ^m1B)!`7&*3|#>vw;=!qfwDP0Zj+)xELTCsO_YY^k=#E&&B0d3svc zR8Fr+#)8u8(`knMa(f=w?&Moex9U^eOZ@lh)=FI8_4;!bv|$Hq#=iyjpHe#ukGstD zhY@4?UZ{!nsWoqt0fhTa`idfsHa?>Q8vx2m_<{Prg*bK3nk|D@ced0u1VNZ`!_zD$ zjYJp?zhzIhvlbq~t(&iqH0cEF^Sgt| z49bPRwl6$qYj3|S^t0~{SQ#x)F7kJL8Gf|!@nuoK-GMj|j8UaH(0Le7BVg5E9OOEd z#jRJUQWESwRV3*--(M2q`TmIpo>8^*zW0YZvpTC+rJ+6xEzV=+gLYjc)K zKz(*WEf(^Hy;T2B^n<@=M<4ER&QAB8k=7lN^IYsqU03XB*! z7-#(6R4que#_J7Nj*7!pX&uDPyJCBHf5Nw zar`t*O7n#nD)4?_AT9~&5NM+b5YEFLVgoUN3S=7TPFwEA-wd@v3duDD~~y-Y5$k z71}JnKkvQyC}N{w^Kta)_U02TRCucb$9Qk6GKK%yR#m#(&Q^7{uJCqEzSX_$r^O!6 zwrk77cDCy(l7)BbYYOk}G}PBV+j-X1wX@UMI!YAYZR(i6xBI+je`y9MF-)KB|eR;ZjFaW?r4+#(^-@`$;K-1w6rTpIEFj7zSXoTL{ z_vj7Ev*~D*Eqw22j0-P%Jbt6d_jp3EuIYGEw0rM(3Oy$JYg%T(_t#s6&8A=PRL=H( zy~n`BPG+>3{7z=|1)l$(v;<3QzuzBiJfHubcL@Lad%+1WcDm?Rtlmx1rM*&t&92ygOzmG6A+fH z0W4O9%~79oMbO$hfvJva71DVr!3qF+jV3v>o{ROYIMD>nLx}8fW&gPdlTD~VGB{~* zHWkC6Bk_ZAHm!JSZY(?T^U)A0IWgIXg@7PE%z_#@1IYdq0O>^Squs`1fW|9raRDUA z1kQ2&6o9rhE39HQje;3NauP(2yF~JcE#sAv(SXG9HL_C);8CKv_NRxD;B10$ml0>HVh~ma;CwgBm9R*0M zK1mM=XOvA1X)!l~+#s0gcv)K&qew^g`8Yokt1WUGL}?2rB&2$g%2W*|B?&q)oeM(f zi9wp-6+wnb!l=>~C?jm7nu#HB^m=R{<1RgbI>V&Uw&wgVcgs14A}B7*z6%%+EF~f_ zY!%lL#<0U{LwL(m{xdg1y}m8|4;Cgu;}Y-Li?!9VqrgB^kfqxrcw zBFA;)&sQ?M&e5E^Tzc}SAcQ^7jk4`x52kK(vZVV5cC8A2xqX@>*RbnddwOTpEv^ac z+#lsy|HedDDv^Rb73}j)JdE#X-h^7?V{knQI0`dg zHR;(|@!HS~Ki?fkx`a=0<-eMUC=nr#Tq|7k3BCW@Jyv3yuA`va3(wEHM)L;boWv{o zN3Kg_XhyPlUtD6F*Ux&*8-|OxOAXFkuR(3uhZ&4gNGUs`#kvD^CBkl@XqhI$IU?zSgT?gBk-b#3l-ZfzHg@-B-jJyUu2|T-^ur2 zv{T%OgDDYnRt?kREpg16){aJWkoTrzfN=_SbKznq4$G(cuFOuJTz&}7j0NoW$kr8jFBr8(}b~y zztb|jJ65rWUK{GdPSg-aYYA?3u&=9B@-Pj zc$(-jH1CkOemPu0EZ-TiSfN5hGbeSIF%ZIo0VGx0cxcW6=GtukGMB^_lGbi5+Duyh zK4l)n6aB8d^7kovYfE=Z+Zoz!>k*w*?9P{-jO!U6=ayZrAyuZvC=l@#_f`^8gzv(- zEU81hqE&41SnjvKG=lE^>}P-H)!P9*4CZ;=`gVRur+uL^rA&fC1B$$O{(lOJ2iJn) z_Ww^%kp5S_`6T84PEfQ}k7d!skY3<-zaz2*rFU*hay^|YLc30u-~3Sdlme=a6FxT? z9iS&VaMffV)@U*k@1rTr@+wnnO{)za8T?-5HsrRmBX=Vyl)g*sI!}X$SnHU#GfTz7Gf@1}BeOGG07s{mkW1F!Ns_f29p-QA*0Z03tr+}}rhS!Ag)k~GgoyP*4et|i!BjRxN>fttci4qIp4ZD&#bghbNgisz zJ3W@K1%<)~fQv81QM1* zEZnGqglU`rRXU7ErdL1&^asi94iiw*6;S!{LFxyGiCmPGa6SDY+R{Uupiw2c_4p8D z-(eCuy^_*Xf0*U-VY0$>C3X1tFvrCq9z$7$B;xf)cvy~7^o^=$i^fOzm5x$P)2ry~ z^xp{E9i`b!S21>vzY&jZ1-Z-&0hE|ghM-A60-MC5euA*mc20M*go7Nov(T5-=@uGT z#nPZLh1#GD&R|})BY1(VHZM6zimNU?1|E9|W*0Pf(G_8<+6T^VE109%6_07AQP?Aqw5xin;I)6#M?M(8RbgAMC@G&pNePeq)C4DCL* z7fC2$M5^MmNr39il4&^osRkA6wHE4X`roP|we2x4$K&xD(1}f!s`d-+Nw*F4;NB@S zsWr$;th@5-i8Oe*v~Un|jKlO75lYW~Ejdy&A((O z86ATgFI)d5fW&Fdre4xa)Xxir$_t4CTkwgZ;{|Gvs7YSx-p#NnDxW>eB!f5roc zUca;}&60W=tumh8;H9&RzipH|3(71`mRY)og^qw4eF?fsBMp{iKiV2hGIlH{^s%y# zRhALd5HQl08m;TXkd;CJ?dvY3@v0BHX3DM5oDRI4xx~ZI~|b2Ea>T<_2HuwDmn+`X4JP(T6;_j;J@R zJacmz6@xD-GBj^HHhwgsU8Wt8#X!gj=}~Yz(0j|*aKymst?n`>HtCrqo%v$@Jxy*O zzg=~=zf_UwVeLNHQ5m5E zj#y>Q^ws5uaXGuKbrdkYJ4{yg#nJ)1oC_#PrO{8fV&_&Vve;Znr!}akxD-c4#WCWq zo!wk00V16S2f+CGy5`k%-W!t6r`RW%bv@VxWNty#`?)hUeM4pvlJ)3E|73+md@6Ud z6u$9S5U}1l=j1wv$|BLuQXJjGi}>0;^5R3Yc{Y(4FdY%dY4zrbVbl=qbvxijQdmYJVj?+ZqJeS6l)``tziEl@uHeaRD*B;<+X`}@t-(F*eX3aiUrC~U zr;(A(&&4^6k$>q^PUhrs{AI;zwPz~BJn2AVB^E^p+C73Qo4z1?Uu=A1j|~7-EOYV@ zVNey7?P))R3LA!SU(T*?-}3dB{upf<-h@j;lDbQK`n9s!`xoSVmCH~a?KM5?sQ2)m zYkIFXOmjRYi`!JS1{nc;`IRallYDtgkpUYLO?|(TxcZHB;Y=-A!#~8nzvgUtNL^Go zG)~W}v>#58NF)naI$2`4$cFT-(ooR%uGG^lo~t>#I5^#xF8ovfl)ROOdZKIT&D(6> zTlT3{h-?tWbp!&ug@Uf6*wHeNkKReLa8wdkA}Qz4CDAmoQ97l|B$m5N@|i?Vfvcas z;MBdLn2IwRUp;--KL((Y7XgMm0NLmDwPBiV-~8c{P;Ikg7}oUmyrquwZAGHybxF%T zQ0APH!P9K29yG}dq1cQNSGG@$SM92)1sAKO^{IzXw$zUn&YO_y#ExfkZRtIL2R&e( zi2~0A6P;kva-oE5YQ~SoP=2@$Y5Z>-@*3E7jz?03Q;2bgNjU>Q^ShW(JPnm3Ch^b~Qci_a=PCfw=LlJS z=YD$pa`+w47A|(2+#v-y#$alZf<&L2{Bpzns-VK0-*Ksn={rHZ>j)-m3rPx0gRekD z3K2ihFllb!#-^KS!Y%gmXfS}=_5|wcfD%*0BeZQZ()6n*@L?=Hs4yuug2KZI>gELX z#E>M~=w62Fi7rxx!`i@=yo0b20t&id^sPQFppFTkA&_Z6ac*<8 zzh)>a??=U95%0$gNzhT9=sN?OIHFV3M;l!d0Q8{1g7pkK^pX0P6YkPf@5!m|Wl!e6 zh-|^&bP$0Da_X7!Y%`?>qZ?L_%RU7@m{Rx$ zQfqht>IB@tf?gDp-gEl<6sZMj^#y<}T*V9UAy5UF7P)J~PY$WFZ=~ld=ms*8j&%k@ zmosBgIK~AWOE*Qus392pkm{Ur-^rv{|5l+szU0K8JsAmU4G`7|Yz-xIXfS+sVum>^ ze(Y9qr-aMsobn7AB75D6+bVI_4xU4o4xS)x$t8=(1NOFXuH{(xEFg(5gjW_Kw(&Jc zP|O>i2)#0vZX-AiNV%wJf_P%&x151#AU$U)p|Q<4Um)42pmsBbO`B$K%L8P8qCZ&P z>aX`g%}}4AVS%BRTZM>jQ%DdRVUrS7Z2K7F4c&?~b6v|!WTK#Qf6T8lwG!Gz zGf*pl>JmdmY5LGPyOMy*Im?FL$)@;~oyUl!;!}crEs8_-@t8!C&1sYR=ydQqgsba{{qSAeHriaZDi2O(USK z=D$X$r&}NF6;W}0svkx+cz7j&2@f;15d#1uuEF4iUi#W7wf-pL#FRp$K8+2AGx3H! znWQGT2i*6<_k4<#T%>&;){t6I7A32@-vKl`;ZCsRvZsc9fW2Q&*t^Ag?ylnTK3M2P z0_in#yNhD^UX$wyFpYhlGGa_4m0M@iC@Bc^Od|f622w6JWYRy&U58#)Al|=u$l1`S zRZ%RC;s$@AUd^tN6A<;{S9|mT}aT3Fe;t!^B8Fh!u6)v(Xg!}7wNf0&AW=GkV6{1jv_Cq zH2V5adWs(2s@TmpRx~9a?4{t&shR43K=CT<2lOWr@hY2(u`82J)>7C4R+P^}VnS%= zR5no3k$xuga(!24=jH3YFR%CizCNUo>ftgZIg-w{9#GbzenW5g?yysy&TzApnixo> zqD7s-Xh_m8En;r;dS!qpLg*fpE@hPhf&MSk9{NAi{(m=i4#@NWGVQxBDd+_a|Nl3( z7S503|1|CYcVlyDrLlP*%?xPq$K*r{l2pbQkb#pT$X?XGEmH{DS(?cEQE3XhMIb+E znHb{N^WyRS;es9FB-3I0vmmvS^UPFeuIclO#)THA;WT#UohR|gO6sSC(6`K*o`r$7 zQb#5kI2ZbV*Z6ebLM>P~#_=+1a$uoFeuv%rzlP2KA&v(kZ}EwK zfBKekCf*P>bd7Zo8UbCu0+?1fY7@ynLSeU6*N8fSD-pea&kk3IB^o~~h)Wai*K7ZO z*n9JEsQ>@}_ci+%%Z%)@?^{w4$uf2cjeTciNkU{zVl2bhGDr+@HxcjROirR2$WTB*#?1(IJYqTJuW4`Gsunf>Bn*fS5I4Ts(PL0|YZRS;5Rwy|=9d+#9yxEjh zp>pojnCtvze&=|FYV^}F&tIFjs2r7QX{W}|3V$ycv8+6L>*=_^_V+^CmNR64LX>Q) zv3{fksO>(;@!qOof5RrP;x9=8xqmN)hr;xy`pDrQpr8+{m4;jdWLT6Lf0W@z4c6`s z;7?8F;_l2nseBJGWt~NK%t?CRS~1`keF6(}1HA5+tfZ+){5H5%tmr-KC|lm!Y+-;5 zMKarpL-KCq+12D$Mf6e2R!NisQ86_lx8S+G3V8R4LG z`kKMFjp@>BP{=fS=pdX-i29r?08x8xs(77{+$=3DY*J+$$l$m$B+dUJ=mz*j7uuuv zd>t}uKqH=;c5RBKBKizZa%rPk&qZz*zE9R%w2TW|OXAjj%4V&Fv^1>5!LJy=d(C3{ za(hy9PIkRB2W2{jE>-;AvhHkhEvEBjdG%YJK-)n{YnN5KQnk``z4ZraAf^Ivpj9yG z#Iv(ina0?v-8my?t2(lvPMPS|?q|*2M6@ju3&3gEVGXA+~j+WBG?oBtilMJTx1kb@pgjC|kJv2Bj zvHU_onoeW7eY~@e%Y;+l@DeLTI4)Ni~?^GuzHlUoMqajVIE_P^8g4)kRieQOnq zkQmU53gmoobYXE}{QC&Hn{m7%u4;{@rT^!_Hq-bMEmUoy>KP?O);+es@CO_j3fRWKDb(L!I8) zh>j4%uAO{_a1@|KWj-4j_%S1P4{ZDAR+)1?HD)@88>LK3rj@hLj8wU6>kf(XAZoPD&~Ma&!^dV#o? z6J(Mft{i@H^Q32$@X5zNHyQBv=i*nZ;y-_k-e!zGD1!vygTlT>(MWq?DQfB1?& zoP23!&}I7v`dC4H2^@{Z1HREHCeD6T0={0(<;y^?8>2hu(AOWsPDT0zFZpw0K*u`K z8ZpU4oCAIizRv6J;gEW+6R`kGJ>D5%gU4-S6TZ{9MnhqKd|c-!AVu>exe=6t!qr&} zXPhHCo&mUw0EsJ}U@CHhNoPA`id>71g;2bZAn*j16UiO8?w8IaUvUoQx_le}YX;;* zqP^9CDI(WJsRIXx?bc^(T>K(`w_B4;GAB$}6}+$wb&gY{lpb@)xGWn82a=IRjLmRx zU_k3BTsRt6#s}UWl9k4gUF&vcwQSZdHfuf`EA!JVn@K03OwaNl1WP(szJbu<;Z8+Jq!%BZ7=L(JVJv8!A(0KJU*5^z!RC!$5u!S@!TM?MiM z;WR?N^pc4OCaMFNxSa2yIn&iQoTJ$70Iyv?`L7OM3^GQ9Rmw=P|LmLYvck)Wg+H20 z|3P%dDFTI9H>L#OVCH6C;mM>}eI;XDwz;w9Zt6!eKW!awOv~*c;e^`R`Dg9s0vw)D z$mcZx1t7xw<8{b~aP`St3s9C{M@sC|Tfw&J8crU9YUqt7xU(q=Mva*5$iLEbouS3S z9LaakM6Z!=iJIA<&gVwFN`CFjshDoP9T~>EU3i58o}+QC;%`nnaDmlwtBFO0g&tw& z<#Ptn2aq1YUAZ?qi;4@ckDX7dBAmD2L&woLC5DqHh&PxNa@t4Kz4WAgfmqLN_D@WQ zd@32&mF5g4JK#>;5!*&PH@QDQ=kqxogL@T(+(7)2VB=?SNIC)IG-v5jvM|vj;&QIz zPSIv4;?bPd?wnPUi`!ZGuv4;}OXY0yYbAOWuA8T99=*y$2U@$VB&*uw>|?o5novFS zi>-r&)fFX;CyJD#Q6=ftRq5v~{eUM=i=L-jgK6i#7C3CraOKW8Sis1f>vr&8`G<3h zf^EINV_br5LGPNlM#yY?p{z%Bv0qh1747_%gmoh!>-bPm-3b642pqO3fM9`WIZu4F z^;d@+p*7wK4dByS`cwtiyW{y!*KBaFt~%YqWJ%=DVe@~iWf+*-Ku7IQF=Nr@Gh8Rw zz;jf}2V7LiPx9fk>+!M(jgMS{?LZ|4bO=|I@F84S_)^qV>6?_AdP>bU84);S4QIH+ zBXOez_bzOg7YVzYSKrEAI|q@d*{5-sS(F(l#53s#!+@l2TG7`nV%c2i$m~_^7|vN5 z=W@rTkd^RLziwO3v%1wt7i#Se&nDhU1C5VXxGTj|1A#~!64hk2PK`Y752{lH9{)Pm zZ&Ck&f!6Z_F3H|`c&iX`8QtE-zDdqt(xH6}WY@=ZHkuVH81B4QH5cl2%^Zca$#EL4 zde257#Rfd<;9@nHXJ_PMiMYm7=qG8nj?5P--a^lklRy~66{ZQgxdYvU1BP#+n`iBu z6|S-d)ER`N{0!G4CtE%l--Bj0exaQcuCuZn=F-@yM6Y=a5L^wETE-%?Zz`2l6K%n@ z;E5*m7M=5oL+JBZD=-D1J&n6c%=ol}ULiPdIXkX3-NjY4iq4+@N#~TSD-XMDoh5(O zCK|T}K!@7=1L{IQ$6Oz0>w4Y=SnhO`r)4qCL4Li7?D@#kgpZ1t^RsrU^E z&ii-=ntb%i&zpyu(2HuY!vM$GLe9_jUYntCJE{kRWzpcm=OtXIO%LswZc30jH)#ki z0-N@QD&jitSJ=hPAKZ<|&?lkI+3UB)Ry??4%E3%3h)NFq$_R$iLM>;x7DH1UMe6+d!;ZeIG_PpqI%RsXs2!w%toA1B6G=3u@U&M&z4_=C2Xpz$n~LEGJk6 zu(b%~uWz`1p+*GrWPBy|+AWMZWLJ51&<2mirn6d;RGGnnxgAZ`;&Hb5pV=z0Px=f2Gvci7u-yYOfyoXy{u<^IHLjwBV7vD@nd; z@LHA0rR(`8-l#$k4Nuz7I9{D`E}3!dnQ^~*=)KxRTML($71w)=bc;0nEd%|DjOmk@ zsOLfYSfSrhxlF?39zbL-{GMTAI6A)1oc%o$@>|=>iZ}6@_7L|>r`;Tx2Lt@qG-b`d zjTxrHWZ6e+K5piLf2S##&I@6n|4dW`52EUf%A>t*lRNw9{wAMNy{vnFaj+11@RpQ&TqG405is-0 zJaMaDdnu_JX_Eg{47HbYv7eo5Tcqz)2P;k4vFno*dKr(+L;@f|IU!5MCSst&DO@+tr zD(#(_lsuOINbbcV`>c|4AC3>D5?k-rF9~gsgG6Q6C-T^wEwH&0`%jvZ?`j?8 zGU6K~r}-{UJ=X|UXd@nbPi=mwU&^v~!~zsAS*ayTM5M8bifa6lwR+M%6tmKlip7wo zC>!XC!Oi9Kit{dcAQwON^~!(Jl+yQ^Z2wAA8k!X_KHO)eDeH*f7*68KD*9f$YFVW{`}BEK_xBP; zR+Y}jQxmcC-|y^>SLy9MWlqHZ`hFMSti~cNXi36b6r@$Pp};6DReP%xlU;2rZ!wwS zx^++RS+%L==wzsvB&IVo)!YnKID=HfNL$rdSbcwttKO=R<|H<4rP&r-Qy1(LR6Md@u@aX)31C-zqiEc%mZ3SG7pKd4 z-r|-GaIeS^?M+oWB{^jWLDJE`v<87F+1@+7TLQM6rs~&2voz}sD!hJMpJ9S#?KpnK zMLDef<-pI!^dkt)NobKH*}2!N?iUOOd2`ZWt}&&2ZzbTOA}kZf+=ol|%ja`OCsVqj zUa~#kWzl#HSOC*eKJ_CPf z*RK98Ex->So14szVr6)zgNOAS#&WJechLLvVQpF|!IF{u@Cz9siehj?)5`%W!R$ix z>~v)YZ)2B4t=3zLV=nyO{iJ6q-pheN=lWTI)gY|jKdGovEG;xWlcp+&1y~)VLMd<3 zj{cD(KtCr7m)Itq=-)t_(#tRqEGt_hxv==_MWyD|HT#$+AXXfRznS_uiE}UQ+mZ~3 z^|E&JD<(^QGXR)4gX6SG`ZqmU9>+fjkh@KerUbp88Tusig3iPCUjoD0zn=p*Ms`9y zgeev-`q{sv7$Y;LG4w$p;|5Fu*sn}(GF1hReSLuGv@irwLx({GRv6>f7kI;dEvG7+Cm zED|M3p$iuiItKYKwb+A%K{Edw_={(cgHz@HWGk$3=h??XpKpkAlJqT69yAz?eM z3rze`@3qP7tq(>*ah2ZzC_UvOt7Uk@Ikk#HS$rqyEQ#_&rj52-;Ni@FKSA!PFDc#! z9pwOxaxS(28KJ2XRCh^DgjVOV&9FPSt0k|b{`B^-URvI8RlU;t_UYO>e^Fgg;)!q7 zFRHA!Yu$dYJ5O{!#v5>5jPcQAd;d$n`%fe^#9P=y-b`~OtQ@kwD13egegZrY!7TCk zvh4S;Y!8w7i0LDY*QW!HliL?oy&d3rUBE&&R$;az?%&s=|3p4^{zIhvei;5y{AL0K z`X3_2eKqlaAs_!mq$r%>m+4%;do7QXy?-A|+YrQQ7KU0w#aUU28L^ zhMLU7FZQU0VGd1HEZXN;R7;_5^_VI?w&hkLmAdmSyb~@w3j%YX(wVE@v(7Xy4tSJ z^I3Nr{=R?G`QNj0>prQya_muw7sddQoI&TMz|`|}73R@p%4fHscS?yE|1QYOHr7C9 z%Y}D(wAtGH7G^qAh_Za#H?flY5Bmppfrj(0PK&74;*I?T?mW9c(cc>jk2~2&@-M}xO(bsuSIQe-w&1#In76aH$#xEhKYhyBkm(CL&Hu|PfDq0s*g(U;oCWlM zkdLTHn+jS?l1ax~gFgF>3CT?2C6bfde%Y|3KsjTUKR1-m{GjY++EV;dm)7!M^3lL|>R_F*mcAx?Z$ZuD}v0PNP%#-CGrE*)^8uET)U*w<@)s z)mTT5PT%>pRfXlO#id!ixc7CEZwHt>!)k2uvd7d|Y(E7N{>EA%kfk{Yv{WhYFKGiY zC+Jxp!B$!)A1nd5LA?NHNI+5@yChYZawOXeY9PrKFsO0w2!c3rv!PkAUtg;!!whK* zBGCr)J=IXhTct!u8iOEAZe|SKkl(R@C~@E(U_Ju2+i|0+{s_wsVg2WWA3*e1!?L4V zAz~ahSh*jpCVD2zME4dX@bvc0Uu5M-xp4&LfY;fVsnRH#o~Y@iTYEVl^fW>LG!Eh4q>#3GAps3K_ap$#;$*(v+v~an zHGtL6Bl3jwRV_;j=oB`A%#qE+;TTZUJ!}`9k1ET$d|5IC?GS_kX%=e&Ke;O|z)y;V zU4NfYe2eeT8?`?w1kQNp%VJ;V%rb_R$o%pSl3)zL-`kfH$5LzFZOuhLZE|!zFEPa^ zZ7-5;es-4$@9LvAHI_V80t9bChF;>a_A8nIyPA=xzXU|+fG+GolCy*=KPk2lhkDnX zG%^;DeD7%!?4Sf6l3j>eyit5jciLs*6h9$!B{40A3~v3w6QcVTa0JKkLB0gQA%6@A z<~{}@@#aYIyf>#{8Kjkym95oE%)v94L4B)4RC6h(rD)gF)5kTEwkJ7b2-*pMd8!X| zz>r?XZI?ZKsEB}wUv-({8%fosGeD-4=$<|2Axu_N=5kc@f^H~LPuPZV?nN0|uM?_o zk^M#I*ok*O3J*|Cxt}~f=G1&>I;xuwa>S_lhz0q>gZlQ-DwZAN2WI%GsH3I+my!Jn zKJ7>K0wn`(xD|@NGdFYo_UJvxmoD^G^$6%_Df$!?o6z>QUr>sm*z~6i>4QTXsjMU) zv(y>~3u0NvTUaUvyLN&f3F`bBkzp(W_F=9ADW9$xEFT`{>OxiGzhJtZQr5&yAs1lx zQo?1VNfC|bCJiXsiMt;cbHlapPTFH89{Vpl=09^X zuHb*ctu?Jeb22H3|H+~xB>L*a?fQ)6r~d=D{#T{*58PUDnjCES`-0DTzH7ITcB{E_ zxfvA+XQdWJEdGI8Zzy?;w$@A+CaQ{LMWprX3!rZAXObhm`BGiEQv(h-s<4pQ`2AzK zm_zKMD71qRft*38iuu0&FBXMxusuDH-d}oB&hh8w_Qlg`r#lTF{O)2D$$I6h?lUS@ zk8<&sN{ODW_u=cub@CFg|2%wMR<~(OK?JKgSSs!g`SkYL!;Ww7sM+n@8T_;Q+;!uj z8dlLa1(k-FZyrS0aX1b6I}!_iHnOSKyY&_^Su^h({SE;{;W?>?i=ugHe>uOBseUtN*~Q{&vYV1vmoa&v#+N$)AQWWBvP6D`APoON&YZPkEE1 zqVuBW`K3Hx87qXgO^O+s8QbQkvA3<_kXc3Pv;zul%8kiiwhty~@{iY@=Ztz)B@QPF71&Y`Y<;8w4*qu~F6TmPSeTmMJt{C`C0 z2ya)LTh-d$8hufzy)0_m(-6B|hv%$w9=3SdT(tckQ{e60 z+xJ7W>)bzD%y!RjH^e-v^V}Jo?ftdgNZ_o;BTmot3;$>$S=FBv7@K2NG(I3_*Zaz! zel_a)qq*Q&y}#zztLL#lS}2_N1I$j(PZj-Wt+u)!=rlI}vinC{Q}+F!bEjX=Gv|M_ zcRsrx5f)*Hwo-RlNst*?b z<*1)U`htHP$@+3hKnt>Kr28Y()9fXPXO9d&bdP}s4|oeNkYSkBDVVEPpU~qGE5j@d zM}V;p*Y^j9I_j=*MV|j&kAf&iE@~J zD0%`U$!9uvRh&DKv2ODZC-N8KPyqygGE%R-0ln2{1)M%%hogAFL{Tpmp@Js@@gnaf z1ul#JWnAW2J(ePX;3w7`Q11hDAZ>{49c8#+xi15$KxOjnVK#N>eb9h7=@C#!bJ4eP zb`T4Q{xV{w6Jv1O;99g`YuFRL*hGv%Ync$o?i0N{@3$!|MYqmUbXZ1K1QI)$^(U=N z^3a;+0+E~Lp56Uqke1*~5Mt~O-&z5^71S{jz2~WJxPgv+OnmI{1AR8R+oD6#1 zGZ1_1!P_rl0JnN?6!`fO4!OI@0$$c>gxgkc6R^O+HAl_+!zJXc%2>VEx-tFS%`COJ zM_YB=iRB4>f9-pj*yXuF-Rj%7FEAx%kW6kuM(`L)Jb)TFjM!n5~T;>CS#h0Fk zjWXV5Jyf7_FV4lzA{g5dkgI}*%rxbfdy%rzys|G=r4l+lc zdi_~VJhCyx^nn$wb~frjH_#yb;z6?^Gx>mI@K)6o(8JYEZR){&<4Z)qO%U?vNb?&I zZz6{g{?N{?guNZ^-?PA33XDB5!AC6;A^~s$gq0oiXobh|A@eU9++e(qP{9F6bU2&M z`4NpI8RsOqm?VXQB&E(ImANFgo>z9Zz$zY0p&M9iBgeaU|d zN=P)q|FNLt|4hS;kvabI#Q&Lf{+C;Y3f^u0TTt?E4OfLL>lU$StDUKHZV7xd+V;t? z=5N;dbbI})mVoJut|5$YuoXc22GkO6glRaK;0Ck zj1MMCWME)tMJ8AOajWWZ{;S^SkZA>BecUShWET6SzF`Cfn=p)cR5{)o@|a=v&YV5tCFH)N>G+L1)a7Z(Tc0E?g_&TgT(O!}UiyomH%IND{F@FT{U_3#~vHW#0 zH<`U0j@~~!ATE_o!Z$4NPz`ISALNZ|YcXXNl(@eP{0NI}l}wWDq;DGWcN#Za$VjD7 zkg6HbWd?traZ;x2k6#B)DfI1A!K$UkOO`y^^m|6Arje{MC6#iFg@U~J*>eVp#!Kt^ z+6xa_v8p0V-}L2tIo5^~7s3W$XWt8-;^A%OekvO4Y*j1feK!-w)1;+?S=h1-VilAq zpC6K33}HSP<(6}nGKHGfUD)CemA}x=9)|ur#_eBkyD2*JOA1owu(f|oB^aB1y0kQf zac0g=!0iH({i4la|EKl`gHXtCj5&%&%`J+DxgUyThp308u{AKCgz!s3FAV_N^>=9e zVeC-Nub2Pw#G0mJr(}khEgM~01f?diebb|DT)iUG4>YY<&w*nZ0~cD4<*Rcie!ylX z>ZtZ2q-gvW0`?{{3H|wE4G#5(77QXFY>BVNDUiiBP_$K(vBXqm8ZY#l_?>$I-*d+* zq8d7^i6FLZ%HoOTMmVA=RKU5TCxMRVdvXsu+YYoOk{j6+M;51iLlNh2tY3go&=_+7 ztM9H=f9_`)0N>NZSi{t!gK_t$?HJ@mp#i9s+RT?flPRE7dZs`poqxQkL3|-GODx3% zY4tbjY@@?3ZO(p}LgM`+kzzhjAay*7bU36mX6ZCYRi+Ka<4!#gyPG&+39#=;K425` z5#V8lr8q>?`SJujnf_xy{E-+If+!{kwPQ>p7oR$)Xc@km4^8BS_PZw1>;zn@Fasw( zW&h1O`|%7Xw$h0C1*wPIvGppuNg{Ot6fVaHTo<<{1HMR@DcItVUV0DV*P?hye=}=8 z36=J>e1w&Vu5l*_~VMLi%}ikGD|j zTF2PmliIu7C9D)qd-08J4C?nVh2V^FMX5k}NI-3Vdw&w|dMVPy87d|`$zHFP#g$oY z%>CD`YBkm(m`H#(x>B6CyyeC~X2S=$5FQ@OZG#q_R;r}HK7Zfjboi7c8 zMcd(&j3f*(8EPqjV?nYnA4|iTR%)mp0Usi$kq;M0Ro~PgfH4MXg~ll$)h0WW153{8 zO!c#XX|*x$i)D~t%#RMAt0VdAd6%|VH zOSpnZ%DNVCocuGK0C9)P?3X=em)_unURqJPLS^UrW5(8uOS8%XG0VSaA9Ikt1QJPM zM+h{Hgnm2ex*|;I>ili21O~CW8XEvygaL}=kxb|Q)^XAJ-9Z=?aKyuiX1m{>2%e^H%-^*$9)_V>Hi+iMFTeJO$ybA;M5>La9s}=of9!oRBa%uW@gIdxr3~*nFygaAT|ru+tDml^ ziaOS%9|}rj`x-?EktV!$5;TN!t2IWQTnD8^N-k%hpY#{7zisECwrhA{W!0JJ>8N-j zoeyfD{cgjo*t2hB<;rxT-j_8lVWhV6JljgGp-Ohf_i>J#^c7x3t z$M}$`STGqAR9E3Ls2L$pkoarJtM>;gn^p1zT%DRt3UiX45eS`i@kzz@Bl=%>-gn>4b$Ctl!wWeI+z(cZCq?p#w5`SyPnj!A+>js(_nz;%G70R~8#=$_- zHQ1XZj!rR669qOA`a8o%YUZqLBi7#j1Ku%Csh;#U% zi(Mf~)p!)#_>(EfGd=D43Zbb*O=%S@G2^yTon$lYbJ2ys?gQ4u<;zhsrdA4iOfUmy z!76kW?E6BrELe&_a=u)2@jV!-&Kq+clXDq!B|YBeoK5apQDaRKTOX)K4aOV{3QE^F zP!$`xThy+|V_Iz=o#xfG6H6pS_xmvAYsYboqVDSuHZcSh;DByjiqUE_X06I(3odhcmp zDRkrfu}HXQDxWNX+;il~(Xb1~-huW(ZK5z8{HSKKJ8}ay>koT^xOaEf^$4h3Vx8ZV z5veH|i^ZNU@=x$s1X8ItA&F%j#ubi%eC8P#kx*C7qB7WGdF%UfJ&8cLO*yi(Ld&3% zW3iIUr9!UgZe15<=O*gW4yxUZ4~zr*szF1CFm--NH`Yc7fPfwWbP3hF%vER!29&W= zj+}(e4nZR@_Flqecd8?yO~@;?n7oXdwHTMhHWz~j<(0pZZ`ESBn%IogF!vF63yaE8 zlfb1SjLI&$y}QDJyY|!13cs#u?e$vdWUWzXW$2H~%R}0=+Q35#p8eTcEQWR5u7_^a zhmYDSWJDLNMvCEJoD6@jb{MZ5h64w6Bl{g|g1M^QSk{I|b^5yzpmSX?UK-#^13s^- z{HleCW4*=HG{id%Pyh0Br~7c?8ZI1%M{R;K>Hh2z?8nJ4pQwi1wvfDEez~%MIJJR; z26&KB=jdhPI7E#a+{6{?gDX7b1a%?%B?{Jl6!z^FZkA@gu3|-lKV&qV#`=IHCdgs#vaBf>fU5qigh5dU+_h>`e!H(jCF0Wh-UuUG^*Mqol z!KrwN#Sp+FK8nJ7N0l&8?v=+_>gu z9PBs_Q5uR!BSg^K*gSD;%R@fc`94oPTkZu|qgwOc>nlc0t^|B_1QnVOAXk*~#2)pI z38I2Skv#>yo&Z}uKJYI7anXl9qc|_d&7Rk8U@j57a{VRxO;k`*Q2ERyuTOXxj((Y- zesMy-^ugL1gl8!(Uh)E*Oip_H5Ju08pZW#62_R#!X;J2J!2;>G0cZ%v@TK~J1!d4p zJiO;z`186N(FOQjO01XKP#DuaEzcs;lz`Gn?Oh-1tqz1X(%_lc3(AxLf6Mc_8MPwx zUWW2eG!D`G5hkPqQ^v8q&F}SV>dj7j+S;xLZGw@oPoBB41ueve17X6$`1n*-*kqB zPS?;^5X>gqiIQhPv z?Xf1}&<-qz64S^my3~kDycvM9keNK~dPU$FOdLrAdmut-kifK*a+9%08j_nld3$~G zd3%;eW_itQSYzrlBQ@ZF8Wm;92Av4GN-urCOfT<)+%ce}bI-=t z(vJ$TBJpm}M+pH<)VG=lJyFs(kqOt?X&(8!BznS4Em!Mb6N@G)K~?pyi1?)0skiWn zx78^9-M||8Af>BQiqU-_U0T0f?8COvZ2@TZmq@*ySI>0}Y5V9#Y`h&F02jN*36N^4 zLg1LoU!v4YL#v^qxY$K|CJ$odW&x8PJ=#hb^+({FXK zeHmqqQA5#b1?7h@aq`rUCGJ#I{d~QfDFew)2{da#h0>lUn+1RBcmuXp;XYV)`wgu3 zSs5?(T`B&Z?eB7YkQ-Sy`hC@9);W>Ge5{%USE9VGGR zbp#!#k*I<8MU7T_=scf&E*IrpDq6EXml^%2eDtR$`FG+xACRlPQrk3I zq)7UvQ4wdLC@@o>ykX@*-)lWQn-RSQ@6=Gmx@06Pf- zk5YVlS<6?O2191Q9lJk!tJcGs!j`29@e(3oYh%hflXtV>SDQZdZllHMfYCVNgX}6a zjLNx|U4*TaESX-Pi~iG5?mi3~`ja?)d_C(9Sn?w|F+Rf?%aNA<61#`9UU2b&{~or6$t z%X%e;uxf(=K{`L2KNnuVPuE9I*WO2VsCqz@@AF+mA&NIN8$Kj9+09*b zejwyi&*hS)P2r1fan`zxS6!iIuk|`c%T^Oib)nkG=aFjZ9Auc*Hw0V_Tti}0 zZDS(!tMIol2pJ4M_(r=UY02-+z)omTCNu%=CE75Xz-;mc#PNXe4$s+kSj9ai^^pCkeTCx03b@vJMRD$d3_eXUKuPfvSy?npE! z%OmAXP9de>lf?@^)4MC?y{{6!)w?pD8{v1W#na|FA~>3m_alGF5}H2+QynI>k#89t zI}495E-z|K{J7Gf)fjv5T)kKZmf7@6F&acY+#;y5Nx152IXjItXMHMvzwq#VSY5cG z&|?;F7cLQJUb1;#9&pga1jY}K#k?=S`=h@yril1#TNCRG!H%fv(*WnBNi*KOlF#p=mz^3D8F86UiSJfpqu3Ez*Ns(W zRp#{u*O~Mrh$|KvN^*rfz+3~3I@2Z@H>H*3*$xo#?-S)X#PRofeTpUpPu znDvQ|kd0i*Ud?vXd`XDA1@HC)U+tompmnVv{pqR7o{aVz$1jhFO@BI}fdf$c~FMvRwA z*;aKHuuty3s$l1Jaxm&81@AnvP!y>B;$7mOQ+<*bcrK0161gg)9UFV!%y^~Qz2{iu zo{bEkBfJ>pcEqU?XLpp8!?PTKYBf8bAXk95=LP-g^eB-#q~6JHZu$i6a!?fMM@+NY zy&Lz$kK$+hrQ0Rtx=@=Vko_}7JFupzvYQ!L*ErNYaq~~yse5+ke`yCj;9-C5^x*u_ zlMmdSVkK`L>Lyu@wS0u1oNE;LMPavk-|P0d?TI5B&cI1``(n!)m*a}#5sO!gbk86K ztze&PBe?W#&gjkb6H|}MQU!V!Hu;{%{0b-O;QNiIh303{t=a<)$wvtsZ~fA-Y&v%- z0~&fYQ@f%6(f3gKb$7|vi`T$yvkB25x;I-=^tmpwBvF%PX zy&sb~uI`e5B#s(u@gE3%SLY-3duM2mEtmNAf{ZBIWmw;F>iVq#UpbAgQ>R0$t_b$M zlbV^;l}@^U_2TEnKQE(3f0s@Y>mtOZJrswJO*P*%HLm#W?4s{JM85GD>aRvTVR@GS z1|iA*sqyoCO9?$_;fOC%R7l9`C|7flC(}(@*oF1Irr-01py#v(Pgq~dpDvc_lCwyf zGe3D~v-n%eIh~agXJTI-lc90AAO7^-`pS>#yG&>R7N$+hF26xRm;@N|b>mWxzbHi$ z1B_+0Z898R+!GiKFxBX`xfb=JOdNLJ+(g^xpxp~6w4*3jgF>sa^r{Xo82t8GQM+0ltc)$RM?6}4_B&)PR14=);h zalxc1&@p*Pu_2{L8MBsQ)O5DxK|609(^dAQOXamo*R{vx{11)kX_{^}H+;S=^D$tk zJO21hgRN4@bJgb0+JCfM3-SxHsd4r=nt#6?7OWBW&~moncv@3-S-{29b2H$b`aF}b z7FYM&UJf0()n(uyt09AfBa#>TE_UB8l9p=R^D2JC@k7oBZ5k_3;L;8u>AI`7uwLYtO5E#wO@||=1(PbR+ff%jhd)(0ZY2~A%sW~dI zxuZ{1hzJgfNKt{#rybq;4X>{=!fTTQB=b%04~T5Ob_d0kDld*@6lV|WYnb(ozBZ}% z8XI$Y{YPlvA?M++@CyNNJcaU4fB1TXPsk5-arc4eP=pyLgP6b}1C|kliTH0Oo-78j zUAPV60ZNH(mnGPbbw1%8s$V~XqXH?pNodFW)o6QfFvmy|$8~^o1Ye672mwU+x5-ig ziGW*YVngOLe%p>k1rCLNUdK%kNSFdz9XnEC9=tvf!!n%b42ohzNk_)<9G5OoMMpyO zZdJRWJb?jT%jH_J)x-tm^yvE8A%H2q3gWuG9+-eQv|ul+-ItPImyf>heblkLb^dBZ zv|`Wd+oI#G;O7w|uvn0Y$Rbj!lVImXC<#9_3fwy}AZ5y(%0{@%o0g(LX zZ2MO7H}>@#J|=zcAJm5}S>AKHOWqK&1qYqE?L*)k)EQ5AIbc)So8eL+%NOkoJycHJ zaS&O;EOHYTKQ^EQq0}jM#KrvFxcT|BdU@hbhl-9&tY)4OUY0Vus(%=N>7}^jis!>; zO16@Z-A>?n-9sHjH~XPG#!Lbvz>BJ&%>$C|G(Ak(B{TRoVOBDt%A`<^Z@%1#;4p7H zYusS+=I0a}6+Pu7JYh>3f91qE#Fxk7Np2};YOlSz49p1Re`VUF^#~!j!v#TG*|Wv_ znud~&YOs{OGNbY5Gf(WL9Z~81AW7vW9c#d3!BwcL`xzFi5CwbU6Iyyb1+rS5m9VSJ zDMZwJBr1Wsdz;b^A_Jo_Idaa1#tbOj`Gk>kQh#0YY>ly3(>L;!obIxl$o}u#fvhwNgeV)Zt627{M76sdLY)hDIEOrR123;$F zVMoBq5~=$E4|r=Z^O9Mk)yEFocTeDuT0z%R)RG!@1v^Hv9|;n4rrEUAiA0LgA&Hx2 zp-E5~a!Lf-cMwp)_kilQpvU3qgUJuady<7rG#F;?KpBGWX;U z%1UH)`Nx(9II!h`7e&x3LeRe}esDpXdj)dx1bgV)%ju0`I2xo9;c>;{d zWFJlF93O{1KCF`=PzO;Kw#>;zfVEN{heU946%bGC zrXA3N0vApV+D~l9DT;82yIaimPAf@C%lK@6MXMDD3m!MsPNOsHFx zYLRV1IVcg2k9>X*F7)Ihb;8Cu#SM>)uw=JWNK{XxmF}mZ3DC}w1MmpyHknXpM^gRV zDn{XUHYe5<=Qxm{E1#Y@P;lGMiP{B32Z?J7UFld7yDOdZ=xvyQM@ml^aGC&fmf-Y0 z0={Q{t;%~sv100G(u6V*dHvXlyoX2-gK%&}w2=YC8wkQN$dpMz+=*%Cwz=Ka^TkHq zd0yd(Y*f9}5fQ>9f0#FKO2N(iPsPed^NxJ6BVz1ResT$P0);_$64XHaA6{YnB%Y#k&ZZ|;{1z= z$>NYn(Li;m$m+9qb9^7UC0#0tT`F#YHedLdIA()qc63hG<m7jwlt2NsCbM1Y^~r znmyT`_1T8?)_I+X{4<4T6uy{^8VA?}TXBdNkcmxYjD?8AeQQiuj{Tb@N*E1(5a`v=8k0EKAV zF}MH%C;~+2gefQi$wgbq4Ipk~fD*_8(jAc^*n*>A2yDCE$BkTtpj`iVM4eYKgeged z4;3H=_}$Po0fRu>%!QJ+t%8*EfW&p%&~04Y1>5ZPSFr`j_86EcOcGUij!I~QI-ooW zkUc{%0#rzm`|ASsmD;F4p0wD6Hh7YM_<~nx13egpNGRXfu)T(a1XLKm=j=o;s02TN zTv@0BGLwZec#`LM1wiP6@FA_cg=`u3)?10R24#9cdCX zfJkcG1O(O@?X}{2<=$3g2oZTp{0QGRGz=5r3SybU6VQriY7_s*ATvQwJ2J+PF0jd( zBvCpb3|lG9{J@C`qyP!D&@(jSxtvEEsK$GA4~H?~1|-j{;DQgZK0#~`16Tm#J46nU z1qzVk_L#x}@PUIvNUGdq;*$vmXo6F_MnRO0u7HuW@Pi15w}WJWHL%IXK;-xMf=8Ib z=V%VK8;GpE;$F^J`1}E8)z^x6WW~6~@a2x&I1o7C0INe}8BqxVc+hiMj0oI5|8o%k z0F(K_L#1U94*7(uI789si6*gu&lrf8IhR8WzH&Y~59orPSk4N$wdnXgBL{%0*YL!>x_rI@)qdk$1STb@XTGpM{6PLu!jsEa%9MpM}4D#_oT2Vl5(3J&-O4Pj_gphGUe0U3~i5SWfxaoRc{&%hDH zJcVXOMv-jh3>?V{Enp5HC_5RrX%~Qz0Z==fmVqU}!xSy#b#9Iev}qY|fe`qDyvVah z_GUvI%IRo8IG}2NF#r=t0=0l5g>Y-Ncte>`jXvn&DCn_;zKf@201O5m!$1Q!EEPJG zg1gWJDmlca#_1aX>Br{QCOCwK2!taL+K3QKyUxF05$+ z!H?9wN6c)GHi_d3QQ9FGUm)o11q>i5h3x;P(l&qvhiHQz*hP=@J)(dG*PzCwumthF z5bt=A$m7Yy(1cTwj919HU$cUqP@M)rgGO-ef1qPah=fp>g+>s7oA7LM#tzJ=jQ|NX zy+DKgpzY)~z6j5d4M7h$csbv=jogTYqkNIQSc<r7i4jlo}3p%NsLV?^iv5Joyc=SQ4~ix z6-gQNl;a_qfEP${8bZI6mDm&pC>YC$piFrbneml;ITTAlBBzOzb7?tmS(wZj9ztL9 zUVm2!3!|X;fn~v!eX|<__y7PrNQOh4ow7#e#h8#-$fOK zEm=91;rgw#NwoH2_RV5==fb5)^Y{OVKUrWW#q{#LMw>zGYC(+it?x>B!<6`tzgLP6 z!7a0Q8+5@76R&J?Fns5{(-ZlaXV^=_s~p@w(IZTb`yRzgDl-Zz4}7H-yv49?f;5B( z@`#-tD}Gmqnbim&X?v9|`?{BT@q~l7ro5|VBDRl{`*sMcP0yu4TDv#=!%t%^QDk8m z+=RfkEU;WgrrW&T+f&9|fNluPtu=*^-O3N#!7bdwonFxGVj#F)f`dqXL*B~$7|Kn9 zI{1&nm;KqFRVVQ6g`r<6&VB#>h=4B$1x1*HNNj^Z@M5Mb14xKv<9P)$ScKYe07L); zJy4x5I6VIK-#P%`{)J)!-sap-U>|^ld?T||fMOLFjq-(I+E;(t@8?wLgI%6J2~-7o zhmm`Hz%+i3E`S3cIFhIah=2bSpz$++0Gc;-9t{v+1l7MU3<)eeSa3n5A^%oXisGOW zkQb&X{CjbWVxtHWXbl-4K~@Pwb1WJhAn+#6oH}>%?CJ9-(4azx5-n=l^Uvl04yFbS zFrv!l#*TL*(4F~@11}^ba8&2eN<&AW+xACdI4Js809|xK6Lrm9Cmw!W6c@pTk6g&uXOE!~ z*>ZVxgb@%cA@R?I;&H@W31cY8P)v3Kh9Hqe8hIp=Nh-M{lTG?3fB+@bvC1c-IL1I| zp}e96MVl=m3k?6yMTy2Mt8{Wfh}H=-fCG@cGKwMpcu>bHpO_Ma0AH}^7-SBl;?^vU zu$dW_XT4&V5wEED0$QWM!KNi>4R@E5m0Ef!rkQHGDW{!oB|rpFiXae_|1c23Y66JB zAcq2w>M8>lNXOS|IPo>=kg={=D^9_chpSDjnu@Bc|E$WFs(5iYs&oPwV1TF5N;@sJ z)mnQkwx0^{EVs|RS%Lk*}^362sJaf7|FPt;RK?^-J(M4A~a?CLU?Xc2GKZ~x@ zQTr@4)lxHE_0%o%Ty@Si8~rudVT(PsZY(F=^~X73-Sp0A|15LbPP>iu+*z;9_Sq4W zy*J-|`~7!PBH!ILPDpRPGU9jV9dF%uD}J@&FT;I!%~k_`Ip&#bE_UR06D&C8l6U?# zw!pt+fyVszzuS+ zgB}D*0vq_V4C?KJCOjbuQz$!*NkxAud?5^DD8m`ju!c6gAr5n>!yWRlhd%rv5Q8Yh zAri5OMm!=Clc>ZcGO>x7LtWq;I28^4q=ZhqA{Mh~uk{&)icrzp2tQ{Zoo#5stNcXjGf?!NvG1ZtdW9qV(&U~g8rTDp~NOLF43?l{S z2hDAAvzr;KrZ>YW&T&@dlH@!mI@1X;b+WUa?tCXa<0;R1(zBlSyeB^Msn31#v!DL_ zCqM%#(18-PpawlCLKCXcg)+3E4t*#@BP!8}QnaELy(mUAs?m*dw4)w{O%cuzgbjvt zq#r#gZVrHmy(FL>dw>8o((#W3>|+?LNq|01(V9BYLOVE7Kq>apl|Q%?DhmJxKlDKg z|IpN?wE06$p#oED=;WwLT`F!~0E?}{A{AN~l2lxA53uHj1CV$`aJCbNUwHoo0q1Zk zR0;qLnWFSw5Xgp1Tl&(N&a|dCjp|nf;EJN+eqR2cN`Y9H$Y=ANHY)AD9$3 z7RW^}1k%*nKvkzbY3yTzGF6>KcCwWf3I@cn*sBO20qw}gI@Ym|d@Ms)Q4uRyZ!-V{ zm_r+2JpeG|5r(d~6|Or;?P`Z2SGv}>d~ZUfB%bu2iKiX92qt^19T#J{fIJ(5qge4B)z0X{}#3;tG98A^=mt zEq~l<4YD?13hTm3amVXlqAa($_L^=24vXOcrMRA|OHIIpo9$vyjU`AR!A^%{Ur7KFnEzLl;f_!^JR8?my6* z6P0Qr0xuXv9vm?ZX&m`6Uw{TTR8d(Y1OpmI7RZ&^(28(?OCU}N#x!Ih-hYtU%se*h zF6e;^CeyjhXU2(2nW1Ms6Ce)L;KpQZ(gj*L!5P00mXl+Af>vDP7+og78lVwpjR=Iq zCPwi97M%o2M}rIhs6#2tA&yzRp{Z8*u}u^pWc$|H$bc#Ip%bkkT6m$vCw2g(xh#-H z_u9lQ`A263g6k0H1rmAQvp|4-jX!Th%hKROHWqx7Ko7dpz6SqwgFeh`mF6NIxRAv^ z*3eTlkKzqOSBZ`M5?m_CXDSU|}BYxQ03EVHXgXeHzSAyV$Xjk9@>K5-8vY zJ+ASMc<^GTuw_R#+Oge#pa2`?fD#J6Q4R(`p&fz$hQI#>z+2xod9Hcid*2N#5GfZH zudUU`HxRG*#VQ~Z`|w6L=8+EbK!G1`A3Q4}K+|@#!yWr&`#jFRj@AF8_P39RCti>X z%zNX}aWKd6bAOY|nj;_0kHAr_-wl4a<1~NZ2S3(<4sgK~^nPE*<>Qfi1-Rn%v4@9t z+Wz*q+vN|iCCB#R?+9qvUbRha{No8g74>_y%ynh;0LDN+O_|l`?Z4xg4Jd{MkWwg0N|hwuH8S_ zf$c$q;@Jfff*=-ZVc_u|Jm^I2U7o)&z+IuA;O#@H^9SbEC4e^R|4?E z+6@2{xM8XQmpnv)0N}wfs=zZm;Ze!M8z}#nO;lJmG6z_Zo-oE#Ymwt!oa4W>z&;>@ zKtRDUS^zMpgLypT_>Chq;0aDxz%vL}xd4MpDI`PQAU2?bO^BC9He^St3ty0)8|*`7 z6<<3v0|S&6lpt0<&P8yY#xmaFIi}<}4#P4wqX0bP<3(0VG6EHjR)5u$I10S6mJnW-T-8HO*uhmE#99^t2$;j< znIk$5$vD2^;MQ}W~kd_yAQL>zkK0tVL` zz?3%*KvSZ_O;koE;6ot{Knr*!aM>XH;R7jXS6dF@Vb%mrtQ=S&q9WR$1u#Py?xZt9 zBWD7pOC=|-41iE#B>_a%Fbu$TdZu9dmjEyVV$MZi+Sha1MRb-STn<1@{$oT6fL@AZ z018A%awKlXqyo&Oe9Gl70wZ7bV_tDsK<-00Ou;`e2!IXZf5L-$ML+};0U2-tHe$nj zp+F%5#-c^Rgz;80*orZ-!U61pJPbio0R|MD11}&zJ1p1$;G>383Qq8&KwubPxz&i0 zUIlb0Ul4#8lmRp3m3*xUhg$!Gdbwp$1?i9$sX&xhLsZ6-GS^K=8F1Z$Nfm%}BHQBS zXpJ&nAu<4zT!KqwLVY#aStY<*-34$-=$s`$JYeNi-B?WxK#88{I^qOP4dMXQfh-{6 zmUgLP-I!8w2y>R#Kg1z!cGjB)K|}neO^Fu@WE+_ZfSK;WZZ4Jp)Mb24I6c*jR9^OJzcXHw+&&aGI&M0jfqPK6rw9*~Ftp z>RW9Vlsuefwdp~+sC)5+T)Bg~#OgU9!vHj9lI|CCu4+zIm`*S!PB};gZ{&*7S)8&N)ea=s_sO&x`J?RYni%~e-))oi7KhO3SJyU zmFC@sj_JTc*?@jUFoNlUR+j=00{F25F|@=VTp;-IgA@M40_1`@gx~5B<%+h7tAyw| zyr6A5-mEHVvLUKDG=n`VqDV%Y4tht84oE27>j^ohsLp|idF5E-0P$;quZ98NjeXZ7J)#+e{=d6~) z%>Eu&o&sP%iPi!v*Amus@kOH6mjF~)XWdoE&cg*xYJGw2(7KdZ^`jyB;bMJk$gZu~ zmh8z6AHEW%-+upVs~Rr&A#P0x02X`$Kjee3<%F^lfE~h)O=!{K`!tE{2`<G*mc-1clv{H#E%9034q8z?XtkbxE`uRQQrg-sasV(ZlIL3GN4A7HPSE>;i! zu=q+Y3^MMpxHDE?-~(A1-hVZ-EVn)y%C40>dyFG;o~y72GzJ0BA4=7pJ;> za85*L5(~r<13{eTlufK$5bGyYx@ArwuN22HgBB_UFT)GRuowgZ!1|P@-e?6Pa3626 z14D4z&J^dmt>@B}9mg;p2PqSj0`5U!fbCWxo@YGV!bcL;0Qi6-+#N3{uR7c@8B76A zEoGGX?oE7f2zw=d8Skqw0zRxkKGebhh%jI@rEf)V5&wg@-UPY2uS;d|0-HetKQJ#u zu)A7m3A=;JwJ9?@Gx~bg1AB5DE1fa#!5$y-82~}S8nPre@boc*4`c5HN3kS_v;VdR z0Q3J<6e^n|jDtxL0)ZjGJg}szGyo7FVyU3#UTIrXa-~4TfjWf21>fZ>>q9rZ>OWw> zN=|^Q2qh`Rp*FY*jYh5!d#%#0aEvQCtVflOG9bT z&c$H80bk6jOf@l>5_CrbMgz12C*XrY{KEqTLoZ;!&5|jOm`4|fr>90CLO%2r3j_r> zgR3ZjBZLF{)dNn)>`r$s&|>f(u;pD;fa6)^DRlK$6TlQeNqNoc_z8qRbEi_-L>xx0 zlqoeoH#I<4^yYe2OCRJT-vwI->07S>HxxCD8sa>QrZphqY6vt6OoJ{D0HYrEK{)@I zM6={$Fl$8bbEt?kDMYIx+Apa{bT@dlZDxZgk~4lZwoXd>y%{MgmH5-bD@`97mGh1w^c87KVPvXYa2{EtWC%@P*?Rk|8Id> zEPRnl1lYko{K6DG06M<`aOJ}-*nkO!0|8`0KKz0iI06E`RJPd!0boKW+rS#k!#E7) zSTnRh)L~WH^gg`z8nnagDQ`XWfe%~)KkTfA=9Vkq!yp{;6sWLCQ`L{wY6HZ%%fo0Tzhu9-MfJuXs%BLo8H54AAP0vp5Pz^ggJ=9Q6NyE2v)t z@U(Ux1Sas|5E#KOz~7G&xsmHbBa8qrxHo)%LpW^nir$qvY=Mdf7=n8?ywZawG=O=l zA_njSl^=QTwQ+$X+dhoL6uba493vg$t!NUt0}ui}2ntl~cz-)Nl*7Xigm@otz%IBT zS)rEzwD)_*_k7p)edl*yEyEZ{CN)sO7koo)|3jb8!Jh|u1;`;Bd_Z>+fFneMcF@!^ zEN~pGLkG`yJlHpWv*j|1cpQlKsF!*p09PkB0Ul&vPOzVrH~8$CHZ7Bi&~jx~^5K?0 z;W>8tr-wTAhJz$;aWOZyOG)~c%Qt=FdVU9UpTmLC)>NgFyII5f7})eYaJ_^TlQ`g@YeG)ItCVzzMiQ z$hw1Sl%2%q!ZDgQ$>ze^@`Ga$_zItNZq7FqHfRTiY(hhcEN<*Kq(ggMIM&X?JcMjb zc{m&kfD)K4Kd2p~#ymf8!#AuW4&%fExI)gy12ohZ(Hs3b4#1CAIO&eO)caKSE*6Cn zeLU2HHS5G6uRtb*tUNdd=>k1I)B==Te8#KBQ$GeKB-JUb?i3bSP6z-8Al2zo0}yom z$bWs|AeK-8oB)^q=e+k>CR4*<4gQ6Kw>+benbXms)j8)Jc6r$z|rypK7_siI05O;L!A%T>N`GP z;C{~6Lzm`6%Y$D+x7U83_D-CnF0@?PgWo-<2FW)1>88H)zAN=|Z^+(5w{N}0V?5_? zJn4h}F$Od1hO9HRgH7Rn#~lV(kuH*x0Fxszv4 zpFe>H4N5@Fm;nMDBK<&SO3Hsl#!QIt^61j0PGb&G;L86UR;vP164f#QtI(B2&ICc) zQ0%|5EvKSYixFvCk{BD10a90t7Pm8}64)|^!P=S_2Q=u*QZQkFwzuSq$+n!7 z2=KrUH7t?ApCmJjHM$%M@1_t1d$wCTA0y2^3jR#S5(Zn^`Y}3s*;fzyG z3n6%hpL@bkbIv{a)Tz!p^Tg0bDElnbP?ZkYg`axpICM^=8sN{-Nhz(=(n~R|^Z-O; zAuiKT3*EF+4c7zJ)DjgyB$fJ3EwM5^Ta8uLS!u16P1bD9)k0h~BvjX5X+jg&VTmo) z*kh4RR@r5lZPwXmp^aABX{oK&+H0}RR@-g4?bh3G!3|g3amg*$+;h=QSKW2lZP(p* z;f+_`dFid!-h1)QSKod4?bqLb0S;K;feHUE*x-W^PFUfE8E)9&harww;)yA)*y4*Z z&KOw(IF3-RcsVve^zIAo3?z{Z-6L!PMsVA5%cfH;2Hsbw~AR_WxJ64+-LvvSs{ z=bsxoS!6#|ZfOBv_|b5ND6RzqT7}!(Bo=rm97s$#bf)K0PPZ+w6Mrqca?v^?znB+x9qLE?RAtL4WCO zmm(FGCeMG@I%wD33dx$meJ&jKmXQBnNpaeD9$?U#B4^2!(inhsrGysJ`R3Xy3_E(5 zNN2rt2>CuADDq7defqrL5b1T=sG z&>)MDIUyL+kVO}05d{MnP=K1KgDj9@04B7;8^oZ)j7E43X&7Pv`|F<|1`x7M0m2cQ zGr$R2agAflfqDd312il+grYehhtc5SKVC43JUC(+(wKt*>QD-Eh+`IS7@8Gk0mFYN z01_bVTneSp2a?Qe8rWR8i(izZ*Zd%|JYP6;(-eZt|5aQOX8U@=mck=je`ih z+&>KHjBA(>EMMRT9junRuE~;mN0Vjy{6@>ybq;H_yk#wSc}rfFu4Td;U+R20%=68% zmz=X@F`4 zd_ZFz`{0FEGO-VDbYmXr0K&;$mXCZ~;~V>+#sCVyjC*hl3-cK0I@(bh1K5Ed^teVl z*0IokG?X3JFbAUyfB<$9bRWG?Cp+DFvXlul9+E)8IxPB)c(5V@ThS*!;Sq&@IN=*H zooNIV@(p%$Bcgk71T_En!4AzO;2*<40XC>402F+q9EAy)5=JUhUi@Qe`Pk<~!XSX2 zwPUFBUB#s>#0*!xwlo9&S zg)w3K%h=8~m$BWZFmEf{aUK)5+w|>kooQQf@-Cai?dI`}Yg=rBla{pgCQF=4Tj)l2 ze&`$-S#p;=Y~X1C8psAZ4A6poAcJ;L5T5~F2GXtIqY!et#{eww40+ITX{GV5JBBa- z6>L`kF?fbM_5%L`s0!c`>>YrA;ek+?g)D{!NZCEOpq07h$-n9_02E5fF$@nwZsa-e zGt?ngeo(^z1Hf=C9IUbu53R#d5P%!b!HQa1K%seBfI@-bh74c09nD}XGB5&#i4dm( z=CB3>dIsc-n1f0~Gk_ahD*yr%_(nD|K!+&|;tP)#BXKY?gWaOpD^K{t7A8bJBtZcM z?4mT_I|awY+}SrzP8l2%FET_11%0q01OJU-3-~b-jBt~>JA)=}n+wiz7J8VuE%bSd zdtB;HSGvQE<)k59O+zOa(~gF%qrXX9PcN6ZY~!?|t&6|x{zGlp1%^8!kcraJuE;B+ z-9O$I0gnGAARohc*?Uo7uLtX|Ccl%6k@Cd?DT5yhmTY22tHuoMffsf4!pw&imMbRo=Zf2O81Blt(3o(F|4UqB8{-f3jrH3b`LKa+_TGYDbxz9&!&fp&U)W9@)GdFF_q3>Mj zpGMv_dpqi)mowDQJ2a#pO=(fz`qG5X8q}3bbe8$H)b2|)$yVL*U&~D*5?LF^-o~*3 zh}8cYzZQVN1;8;IrJQ2|aK%0T;Rb%}Ln7_ChX59ki+PasjB&r&?%dt>g481q`u5D= zB)_OVq?~pL*vCjhVjYDHqq|VmfXcep_je~{01)`bv^(Ys^6)*R5+^t|rcL{m-vbCk z3yDM)@3WVeM#PdY&EKil@soZ0MhVD#X%cS^en1rEE?>DsTRvxrvR(2cF#qp#)<6Q z?|#m%Vbbo}er?UEAR|@58ddl^|C?qd`1AaLLTrS z9!MdCN~{NyAtm688PuV{){OUPPvAr*WpdB@vXHHYfyUgy1}kt1hHnpM&$VI40f>plDR!yL9f%_CTbXfdMw??+gF~=3yD}0to*OAQ#Z) zIyCEdjHcsG4;>n;0rHCz@FA}L;Q<2Y0k8ob)}jH3gY(i2^o}rw6i3gx0UkW1@4PD< zNWu}MAq_yG9?s++PVWm7Ui$}j0^s{F6lIJ z6wwcHz^*45jhe6y0V%Qnw(hyoPZeE})RHcJloBURk^X*bDL3sXiOwhokQPU#!_Hs| zAP*OdOdk560pj2sY5_Um4jA?!8q#15zTqCC!0reD6ZGL1r~nHzPj3J6;TDXOGkd@lergMC?;s;j9Ol3QcER@E4bV8# z0SEyf8o_$>Ar`9OE=4mlhoCI`fCF}+uo^66JTf$w;W9H52`(WYe!&bJp&c}C;g-QD zFpL_g;0wM%B_&D#tP?HOasi&<9{S)P;vgC$z?EQ0mu@mAb5iS~D-vO+C<(MEmu?dq zRQ^bD6%iEG3Q#G93lv{*x1jR;deAAMl|Y4(}msbRsH(t|WpTPy$4KW;>N{ApXH11c9@#;2R2p z9%=z227(_N;vn3t^Nj2|FrjHq!O5g76ZAn60sw0gZzK4@aV$b33L+kAp?iFD;8N@h zk?KXM;hzX+W~8s8mVqpa>>tu$0Iu{T$ihwefg6l0nOKfVoiqY;v?1sr7ecVl29vJl zfgk3{g+GIXxQwgMQ(&Mj6DICukYfHhPwFN6p$9Aq~9VictVEMlW&gd;w9!#98fBZi~=u2n6hV?^||D?a{W!Gh9MNNWiT{wUxTxpWP}XA)r*~YZy58sKf~zKq31)S&W@R>5r^_gLGD2-u zS&dd_zJzuNz!AoQIIv0`wkQ`ul~1WbZ}MXKuN!Zc_1^J{E8H7ANFqZWYib zy3%h)=WvJ?W*PQok9Kn7WXbYjBjlk`2tdgAVI$n(aY)we-sDfX3qv@MSeTN25_e%l zw_1LVaVa-;O@#og;1$k5i2k8B8lVeOVGPJtZebTrM8#7u=^yw}1Wje*rjv1$cl7xPT4#fDt%>6?lOexPh(Gfgw189i?{C zhgqE0c`(>OC3u55_)QLQcad7^bGI=F>h*l-&ShW(a#M_7c} z$Asskeo{DuZJ35%_=h?8LYb1eo{}gXQDlL#wv;#lMfPxec2-UJ(}b@67}jUcPXLWI zb%A(`<#$0Jv}a$JiEp()T{Y@9w2WJ|jDM9tXB8>A_>Jk;h#}DvD-n%rmQ^(|R(tMb zrPz)oF^wg$0EHDZr?63wrV3)zfyQk+;(kAY5;lk$(b z&L@A;kdsxBN!fi%E$E1qlEHXb>93DNkyQmWjhC)id2Ws6xD%rWLPeP>XR(xhnSDjs zk`uHitJp%T5|(qBkUPzanK+aa&{qFdxsxAlmunSPfBBlzmzu{Xa1S|*YnefF_KAr& zk3sqARv9a$iJTb}DtlFo(HWCxDYvkBp366uy_u2yn3ePSoZIhG`0$cau?#llPgK;W_IVI%fYkhHI6V)tH3~T94&fiV?b_C)d;<7kCA?YN$8>vDj{- zrbyK!hg!(5Cd8@^GthEKJQRk`2I<3`ut=YP* z-TJNJI}qd$K9JvT20?e3xx4d$aYr4q)N4VIhmcgNr~L7Bc822*3{70X;oIvvtC=OFOnf z`w{epvu&G;{Z8_#>Mby!PbY74Y{I)FqAMmOw=*yEM&h=Wdy9jVALfB>yn_*p54dZh z$cEdsbE3JAyC9MqLM~w)AEK?<7)((RJ{@_h%ibAw|yStk` zY_y-sd%xZHyuI;2pmDlyf-F8j2rVQ?XH79CaKXnSLV^@-_&dVUx4s`TNG?H5+nc&o zLNGYvNnnB~gmAnY<1POX9Jo_NSeBx}C&L0sTp}RcCybXRQd~_qoK+u*OGPty!+7029Id8C&Oog z336ez3nCwclQF)4pCp3JS%}r10ixP&9pKavnA}WAqE4`UEn5J*+rb?kKvC{QCBR(F zHMPuFVrIyJy$4;4aD34PCP)>vAfQ${oUb69A;^Kd2A%=K+YTRE8`pq=y&?Pom|?r? z!4KT#(+k2EB%*m*qQql@PmenvdSNXJHS?Y=0)Efdhv5&{TgY=g2@`<5&q^Wy57skJ z*4Kir+5yqi{7?TG{n`5^NXG#fHp0Lxf=miRAJ)Lj{cF1mg1cVE#T#O2ydAC-?6_II z%YU0^$~_)D0hKU;*)`p@a$WL#Ccf8QyLg=RCOz{2uiuZ`-BC%p(|jG;4!xm0;q&Fe zId>mo`4;r<4}VKrV+H2&}sx#zBa%N+QsKD99j4)qw)10OZ}f^{`>z&Gy*WAsuMG zqHG@LB_0SOe(;uI0{)=}ihLg;UE#rgULO4PB%UNVmmiv;--++L<;mcXV!aDO8w3F5 zW9G;C!Jq#EgW!3zy_kl_mw|X)B1q?f+1<{>B*L`6?ZWL@M9^LE{ZVr^3GV-z7-hVJouTOxLU+*h}p- z+%V4F<2~KQ1)v4`bk9~|@dqy%xQ`$7Q6}mexd|Xh?Qw18CPh6^CB*d~Fux%zzag$) z-?zN!Z9lHA-T8q4`l)^JkiiH@|JeZF_1Pa@f)w!FG#}QD?D^pe&tAy?fdfhb8m{3Q z00LS&egxC~D*%ijzjOlJ4CGgD&wzjb1Rzvc&O$y@9*P4XV1qgAUjm^YFA`kY64pz8F%drGmya7Q zEgwUA{R%d$*s)~Gnmvm)t=hG0+q!)VH?G{dbnDu^i#M;{y?p!n{R=oSTc7;y2~d%( z-9C6gpukM_FDOBt|6X(}S<;}>g#siO_Ud$Ay3HNCf+dV^P#ZF2%(Nz>1wuB=v>C1- zL|bT2g$5~lrd;$W)uc-&52a`{cV+<~p3!C}3y9$9)T>*+jy=2f?cBS2{|-L9c*2GS zTq3A1(XPpF2K*k{oaDN7`ABL`Y0&dM(D+Gv9E(~ZrV%BZa`q|U%03F^Gv8H|5!U}( zWV-zm98yY6_)l^M79@ZG4&-tbN$!L(pm-*ph+>K=uE=7GF1`q3jHm6?9tP%Mb<9KI zc=R3tne5~V0|((ZBySQDBu^M2ZI)3=r2&XxNCQ~F%sfv;g{3CNQMF7EzD)=rP!m=- z+=a%0M5UD~VHuSs5p*a(18W4M6G_y_h-aR9?#XALe*Ot)pfjGCCQ16}@}+SWIL8qK zGi`PsZvwP%BR~3(5|Re95rhm%3Oy+nVU&3_fC9Uy3C|ETJapUyO0a8gCpZv=pHr96{x5du>DzFj^QF5jb$Fk&p^N048ec zv&<9?#4*o9>I~pti6XU|>84l_GX()mw6f1W%M9QuKk;}H0ReV6Nb6395TQj2YVxDb z91VOiY_4X`8uWrh8;!Km1NaM(9~2QV?W?hJOn2RO-;H?z->(?1b+U1Wynjz4uRiq_3k8Jl-x;kpND7!?;3E+Y33nl7B@2 z&bj5oO9Tr1h#B(eozmgJ%Rw{B5VePK?475fi+_Yi5l6+#j=z! zjAL}y8(A}j2-NO~eC(qi{|Lxs!3iw?*-SXxHIpP>N0Ey3N+ZXTM2LYTi5PSXBPEH* zKx%T6ob040^W?ry#qpD*ETt(=iON)}1pznO+NDOR%2>*Bmb9!T|5#a)aoKX0yzHef ze`zsX5+ongxF0Z&iOggwbD3%}fHR-z%&^y>uu@GU}C$rj(oMRH;~8 zdeVp*V5KW%sWjbLQ=7g8r!m!OPDu*XpbB+aCZz~UF>2C(B9);<&8biG$xx$a)S>^R zDo8Kd)S+s1t6XJ~LW^qErQ(#TQuU}vhPQRJU$a zuVxMCP4miEuetW8cDAz3>`YIZR&>JkvSyWRV=LQJ-rn}Ak9{a< zUz=6hDtEb_H7;he3fRz+)wH%Pu0DzD+UHs~v&{ePu6OAw+U*|qsKS-2Q>$BA?79=V zEJZI*zYE{^Qq;Dnb*^@GYFO&Rw7#c3Yi@_z+V;Blz49%vf#o^i`$jXsw=J(yTe@HV z!Zo1k&cX-A$rln;i zyxyj7{2hN+-!dT7v|SjbbBw5d-$ zL=(%Ir#Z%si(7iox6+i-v6d>VQH|?dm(sjKJVGFF;S6WsA`nM_rLK>SY(V#xe}M?L zvz;A?WJ`P6LL{#cL-FivJ0ldvrna}g&9PaMrF|0E}8a3d8{h$F4HQ-EEt!xP=62op+ijbj)BBqNCsUdSD6VlV*?9MJZ;$D#m4 z$U>4FfW#y0wKt{d%pn7A1FqaB9K9gf?@f+XZbvm#3L337Yqib zA&vIH5(VanNhQPby?Ja+9VBWvS{(mzje4O4*w5xhE##eTT$BYN`ymP|wb65ni5z1X z5Xb5GG5|O1!yW4qfGc3$ER-baA7wwz%g-Jb7`9^_0}%%u!oHR`jDtjSSJKT>89IK@ z0~fH+3BZnyodG0ZA8`K)%vnaf?{>AQ$zhAmGp9o`}rk_mDq) zCmYg^R~GLm&6vp1t|1LW*sJ5S$U`fp5e+UJ%^SoR!T??X3tD*L{OvbFE~X(1_fy0O z!GK0I=I{?02MdO<2H}% zDEx3pFElMl(r{k@4cwp!AmIRx;0@f6e;Jn$@-PbR@qH)=1ein-<;DwGmu;*E3|&VN ztQ31I*n*wV73)U~bRYl-NDEHj4D~{U++c)Y!GHcY2OklIQdf5v2ionV3} z2oeNfg46H|UP1tCAPe@gg%n|dDF_l_7zfk94F?z;z43r27#$z6hbZVJ2GuW00pce5Qbxzf*p5!xS$E^2r=LH ze-yEWUHFA>vj*U3eRlH$!N3o}@B<*1cdpP5_uvtwf(WaSf^mRC`#=o?z)Jhj4iCW& zD1;6IkO1=llL|o&@Y0e5;2BuK3!b7mPQwa6X$=bi3|rHD>mnQbpbbJPJ%Lk2FPRjM z2n)0D1|m6>`@sJT1E2&&mpnU=L$-$inPE)-Ky}ZSdRe!1Kj?bq&=C*t4EZn(%)pWq zfd%ux4%c7~^*{$lvJU7Vmvm{Dcj6U}v6tU-Ovv5KnD?k36G~K)$$LohYTTM6qhLw@gOf_hm`H$4VRG)(h-}pIS)1Y4|%zl zefgIm@s*hQ4e`JWn<+z{DGwDidF{}dddUol84rQ8oXyD&&v^~)5S<>un|$e)k-;G3 za2fEh1G#V+-VhE9z)HdyFJ6Hl$N8DcsSn@Kne6~~(jpIekPD`{i)UvQ`9PcsfC>A6 zo3;55=JNkK^!b;6pcu1R7$l+u*pLsBNlZL4AM*(hQ7`}oDiGaieEV<>-Ef!RBcPsn z4J=F9G~O5o@(DzUp$qO2leoza z&oG}nA)*5c1eU3uyzm0K@D2Ik4ZqNO|KJ$H$vqYU43RmRExDv5YN8prF&s${!9W%l zkq#fRE&;?fZNLeDg8&1e4s8%ObsDDtvlROf4Q((I;!*}9aSu^Y0Yw)LY_J~pumhe+ z52%0z17Qt5;1Ku_3sXP?ZSw#}VGY|d5y^293DKyJ$`70R5ldlvRn#FKF%ro4Jo}Ii zrZWGMbl@2IU<_L@66!z(Hn1MG=@`4`6%glaS7&i;352H!muZ)xn;8+TvyaSy4Wjo4 z`=AUR;s(izAQYo1>TrY2!4QN{50XFurVJeYLBa?>=9pV`KH~@vZsURz|{6MlM%K)K6vI7IH>-i6i5D&MP0H^v7 zm+*M3bFLt(VX^Ew z5qCEv`+*qhDga0+4{t!Oe`&7&P^fkb1xEXPMBVu#RA2l*@H=MA*v&BZZEV>Y`_3@- zY}vEa*k#MU%P<%sdnNl8lI%&S7<-n~+mkhUZNYE_jIo& z_GTd%UrgVAve#S`gOIDN&GYEB)kD&ch$s1Wp#`BLLQ3W%5=S^H5;N<8UEuKvf+Fg^ zu5$P7kBC+-1|*fFl2{K7K&CsyRcl=9Aalur<)Wk1fh`s0K7r5@bWB8$%-sV&v-wRimh= zgBXlu0X0)&J+@dfaM$RtAB!L%_`49tF~bkbVEPaAd5~*zQ~|jT;E7*he=|4 zW`%+d+9sGEu$1JWkRNa&M#Tqx%Uc3aiG&qM6eY z84OJ2blKx^aiWr(LgdN;lDwD>H|8iO?c_rQtc8~69Cp+~`?*NS{%nxoj0oQE5KpE! zX+R=mf#g0iJd&-eM+DFvl__v-GidGa>+7tc>%utScZgxoxz$hiQ0RW#SdwWEhkGrL zF>4u#lt0*ubtP5l+#go!ePGqQ5Z8;X?2QGqgmf6wTj-B*^!je_xgHn-UJU7Hcw_mf zXisdjv6kPpLHvxxJW{5-A0*|@Z_Wl%{f*3Ck?(VS!{(jSgW>zT*!-84siP4%BQbn4 ztfA3`3mU%#QN8~rBJ3PX!Q4=2L9jl><*!{|zV$BX0>>I#HU#eZ!t{bnS{+obMCR^mriho zLS9ej@=+UWSC!keG0aR)LeqOf#g#~Y?F;_BJCgi}VBVi_mgXGTSN?ZhJ(EaXz%GY& zw4E{M{j2J;R~qY|^>o6l{vrZf7=Bq&34G*A+7mkpg6$V0&FA?;)*hXs=5HpF1Ag@c zXtgJQ{V>yEikK66#df!9_>j{J4IR5GOE<-+7E|?_lSyHm_ESh?c)-YLBEA1)c`zBQ7hUnBV&#So`Ah{YaN9bhv z05`q|#dv#?(^-~T>vC@M@&1ihqPsyGkFFw$C?d*T?t^jLQ8$2h6%5!cLta;f$LNwq z9H+(^^`AZ(mK^$w7KYJ^< zV+_Z@?r1b@#qpn_k(S$2-*$t_ik6R^^+j75Su+X--C~k_k>4z*!2i9T5UgICruy_y zLU;`Up$~BGNap8{JmcyazyMh|?LQ<86`HX_KK=uLH&~k?@wCO)3}LuTCtnF=`)X6CaLDX7T&e1id`LdN&M@~P5_oATBl9yN z*;(Jv;>aYst8Vuo!2X$F0{mScyJEsfpjP|hZ$|AyMo~1qfeMhi&%0#K&vMuZQfTg$ zP)Z8?{robQEAE-DA+Xp1U9!~iN*HuJr`yO8Dq5nak$PL&v{>zdRg#$%9%E1u~ayiyH;mSC5mqq4+r5rKT!0~D%fvJu2pls+cS%?{dwP^Khow}*Vh~D zWdbFhA-p!6w0+YI3$J)-q*z}Ygbx_po__c+?jI-^fPXz8r~L8u{?aDKSU46N3OKxW zQYwj~{r%nIl_rG%`}zHx>#vl-(DT3BIc0TF=o7?ffdwmv;kUzYVt^#iSV9we?HmRw zR?JiU{tujMc7qRAc=AhNx5cGB0WAIP>1ex%QcNq=!mWpac#G!16NG$wZK;+O+0nA} zh+@H%2p6^*6vG3xQHc2oE@c4HS#A7~!KmUp(ipOxnhW{ce7KsB&UVvG1Qj@#&LVTb z{|NWR?cMnB(xl(IiBc5C;DXswq27|?%N{QMOYfn< zQ?rhT`!~urj*Ik9+iyENd7U{RaA83QeV}6XgupDaM%GU%snaLL>v;HU1D3WYgya4f zO;jqdmJRz^2JOgHc1-;bJz5!+cURmelf2z}YIxNO&?1V$J3rPjQ{2T;ZHrL!RPQEg zbhtBts>7($9H<=cc9 zUnvedG8U~a2r&^SI0sOgF0Oiy2Y036@XXF1^Z246=>RBHYdxqFaw^+sru66IE~BdI zI_{y=w(65BckpZNZ4?oYh~;5aX}8AX>On~&QH#_sbS-?e{+I^nU}1lXN6+E>PL+MY+r=c+5Lc6uH-pW!qbI7 zDggAFe!832)tHF)fd+ZL9zW|U@IS)v=^dHgk7h}K@1Yf+9o^!T`jbe^Xm0u83)1*A zCh{;o=MT*8`gZO%A~%Mz#jcEXRQPi+3I4?C&TF1s*+HcHgbO`?{{Cul6w811IK;U> zo~~?ln-|2|Rmc}{O8@Y~?OsY{w?(5&lUKV@y6xO%gz*Pm#`ldLmB-gpua%ozlTy)$ z>DIA%WPF?Fm=`}3x-SnZI4s;w`hJgP@unWBs#J%WUKe<(G4TDra&~shPxWdS>;pfL z$cTq`#rsnE;s`9w7 zUm+9n^Kqe5>c7uJr@zWQ0A!~e3TkFK;n)m2r*JDl5GR@tp6hHF@j<{eyRS)VxDff) zm{K%}PU=E7c9e>0$E9W^`ZtgN?5!7?$E%bOE|Cu-?7;pPZIt`nUE{ZR{@RJ~RK&Do zOSxs9SJ7$xZjNp!tvN~fImWs9JbTZfBt-k4t*lRWH12pA*(9P3LLNGNSI3?^&%XN3 z12;k#m9h63GJQ0*uq`81$(|Ba+cf%K}tMeXRI-*Bj1j?Gq zoW*Sd0|QESjLL;$GRi=q_S!wa{Suh=Z(Si{c$U>!DKf!Ba{f_s#^3g8&fllqyR+FQ zOYR^3IfUv9zWk9L87A1KSNKxjF=Qq>Ui&Sm2>H6<}c>9r_r{T+gPIBZiZ|M-?!K#cW6PE4KpXEF2m zv;QV|_~Bhasq#UHG{K*U`m3IMD$!>)U@(4+>ZO>w2lv)QK9=T9p8 ze6N=xXdd6SedhOX$-e)sUDw;028Unz=(i2CU0b%z<_%>zOK0;$1DR*BJllu0xM@M0 zBB%9fBK>9KNDY%++pVSDe^o^B9+<<-;~uJy@6TpMAg_xLP9A8x*B zz*`jx#Ayr}``nvJAzw@OXbHf67%YRNNFiWG35E2*`~&&#DaLXhYX+QN=AaYCCR}xV zGtsURPQo0k?EJ=oA>%tV7U6-Qab2XJ{?q^Fs+5i5z|SHdc5qO*M0V~8e{jyYOCzF! zWuB=SAnw=X{+S`L2|74#c%_ zJ>N!(bzWLFBbL{Pn^*QfGWCR{4$ck%2E}gjNiT-X8nWd4TNK}vvc0n33SOXFcf8Wi z79b!e8}da>sOkaPma{%eCn4i5EwKGEbm0Ay#BoXCAEwsjfp^+$mzUiAj85O3@h=Hw zFazZQJ3Sby@8EfCtW?l-T4A)?ZwK==N3TQSc!U)VXDblH#D{f@7H zJIQh+7KYGjMwju@dy$*;n4t8pVF%eeTHSu+J9-sWo2_^V`VwrgQRzJM(*mo2F8$K; zLUo;%w(TUsC(%qje6ruEN(rv#p*8(6SmkF%!*Q(AQ*81E?dzrg#3u4nHFi{gEsC{^ zH{4ulZrkg;o!^MfFHpflLn~l`hY;Gn)bLT5PaoF}6q{5q47$J>)1pHq3&5jN;|if( zI~=8?r07wip93+XkE#-lFWTw%J54P^P^+K9V!Bcz;8ZUJ05w;bPnWJ58c#ZfM(m_Y zEPThZ|33ABgaQ zMd8I)e23yzC_y+#oG3&>P}&M(lwU$*mmP^4h3Su`T*?WzPbncjL_PT-?E;t@4ju`o z7WE-oA@INPZ)c70&ga-nDm|P+(NhRin$AS5Mpt4`H$WD!LQeSOhNPE>_6j2^6U5Mk zfx5f$-Yd}Z&{S4`%0^N<`-G|4Q>EN`>SrDlRZavJn z0-#)=%*4UH&-D9xiE5^#B^48TQCZM6kU#LK*-_U~0r+J(l29=O!cz?TPsKbca4=TT z@@ICuT>8=Jw(d}tCM6~KK%wXs5|u8Id`J`0s%MY}v*=>e#n7(LJlW7F&J~&{?n?@- zfad1p1ffh1Pt87rfxkt);rt`f`jp{70r;Yl0y28{O9+1=l=329W6Z}SzFtmYNgbG_ z?CDCbgMdOsS$611?~sD6B`Vambl^VORzDd^`9k(6XgC_!)`RZu=a@(u7O#jQN1-lh z4JRGbdwnBxpQr1bU(Gn1z3EG}l5Kg8Nj;#OE^VN0KPUc(c?(`hp^Uv2-jWuN;RGF~ z&)Vqv_rZ({0iw~pegy{jq&J}Kc6}I5n{SL zLk~WkM91TAPfyC`%SKTVa>yWPY9BtrC{-;Cw$aG8Nl3Z{g4%Ebn_ScG14)|`7NHC8 zt_Ib9EFs1MNfOUz!0qNn<5OFWMwh|JMeH-x9cBcM<|U+QyP-~ zkW`;(3PvBiVj;AVBr#bs$MaNa`e=gKdau28##7zGNc}&V%8J!hNG2w65nask)mH02 zG5es}7oT|S@x=7l26tINw3~uUQyy%T>4nCd7E*&xKa{JeKKM8v>XXXisv_k9wPflWUdCyn;W=_jP= z6nPhV%FJo`47wq*(Zc0RD^H*F?G|Wg8tB^rTa=cUiYu0?U5m4M|8e07&+}AM1RnO0 zknk9rNO>260Im`gbi0V6EouS5`~;rVvVYfy0NUG{TDTm0Fqb75&9FD~BrQeZT|H%J z%A)Zj$GX-=BP>sDI2#DQSS`8;icZZx&CB>lNKi@X(d4aRVN`CMUh0Ec;PCZ;1eo2v zufziEGmnnyF}|+--UL8?n+jc_BpQwLgj>Bxaq>-6u>6*j{oIkFK9_Zxf#WzO3YFrZ z-jbxBf5-OYgfJM;ObP$y?Crbs?ML6N`*V|D_V{~v146@~qfYx>N#DnIpD1Lt{t8Qs zlRU4!4D?J_!CcNUpqbAdi1Ii4^C9$?2|Xp7ZSf!|dbF@z3tn%-W9`U9-WuPRq^7eq_o7n#+z_ zU#TxI;T`{IEVfUkvSqEZUd(E<-;}zwKoy#XTF&cwHtA?Ck#3_r*be@Kl zJglA^M5yZ^#E3#9dGj+mQb)$p6DkI*oDdI$n{;zz{VWAkaj9OSbXJEh=K&MH)sYe% zvnSu2GcCU$zs+t9Jy7cB=vN#h};Eg=^^|?HnLOX}OcSbbCq8mJgf5CE#0h2wrH+MIQeC!jR=+knNj-r%nfKG+z>Eq?iNFXn>yv&4(;{g$pMo!x?%-h*o$ql{p{k5QKB zxj<zW(nSxsMIcb+JJ!$0e%OAMe>OB4B6lMwC7}Z~mXBoHtAXWK`hUyf?l)jxyj&rEW zYD$QOs9#Lp6J}`fdHeZZ!%~#D6DtjtgIM*Kc%qRK{a8h<%u~&I=Lc{4QIlSe)@JME zftw8-_zNT05ggc+^EKiTa(ESF;fnNh(gd#lU|oe$yo2XQ2vXc7qEFMoc_l zoPWZHc7HGD57DQUh`l`<1deea-U&#I+JT1Q70Phzxv85Mb2jVoo1Eky0TSQ?N$zic z^rlZB!TEmZ+|$iQf#bR5pZp-FXca=4)>gvwq-T33v5)R9EQ=)a%SEeS~aTz>@k#sV>MLPgH72@_wJHHM7d_Cr7J`S+gcE`~pVjkgd7{vadHn zTq8=cQy|F1KitF5G1p%dQm?}!+_quv_GrtSx92f53x~^U=fryp#4Jmy9818kBK3UA z6?x}l3M>BhZCdjHz4}|h;T05aU(|n9WGfp)-HK#9?aDptV%$`Bt+n-#Du*5mt zJj>LC1*=QiQGw$5QWaOyumu45N&RW2;o{KGb!?m&nuJ|`K#!RzOL z?qwb7G1I!C!0i~?snlPdg})rxzTH%;`M?{kvAcP|)S#l?P_rnej`|N+346~bHP;6g zy;AbMG$8(Yq3j=)m|mlp(G-A%V}S@g`4^H|F+x8~3@jH?es_JTp%h@Wefh{uObe3 z5OI9ES6a#Y5P4?Q+bB zmOAw#cW*GNP-o(C_WhgLNx$i$;6*oI1^$Lmku4X4`=yh~Gy2d*ey6TZmuK6{LsE`=8kx&)9D_(st57S&^sF*n%6spD=JZ$jtWmH9^$>T0w4KjY@ZX*43Au@-V z36;u9$>2~#P-AKtVy6q*xOSJhw0J>~jSL-eJ`&ZLl zYXM^fdww$X!um=vPs+!SnTzydm?9x9)i@@2uyW{87X+W{anM0?K?r4dst{t~P+w zF4hUz{cCm*4(x`VFM+=Bntv_h!Jq7onUj}phAIZAn#dc09Cd`3v)v*%*=1GlhuChT z&7P1w6Q9CQYCcU5y#ZJL?CzCD#7twU_?C9T6;p%eTA z%n^T4?d-32Dkxt1%;c!f`4(IVC|(YJChM(beWib=Yyj~2c)#4K&M$Lqdu-9my_a47S}pxC&F(3{F#6C!{g33j;uxAH2r}0M=IcEi zV7_^thR~bFusz8Hd8`j(`7|fhu4Y$Ozq8kVHU04`ee74x^6Pp$#hH7nzn7}ZU!Q$# zzgchXwT32g zssCTQTVEMNhR>j2n{PW6IMbs!Eq0^ILwjo$Le`E1c3_;1b|Q+Zki{%N-q8B%z25dFPiv}&Foo8E1a z^x?iS_v5q^yQ{WE%_c2Eo&v#Rqc;tj1htZ@#D2n4jdc-hB@mlU57kOp*I;aM?}Bi& z@p%1a+kNtCcde-XlhL_b@(EK*3(|~A=2@l3K@-kblmoWvLe`oeeuG@md~ypfZ6HWJ z5;eft%Rb!wxb4wvy~n?MKMH)~K)UZ16e+gvUbUXGzOKXcxSvElowj&fLMyzDxqW@o z-+Ur-f8SH{DvfG(*n4IzV2~+pCG8eQ)-={hg!O*CUPG?Ub%*xH%A3@pUS|sT@2~Bu zxr@z|?1mI;Q|>J`aLgoGg&A2W)=NDUpM6qv9A*|Tu2;!nQ@YntW$fvDZ6KntNnEkW zj^3v&t?0k9*YZU{ihE9GzV<0G9);Q(2BHQCsKlwjqvA&2%PTt{3Cul9-xPPJm3a5^ zMn~&S7xKOx{Z-AeGR0@XJbn($k7g&_A{xu+pIOiEeXO^7&>Ez;?`!{Qp>Qa$sGMcj z#jp4pSmh}9HpUC7|8#M(d#)a*DfQTq_WF1pOUJWk>zCQ4&u4V+zqEe7r^m16H2L<| z%jwVi3a?^Z_89DHI#^^}bz*Ig+I~fTu=Ndk#`S5R#QM^Z@_WSYTjx(}FWh+ESF`<% zO+IydP+2>)8%OM(Og8`7HTGD__KTn6%4_+u_b!LYeCH1SG4tIjp@+EQuTFW3GkuME zU!y*LT^vz!=uw_62#&pr0}&qv1PBKw+Bdp=?qDC<4{zpqQ}l%|dsOh{w`Td3(N#Fu zzH0LM_e8Rbvoqbzyhia8-^}}s9-P|kW7DN_R`LE*kmJ+dHnaWItF`VUtoPsko(%F~ zadzdBS9y6;OEwtP*xtRYGKGYq9Uf*na)DK+_aJm^>F4@dJTH4WBaZ&eHEybBEKGRV zwTtaau5*OWy@hParK`r@lKE2jE>AkRcJk9l`EvH+2Pe{*lYd?H+l%VLq}v;~8W-!u z=3ad62yGIZ+`h@&HkHKNd2&T=L$qylZplT-W_!^`vL|}5{KogM9w}CpGDM( zP1-w?G6~V-NXXPg~n$dz^*YqQ8a4N}h|f-_znXqJ{k&dtGPs8=k$$ zn@ekMuf+)J86igVQD630el*%j2i`~snc!0F3V6C7ppgG@>)S!#KxBMi(an+p6}CUs z?hIj%8$}4E*JjkSZIG0X7+Zn=lCc&LH+APY7-06iyQCV3k`m-PK>-W^Qo)( z^lzH8!FC7zO@Gl7V1x`njxkU5!_-8=ILxf6Oz^CQ+qfs0uM; z?!FmD&q$$rz<&}c*^K($Zej)+cC*492`8jE~L`Y=^NlqsXLM*^D zi84W0apd@31>g>(5Yakf&I7XS6o44NYzdw#Wi`dfP1=ZX1=3Fl>lZ~0U2ei%%^daU z9Tcn2B5t@HE{!+>0|GQTi2eWIbE`;d4C+#qLM8<}0P@ayv2muTwINUkN%1F1y8^Ge zPf$FyAc(r9iuT#<6Qp~y*KP3fX#*&=Q8#CZ?jTlX!D3j2qq#Fxk9O)mp)!omu8!tl;T2ITxcVM+0iymzjWXWA?FfxNOP|5?N8eIBLc%%5+#d zgvzMfT;^o$9}c6#TdlQ|gkfE0;&<1N7zS_{^-jZNqjlbvA*DO|Jku0x`+}DN0I75^ z?R~78*E+yA%|`+M$BLpul6h%TcZ6c` zX+}*9#usb<=P&n6>2+82m*w7HIZeZ6TqcH@9pNaQW@PbibcVLV1(|PKODf+m7F=yN9U@yF!`Zs3Q#r3jqYPzO_fa7%`1xl?e)~MnC`qzQfS3 zE!yYDnIwp;v2wupB!i3LfZ&22JA@|C94uv;Xyqdk86%QGB1J@OM=pB>9$X0(+740L zrcK_~%JdF|?1V9izTNj$j1hqg-D3+L5LD4gaJ8T~#L8vT39>U}Ub=}Y6t;3O3*9wZ zk2=C#uw;^<0EVP!1P;&|O|}!25Kkc&t<~LGUXwZ-Vr#rbfQS}}50x_D_k#Mw3v~n0 zI*KL)e*cVzTm4r{#X=PZ6?%7p5?!?Q@0=GdwWEZej$la0GVP+}EnwN~zJDK8+fp{ucy zB)PPgwARpc*SA?bg&8uSFiO#+Tjkj_%?JT&Lk1YnYs`+o>bOg}c9gh>RX)VJ;)FBf z+)-}{+-Ruo4524tQ?m(cHaG-`t^tymq`72`dUwLox@;WSR9t^+W>B35pqhZ{W`f~x zz>7&(<4T{#N(vx^A***JOLSmgl|f{j{mndtGckSg`vi>%kX_;EpxypZ=iuNR z=t6Mf4&~qhVQ`A@?U0~QF|5-usOPXh-kI#*yRVrHdgUf5MFSZ5S6SJ3Cm(zrUw%3q zB6;nIr0uUidoVC-5b%bfiu8J41tT`9wLiYxII-uiwzD~2O9+)4(NV)Hz!L?da^sf@Q30Ed z2QQ&?Zk-UP4Xl>)K%W)X%7Z~YGf<-?DXZk*|4Y)TZsPu$)BW0bh-T)&q*B_@-hi@3 z;0D7Q`SsSoR>Tysdq5APqh9j((oqgtOe1X#D4++fpRNf!@Yq^8P~HH`PytAGb9rdp zCHbrrL>;>0c`^*1rx-Xa^4mUa`mQT|!^l9Z5v*D$aY-z{KA3K}rZQZx=_D(L!zz(3iTO-5JbMuOm89$D)Hql9#~fT5!UF{&#GrjPfH+2c7UBSAYYv+L6iIu176XtHeM8h?fz;Nz9X`d^hbO8Shfh=T+*Znl&eo{r_ z0oF*?*~&ZS5~Yi2J3^mhX-f#w8piUR&tA)6v9uiqSDJOm$AGE4jL|U0T1>tt(Zt+K zi;<`%vM*nQg-i&nqiW3)4&+C%%?D4xy~n9f{REz4C?Ncy}m&C6&1Xs=ERfFOYS&{voEIpb6J5 zAm$c>Pufyc0I(*m-3m?8k{rke?zt`=s45J^C@3_evCc30e1ke zaQZG|P-}wRx&(2tJp;0D2c(fue(rWXZ^1iXe0>i{nulJX-k)+3loUCqF7<*@J4w0t z7eK{Nw5dvAiSHc|O1HTeCSKL{ZDU^Neq@_+IHjMT?Z{W<6);~RSZkv{kQiilC)^+- zTt4IZb%`M}@ija1=K)G-r=4K6oPL%dPgU+}j`6$EN~c+I>t$E!6(vtlN}cwfysSQ~ z9c&pevg^s^ksb>gdnZKL`d9n(KpLC|ly4Y5eySFV40oLM&;F`>QUAiJ^R8(? zgI$;cd)46+#HvHg3>A1sEv=WBOnw!+E}PN(c>VH6a!HgC{p3d|Hb__u+T8c2`{G)F zMWnnQpuc@tA_F65u)JLq{!WsXDr03iivDjR*^M+@tNvs$68r@RHQ+;Nl*WH)U4{0l zmPV>g)-Q|drV*z}ogoq_M(+GJZOR^31aGFaHbWfj)ymt^_GHz7-b8^rqS|R--ZlQV zv*U_SddPFoVG~V_@+dG3LDQUdghsHe|EX>EtdpSRHUSUFOUa$2zznXcmQ#bC9>AJ&tB}u}oKqLW#{-yc*?(Z0lppgL)?z0q{aag0y?T%2w&)&;@YZaw1 z6%zJ}&lS-wupp4!D@ul*%a4lk%0R&vGoP%1g;xo1VcqwJ;z>Gme^dVr1ReaRX2&um zvCw?^b zhUx32)1RyZ8GK~rvaZ`Jq;%rLv!y@QV+F9j61G6h*5rd88Wq6*QVnItfp8U{_}T6( z8D}D!9o? zxVL}r`(cb*oC%)iFX>&y#G#m8Vw%Z+^`%|{C`ft5Me9xhNT|KGqCR5J*q}&PVl*Ac z8$8q?^5l%{K2d@S5fN5)!&dN!U-Q^%%Pv9y@`j{DQ67q)x?APokUzpnAY^Eod1d_> z(acZo>GnMi#nDtWXvx95)N3lEjw{S7?5+T4$78TH?FthMA-X_gr;1AQw3aJ+c{Gzd zPKdfs48%)$#AjGz3`QF83~k9tAOi9$(L_$K_Xd=ux`67gO`ka^S=d^nsbbA2#a}@x zEeHMejCCn!i09!_$fPFQ=dg0$eSR>OXP-~`bd|{Ssp9XgX3Yyf5x(Hl9j~&tbT#uz zeP#JZ)S;(i+eP6gm0M2?RV7E0=>J1xy1w!FkimER^)2sFcBPsTt~V>`RTL@K)+!=Y zj2C1P&zO-PKlwnA>K9yZ@ZkQE_?_L25nSnOP+4jENTA?&@-nhwE+M z+}m>Elr7kv7&2$-n+v8JQ9N%>p44_ne{}t}N?M8k=t(`|wczT@UNpZRp9xsD?doxl^pzC`i#iWZ+Dp>SovqK>_*kRkyH=_KOEkIiMv;yJe_~sKUE4 zm&tcY{xculs9d9up3JeHPIH!*=PprQjN|k8SnGpWiDtWC`HD)0tHpyzvd+zS{?*ry0ixsVVC=AmWERex?@a{->(OIru4On;^>XVgdSRfwMdHT!bb%+N1@AIJ z;QN6eezl+oNQz4GlB+Ut3$C3(bgMWp9AJGdD?=F!lF`YeFV)b0ekB-SzjF=FbA+Xm zv3h5%*fQ_B6Qrs>;m0@aV7^o#2vFkOZu}N4sAHX`QT#B@oYcL3vjkN3rUj~)t}vyA zGJeJJ3YT?=TThQTx)@n-h9sO|pHBj=xh=k^H4(dez1XqH^y_Qk_VVBIvM*6|jyC(g+I3 z@=c3!Z`BOo)JvRKt)V?Kq^ z#I)r!Nut<%xkvC9{O^T^^BysLGj1&jYfPv(zF&X7-FFl`4)VZZf2Vod#?VyfUPxAJ z73|qOakPDUgXJmoht2<_N$E!GTe_`Kz+)5|`V}x@I58u{C_1^Bd{plh^lJvtsz4TT zBm-^^tIqUR^J0Tk&k~+3+3(%e=eTtZ@b|39r1*>cjdZ1hJTfy!an&bz3^o&NsX?7B zx|4JJA*I5j-p{*j<$ORLivJ1Nzgm3oyfeHg`twt38owMWj}wV9CJcD6f^x7dqusr5 z%Yi92RZx?%twyu%#<(xMiC0;&xS`P_VbN)C%C_}3&oh^cey1;icO^NfrNJFnU7o8& z(lN6)*=uahUrrStKlnAH8&RXbbb;+H6}}y&tzNxifX~!?D}6^WXa3Ct&!;Z0^laJ} zaWHLm65;{cIbD6R0N&c`a;<4oj(h$hj9n@&J|ni)*zKT}mE6Cw8RY2mAn!$zid50; zfwK$UI?tlYi^%wlz%kv$Uu9i(TyrgV-~DoLIgFCjyWyF&UbT+0h7Eb}1Nhp#<9GC1md#hs$+dUjsOFvu9 zcSa1oOWi!Kpmy=WX6RemMGbL4;(ZLYIX~oHwA3J$mTYMreRwqYvsU%tEA|Aup}^}(;kTP}W1UpVJq&i!hN{_J;?%(>9ddeV~a;_uGK z^>NJZr0vmXe{XHB#rF>)y6G$f{G4JJKhB+WzWn@6?Iza}lze#7HRci+TK+e6)lRwl z3JzZ}v& zvm|_eqB3fn5l}kdY2tD{Y9J*O9~$N%&2)KQo^tso)w|d&6BsSYdWJTb@i7Nw;%PTL zi?!er9K5zbn4v%V9{vr>q21DEO*#;&js3TMjT|#L@Hv8u25;J3Zz0_RzK_j4UkonX z1x%$`+sW8N*ECb5C6L>lHzobIe!P6{G=JK{UBQCSVOCF<%>v12b7 zYBjrTg#WwSdtF23$Ld4jrLi|!FQsAUlm7*7$TllkPy)YN3!H^9w`9V4+~OaNET4wF zxD6V}d-Z4Ac}r#gV$86d+*SCxBdf1>*zMO6X(cQBwAMlr`u2o#+W7_!c~rsD#Lu~f zqvUqw?COVm)zBK~Tvx#%A(g0*Dh88&?!kUAza^vx&)QqT(woT6`t;OG46L4bIJHY# zvdWoOnMIWi%mJLWI;^REiZtWx}bq``G#WIo5+{75OO|Cb{y_ zOD&eHjYEuet&6EY;3@Bb55Wvn&*_jd`j96vcuTG2ngf~|$YUJ3$8$Xh^_GDryM^Lu zfPhS^fJ_i)O(J7kqDhMsD-Qyk_TNLN4?@rG@gxfH zf|$6;i6VYX+^{y3{xqm3@8CwWc4`&RoEPt23eVjuybky;in=7(vf{ zMRWSChp{?RD95}Y69!!Cxc49*W884(gRmkR=KOI77J}n^r5^HaN4Q< zz$UVPQbU0JNcQ2vF9vcYTSpoqWKFwM&tqnFQAk(``5!-xxTDhwU;T!yyR8mQy&Xqi zM2^mqWD?8ZJ*Mg;5LAgqXp`GPM^5rB5Qar*c-Xl>l;6J77B>Mlh-mRE+*!6JG0zt> z399+kSH)ycyY-nw@mILrB4{WqH1x&WDS46280QoLsGf%#fnp!VX9;2NoCTaAJYMGF z!s~J!&lS2^3?#g+(hTxLS$)gTN+}gW|Pi=22<_*B^!( ziDy$?dvL4F)pLOPd*3fUjC~laChUC#K%*4NpX$9!1jz>2`Y}qrNpcay{fhgpp<^LV zbI1n|Gzp0io&E0deA9sp=1rK5MEFp+hlK&1l0{5vf&?-Zcy!i2@3( zKp}{ihJZ7xHvE0XU)|5J@k9654ddW6MB;AZQ+n=g|r!$BGW&%Idv_lLiS z1&si50txiEgvmq{DKaklxtGcU%9mvgrD6hqz`}rIgSf?mGPQ;K?{JWRd9LaZya(x1 z2X`D3ectJ?`A5XZcP&O$ah!cmp~pW{N&J5R-#{S0Xm`qQt4%5s;OMLk3eJHS92Bu! z!6vq%aQsUQ$^cHtm_WVuS9{ig6>|Jo%2v6_Ay5D($x8rKxP_;ni}Sb^0_7hL81Ej~ zYyGZrGZY>S03yl`Z_i`^1Q{8M#3r;TiG}YUriAd$1fpi72+TlDq68@R^&)()XsLy% zu8ufZN*l&cD#vfM@`{dCl$0&GqWrf>$hTLuj(t0VUyZIA{^OGo<>=&>egz)E8&- zm{HX)LsgVoT8AGDVji@EQJUzf#upPpjR1ylxqejNWl$|$cwbf+6G|t{@@<2;2U(o4IE-EuQ-{{At%cYrWB@Z!q`nH z`VI;7;b7SumKhjS)KlCzC1lwMY@;3iRD!z}Sk`jpG}v}mul$&5Xja-GUYcHFdZEQl zgL65O`PBg27zi$T<{~*>hQtnrq++}%podcCf)1D^BAD*7Y+7iAqyK^}cS@FX`B=tR z+_(bU+WMd2I#TbMBJ?xre%ac5Dw%u2L1k|B{CQp`dl*Pri;DWFSGpY-W1C0&=oS(v z_S%cc*`bJq0oU2N&CvhA;;I>SwYe5o>sk4%x_!5~V!V}FisC4e0+F3UTkB{_Xu>A0 zEjdy}lwl&vT)HNJK%yhKq6w5=?Q0Db=R;L4zO4;P2|}c4`JGMsSUzGI+8`;6OX3=! z3lijH${UBZkDjaTJhcSD!`rtK4vYN=qVXUeNP$;rM*yJ2B8-6y!g~zB4JO6`7^s0J z(7_eZWO#1YS7+N-qYfbyf~SghjKg~Dm?BUNfF;n`_tg3+PX7TWWD}U<`i_A`Oqv3^ zv)CL^qO|$q91c9eRkynu9BPWCFaCLMgJeS7+{jP6vaN zZblF zPa#?Si&?(vSjz8FdXEv-15x?Telb=Q?PS+|+FQG2g`otj58J*G&QCONQ1)OU1ppyP z!Ozn>z$Mw!XYN=WcOe@7^snH;FtaM_`($(VIyUD0P}^g5;dKxGfIMH`IvtUX=GO$ET7_acb= zu$2mqPoZehwT^v!lpWex>LeWO+Hp6<*?}4z$~`gCecf}yS(3fw!8}-A`DC#{9WoS? zot(qj;eMB$0D7JB-u$vVet{;zn?-!oxI0$y}vxHL3<+_i-gW1e;M+T11iN_?W!O`Y(?Le=LT z1I$4ksK5$J6T1QTbz-M|_hB5Spa#LjP!lzzaO#p$!_JA8t8iE{J^^p-Ae% z5Ul5O_~C*wC<0E08d7I<<|*Ux)xIxy47>+?#D{!rmv7{u4;&zKS~I}&ScQ1%m@(&q zhrkGSK_z@I0ibTvMJNVu1j- z<}&^xfNY?Z!U4M7lY-v|Ijq=qU(Mj@sedQ{Y*>K0Yq- zOZU&fAAPZ^C~y_;mW?&-(g7&|jN`w5uI>%!`0RkO9)@1!*8)!>&WunKR5e`nL(+Klt-%_1rjuf zknO;KZTA#Rux}UvsK2IG-P5t)&73=X!kuiOvVjWbq} zF~Y3%zr>3jG;Rc!UMvE3Qtr)X(#f}QpH=@;{yM5`t5~&i^%_O=OXvTJ_MI~GrT_l` z1}NZw1QuxEfe0q3;DQV`=-`78MkwKg6jo@Vgv|YeKwgo(q<}{M>~l?CFAZeCYy1qP zoJaI@!w*04C?kLXHJuoTIsE)X&;K&W{UZQ)?eMdYGwZnHBNpGhNKY*@J^;*%`A`Ey z1QB2nB#gB%Fu(%E@skfU1F;mC0j^jzKnBn7bB_QExbh-D>^uUQ0RsqNUXbzdXn+7^ zs-_T~XsXGUTLvii&kC9NC(k2I6(qoiZ!YfsWP{#I1l*{ko(kt!zcATua!>mBQyX{Vq@sB&BK#7~Q$bu=To>ar_xZzS)@GeY>Tm??hXz3EIl z!~D}RjyEq8z^k!xL1(RR;<~c3hU&|&zW~1|uzeaL)D*?7^>^XgY`5+9+i=G%_uO>X zU7!F3eL%(#Y6ECM5n~+Yl+1hR9fSY@9!9_xV?=;=fDMqrpO4Ef-uR3K4N$}xq!tvx ziHtLV_nrc54g|geQb~Xq{1w!I8Co2sE9s@5akxVN{i!480_Y}-`q;vN#&H4PY1p(f>vH{YW{umQ{ z{!au>3opB;kq<%n_X70oU-&ie?+f)GXkFddS|>k)v13) zSfGHOSEzv~4>?W&ocsRdx29Omai}Yh>6+KR05(N!>?7ffqIZd${b_Z>>yhuyheO{j zi-iJGUI7)yIL8e@dyGR4=JYv~Sgg86;r&M@MVH)XZpeDX>gK$I; z2f61TC7dG}{{Io#82>ZL_K`1lerqBj3q-#F`SB$HoY5x>dABMmtBMXXB!DKFNWY1u zlC9jNCmATqxTTQ*gb0W9lwb~ZvKv%x^PFEK8#);@04$gzA3>5wuGSgAa$0DIt)!+O45>&(xms4+)v8+cs#wjcR=3L4u6p&WU=6ES$4b_+n)R$`O{-eh z%GS2J^{sG~>Jb8g3uib37lAm!L*vTVzWVjAfbDA_>`GX|1|qPCO{`)U%h;=iqOg#4 zMkw~$*veY=vY5?mKL-n0UqJS-nhmXJM@!n$((MS4{RI+!;DAyTRjur~f;YQv3-4{$TTx8yqZu|GkZ-XITowk!9pO_ifa+S*+Vx9PW#*VW{4qj}(u?vTDIUGRhO*`Nk5XuJk}FoQ8XH&ucZ!RT$9g|RDP_L^9W zGde;64>aHAagc*e5x@t8m0<=&HX2e0!3kP1V8T*%!Xu_G9lIIiEpixcxFd3j$#`T5 zQMkfOcIJ_j+~h14Il|tQBa=hSwjf{m#9*GAAO`S)QRKl9(~!m-6yktZTq7DvXw5?6 zFb!^W!YOqa1sw{~g;hL40f^8<1j>BoG|!`G+$+VFc*;S5u`pgztL_i(+3sgho7wLWrMWX&#pDHZN2MHS2@hsuG=s$rH^m0qZ{pT%LAU# z4sWgWD}EX~(zoagO86j=y#l2OYjJjYm|Pz`wqA z!kOLdO*fpv3|FRDNG?&Q$H@VIT#xIs2f)6;Nuz_g#!e>`sQ9m5QwP}08Q~hz5&;MG%CKvg! zX|C)t${gk~PdVE^o%d<)eda0Wbg}auL%^%N+B5gGupJLay*nJ%YiIngP5#H5d){u= z$H|vKD*Z+e*$*D=L~5leuOl9+gE%Z)`7VucN`dTjz@yjM{3HKg8$~HcJ{Y%6GvZ= zM}9Ime9yOh_NQ`jr)kh2zfOIgX@QC?N?(&*n$*Cf`2D`=CyxP=r;XF z5dT*c*rP1IWdY3K4rV|GU?@3G^9Mqr3k(B+%^`vJ5CxIpZ@%+b87Nu3BYAa)g!1Qh z#5Z0%xPmLUc~01JHRyuD7JbJDVJ8=UK{$PES9d(%gIU&mFUNt5 zn1hwreuQ_2A$Wv}w|SVyi6uCG&^LvuxHeU&h3#MsBViVY;ajn27#9UTpJEQtunV#% zduV77uV@;cVE{MbhPZPW7-(2M@`I<$cKZ3n4rpP#Ti=j=Sc5)wX3zIGE=pTMRdCo(N@| z)P2g9mPHtM1fpJ=C_W&Fn-~^L_Q-yyiAg$Hn1Cou&$fdgc5RpFOte{>jwo!36p;Ct zl;|Uy8^l7Z`G}C2oeri(qlB5=1p?mS2@|jat`IH3ghCX4;`ad8TT*rff=H8rP<98mDqPAx$`^c6z6e`J(Fypever zc>1S+s((wFjThFZa~G(Hny6sLe9xJq?&+F-sHl=Usit+89_W4GXLynrsYlh3k@b-_ zN~xkcs%yh{!Fj6LcbJEYRLK}wphc>%8ml6PlIf^^7kZt3YE*C-hlDj*vihsQ>SUM- zm+6RpLs@;B`ldwHs)Q8`o)ule8m-dWsQ;80lO@QG#;J$ON>sjQSJJQvQ$T0Z00%!{ z15WT-p-NRJG_C9!SOviZu5}ECAU!e(bAc#>WM~y+0S|N#0six*Zeke$LI8E(3)}#% z2NJMwa}cdj0K32rQ70kE#SMmF21r0>vLFG$Kn*0&3ecJ$T`&r^2vp=!ARv$?OSd33 zAvfX@QyudQ`Xn;BwOi?GAj4H$?aE#XkO^<{BJwr>7?5VRh?CWpuX~UH74vg_qpS)G zAT^LCZxRo&uvbm%HViuqC}0lza2z!oAOL4qI7VmO;90-006b<_1(qO1u@A}cV-}DL zz3@eGFb?BXAtgH?1V9q8fCDfPU;hNMvTqx=ZPT(ar5|BHPa?w_@YS{daR9CG3;udv z-I=qaH5mIK4s75E`+^>x83W8w4X2xT} z>mN+uX3}5?{n2LAKnwwkK>tuM4?;H+8N(0Z@DB^zz$MH#0V}p5JQD=)ztcbq)x$A5 zObmwxXs}=ijvx+K@deNz4QntDt&vc$@CXEe2t&LE*AT)ujKti43R3(C{`wy`CIxin z4C7kB#fu;UzzF!@2=PD){t>da$N?B!2c=*R;xG$_(J^(lP^k35Rh+>8&;_(`u8>Or zSgZ=t^AeQ?4bgCD8~_Qs(7KxN5^eTohbGC6;0<jrx6kicE=y7I6Jf?&^sW@d^e(2162jOJ+mQ3tdT1us!%wg}N8%rOmp&WL~tbjHOf zy}s-lQ9lq2{16O3(8UDe212qGYD0#VVhsrpp+S-k581Qwum>a2v+?kAL%k1I!Vl!| zCTn4|2oNH}z_9HQD5)+t0wiq#8Hh7eA2V~5D&GmB~S7u z_236|{UZB<5C5#d68x|Z?Jy8PP1VB?6#JkJMd2k;%L-UI)*9(QU+WCx0LEf02F%bo+z1pqqUR&)B z7SIx5Z4tRbDdin*x$*}Uv)T+e04M9*(ESp;l-y0tExVv@OA#Q0k=*&f3j*MJ`5@bC zp*Fc~ZvP7y2Bml15qb@PZ52VW4$19v>TNdR(h~mtZB>ES{^Q@Q%>c+9+{>MB-?k3M z;gzjHBQLTJxSa{Q-3`3WP!k^9ybuT9O%L4Q39?sj-xhAPA>`e_Z~g{Kec~gcG2<~F zw|MHvJ;Oa3DwRB@ul^;eijaFa<+>GuQA7JY5oB@D1}&4j51| z%5c=~P$)tY4Q=2i`w$Lg5U^2T)mod?IHC@1zz8Wq3ahIaZ9u>HPzdx(=t&~5FX7iN z@e)Qm7yAI|ZZZ*WQW9Oj4Ez8OLE!1At{7LBBC+rQ*xi2UK^2R0*$r9(yh1UHaz~R|f=X0eu05C5Pv+|HG9&g~1G3fArGa)AKwRPuW4*wu; zM>>Bv2e1q1{tpiC+bJ_6H*y>_v+pzF?*K3G`A+pDvl0UCDng<2O@Vc1kM~_iNqxd~ zr=fI(FaWCy5B;7pjo;Tluj8OE`p+=-an4g?jUX#P2>DPcbnBH>@di}a84-}!ZXE$+ zNcuBm2J~wgb8#ATVHLnX8<^f22XPu#d;Dx{*v3F^p8eLU{tvAFAFnyaX-ps>G= z4|#y=p3MM*q4if}25yoLtWG6!q4ie_7aHl;))4aiFb>l1D$nje0CB|GK!Vc<9z1wt zz`uVA5W#{q>&<|L{|LB}H!;CJT@n8M(RYd=f^)+LK)_~gzyVY}ObE5O4`7lzri*{PW0A?8agL zu)4Z8fb74Oz~Bie&@$=524t=v1u60$$+CI>p|mEJ?Ep9U3XyCDl%y_}E@3jeCm=yc zn83sVqvwgC1!nj>F-ZCms8AKz&@uE_gbXL3ICcKxxntM8AOi%nC|U7ef|6pPoa4pv zDMO55#0t=WOl*ZcsDKy7b+$VKc~h_~<50p}Gu70Yb>EF`c;hd5Qu#ff@kJEm2C-&A<*#2g^PD zOH((o0zs%#gaT=Emv!>NN0I=<(!iW?$RMK(bJT$+F56w;i8hvSStmsksV@&5KOHA1we~BLjQe?3_7u}Kr^3pj`d5x zzKl$1yhcm<EW|<$?f1L zo?F_$(@pfjLsg>G4J$FFTCh+&^)wVsj|+_<<&8CrI$3kGjx%*CQed_r zDiQ#LbCQ`pzVPK~gA6lR)uMoB zOen=S;=u}WbqN_2sZP5js2!cuEI{FlOo#TBzyAl4K@35_NCE$nLHHD9eeFx47NR&k zu{BLr+d+#Qt&=aSmB%(8Si>&(fer;=1ds5WB3lH2NJX9|ZkNPlCN;T9PIfXzy1|== z2A}|7wBsIOPzs*p5jcLZXK(^&q`!=#fJgwrQUrh;lq44LTH=zIGzUx!gh?45 zF~TEA**YNnO?F}_=02!FktXe<84P$`kxmi2mq1P)c@UsGn(56j#I7N`a2BN)(t>vA zLl=z#CZxjlJLLT?9T=F0J0qZi;x&&U6yX%~2oi|tQLjxc@gEf1(ToT%kQ5`~UIxQg zkJTmTR%S^~I4Tkcb%Y^4K8(jh8S(=%ZvVz9P#H~f(9yC6G}95|2m(V05t5ccaUR#S z$j>lfj%x~~rDNR9mV`nk`S!1cM%OoI@A?a05GdI?7#8lp+?rnqK%rfGQzl zD$}S1MM{GX>bPBHs1|jfX%+=!qDH%_*eTT_JlIvMzCRj33k=K;X%dFP(=C)b1;818&;uGiB3`8E zNi%!KWgg!}Q>H$2gh1e;Q@99(LP}IjoSM`nJ5>i2tZ+k zn*a!a3EkOX4f7a>4%>5-*2YZHG zL=wjw9I%Vt*r8OXVu;QNa0xDZ86HDmavwN=&d>_&qv>`slvjNVBO|#j@;Jj3{J24+ zq^a7Tcs8K$kF^~N+L{Mbn zG%5!?ByHk}9U*oHD*u^8rhHHX2m@FFo^sbCdF-G^{SkniYvhf1_VaigMw9>^a5#RD z!$A!~C2SRhk8Y5|(@WQ|PYKxKT)qJ(c?m>RVKe2uvA zja8o2N$J4)&i(a>QRcnEwa8IL2C()T)uS7c5x@zw{w6wb7)nC61BRWk4tM;#M*G-1 zQY`}X0HKbbKoS5;D!!1&=Wg)Y(kf*C0fPC_!3k_ndfn+^-h3znD&KrQ@?#}FwfPIQ}4 z#H$dwM-rh$_7lZ_DyR)P5dt8Dc#sBIP!?eGq+7%heB8$lX-ISA!WQv}dsIjep~s3W zk$iN>hx`ySG??iLC6W0@js(aUA%K^9iSB|G6!8v)q>5|8#=p(M(pG|Hnyo0BAz%$P-_bV{LwmUSE%bI1oDkq0_R5t|8?BM`~~ zaQ^^T_^@`!hh+%Kr!>p6M9Z{P%eC|nLhOQ9=z}0AOSYs-<@!c_SQ!(n)&h6yR?wmpC1kdU8&VL9ffdZBB zM9=h8&-HAZ@O01T?9S&AD1wk4_O#FY#LxWnkoSB~?krDF@r7U*DE%bR0yWU)T>r)a z;7|Uf&FEwifgp%uFoYNo&}f)~A22e4$j$@h&<@Q_=zJLtI0iw$$Q8kt{p`;a0Sp7^ z5by*M5hc;fWRd<;w|krm|-_mtB;JX3lM5jHKZEPc-!4Uy8ghdKCx9Cgo(1c|3wsy(d;I?bdo6%itZ zQzPXN3=oGs_)-$_QWHCfWhekEb%tQ5g&MF@TqqGpHA+d{I4@<@6VcHzmH$<`EYl1U zfFm#f1zi!=x~TDh&XcGLHAN9S6%6+T)(;XHT-DVQ@ih_QPeDz_r&$O@P1F$)GF-J( ztl-K=Rn@rJ)Jg5VN);vV=++OB&QAFSCk=*ahz2Pb0Y^9p8U2THCCXRDI2W~46meC0 zoz;FlN&{E{N0(fl&~I0XSGTXoYaV3MOa;Zy<&XQqUDZ1Zdy}O$dT6fCb81 z1wlZNbT|M=kOk;8f>}sd1+9ZpFb8pvi13>RZs;0rea;<$hAABa0|1OKz*tR~SAe}( znZ3G|ZP}MqPy;yFgyo4OXoYKt1}^wnh`k1BAQ+DI*o6HDh?Q81HU9tya0GAQhE6zI z18{Be}jo69J5w&$%HbB?`=z>vL9S-Q*zkLIT zK!rG%hDS(Rg&l=F5ZIG}P6ue(XyDtF6$_s5g1e;y$(`Cch}^FY+l6olO(@$b1p))0 ziAP}3(S1&f#n_oO07{)#sbyOhB>XdMOsJPR|2dY}UXSpR@hDzAA!hd6)+bD#%q z@B|C^k5S7W3N8eS5CBJbId;g@1D39C_=l()TLWk$@~STaLWxmNRFwK417v-(;TOXQp2f;flTyfF=nHvWS+)695%>261BI zv;rwlFaUvUBL2u#TQLA%K?VabobORk+gMQpaDyR!PAFI?(11>^m{SAbieW$r0iz(Y zf`WL^g#eJd?}%sUyy4g#VgWD!z9O7U$etK@26%Af=ZpbtP>0h60dP(%NuYp<+5^Lp z2UI#>D~3*%SmH*)2S4!P?V#Rlju3A4=8i50A95#Za<}an21-7KxTpu0PUkfyk|-Vk zuE?R8(gg+}fO+oe@m*AlfE!KUry{~ zw&h)JW?@BU@|A36)?UZn*U0{5%udnAc3)uTUIx|d_=VqlOR{M*pgfo zzPO-X!4(AIcurf10K;*I1lxyXs8wq)fW~-W=OhV_Y5$1`@nP_e&ijchQhplfjDYe63UhwW;*c2y z<&Ox+Rp^#(!lBfMevp{L3Ii|@CT73@H-J%2=a3LLl6 z>GCynuJM}R5et6!2jAWo6!#8u?!K`3wYBy>ahN)XpYfAfNJSx9rgVaVSr6 zZ};UL@7{7p)Sm_SA$QezMP?%>_sstGEAQ9qZP7UDa{Z0D`Kk8<#J@@YSOd8h1d zuXlSNQzOmSJAG(HGXT(H?Vbkno$4tA_^DkeX$39YN1*M5hYMzCs*dRGQ6h?p`j6=J zp_W$A2MC50a`UZUkkW9hum3gU z#;uR=QLzAs1G#=h82|9^U%fqy^pP@P;NOpj3G|&hNGRb$C=?3-OZV`f8-1+)Ieh4F zz<@x`RmYxgeRyn6TY?d$h1;J|PV zR4^y64~JdztPM!8ZES9Ks|Yd+^Y*Q;QEh7vIo>niW*;##YuYh1Q2X`}r;Z{2!5H~5 z0Zj2SU&#g!$p7iomN9GQOdwOfUuGP&D;-|nFDh6N?kOpN03-V>)80K{{DXiw*03cR zW$R_OSvdc+&`vs2@BqwX17Ki|I#gJ}%wq=pu~A1QZPyq@4k5@`3;d`9hY=tSbCg5f z^%q%+2CVpAJo3?38b_@e;7URkFjG$-K3u|&N6$q!U3DW)_7MS>#Pg30<(*g9VGYD_ zPAw5Qw#*mnam7+>P8fj2q5lR)Mj5ZpTV4ZsUDX5`}Ix4B9nyOcv2XT{NV<9p~*$J-j zGpjpv82>;(9Om#dk35f{ga<#5ttKQ2=7ckwOyTiE(FAeM8c!_@`00=USbQ@pKCxJr zjdK4m_s;^m%$iRw{~$AfvMJWIorvDC8}2`|vg7Ljc(jvYth4e{>i`cta}Yhbh-AP5 zvhqU@G~Sh@Kqd$Aa}OOct+*gX2MLfbtq~Jo$E^EYbIvdVD1b@FAI~UdkS1pM>Wa78 z;jqbT+2|0<2^!!pKmP)q?}rXccp>S1h-Xz zAOD)D+k2aJD&mPNzBuEJJMK6EVrVhbv_c6Wz&{_5F~zk1L|$f02NePOR03ddjxKMF z{!av+Z!rb~nCnEq>jj0b`WZm{G`c}-9ZH!24Va+?O2v;(nE(c8&N)w`Ptf{7tru}d z5SRNN{P45YW&QHKAJo9+2!MQ)=0kWNw^-U^Di-)tv@rhqV;yw<7|+v~)BTYXU-|Sv zFje|LgttFG4PbiJ`^V)X$GOY(&m=(_fDgt1y|(OaZk(bU+T6mnpZrNGiBcQ-GB}vD z#SMfM^h#DL7(%qEP$(zdpx*}5HWA9tQ81+7{~o8q9rCb;KKvo6R7f|r2%vW^ME~Fg z-J$?j%;|h^!5j{cBAg?>C5dyPqQ(AEy!+jxi0GSOUHntIyLgd^2NB z5QiTka01d40wtK5i*V?IKe?>YVwl?^Qc8C@DEd(-DFdS(+jz&jv{5ZIdg1kCs7Ss1 z&5Bn%i~JI2NxM`kgpm}Y4Ce;KQIfKhraUDo1!ISM^&*v|>|kKf_$dKAfEn{x$2{o4 z3u(EsQ$gxwCV@FPPF@g{y(HWukEzUMGP9Y^JZ2YW(T6@h6LFmsO#46;0Ri~n6M&dP z8LOEW+Lg(b#uVl`F#r9@$W6Yp zZ2~i%R zm9n&@E`2FXV=B{`(zK>Fy(vy}s?(kFw5LA(DNutd)S+GymP9=&Qj@CGrSkMrOnoX; zqbk*@Viayvy((6-s@1KcGE-drDplDmeUOui)s);W zl|oF;6}KD|?rn36%-;^qxK%;aaIbecU|DY?tG!sRl^Sh|?8ijj#FK4*%;d#%~6*dxd;o^d8YH zM`+103=xAUuY?#<_(DtigyR=VSft&{GNh^61z1qJ(z6hRpXwwlA=P(=hVpS#5cC)t z9RLxPuCy$k%V+6Ys>}|lB|PX*5I&nl0gRZ{J&N4pgAkw&zTn0trhpS8z=9T0s54r= zvS~4w!~u|ihBP*j9W>)P$*wLho#$L$hcr1FTQ~y=a8?v z6%+d@DqQ_yoPQ9SHuf3meJ51_f6$k{LImW0EZf8X^Q~fMBI-1fWHkWCwW{w{8|72a3ETaH~HiaI-U~ZP+g18owlDj`_s(3H%GzP+e zIQBpn1gT>Q;MDgq<1mge$eZ78@8!SafeTAx8puOp63m^N!?i7ZDh?ONsZ;IgpPw0q ztxCuM6aWcYnD4d`_;+b;uBoiGgC29g7CuOEIRj`Q8^PkVS(Z(3yaT;3{9p$xO0kZI z9lPfWR<2JtvJb`_oyhau?=Qj~jA$g`7;jjEOR~->DJ5LV@V-aeL)8Gzp{OEr*$zOP zIRG1>{q5E_=f4qul7G|z7OMC{Fu0+KgKYW>(Ekv>NgUt^Z*W5v+2H^rW|4ApF!zo8jNWdzL!u-`A7nDT)?cYBrfT*9Zmxt`iT&tphNf{ zG)x2I9RMVZjW`&a0nFev)Zh)q9~-nnIR6NMAQGam;RNm-Krl>$C-?v$EP)S{AWI0} zR1jYm)L|=l12NEn1JK|c9KisKb)cyI0Hct;2{1&5c~rNtimIx+bpmhu1o_r zbVBdwqWE#$R1m-#>|!q-L@QoHG`u3OJ>xXEpDzOAL15tcy}&3$VmM%+DU@0+$ek=$ zK@46XB*+3G)d42#gESbM=fr_A2B1OMA}%7*A10$cwx0mjA}u7r(AnPwB7!D3!6pXa zQA}es9)&XwqWi($F8ts@FyccVBr4eBBNW8-edMS7Krrw_F#Lc=zD4%+$5gmNJFH&E zaGb2|{^=WKcd!FK`4utOIpWLOzH@V=PM|Fhf@AOFhs5A>8DwSi`~@Kvf0{H5`ad^5m@i zBuQYUzNEuaHYHIez&zxG&=d`?$;v(WPXrKvVA6?Y@WU~D!#*T~79j{l41lN^127=v zvYbLp&SZ8O09K+y@01!WJi=0vKxJAcJjlVx z%}PQ*0cxU&WZLBF-2-jTgJqUY$Nj_7twhs7*)fd5D1<>5_yX0L&_Q6`z3qcHbi+Kb z!!xi$H?#xdU1xSa4BIi~I{%;p!<^oC$^#t~z%#gmL2v{-3_-YfOgEs(L2wK`Tmw(S z!&)#5c7A7p48UgW=QjXH1T0a2&O=VF2ucLWYPROSFoy-?0*H9SI2499#10C4Lpj6_ z0y#oAoF2x}WZEeQvakXI2+gG4DJekY7RYM0Q~?IuOEj>7xMZQm9n8!@4_2l_DZ)m7 z{3=5%$$99AIYg$YDT5fuiaLOKVPuoi;GrE43= zN@;+cyTa=p6h^uVE9>1_Jq+qRw1YBS!O4Zg8EAm5wt=jQM6L3}k48fimdyi0RM!9$X-GgcAh%`0WEz)u1!T@e5jf111}uFF35v{WQ{uf!_)INrT zdP_&FCO=R^^)QD)NX7tgggiun0Jy<9jKox&$jR#+-2gys)lzL7Jchp|#6PHjd4vIt0t2KLt{>Rb zmUeDmJRF!l96vC|rlEvj)*O?V?!yc~0*S#D*yJ!kW<@L<4e$d#NJ0Qq0JO=$wY+Tv z$O<~}CeHSqxISD$$SzzyM(y5i?(VL*q=W4&$vwn?SXx7}O3ST{Ey%@2@(u&YW#Qr4 zQaK0u0j?G%eO#Et-5LP88N(ENiTKEmlR2G%O8WE{k|JaEN; zgh(*$*sjHPfH5!(CK@w?e+DreD{b-Afh;gbG!}pz12GX#gf9FN`8h2XYcUt^ffrv+ zssD9k5GMfqNbNZ+ZAT!I=VmfqbSX)OE)i=H>V~Uej-IljZmuPUWd=*^PV4O6%P^#5 z?+ie(h;BMm@E-i8qAuWCkgqGl^85fYnjQoO%tJh^!3mRs`~oqvN^tk8ujCr$Jfs6J zE2=Wn?cED<1@H_9Q#}0_PqD#kMfV-h?cF1CGMO z`GD*oN9J!b2K7y8M+ovQ19H(;r#?u60swH!v9Kq zo!29rU%0lXGJ5a5cSf&a^v)2ycan%s2w{viN_3+4AVe1}38MvxPSoV5*EBUsFrWP$ z?W6rCyeDft>v`|{x(1meULWuFi+%%Bt4DAy;cVaF3SS1=r%&BZ-5ZB#2esZ?YbkccEF}G2Qu|wb@Q$DC$i(WC z685jE8A_8&{r>uV6kZ~|FR4j?As|ffplC(t==XjjRCTqLS(4zmf{3!w!L>&dqkE>8 zoj3G2!`7>P2}koz)qt4Q7V)1}<5IT(3mb%sTLZ8JR6gpLFG|j+jbTU!GHl;BdLb*6 z%qI+R;63b|nO~@AQldRNGOM3<2|#s4W=?i4HgjfTnKJ4v%{mmbyK|iK?b)AZS#pE( z8!wGUqqu};TgC~YmSlsLIAXL=SETG^Oq(WoR+n~(kwo*k?VnKlP%_@Ax8No>_}+QC z%J}2<7&N_%Q-aLT-9I|sP0X0rigpvAJT*u=wq32<>&J;J{@(%lEAU{vG5+b!x0Saa z8g4{qd=kPQF=K?tPN_&y&Zp{<(=vlEJGNU7cU`cp`)HXaXb<6i&q-af>rIQppmfT9 zk!ivg+kuNsIv&Cji`|o9dH$`R`D~R@P z4p(XYQEX6JtVtMGSV`UPMIIU7`rz)}AQ+-9hV<#BkdB)=Zft6qzeigajiB9NZJo9y zg7p}pQ+X-yE=H?!q<7Z3L~QD5 z*D#S*o{V7oesH6IgbQP>;G$p_(T9PPnq&xq8AdYDoEdH*AO$mY6?$9Q2v)+}{KO52 zTHNhBGU~#)rkfO;8&`Ple;9@sj~-AA4s`!bbNF)nyt|$)&c6O0iw%Ad8Z*7UUCI_W zdL)_3=^kw-ILrEb>^1oL#XTrZ7q1utpIMd4HSu z*fZJ*Xi9qfR^q8+k~-@Uce;d-Yt2mZrx>aBfsg42wq}cwzjRBN;u`7B8F*mie+K0+ zc#@dd=Un74w?St)gi^q%j#386tG$2x@i@UIRdM;ua*NFC8zHf z-RAZ`ix*-}2#o{Qm=La|)(mg49}d?EO( zzS_xrLx057kI15^sr&rLy>y1uXoP1%m#{&jx0a3{?oKtm@t6_Bfx}|o`=Y>qSh&5& zHvrUYm&dO7EzF?6Yopt?F5f%=DRxCONLw3lFNWgmAj01+rNZ2N$lvmsW`}rF_@BJ@ zq^Q)&XHkjYmTd(z$KgS#Ss0yBrXd^`aYUIxi%Mvw1QI!Mc!iQGMX1M+-rPD{~AJI4^(0ITgVL+`#PmcL|ij$=kLR<&KJ!1v}SqDzZ31{ zPE860%Leo#eYZ-!pBjs5b$jVfO^j{?Xhf9I=V^?IIf~)on#)q2;XX?kH90ZhxYl*N zJaU6G_$+&ic1ug5kXhAFW>!!tXFZzZHQw;E88D=an87#SCI)$SP$8hm`SApdfVbJC zF(|c0Q$1M}cGBcsLqi5Pc_JP=JE3m4uX&5R_5}sYffAuwd`GZR4YqqtvS@TZCkD_T zO4u&i^G|t}3`43yJfj#R!(7cjMyl4(hXXM;X91bfwPjG7Ep3)w2REZpjzrcogUoH? zvKeit{1@rsI&Xp)*|Vy#(@H)QQHuDdVOXpYn&saFJ6r`0a|_|u(a9epf(?c zC$pTPV3qeL6NU~rr6wS2e`MPPI z7?`O_W1blHiBewcWA^evO?j%#;hQ&&D~I(Yj83?+7qwx5#&7#cZGUn-Vtwxf5m>Yu)F5^6s_GK2=LD!#GZ@i2q$x8o6QBgT_4 z{8vQ*t&zQUrxWsjzMW2~lG&fl=!$(mn=>)CKmTg&`~7^;InDm>@}s8je^>pd>@U8D z{rP^e7ER`GxsfRL-{n?@vBT9)zVClmd*x{k*9UJrzoCA#OtJnu?EdrLzd!v`_WzDM z$<}U8XN(N8=TJc2&Xq=?UN?4)S8^gpWFJVPx z)VOaASb?RgIg&Y?reOVLJIr_D<1VZZaX^gK?s?u(+LIe_A&%dUuNRUeUxGgH zYnfD2&Wv>v;K2LyMin%hRXUo%p?uXnY@*kk3?`{X6ow*WMYWSbQnkv^yn!f-fF#H} zeg@U0=|~5&N_xXeSOfj6UP*Ha8I2daZ2oMg3AH>CAW^n8i&WFC&i7KxI2^yNiCJpCo0V$@F^J(Awz>s96SjqE=h6 zz^b2?HY0wb#+BoVaa;j;YcejFUtg%u`bM*(qTpQE*__cviZs&-iAfLzAplxV+;A@j zVxy=1We@HCkm2@+0mRKK519en;6FM*a79oGt^E&UjaUG=%;I+DTn~- zEW$vb%rph?fs8DZy}7E)It3oE%Z$~xSvM5FEZV!wwdwnt15f?OvoRqStuZujoPQ)w ziwwN#JN@OYBJ#-b3n6`3s^Pu|^u`f%uZ3_3a?xe`VRFSAIzXlM#!H;J!(cWxUrrFs z@C|EI@O$IA+{7r8C(-;xuL&JLHeR|Xn4rDv@;OXSTQa`u+k=&=`uxy8K=xx;^>iKa z_%73SN;Y}McC@>)oXVX9JgIOi6Ep?T zK8lC-Qam;R56-iH*a%mB?x=9VFde>o`bw5i*F{LK&#wbs1pdA=*h;+;O)VMM|4j${ z-n##+sH}ADgQtqC__yBNKhgLvy!B<53e)~I9W4J_;wQ!>MyH4G`c67g zY=VNg$d%zK`(QsC?(3t&ZIh7+^HxxZKN-7QlfYCuzRWp&Rn$@5TO2#|Au;^OZE1+n zHV8@B^48nAGHm&K{6(J74-bD_{sc{ANBh{XpI%~&?NUumCDMdJl7Y*8%B8}uMjrgC za?D)HgKia-PyW`v4(#76x%gUB?a0|(QH?_wYr!arn;u@T@$6!r&v2lANTYZNWwmRy z8{B|!5L+bn7Z^Q56q9|!7V`X^n_Oyin3TGC_g8#@>Xg+iPpKXE+_2V(+t37B#a+p$ z>wL?}lgEy^D}`(DuTYZTW!ibYS?4F{nu(KXTZcmz;o2WG$)5GAH@$zf9xV8i$;$qW zq4%%?SLv!+;2KRfh}N(=c7I!lMPGl=gkXnMa>XHBKR0WA#N>T<{Nn}uK7e+SBh1g& z312jCzCY;#Gl|Zb|9n!qwfA{M#QP{bpSNV=qgHL8iwX4GA#)#`E+~e>w*>vPT*(-a z(9mZp_McK(T(jZ9VPd~o+BfoMpyTi9g_kP}Z{v88z`!Q(n|N(vPPPD`F&;|$Ehk&q z#wDklT3#9#o|9J3CWTx5r~iD?j>=f%&|44$!fs28R6{&zEZYZ;?>+$th44iVVOq-- z4x1w6z&v?RK;19*W&Wf){2|0AKQl01A|yYTYx=K|dq0+xNV@r)P%opWnMj`h?<9s~ z)vv`v4ELAT??kDYv|r2b5JZM6R~LP4cOqoa3U$BxGFYZ5(&70q{^#@F9hdn{Yf%qF z2wtbCH~j83=-uxx)kldE6zQZ-vI|D{m8W)kMW`8)`jz|vbV&f+8RxsE6nOFpo**s3 zG*vyxcZXD}{^^p(jns>NbPUrtn`3JEY0^Y-ZwX#6H2;ZSMmgNGPjFbLK&w@a-;`E> zmOzU^KwpnH@i1>j*G?SUYLXd0!_YrdYLp@G;m;u5a&CnI($qS6nDjNb&>xt*=xSyy z^`PhDqdRV4yFGR?@@2(kWI_T0&-~dbBsdzX*lAiVXDNc{TRC_FI0afcMNT-yCAg#m z2D#*0xgMNwsY-Bb25{@PavPp-n@I4O2k=<8^4Op7I7{%l2k<^><$Zd>>o36<9KaXW z%J<@gFIs{>E`UF=mH*`le};rWPJlput3dIIK)HnAo;HPFKb>Dcah{Igy8t0sU5dA@ zf=v=a-2uX50a0}TTE7i8zYTgn4(iV*A{(ty;{dvaS-}_1G^y(xTLEHMC*gG{(Y{uZ ze*tg;$p}s${9u-tFi@O9^7;HG{GiqPtW{i~O(Ld7U0705Ix7eS0&rYGp!fhBKsXen z3c!I&KmZsHfV-ud+eIUyIXKN3j*R0goVr>KE-j&p?~rnL8!*jD>oRfy;f7NW0Zo|Z z_R2=)@!+de>aKC(>5X~<=!3ZkYg4zQwK(-j^z$GJ{x}3hhTqiyO;)+Fc)7)QaT}ib zT%a~}gX#RXS|K9AB40d|dv<{ff3D8{OGm?Mr{C7+V*Sp>@9#rT55IruY+AcV%M-C0 zbTw}bVyJ{1#=Ba!Mtq9vSlF%ai?I}%IMVdHQ2*s;}?=W@v51(RE4owv6 z!|YvppvAbeXHmr8gPIhrY0!|WV_xQW8$xz9Z3p5mzh!$!*~}43p7oCFHrhJHztukLx>kH!yoT!7jNLgfCvl~g>2 zCSKU20Dts1a;ySGj)kzlyW3KwmHZ~I2_gAb{!4`oPLag%5Pmd8JZBO9lu#KNPF@mE z&LPlcZm`}@&)RPLON9qh{*>Y~Avc0zRjY8A8U$ZgXLrRStXnE5{hEj5tbhq_!+)JH zzTYz`j=D!hO(2x(kNc{&mW&oxH+H(DYVy*ylndj1rJrK zOs{nXqY-NQ)F3$k!EE|?s}}*rJ7AQrO9B3wFL%7ZUvQy;Q->`2EhPang&+Jgulw6f zY3?TG)=|Mo4Meb@$j zEU)4mou-I59uqH*~z~~N3sFI_FkMQs&iKwPPgFnC6S~^I9yFIo?PTWH-UL3%M*mSAC-@sEF~(>!vHVZYll;|*jvbi2RW zNu$AS@F9uS5FMdPA6=~)JB7yA z5;Yx$cPwhz(QpU>`^?x65=1&)JFmyS|JIq4Ysoyvf zH_BZv$bo}F%Qh&Eyua?SasZYuDI+EPmT-r%npQxmrjl3o-<3+z97a}UX_|W+TZ~ss1gSDky{=TAUp|&=NzagaG?x%enP)jRx2jx znK2GimB>grX#F=UrJ;ldf)LyPDO`>Kce7~q;Q-{pQN5*~Gk|Mph{S-P{y>BpucpV! zS^$Yw7&48@Bj$LU3{4v-AxzcZGH*_OCb=)>`;>P?$;iGh^1HTUR#|%P%%G!*hJY|L~`X1I(gv z%sCQ#{LI4l2@&2;Ep=!(;H`zT%rZeI(GW`<2a?ZZ*cwDzZ}nRAdmSOTh+VK!Zpcv5>B z{7%jUvpKcsPGYw@) zfV)JL@Y6vFuS16^{Gx%T%+WMNZ-@9JS%^ddQ(Dq90BMiy6i;CQI1dGt)bdwI9^dBd zO9k=lZkHqpBomA;S%UmjUy}Hx8;A#tJr?kKr00re((wTBB82L4iv(6~ws51(6f{M1 zoFEE2tHIF8wipd>03CbS5XT*UDL%{QB6J0yxeHf%nzgmabNv}@)cR1ZXi{^qZ5Aa1 zz&90-b5-@p^X+h8bWDEKSrsVil1s8f%>zfSW}rba@0u`g_H0%e)j01GO1t0gudL)w z=i1Gleh`%em7b&I3q33t54bva$0`d_5(1;ScGBI zOMetcx^`$gi^f@%cFNA`08l+gS+VF9@!kuk=kGL^xESv(+L&S5;r-&v>4AFjo6UtS&10FQr+2F0m8fiEs7W>}kI%Gy53T`#$k+=lO z;BL%zpZm>TjkjG$SlD~F$bzV%2x6AzL=NWIm$>-I^F3M;`13zCVbHwi3BV|C3iC#7 zgXL$Tx36e#WFhSr5p;2QHCxnoZjl65bnl0v5U6O%{V4q7=z&-0Av%xzc^y_HlmsEU z-U?miBqv5fY>&hxo1r#NqLOlWWk5+=6lA6YN<9s*nFc7qnDlC)Y|SF9eheiV4Egw? zb_h5LG6pV*hj$E2hD#E$6Un4Q1p;G&PZYNBMT0p3Y}gp$X@Gq?p=Yxa8xsEw9Iw+7 z;_Bpa^blfwBtFh1BpV9H0TKe}1#Oq8Wbw|3YuVnDx=b&liKrSSKDT4n|c6{+WXeunB9i9Lp2L|&KnLB}l$qAqN!H6J2h3n89 zKLyZSsLug3cm1Ws5n*6gwxK*E5d@pp#y4;xKp|s*ypj&hS@AT4PyJw5Sy_pX2)s`T zw63Imb@ThsLi}$sdDe5r244LF3%$YOrAhK1Z6(c{zVf$z_3R25CZBMWpw&!CSVf)S z0U+3)&lKysGA_-7s_~KB;HHdoeW+7IfNa9_-kN_~p3D0m@pCv!iXBn?FUCR+s z_*ovf^$e+nA_T=`Dd5JkE<7Pk(|E~cvO-5vo%zy9&!U*uvk>xy&ye^L+tA1IP$48i zMOK!3bCywT$@4*SNHY|J%wx7D@LtCxJtQz#R&MUk@O?xu_b~dH0H%^Cv@1{samz4I z$mp0+mq3Z~c57(x1Am>8S&l&`=NXvG2wnv$)C@rF*9m~M3Jr8192R1O0OSq;Tb;-m zhX7B~wbXKG6V>eMod}DybD%k48(c6dfDql5LeYo;9iVC`KYj~eDDsF*XkC%NN2xeN z*Wp^bcEF&xCGvhpC?*HYbhSdORhcp>`>pGP5#e4{Hm*quh11%Be#U9d8h0bgcY6k; z`%JC{VL`aqYP)q^6NT5o0Q?8jYU9%U5F7lL?3S&~)pbYJ{-2d&T*ADlm4jm{)ZqY1 zc#gU5ea?$!mhF4}>8Zg^G{WGB_)zBs3xg6;un1>(-5fD-Bv&YC=CNdkMTY z(=%`m68NX9uZnHpn6EuNEH}ch7;-DAFw0A-4DB-&B;khrm}h9AA|$qb!JJR{LKg58 zs?hsfP-pr%Z*b$(ECV{WYL;5%m3vtBEJ5Nxa}znC`GEpwSH-9v2wnL8zO-hcLa9!mVBxfKCaWg=7;sxcH4ayVGfEG(-h9%g=GjeVufgK7gk&ZkH6wXy+xWb(f z`1uJYxbbIledw@ZNav|L(iTWd=l5&=DCguM_@xv_MT8;8t2=K+BOVZ!f$hnwDioy1 zg2Mkv;Tx3^tO|hzBwsBgeIzq$_nO8hdMmK73CLbOM>K&-+vTn?yvb_@@N}UTlSII`>kV+E||HnB_MpT2P?r2|L>pvtAhA{J&w(v zOSPDV{^buytb;hpQW`eHae``+p9jAXR_8cD-(dmB@ONZG?-rS$6ziHjU(`MhmD>F< zjxK0Qa*Aw_h~tEPdQkPwJ)-ODN?CE|qZji7r}~U735_?NU^ynW5MhHat3eYueF3t| zaNzvV_eZqvxMO0aB_k_7tHh%}X>fhfK`Iwy zVn4qxwH{OUcI&xKXs}ovS5sG^Yi@wVjXnNkPVke73p`eFNd4Ju9E^%ZC_u(jdddTY z1Qig($TS;b=g`_{i{&vR)pu6j+KEEbp-e&=kF#ZUM!V}ZR>wgKg5oxo@4ZcaK4SMA zUC}ND`TIeu{Qf!n+I@i%)aEju7~!A%4Sn*twCNN?@&lj16CoTJmpQ*I=_ifKL7d`}e zP21Ii30&mD%r)^#&k0Kh%|Uao?`Q~RbD(@a^H&pw!I&U7uFy7&9Zm*g)hUf|X_7dscA}(VX(qL?v*=)<* zYKh()%7$~67#a0GJjw#e$8X+m96~(!YE>EatKFbGC@^xzO&LJ((p^hLkglwB?kvX3?->;2BJIVk&kstlpo#NSg4ZPoExu9p^=W^?U;4=MZ!5&Ow<$2w{9+uI9|B#@p0 z3)zjfC__AS-;c!(&-0va!2Qoj+#t8%hoIDE+JW>MYPd2&5MLB#_f@iLKjNBe6xqN1UH>VI>kn%-H8{^VYnLr#0RvMPLn;9s#=f1# zmm?}S2Y44B*>0uI{solYOr`lXih2Lay-LD0-F}O@U8TKyUwT`jax)usr>=P$@+a_D z{7q}$byTU}_dj>y7k67ScjsDnXCZ#8X?K8Q<8=fYO2VpJr8n8sNTLyO z7|Ju*(n@7{5P9Q;s3M}}BoUU%H{H?A!r3&&GCcG!h?aC-a0{dI)O#gkNqe^Z@HMhj zRh3np@wuB3U@{H3DwNKxSrwlx7OqCXSJkXWBsK(BCz0L$AA}Zl69f^zgaJIL zrguW6=E1p#;|w%RG%*_76dFvvL*gT(3{EaIY!5dEG*cjcPTBl~5*3+TJf;8&1?5Av zocMwW2~N(J^WypDvW*~oy(XIgwRFf9U+L4sB7IwIixAqi5|L{!HndO zy)in{?;%o1ReYYQN!VQ?3Kwg#jy#T0oJ6R7V#oswO++b;y2LA1(`U_!^I!5A3PjZ2 zOHY++T|juP=^O-zPxP2*R)?nmQlQ&>AOJ6E8jTY1VW(M$W`62QV4s|)Rz=oMzFvy= z3B{pDWBfwOG+L>7Ae}`p>|`GCDbG0tX6C(4Dv`o6YAo;p;Fjcp%P=R?aTk6zXZ2zl zoT`4$(?CYypj~}LesY^IW>K&GILm!y ziQMG+UciB9bG7o&94$OJXopvQc{|-$iJ>jo1Z3?-V}4YXX~6E;c(p5DoM)9`a)ZGV z7=F4L7>{yD-@&2z4Ri8blKK1qnP#A9H`@4@d72p|CNiiP^Y+|_?3|XnVKmXOTCN;L z+H%dLsCnh>baMy=>UR@|2{ay%d)O&AL1~aUI z0ieSYSaZrbQ;U)YtLb&(66X?4s^9=4ReGKf0FupW zOYF7HlJ^T!lNBd|l-f4_Dgi=@GFv_n8~|))hZsp=0XTc@szD^I_VLAbp(aZz|!fTx`+9qer9^5|jFU#UFBr*Dk2;I7QC&@1)|5t0kfYrEPAu_jrY{DI8)W@N$=3s^ zz@$8;hO&d#rPFBPR^SsiiGo5}Dp3Uz-e+DFdIh~_aboTwehzXg&bzJcUikuWU7@+9 z){r<&sE;4Cb#QhA!I4J|8>DxNHTmEiRg8H{0pTDwM3&tXr0Hq<+AY(5`9Kq^T-X*F z_}(Vwq{d?q1k+9rVz?8D%mT(e3+EI4D*CCZj+XemoCW!?6%?Gy6~Gdv?|+892_90} zI!Xh!D|Y|+s$x76j+aSnA69EylZxXnrA(C@Q%X*908!LN5u)F z;G+1-70#5+^r&u_yAHoR&9}hj1cZd|hsEo*R3vLGop=^Zn*{ zn6qRTppOO763yjMSbS=!F0p#>KB7h3|7wf*z3Hc)3@`O*C_; zIXa@eizN(!$LDDPSi7Q=T5CDUx*GY2{rbD?W)G>IC05O(0G)08%PDs;NqZJKM7+q4 zlR6#FbCDMfW=qOjbEaJUR zpg}si98t*gUFNdy3C7ii=sdThK{`prLEmce@>AokyHWH@2B&AK5Bz6ZMmIK1-4<^g zWrB8lp|ejrj}N=nYP(C>S2=uL4w+ zFtRuld6cWi`{S%h_T!Ss)YG&X(v!T(h+jTrhQ499f3qrI|LU@DnK)PGFZ$=v!AJIm zFj+S{{=Cey{F1dKovXkpjaGb&A-T%&ILQbR&vQR@Z0XrDE{l3Bd1}A5k^rj}n~9#P zniG3z?4RWRrj?X4+4$ivx$2Cw>J&`t{>3+VJZ^}q-fH?5e)N9+S!xyX@4e97u*YyX z-g+p$Apw)ls^z*h*t?vXF#7btsA^FmeE5q%xs$2Y3#$cW{IuiLeuM8n_B6k|SEot; zrbHvI0~0UJ!;}e<(;`py9T68J%zz@r6D9<3TppYabFJ%xGAo1Ti3$}6?|!I2w#f*U zl!yJX%kNV0P9f-dKsWHNO z2%yGRJ$p+7!rlWCQiBBI*jsU^&k74pVu%obDOQpLLwCs_`x7Ke4bx9T!!pcQoj z;0=YU=b`axhxBhW4TH3(nq@r&v_!{;1QGOPWtz_++U90MTHK>(W-_2%-3xzCMLh~h zi8ej27zKW20xK4EI0$EUiH~0pBZ?i321u#%XYtd&mbr{QxJFxgfgjMv>0oqhE_u_@ z5Hrj@0H|4E2_jYtQCZitt_4YC#7XeqGyI?kB#S6B3Xh*kN3{x5G^z)Wkstu^Hphl^ z4}W@GW$aX}`#45ImrVlz5nC#b_R4G`&f?uin~~FT=|CmZb;xw?U+2^W>zsKeaYxQE znzc%)-wMlxKZ~i3sUsNhVbB`pH!1D9MQ1V5QlrCeCj)(1|-a4jkmQxir85O`OSy;c9Um*E-{JP!vFm!zMXD!@Gr)P-m`KE;2 zI!ba@hiji6O%Aw}pb=3(KJZ5a)Fyi?zy%Q22WWM6WHAyJXFT1unoUo_V!-5=seWwO z>CF8dX!7b9B|1F~*_x;;;*T$40KABuXNbEeih){9m|0$}GNWkZVoBc7KMr>g3V%#@Pf+WT-BdO2iM4?a#=7ct}_F1z1)fl@rY~UHM;%!9(XN zVugnce$nKY=+qgi?GMu*DTLyK*yZ5!4{z|PbU<~pGSL9@x}?0)gL>toN&d1-&Znaa zZh)$JNg9r!j%784OmzHwtkBz86~j5E{aGg(i-k}PeL~8wu~QuER1cj{XR&k--R7dO zY;P!{!?&A0+X_xaR3z$YD4oar*+c`d!g8@dg0i^Zu_KsnDnF7E@o7#&__*c^9d@q; z?NLo8M9cvvs|sWh0ON|MMu~7wa!euSuEKeUEPGOhp zp7FrWpF>kkazvQM*$*tFP}7=uNPSE!GA~Yx9HnczKxR+R868WgHjA{%URMP_Z-sjNZ|^=dl1M|7?ejm($S{3v^7~b=X7Y~PoU6m# zIA7ZKVO|+B6#ANKDGDhz_-o~#Dwyp6LbyLC_t@yUG>D{lCFkq6iH}LSEOZn|F<2!h z#S&c@QFQdWY+zO?yEqNx0X5#zxQ{DAYLM8#VXxtvH80I`ljBk^J6Qn(#mh;J!Vu)*-O6f|~x-0Tl{{ zL49-YiIV$X94I@6rrX^4cJ+Gg_p~a+9mS?Y2O&}CxIzJEXOlz!BVzfw@&a=piILY_ zk2#XZ+s%Ud*ax=3Ao1(Tex29D>%^%=|GqmW(xa^V)rKQrGP*P*G8p$c|*Y| z`9_Zn3Q}Q?sf-PP#soQ~BI1qgl##3hb_hE^%Vdlxl6~XTA`c0gah3iWU$85NKkN*3$ z!S_A)r=Gq%)NV^@!Id$|#dd2`Bv;-=2q7Qu>bS|QmYVXwVp~%bfzM5uED<{))t&D& ziug~wYs);nkbvOpwtNYP#&0(ok8P7`M;;lBH#!C>Qq)8wZ<#~1IOp;*X)xz#u&mNu zO2@!9^-bzSMQ5%ZM+?`7yfDvi^5aUh(c{CyI=Kp4XyY@KDTGy#^Aoc)iOUUj#=h1= z?n*MRVM}4ORnf4=eC?7H%FGUgcNCow@G6X2D*^aPsurxi?J@=4QO9#P!P|{k_-4#n z4)j9@iqx2>8AShHfnB1J$XNO2Dj67rM_%$}G~}F`02e2If8?^`AL%`yp9Efl-ka#= zz6HM$rp(LMC8XIeGS~~DV3b5bYI5>0K|)K(?@s=?s{9ps@#zus?w;~|zS({ZNd;q> z1vF|%OmdTJD3dLKlS=L=+7M8(szji67L%e8BU>gY*fWYHT%I3tua!nEei&YsLakI4 zYGD9@Ea-a&Ddi=;{6W2)hx~lS)~C~*qK+R_KCW@;G#W@Kp_8p}uo0V8EQxs>mXjNL zZ{z7Pj1HX;P6Ei-aAzM_jJ|Cm_}Z4@HeraJZrz#wUex$y*wkhTm@F<_wUhNF{oq?= zk-1v0c<+xz3pdaxnu(rH{luK13pkZhy!zoGj*nvPDB|m*MAMAWCp3?Y>N%=j6Y^Dk z9PZqFsPYwph%-|WHbV>p6`pe%EnpY9cpU@N{*zRmK>a$la7%xX&6$B_E#nULHcH;% zTq9me4SOQ-fUCGzR5G}rD7tKnmyf_Oi{xRZkg&C$hEd3{Ryqmm8tq0OlgmlS(Q#zn z51TmSBZ*MpFU$QL1*?3`%VG^`KZJdV9K>%i0pM=D+Y zBA>`!^tnx5I}0btgpKJO(kEk`&!G>W?}SqubNYgQv$%JyIQQuFx<~Z)HKXqi*587Pcj5p2 zb$IpHkB^*XALG)rwMh8Ex<+yNNdrSxu<>sm`!#p}nrAoD(cvS{0z6&QxXP_8FW%Yq zg^=wyZM}0`bN>~-^V~A@-{?jB+B4USP2Al6j>3Ne-(5ehp8U0I3c-{No`eE&LRRofN`s}ioa1ON4~sdaV!`#=`-Vewz@VqovZKdee1mhNUC%5OmS zW+>|EQ0WGLHOJ6$(B;FMF&y(J$M8D7;L#~khLDKQ7ZJ=YH|>2}6`j{)t!{o7;$FC$ zuTz=RP0t@sz0XZ>U8uPg^}k*06Od4TiOW#D(p7%ZQG2`InXyWD8;IM2le#Zogl>4= zk#a;5Z(lehD6Taf*gv`Zv6sF_w|Q9Foz8Um@>S&TSK&YTqKIZ9l`X=G7+sV2p05bv zE^5+GwWIRyh=2e0;4D1x4ZiOm(a^6TOcWmR4V6wa`#>xqorL%P5yudQlF#(5*D>d( z6h_&ApZmvLqv@R5nZl1wxIbqLTHYhHOsi7!B-|sJ`DZ+|i)5jU%%R9~qZqLSN|DEB z{IgYhuOyxxo(as?nwCz^AII#PWhl1={5m`rT55I~$rO3=_opR`;fls}&At&8i&G9Bs<0*jX_cw4uNpzAvKQG0%N9k6vHcPt++v5eYfxmxVN$yXRtcnuzTuU9! z*IBmt{JNI@xzy@8*ZB0G%XwN18mi#WiK9W<==_3wZ4}on(<_d zM1BMip_{8Jh5@|Y0md=b{(vzq3XMxLp#RMYC1~#_ohc9-q0N%`PBnev*^2)jOXz0C z-Wn3r#p$TV*TV&fkdmPuk#n|#&9MFBKLrONt<&|zpa+X)QG4=3m1$JKE@Zkotvm(Z z=Fg1GdoxkilmhO@&#Wm4itMxXG$aWMCBJeL3V@%)ZkQ&pNo4Qj(!|NRB)%9}uur-G z0KJk!I?PJ4#Kvm3RKTz!Ao-(eYR3{{5`;i1uu!#(r3QySHZ3OoSg@}Ve%<}{Ni45lWm_BXHj3*% zzqzqEgZ51l@gUeV`@02~e`&!exr!Z?6$dUuHj>;|Fzz3d<>?e{u-P(D`Y5`xXJ-80 zR4ff?8Gy4OJsH!z&)NP)ZQ&7RKT+lO#;DZnP4Wiav|puOh86_;vJa{`t|hbqOMj$l z1d)6xjLW9o79Tw|>LPm3MSnv!&cWx#A}PIAv?29vl=48uetI)jvMV@O+k-eyqs(|6((U@zDy#YO021Wwup-j{{>jsp(GP+y=jYo z&Y57yjo#NM9hY#cP;pZCOTczrym<*HElK}$QdyA7l8{;UFdQX%mL;q@}?=>68e+d~jn zd#DsnZ(Oi%uPpg)ia@Vi{67&l3K`oZ=xGoH zMA|bF^Wc(nW7^7_90b%yF|3Q1T1ufn zR(Q+35Yma7u-POvt9+el#|c2avN7npZUpcSpz79eQ}(h#qV)X)0~z zQl}@r2(4r~)k*kQhE1aZWzbN-j1^ZlQZ35;Sh?)*8F3ui3ZDk4#73bsAIsb2@?z3M zG)6PVGsrZxP|8_9@l?KTRH_`su>C-cj1dM5GXM5td6<&GLbFaN(?h}fLwAGF_HqEH zf=Xo03wq5}Cax`Vz?Y~`ji4&Uw5mE(vRpdF0fd)78Td$~JvG~qoa`#re;1Q;(>20- z+lI3L857I<79~mfMv5-4N&SV4;>OaFPO0Yp9+G2R@HYaV1S_aCC8oiF73;6;|aOd2Yz zk@|3m1#IN@neDea21%*@qV`R4ZYGJ3xXT~%jO5D&8t&V zBe9|#bH(BJ(N*Xro>D|Rzyl@-yph`gluesD->L)rGPS88DEy(ibq3>7G#U^J1ewDj<%>! ze*!%@GkPzXA+1i$>jKnR;xI5axQ#9yN4=?1sp7)MO~)Wuz4$(Yy@AQgI(IBraEz(d z4{~D;+-Lb}8>y7;S^o9`dS=NH7z@OTv->E8(C6AYI?lQu^m<%;bV3obiOgC;;{$1-zrpjh?y_R~ZO%LRND1A2u^H zG-oa8spv{=O}!qn0fsy;1h@)=WuY0(dgWi)%bVJw;(i4tWkSp|Vh@J+`w8Y!uaFQXGEO__S(>vNN+=-TNOE^ zppV}kCmPxC8p(E?KY_VJE8j~5n40bSbN7i3e}W9iZ9DQd)Y7DW{Xx;y-8B^P9*8zY z-DK`0@rIq_?ceB14Skz#(v^BY_Dkw#Mh=r|MdyE9`m~?INB@(pi$+E7h=wVgS%Y@P z>kaJ4%>ca0V=!099{kIWfClqLCi&VRXN8Vi?7{a%)0dH5zfU5S&dT4?!M+ruWzU=g z^1qJ0C~N2B>>Z%G8gRz40%eDPDjSw*+hixYr+hH2B=0xVIxeH^93q!kDoA^}6R$P- zB?(kwMRtf*Tf2rj(DhLqsk#^yhtG9Wqd8>XpX0Byph%wLc@dq_vC7J_W6o*_>DHI& zGJx={+%m}31X}(P*F+D7%zp$2u~rdZDCp+7`h}$Z^z<)~{$Lb?I_Yn9Cr*|JWA)uX)#G^YW>@iKEFQ-5J!MS2S;G5$0P^=& zrPxg#5$&HegG=0a4pzOTa^7J`!O|ZW-mAyXXM#0`X*@3CI^Ym32_jBZzEC|LJas4i)#qU?gRW6!W|G8Sbo$Q_!X6)ZPNI$&k0a|Cv$ zBSt<4$mSg*_VvRODanN_gBTUtSg{cI0{625G&XOHp>}c%%hAu&*S48R_^3a_IoPOZ(+AG#J+|W zhhkOqlHz)(tPhj5Vpq14U3dIO44rD&+*cJ2wH3FVMD^-b5G2cw9_ya>JhU1G?N?R? z?^E8j`o#v&IyU=d?a417?vB2(^xva38H9)LP5yvtGFhY2bGmD10~~@Fe1RmWjgwjSe-c{oiu524MS*f}6 z(Wb@%OYb)?(k+}uPhc#A)}y@Zr8b^@*T)T8Sjdpl5^j1WDtPUyZLld*Ma#@>`IyD@ zH@^G3$$ow5|Hq!i4AX zS>`B&=8d%>$)Xs3R)#PG6C46?V;I-kGN76UZtmbvx*11}!6h(ls;l~{5V8el(L84a zK_c$Y#Omns5Yplo$4t&=0BOhhti~=-KdC4{Fhp*jW8y--ut--%Tw{dT$Ni+Aoiz)l)_gw*W z4KXt;4am18idOEhhiq30Z^|CX1hDmQW_m6{vIS+;emUz z^1S~7^F;zZqOgzeZaQ@$YtDFIDMILeNUt`d4S*1+x^vwcm!6A z0^k2Gq%DROl?znW1W$MnDTZbNVw^pLy#FeQ=Jo3ZQT7xgXz{dl?OLuE?x3qN9P*VF z=fi6xad50T;Ie<;D1$`VzBnTCjaO&ch$2Yy@i?zMAO^ZBN&A)958JJq0^gXZk^wx6 zc2D|yG9?2^rRFD6Zw3mD4e_g5(pYadNwLv|R!4*W{4;@hGx1fDO(jD;KC%Tc%AGDC8*A z80e3=p%eK#_Pp^x{>}bX=q@M4OZJEBLKS>h--osb@fR;8x&8~d`hyT$l}Nx?2q~de z(kKO1AGq$e!6e!R%ny^10jh)ku>C*|{uNFyda?bdRKbCaGXd;wvT9FSmD=NmUWjMJ zeWINImB~23dYeS}BoHyTfBpO)x4%8}mwUjwR!`U5C&faZSqX22(t_)lI8K z>uR7E5Tb+kP#Ka_i?q?3{5_^4cl%UM6JDWpi%jKpur{Gxm1Ve#4y*DsEvU%bB=yx9 z<|{xfMA+6S4wXXmIj&TaXIl!X**s<)7x5i9LU)B|*oSCK#g+-{fQz&=;fv-^b<8L~ zn2j8%qIGnfzn(CW-IbiU`??)ZkOfDgUP5{=T!y`)$&97tJbmN5TIW6Cw|w-;>iaq|5<0|2dHu)~Pnz}k zxIdnSf0W(gJm;+43mSsbIawoZV^Vcm(*sHDX1 zq)b$DVR!OVR7yj4N-HY0t2^~SRN6>)+9WD{t~>oFDr2KNV;_}y+MP*4Wl{EI-5Cys zl6tavl-%z>t(bpFyg%xCyY#N+BYoj>$~pZgKBWRLB_~czQDI|{uh&bd^YkjR!bl}E z&ap^CrMr!fv^A6c%pXChsj_XzD!hBjf1clMt^!Fss(rYr_LNMzbyy^ox|Bn=O3^4n zpRDYbU<35*)rwNBzVfXQpjaUBCPceY6|RlI9t5Uo?lEs*g=U;5#(@oUD9M5r-N z=Qg+S6tyW-(R&hL5ILWge%1?HnNM4}iqNu%e5+%kVhQWMR9;VjGIZlHW!(+)YLwB`sMQbM7Y7Ct5e6Tjg z$?9+AbyGa#^m^wAD$hRZiO)1`VND$2-6LqtN(=&R}37lwtgwo%vw*`r8 zY|{_dK1rNZho8|iDA5^<0^fh_Lx?ck@X2Ye&E;qV%Ql;;RDSxzLI>4e$O)OzipfRk zYT7ScDcR;LKN1)C!lU}&@x(^H^>=giU2~1UjCX=^ggQ3a4f`%Jj4IxYYE_Gb{l^87 z75V-JnPiI^0&_vM_nbTzX{7CV^S%Mx3suvM!$R*VbmNvBL}?=yvErov&F@qJoKJNi zFGapSp`uU7{wK9#*J@e#U>AK&h}LXU;@D}P?W7INbX`ECG*CEvK zV|7l~;^wr()PbV3>7w*x_4a4X2d6d>R5W8sB;y{toGRX25!?L6;vh2-(VYYJ#NQ(a zZ_eF%Do9^9bP40X42iE-J_%^5Lx+kgoUA0MjC%&ZPIEtbbB)X{c8MhcfM5znK*1i* zU^JW;)BXn$ujC7bIyH3(ebxh#V44wed|%(DaWHJEoFHO)t`D<3PNL*MzYF-=rduec zuumAyVf9Mk$eG1X<>7alLp-285_GpE4ZHLW9}VKmxE^4WDz(Gq{I~%WlB3tKWz)aQ z_5&WnT##JQaM#AY;VMm@Ue|4AeuqxFe@whX$$m3^_kEfyQc<73B{GRA)NP1>w5!9V zy=ME0gS{r7Y9%tOm4x_wZZK=GdQ%eWJJ;$mQlM7)(C=&4gN=91S-iKCWto03e8>zx zNY;F$!8!HGE)Zyu_}HOuglK7f=R5JMb>H{TbFh%!r!PG)`9EC zDo{pmNr)W|_TWuyo}xUVz6>DAM}4!@Q^p$r>HjS*`Dm~a*4vABY3z+|0aw?%xZadd zEv?6;s6SEYg$ciwP`MAM`~7uOCHTy?p?q-fb85@570E8OWqFh1J;ZZ;OrH~dcg9Zv zoF(`FH?)kV!qJ~31aRh+4GN=DIH=64ZZV~Tk6L=okwjTaw(5}E$@z(7-6jCxV`+-p z(j(nQSorLGJWt3!B?d`GN&*HcJ@RcZ0V+MTROUh8Jc80%%2ZDLbw8ZE0b~r+EJogQ2&w9DmIx51Z+p$V|-Mdi3Yo^U910j4OT|F7ioUK;BW&aQvEndLO-#Ua0VJ zW1`uql4$wz=iI*u>!lbflEgeFmMLNsD^3gf2+%v`jc??62!6*^9kfWrs$e-v!IcPE zXsq*OJxc^INEao#psTYgiUd|HL)2B#?-+-OM*xnHT3P;aD!O0zC~Gykm3z?G zI8Q2pAOD=z%zW`<+PKgfGxJ;gjlvw06_?yRyygEATIF(WYf5g^30w)cE7aMOR?F;e zx=|NBt~PW_57;9m4=RDArZ-q_;*k&FZHGN|RH|n^UVy!Twt?h;!7BBN!`9LIdp{ok z2Q}NGWFJg&TuKJXgsyM86o%VqVQ|IN>AS@~0DC-FaCNGqIk z{;evgfe#4D!k(cA1rHBsWKq>z8PCRK-bn$3cW~?$XM>6sd`i6#Y~ov$AE1f{@Rhe( z9@mtn;wFG&zO6;Jy1mf*$64=_wl?`!HFr7PgjBvZPiH*!E!+dJ8EC;iVL$}5%KgEo zK)L&F6bKTQzJD6FYw89$xC>D!8pvd$;se1r2p|V7&WI2YyIt8^8u7idpBOg{l3`IwE9<1>~^j()Zs+;4rqNv98&xFh=yxC9As&Z(Rasb6s zi2@+vyM2Qko>j=uZ9HKjd}hUtGQ`u4*^0OQH<*3chf=d^obnI(-wXAbtIz?`HSdKb;7|_3}AOa{)#;Tex42Y4)NvBh;kPY>d8Ag zaO1ut-uQJ~m8!e49n$b&wSRs7lVY_={S~|8EqkHQ0&guE6zlkJMP9U&^vX48l#7^= z{1zo5>GB)o#cw)cQ!L7QXP)W$HJN8qOP2LpJk!cAzf+i^ubq+K?7=n9mnua89v5iR z6d7crekmEpihMygFOoxs!9x0&AP>ew9Y>JN;j99!JV@Mk;!P|?QPu4NHch+8ds)$P znov8Ga1I0?FRg>ci#=~f+bLTU>?jPukS}kwFB^s=4tcO+JFHUlmgRbNz~>%?=*@cD zj}fmr(MT~5j#2@T#q4u#EQC^1H#_Ye17($qe1d<>!WQI=lU&{zKFGZ(bJbCCje=> znOuPw^S7?IGi9#tp`QqlQyPY3)udWCO$0J#(cB|*saUVn^GJ*A#btH=rzF_w&J@x_ zaw>RcgwmIB-!>x;W_jb{xFG^_T~Q4R8%cF|X7M4?Qb4KOiQ1JV^Mmha943@-J(o>C z=g=1dqcYF@f};G!-EY!#ciUvhM6s34G`tJ{V6_+YxWmX<7JkxrZ%-z6nbS)Ne0$(t zhUA;sG;6UUex95>eRe7UdD!6)*U$U1gD zeemf#fB#8C-xnra==gDHP=zt4dz)VIn~aK(XLBlBCXpqxq5s^PmrK2sN$Qs4qd|E9S8LRr@-&Vbr-@Flf=)BFJnr63@Eel-X^S_;86&kd^6pwo6t{%!aQaTZx zb5#~s{>fF-Nvydl_WkhfMAgW@xPN7GHH&H4N(tp$^2#h*8?W!~Y2YHpC4QUjVD7S% zZV9yApM591(eaMq(yjCZ^O_IE(Mzt0>%e38hWwo_!q2{Yx=%}f`N3L?UVJ-lD7F7p zn1He=-*Z+qiu}#P(_6Rgcoez%dW(_g&*ZI&haH6{Yo0=X3ZGv6ym{$Bn%~Qa9GCSE zbyj@5Ve1sw^BWdk?e%@eCBJumVKc1kKh7Qd^?(|t=s$&bF6KL1+r+%YH^jOP)soz(y`_Ei zQ~k+{{oIddi_Yg;UKJPlg->nm-Qz(1OK+Re2aHHTK~SeHGWY!`Nx8G_hNEgI2|Cn`?pW> zUyH=m@Z_b$-k+Swzwh@!(o$h-w@!!Of6(SXsBH$DC;ov^FDl&mdv}726eb>`8Tj6F z;|z7j1>^tl+XpaZOQu~SIDPWJl#ko@Z$6}#TG_ivsnNQjPW;Ypnh}yk2}Df#!zK_} z$I4SPsE<_9lHfKe8Y;u>$`=r4;!)sKb6=L+yFhsbQ~5J*+4uN#9U^7Ndum%8&4>i0 z8jfa8DkRE(B}IIpDGREmpE-!2eM5wu=+Y|rPyZ8#QJK-Owb5}M(0~u0$>AFKTH;AJFL@7#bXa%nulC+n8*#sT?0*Fm1uE($1c3%nzhl zLLaa^YGZkPz!D?P8vlSbxs5gbfHhm1E&l;qaT{Ct0b7+cd))(e(z7=97YFQZ(i|NR zIC|PR-W+fYNOQh@z&X~&IdQ-_EzR}i0oOts*Y^XiWohnT54eA~aqk{*A4v0@Jm8@f zV?00L0m>k&GC}|c%rxUXzeX7|@eo-vB-bJD$u#BbEM7YL466gD8~YiU1HKKDBgkD| z-fKeZklk^YA1=*XzBbhqcl{Hbs?!VTUlUq6Yyo(3%TIgwmILjneR^r3$o&HZ?b`a} z5#Qe7nm>h^A7wnA*Xx?lqNgbgxSZJ+iVr$tZuwga7y3L&`qxULm|7~@6L}jXCYvRC zo-sfjD0&K8O8WHYcIzdpiFj_#<&H6M4t~H1TNu42w1Tckd7rj+GT&Ec!oKE+?%x$s zF>J?GY!1K0vpK`+&B?vzJ>^ZIXQz`_ieI zGT+B9q>kiW7(T)z&e*f4oyEoPOp4~i&R*u!L*P=^OFK{f70Gku1>wJ;G79;@N^nnw zeHc`*W#`8y`Q2?r^UTw0z(AEj@rnfwYd`5lr4!9atW zO-@4Y47I^9%XeH{n8~ypxwU~vps7m?bDp3agaBKtN>+_AbsV}w*KrqkLYI?xNB&xq z#hYx_aJJ~mN>x^Dt?Fs>`=+eAdJmcFyX(XznY+kaec8)Ta^pto$O<>;-e!_JrYaEV zkoWGeOkcG&U!|XQxqdD=EpA&Cci7el*mPXCv#)_A?L4^W!P1&;N&m1Y)kcL%OB-h< z8{aQlWgQL^mWGv~JSa+GGNeaHs2pMiEb&XhJ6~K_^fs~MwmZ&h?8M>kiSucw&icB{ zQf%p>n>7z#`%4;YL0{Q~?Yjk*vQDX{+b4PjUwDaw_~Q;)GB-DAoU=XphYZ>++0q3^ zjxp;r_Q~f=0&7VO`3XFmG-49ABG9EgLv8Z1Zz4y+S8V300_hcC{+$I$E)Z?#h=A;t zY`zX~abpYS*LbTR-ji*LYf*rWy7-dzJK;(49zexgJ{^@wXs#AdwWJ}oZYt?}*Hha9 zH6rg_8gkaoSuJj4u3ZQBmFA<)S(X&Aj!ccKO3jd+JWqs{GINSL1s_P+UFZG^yp!49 z{?wcv<178_x==Pme>kLWwR$loAeEnoC=!^gc-tqG6RVX&tU_>Bmn5NiW|w^20Qqt9 zQT>LzDK(1B0M@2Lomh%U$1b1JUp`9U2l4XUssrv)z;GVLIy>voL>GInPF}uhkAT6b z-#BApn9kIkJ8O*Ep$pf%8&618IIYdCbIYk${A}22H;hQ6ktN_8wlusD09g)x0g5{P z&AVo;GVFqQ4^T~U^OfsHk#Y*G$`tY`s_qW!+eXz!G9Q+}Lg`@!VVTJRJyxho@HMIfI9- zd9-8BtJucp_|uqdJ68Cc@=>p}0CGjVm;%%%AjDxi+WZ+J+&$$*f~SaZjna=jj@i zW3BRoOjyh^r9Z{dvxHDY9*OUr)X!Bc`;I z!X7sJXnTmkXg%G}HlybJseoTY>grQJ_Qs8i@`G4QY#a);c-KXXVLS|3!1t<#9bK{5 znH=6kepx3R=Z@@=G!Kcsd_-e&t-OL>Eefbd;*NUAgNpsI zAj@R5v59?)JUT>n=#^9o&(eUmEI){Ei9Rr_%!R#6i=!z_1^>J_3GLzg*mV$J-}R8SW5m9r^@fUFCyNxA#?=#0 z`6!R{SGntLcMA`QY$p=W6Fbx~G;{zO7R6b8J>yk37@|@g(a-67)bk46QO!#m)`J9@ zBn2$kWh8n(ej3JBUl~4F6X;`G`Bo+5LEr0k-tc4>Y6zCf&V`4<74WUpUZlp1cJ|r! z5F$yF#ts{B-T>?e5T4m}yiuun8TH}y)rYq>!3?w69=aocRd4880}gG3YHO;WB|g?) z8x61na4&h1Q2FyWT9WhoK71{It(af~!IJ;cbLg|`&?4vTid=Qbqti}{mrtml!z=*V zXI*?xW8B#rn+PV$}6993a|Uj%cii9 z_%wk}d~_nzN&;^KEXvej9Ms%}t>U&rg^o5yF)UCJc~+^q!2Q{2N2G6gxuC%S9bemd z0rwN$EJ5DP$RVVOX4?XqGgj|WLg=U5@9#*<41ZI}Du9#L^SMW=B8Ku-joafu@Unmwt(A)Z)x?;zpcw0 zyxb749E!7Lo&RpXA-lrPLdTjc_^lNBWk|o=yZ*H??(JoDwf`L7ulDcl{!k!k7YFd) znBDK+|I00>U92W>wNLdQQJmHgUCkOf4zIhc))+W|3Kuw!=L?!(i%td(ML-E z9jTFyv^0)&qmK>$J2oaA56u{vMW2jaUrmJYTK?33mV4r(aifX|6n|-GRx^C>zf-Tf zd>sLNZvV-7I@2ZoJk5?adMtIekVRh}@@s4JEI0bX=hL>o^V!q9vxy+G!n}(&(QMaW zjJjEZ0S~SMwrG=E&MD0<5*d$WjxU#;8L9&R!Sl#;U&v(M{p)x5PgqJGIC%YEO!1FR z&OoZ_8p7gGj)F*64<|E<+Vv$#*St&TREfBP$kdKz3*0JEO_r&9pD$+L8%3gGs2Plb zdeQ56AJq@ylzjee+fFTiOwwfeCzf)2<6|v(w!|)*Y}3p$i|2N4Qske{zHoRQ@%N%* zbGpo}_(G1x(px*(WctSAi_RD3_>k?zH>rxPKi))LUi`f!?PuGiJO{gR{}r$6t3)O}3dZx(x-V`wjRW=G{VpUGFgU;EQly7s<5 zGNaTT4c>6*u3eBw;8gYYolS7eeWG60b^Lqgx&40`j;HrZTyxR;A7{Gv*EN?T6t|+z z&vtgczK(`#^j~GBeL?R&sSuk!sG{5us$dVk`m5j^L&2SdiKYJY%l`g1zd{l#wq@7L z#u$9lvg$FMI(#{n`w7G~i7%sjIzGoQ$u%y(Z1b~MHk}uDT4u2)UyQ(yB)1IZJ%jSV zw{OX-p3r}+pLJ)Z7g>(}H&(=*z#tQ%gX~7FLM382r2$w~|1pn3rzbvzwrC2rN}J_2 z*5z!y!Fu-u_JU`w*R2lP9_67F)q+J4dt+WtpM27H%Jo;8|LGIdi&`pb>aejBeyF~6 zTNtc*?p0Udlp<27ZW8`2^(|Yk=aX%^h^M6r(^S7}VxmfXp11T#v82Fkc{Y z?#(96yClIvhHHk)4gj?_3GBWv-%EVB@7bQRNMQdMnEReF_hY zy2bc~4lyDL|7$kM&BCPhj!koztZjJWNtt~KozelV#*HI}J7RM%k(*u2_u>ZRKJ`gs z2MKg>u}YUV=0|t>*{`c!kH&*vD!V|Js5K})jArrAUC{&W-Hd&N6gwC%g(XJ+nFFLw zIpqMLb#FJ>C^AVkE{YYKZ=V4EJF6y>B*>D{+b>*zG*y?Y8ilWn?c#L9>#y2PRIZZH z`U`?@r9V!GZ_@^?Ej%MaHIA1+x5myG`A)UlANj8ufCccG-!G{&Nt#@(0{-oz4~gw? zMf}<)6O~_6FG2$K)$-&P8L0BMz6@wKg`*v#A0t2;M2Dq?ne>)P5sBqD8S1rC7K%%s zFzBPl0T?>I^)DP7E7x!;XW2;<$z{S zfE4}r{}l*ADixEYFKNexCE#c-~nlO*FKUrbv@b zg8Lwo2?=8VT=|xfJqVyfSfL}ETBb7hmZhmxlxW)n@(|~8aOCefR^7UizSUOW)87T%?UIz+sY~IC-W5k z^~Xr*VGOe&0tpT-N)2DqW^Q3b0-3yS8FU5}5%S(acw&LU1Xr$!q!O){BUw>ZE4hGn zK}CycBYovn_CO0ya{B`U?B5V@)}l(QU}4-TXaIRwD6(oZ-zNed# zhs)XwtbbRSbs=&((3e>+Q9ObicK_8n{h}OL(wBOIz$YOHOuOCs6BJpkma5XQb<~1- zBb`F|myhl{n@wX=yjZevH=YDpHl;plE6~-l`_(9=B++Uv_brYoSglx|833&=zW+D~ zr>XF#inebZ-P(Ls4H)jsbm4T5Z4U=qviQDyOmqbpO)ZQqwc#Ag#3CS-&p*K)A(|Ep z!)b&L6>3Xt=S38<{r3=J<2bH4DSfp~fO_r=FjxDFUB73`2w@_wYnPz!rlo2B zb*0mHdvrv;|KQ6XwufBDr0y0^!y>tdAvIiwm1r`lwjSVhqvl~?(cyIoUF-uE_T40X z$$!hLgw7$3@2Fjk;}1U{Ri5zl{(2D*^C9cw!&8ofCGzk>6{kn|%#dBgzJKw+w>S0q zFPJ?k6I#ujt!A1DZ~ls(9k#)Oj#*yyY_=*64glK3!+B1Py~6obT^>iF`*x+c&}0P2 zqcvWZT{Va@{8PunwVDBH!mv81EF=9*2G_Ct0ng&W+P@#G-bRFk(EqaG`2GN{?Imf| zYALLUHCy-U*Ae;Nn6H%{Jx%(uqkzgvxYgAVXxyNc8ec_A6Fvdz>E2CcBT~wwhVgj$ zLnv03sp9s!nW3gyB!!TJ{zdX4uF0jg?`u#GKF`9yX@k@olwm*3K`#$g&@h>j!q3aKD;*49HtkYM*SSX3W0 zOQ`+MPt7!CD>si^jNHNW9cz*^L%nEumf$>XMIhR7{g*&hYLD#NfQ?^=5oi!c-J&LY%7sDh4z-baoCoZdpGO% zh$7&vD={sP8XMhpIi#K^9jKV+0Mu6)jrg*xyIGG0#5E=g2;+$cPlYky|JGXs4sQb4KIIC;otU-+ z6~MnCqgqZtMb{k&n1SE&+xJm=U2u1(!*wN?X4h|H<$>ICo_LL@I`a&pp4WZv(vlL7 z=@G5vLQ%D@ILE@! z^oT;+0%rb}b`nEt&ZKw{PdiJ5(-DF%kW^$in2n9BE`~xTj5-_)2Mv*cHAo0mAS_27 zfJcRavt-AQ;2+}1a=oSVZKO99Q{MC2f;6R8v#fw4v0W%dH+|)9NNUumLbDLAcm#5Z zhiXX$nxPa2QHti4X~hky6H|zZMjASdk4}h5>zw>824L=}5)-REIRScn?OlGBC4wI= zU}0}I1A!)XKsBTIMDa)fQ*v&JzcsS{iIRxh<693Q*7nwy>@1c~8 zr#(WZ^m|Il8pK`bTK!k)c$8r6OBD+R21cwST$1Fji1M6xnpkobOpywmri>6jEYnn# zvoIk%*5I|Nqit6xK2i07O)j-2#GPELxDzg9ZmC8kSKQ-(7)HDaqh=nHq{*Ujv_vI$ zC$$#lQan%%gs9gW0Ez?QHv?g#ns=oM&|er?rD8!JCU`Bz<~PP9v$1wTi^{*h^D7QsHB=_Z_n zk^7Vjo65kNv=c&Q4%lo#SaOanW7u?X5T522mQs72nt~yxII(JFBy<69>km+h##rvV zNwF?Iamf#W7+KF^Y?PB#sab;-&(-7>py5X)k;rNRcJtdJb%GDb`j;$B1?h5%bYSgX z<9OJNQ~_m^+}MpL4kGc>3^;!_2c}@E0x(SgHBD<4Wwl3PPffj^J9!TthR=moCIuLy z0QadBlo-N6s}$R&@OVwjTQz>+g7C1V_!X7}FpKyqxnEfgDkCQ$`>tw`fa0sMrxeow z$0eLsg4a7hB|w=%{w$)#uF1iUq!a#7jn?c@pJ_leLuN~ZTAN`pO<@@207N|5>j7R# z91E|`@)}@E;hQg8z?OaMf;PrIi7J4ZS<1RMz#H#TxNB0l0TfsRVZb7j*Tm-(bj^|2 zC$`!ZXG|4*JuPlwP0tozREpqMgmSh|fxbw)+hNy3OM{J)7JJ)VXbk8t+WK;;fvicb z$4L7%5>D!Q;a*9;eF|4!f^>D*l8fm42DGePz_)c3q}lVpm^M~>z+@$i?!$}kXuz*Q z4BtCM<{zqa0yR?>Z7Lo%ifB9$$>B@Y+ufj6J*TWVrBr!eu`7h1#RtMgTkWK3Z4d4A zF63XbTXKDR_poT9>2yq~{h~;}ApHayg>$uO{E~BGyMa&bOD6 zEzyStO?j3SfcI*c@{~5=FO(}(xpmfHJuDl0Gcddz{xD4UD|3Rv??STAuIcxY$bxuRh)UdgKl z-@&4G%ib&Q7{W^IZM%fi1{#3yPSIY72N=2cx5C0H$$*zFyZ17tMq4NtOz@(wj~6T6 zg#&s3@_KnBwG8tA981EEIeLPEHQ0qpCjszAi(q`B!ni&)=m<>0f<8~_fiXU2r<7+H z>4ZeuU&#ArUY#pKFF71&q(yg!4kRVuPB(B_<1{~oE3 zxfi?FG3s%MCqmmHuD2T3(ydo(6`Q40Jv~TSL`Ba7jHjIczl4QeS!7Z z6z2wiM9;@-PMHSk#;$3bY|M}R!gH?=EwBJuhsXeYbw$%T4wV*@3a`ne)%-9MSbC16abJQ= zbWjef4D?0lAqh^8mjEVKZh>hT;6SRmbp#n2-lhq7I0YLWdlP_$dg3Y0gVn?X{mh9V z0&=i-{6l}=5PxW#0-oYX3I--BOFeZCb?X$Qe&7IV~4mKJ~tfDhI`1Q`@Zz$P}gS64a%-2R5 zHUe}n=^buYouUm?gsoU5kOPB3hHf&4NQl^3Jji#%o4Vj0dp*`i=BP5$xUoy+R9q() z*7()RCBg30lNL)o7R(Pw^pQE%^y$WpS=Cj!TgogpRQbw7(;v(H`qqKuMLm71to8Y8 z2Lb>he7&&>OJ-09RRa7j7CV-nfkuFkdyB;%psjCc9@Wpij_6xg1PHjH4)9PyefbBXv_cfLs>JULN}iweL)iSs-tTg)XH%!C zOUudMGA4f7{SC;L2Xt=~!Zw$7vVK0CUHmEagM6=r-^=T@wFzICijZF=xPgolrZR&x zOzg1&{-ZpeatR15(;^0q-wA+Mq`QTYYUxbK1%2}Sw|FNFPcgx>IyF))2z4mtFo7Hv3 zwABf;vBvXZ67*#H0M|-s41bfWR9hVzJxDW!7DK`CJP&q|u3ITxYXGp9q6prgOO&PSsApJx;JbmB!f?Z?iiBzT|tUQe_1m9t*cM6y7(rX zdSKdKdYy=(Yh*}O;(*@%9c1>7oEV)=_r{AS z{fQD=Qxdy$(i#toGJak!1md^z)XAKW6`$|v=J;O%GK>h)w3b3vYpw*XMG?O+@6-X$M|0!KgMTUVS-P{&p?h%PjYFu5am0kmW!uFu_`uO0L{NqOA z9W?y&&zr+6c>a&DVdO(jLqX?#EW>KceYK0nKrJkPyzo*!^tn0a2@dR{ttUcP_+6n;@9c~NucqAuW~A@kx{ z>&5fQix>MBt?$xGXq_ZHRfLp3gYS}$LdxGQc6W{h19NL~#^bCr}Njn7sNd$yB>1SlNF%^OTM?82u$C!GfOFoCyARCH%bkZ|mT5;R8i39Mf+e zdd@&-EKeQj@p#E9(&0(O>Rqu08@~z_-&?^2BN9{(4yzFkg>r~E)!KqJkNh2 z45aI=(f~L86x#o7o@Ne7Yk?>fqNHz*zfYtS${1(;v~FCc$do5T&d`wU77(>AV0ZlV zc_cdhhXY`T@4u*t0)^Xz2TkuHBB=qdPXoLrpOb@?__v|?3|=pp$warsOl`U!{Q6jD zKey-D_vmC#JfiYTD+H`pFmoxi4a6J{65lAXw!}NUf!w^Wpc(T#ylZjh(W@Cr%)r7o zs(I0+non8Of%HRHPy=Hag-YqNkCYJjjR+^lC{(F3NezL#e z9O!F2Lj7UuDMdY^@jpNV^$P(Y8EWMzu=6hEjh!18aBZMEpjx}fU(~3hEUDB8KsMf1 zKloKu;2s{xDX^)H!#ux_D(0;AsV2V^ZM@#^P&EL6xM%39wpoJ(MJbHP;1UNrHv^v6 z%6yY*`BRpxmqO3^?9&ME>*K>)QbUaGl@ge9y$VY*pN}PymCJezv39OC`GM^2)l30N zRp`2C&cI;~f9065WK4Z_ohms(`mLyr9Pf;m8L82+!4%2f>w$WI7qe%%{7d{!)(9O3&{K|Hsv;)#9%2R=6 zB^7pGjmv(%ZIKHR@Cz<+F8I3v&{3{pG>N?;voKBZ-;OO1uF35b{RikOmhoSYxe<>KZTBP$TP;AC@|A?eCm~O%yJDz@tzRe{6g&{JY z**J++yST&iN#kE%eotU9oZJC~mK>X!;h_ z%P!f{o`GUB3-@$#dd%hkITK0n%aaQ-9qwndKeFs&!Szk_F>57e-$UE2KCnNQ^NW>; zKJ2UGN0xZS$`#zmbm3^qX?C8ym-#{3KJ0JkyxWK&7F8*o$nCG%1}F_ZjPWdg9L}a$ z_3-RLB5;4R?G3l`Kj3n4RK1HQ&ppVXYeiJc_3CkR<(1d-AFbyJ5ivVUi50$!whhk{ zAZIw9hn36y=S}@C4IF!?XWT^(_nf^dEa`LrC$F9V{hQ8^gCI2u!6mfR2Wh45Ww%p2c^!t{)MmC-PdG@Lr+z&5GA3N0a1NtBj8FQwXOVA ze)I;q?{*0=i|m0Fc7CJwA^Y=P9M6xO}DKIJjzrq5Np z0rAF~0gFam71y&f4Bm{2EO0oV{9BHbO9@D)3+K_8jmgL!Hhpq&R<3xHjh)HWEY*P% zdu}kQnz>_2wUD)}UO-o*aZF6Sg1Cw<3u)M}uRWSBbvhyF8y=q1Ki>7GR7JSbv904+ zKo~N0YU!->EZ6MxC;`N`qRc2^K9=pJM8zjD*!}RgOk(#FRW~s)UftK&nzz0ZD-xh> zbEHZ2+XYBTni){nJ}g?fwSMxl>&;%dQ2geY9+b)mt@uNdX9H5HHIHWYM|@y==BsPJ z$*+=?U{T8-TCOP}zNT%Z;c zCqTVgX1LI-Sn9heA};DfIpRx+oX*s|!ejveTU|Ze3Wg5{B{tcAY2x@(#TlW10|J{; zh=^QR3}-goK{r1TQU$-On#oQf1+ctx%mbE^rR!+y``dX@QT&Mg#Jd&`D_Y#lFT8?T6nsr<}dd)|EehC&6& zPjFpO`Z{#|Z@{v(#5??gRgWX)L0NPqlA{+n>ezs`ODJOQnC+Xs{k@I1bWv7Qe4bJU z0wNz}cNg8`td@u4Y2IGpy86Fl$gs=hY%9Y#&a#Hd5DaDUR@e?`pt$OHEyRBXbkg`f zsJej*`-gwv_6DLP_PG(S_GVs#x_qWt_659-dIR_q6t#vD!Acpy70(RRIid9nh!z{;j$Pj63=_hooZlwTh>VH>Sr7==%LIE2o+% zl=EoZl!oPNsbcf1SG&IZA+iev3OaSrG~C_<_WJ39t}KfQU(evua}YnXE(yX)^7}-* zs*}SI_@(HQ{uhT&ZmuNgT**)5xr8vj#R`K!f#j-{Mu-?_EzrF?Hn8*@5}05tJlK{g@@coL=nrS=LTF2W9C48hnQLH0sY z2wRm1ytczQbZeUPlzFscAp)p8R3bN=a4%on+ZP~_1<#MHAf+Ji_W#$RkBaV87sUD5 zfWGtrUS+^PrFf<`IAXqERq-B|AQ6B_GQ2PNtXMfJ(>?tY2#v!v>a)Cj7!`pq0%pJ- zanKrZi#LL34m}dUBSHZMjKHBNyu(8%n;X5yqnOC^2@fF=bEphAuqHdGheEKw@3V$O zJBk5O5>YdVjVJ`zu!aP{2RUGdW~d5M$hv1M2?cP3*J}rk5WB2UJmNDCw5zfJfszPd zn>9g=v5>p6NVB}_LNEM6Hj}-<2rR#|imlQIV`u|1Si><;uz27F{wj|WL57uJJSLQ& z@DdrGGl-Q^hdqHejtH#4L5h1Dz=7Z^0|31Oc!uNXsUPz+5dS&7g*d8o=#2(3fNb-_ z1xYo&q6tTgBu2;zwYvvIY=ADv1zsw|hDed(8wN_W#JKX8<@>djXpN(C2Qyg1H8haX zVgg`UBcBKy?jtwbpcn|jfOA*|HC#h62m+idMDjB|{S%o4usTVSrX23;VB!ejk zIPgkCU2H?g=qY(n!(1c-Er5wb!+?cAMrG8+GXMesoWg0O!98%9Ui?K?Xpw*L0Y{h~ z;rR$;L@|O`DQ%FLR)jQw6iA<#D>zih5Ii^+tcu7wxTG)$@FIoYD98cOuVvVU2{A`> zTth8*D}z`%6Zu3$48=XT40y-{cQ61@fComfHzFLj@Bc7>tXhT*5sy2Z!#bR@v@^K< zA;o8`K)!Q`P|!kW2!*->L#dofs=N;|BniGMLy*9L6uc(_@g}Zl5CzMMEIW`0gTlrW z!9CbI29T8NK*YeBjOoKLRT-{R;49f00L&V~f7rnRfJ^bf%kQ|1dZ?OggDXf}h}fG( z)iB2{B9upnH%zR{tHiar;>)9Y#HEB10&s+J(3ZP8g~?ky+h|3{90vkhh|tb1!K*gA_p?kOT1bM z+L%F=ED7T@fXv(wH=u`gXokLuhi=d^p9o9?P!a=}vA_bau)D_@E6ag6OYbSll2}Yq z%%D*N*qlHs}KOh$cJ070Za;q-^hnwFasnk z83MorefR|`zyk0?%R7wHTWA727(4^eK&~SQ6u<^}Xag%?27b_n0Sd$v6)yeSHV)VY z0QyTrMA5*(0De%1Ip_h*V58}3s zY}hsjV5DBa&c5S{2(W{F_=PEW0A?u6Bcz5$V@3T*i0PBmDWKHHn?9~o2P&9Tf1xUM zfCC2%)2`?Snr3 zQxHK?C0!|lbg*G9R)!E(WL4IHGgB)42E}UDMjh7%h=X&eh2GeoeBci6u(vMl)^81> zdPGkc6-DFt$YzCuXWfTdSb%4^hd$U>2IVAMpS60%`VW8M;!`KG(jZDB&Ep3OA zDN|sOQZyaBgSZSSwShHg2S~yy@c*kCW*u36t%cn~t_&Rjo3hwZJu6##Q+<$x0Dvcn z9ST7OE3+a7GN@U+y2CEjhh+%UF|AQ4WK!=L*FJqPia3HmxF}o*1iC8-JD{%sFjBXD zTevj}0}uc_aK9_W(L}^k0XTtmx(Iim115Tgi=c;GfGh)8fWB28L#wsGnz6vW2z=-U z$=kYr;42`pgW}l-XIO{Pcv@?iTP!#{e&7ZZLBz`STt4%Ti-?C>;IA&_2aZsU#Y_jj zlHFK2ym^p^M;I;h@uSTh4Z5}4h7|xzDxP>)hQAy|15kiVcnW%`g?Fo1A%e?~$j_{( zUB$fJi_qOw6M#j!h$)H)1OMpEz;lLnz)$TxpI;CN@0bUufGGihOBMBAOaR|&5Z~K^ zO9NPeOn3_J9RSrG-O`oa;9UqeC`_0j--|F`^!=*AU4{S%xV`OL;{n{)#0@w2+ zY8V2z+zNKEJn-`azT#j1-QDsCtTCKjwe(a22;h8xsR6(wewc@S7>Adr-Ya^FdjMSP z)t^M1J|z%bKf>YX;42WI)AK3Z7h~KN&5FkbKgqpBM2w=RP=}Y`tCb1|Sj%7$rk)`< zv?r!9;hJG0KHm71w>e{~-?-kK#7nTUVyMW4?s_XkWKqO*-+1_kp_)D8@Z-Z5@w*QS=M}B0fMC7<^2wO9NA{c|ff=fk4b43BCel1Mp;~GF<^^ z=0yJGF$fI43JhzeVo6qIbOvQ@=46#<09;Q&}ERfJ@*9&0vRWQs8BnBHlj)?bqL>YY}AT!5+Dr3Mn1 zv#CbpWe(_&)@6clYri&Yk?HH1_Gd(H2-0BbN!Dw<_G-SS=5TK6q2A?07E4Z^+pHF9 zz7}lB{_D*yY@!w*qJ~SXE^NqlYrtx2P2ObHR_uJPDuP(-|lV8j^EYZ>&0f}(zb1?R&4_S0dMex30MJFFx+nzZbVitwGvXY-fr&Z z55RVa)ch{Z*g#T=hDt_FW>Sj?`#cs@(e$67vJk|)^ogbD@TY14|GgNa}>|-c&>5`&vN57@k<}^5U+GS4{||A@EkX8 z9G7oU-*7sA^fDjwGY|72&+=FAZ#hqOU3TmhXKq3Na@wYHKsRz)C-pv0c2QsTKWBC~ zPxMz8Y-#s$KeuyWKg7I-^-_20N$+-VUyexzaPU@f@>cOFr}8#8_gvTZthVqKFLFy) z@OZCt*8Xr{4|ZIibq;s)Imh#JPxDOwZ%_~JCnxl0w{JyGbaEebhKG0gj_>`}@*^km z3a@r#5BEPmcy5RAdJpztckx~4@>WOpZ!dY1*O4s|L%KX-Pm$BU*%cV!QFc2{);_xYFa^8B8AOfPy}S9qka z`jxNkTet9IcY8#)`mo1xyJz{K|933ccx0b?!%zFJk9^6Gi<)P6ZI%ne|9K#nTL(XD zpcnGJfO&xjeR|LJgpcy6sQKa^caRtJpLcbv-+apV^obDlEhl}MzI*`3eb(3X9RK?u z&+N7beWwO;Q!jRiKWo!Rb#8xjN|yS`kACS73vmbc<`0QAum04}8WFzkaChet<9_aNxg!1`i@k zsBqyy0}BZqCKDO?u_&@T)|M zWY3~at9ET5r*7Q_S}S)h-G5%|;-xt@FUPxl{{jvyc(B4yZx1^QHI*>q#*QCDjx2dH z<;sxT9u5}lZCuNqKZ6b}dNk?Mrq3QhOiap`!%|PfjxBpO?b^0)*Z;-rR-7LZSPpl_ zEqplf;>M37r``0eDLr9+zr~e&I`!(-uVc@i^Ki5z$KI?#yjVN=^5)N@Pk;NcCm(>8 z_;57s?RfR}@8ka~)@=U%xR*P1Oemv-VTCWz`In%A3sSWoe+)u6nr^$j0UcZsVwjr8QhE^kGEAEG*k8~LpV`BAv zB$iP+dc@;RNRrf3Moc0ErA0T!6qa94TB&1JNJ^O$l?;99QJUaQK zn_mqy6^w8ZS)`FfjS1#mO7`U-OKq-sW?6f61Zb35_6by(D*v9zrJxNxDrTOHMk>^# zN#406p=c7M=0$9J`lhHuL1e&E%RyBlnv~*M>8G7$>DQ*OD(dR08|8T^q)fs(>y%FN z=b@v%R%z=@hE}BOOUmM!DVfGL+o7hQ5<9B3lJZF{rLs!v=eAmETP&c9Qp@JI;(~ha zw|hC8P_IE5`EE~T-q~)sy}AqUy|wbY=e*qRd+4}0?Hez!1*7Y)z5mv`s6h;mC2zmp z8XPOD39}pSx)QhP@Wc0B8*-}!ciV8u<#tsu#2x!dvdifP?6JTvBiy638!H(s&85b= zGNL$}`?1M8r-?GrhT07B%qkmhz>k@*>Cf?EzWu;U8`Nm{yezW7>gcs-wM<1 z_u_;n-Z|U^<8F84Xai3(>viw#F4PIDF7)AYtK0k7w%;D{^200Id+s#`oVoWdy}iBZ zcNfpLx>UB#ytuonuRhynryu?Kfe(tj;IXsZJ^S`&|9R^1UoUQi^H%kqM!crUj(-HC zo&U8=(rV#J9Ft zuz|x;;PkQw!TZ00qhSgQ@c(CplHTDjw~T zyK`dUHhDk+F7aq%+#n=32gFsf(rX}04-rvt5GxA3U+hO}rI~S#ohcD*MrxTK8|nB0C9H;R zQ6qzMq@5o6Fo`ZSR5=|eQ9byzl2C7^X_?ieESeK=X|OAn!)RF~l`pC42_%!Wluupy zDO_DtlQ41WpZ+8>oeH(6YV}eu*E$@5x)rGlj8CJo&PLlD{I-yVm7my-7IH2>)FqOHngH0Eon<@T0Nch zv{yNmQ&LqY)xtKmJx#4_k1{8x%&4}y-7QH0%3GoYDMpIR5E<(C6iZ={^!3s%$K2A}RKeYHCFg`^AfRT=n)cD3+sque#3>hPQ zN5$nOssQB64}26N#RjkdGymqnk8~JHzVtmnE3VOtf1tn|`>;le7t-JVW<&w~-G?qB zFq8^7Lmc%*h!eiyWPb1?9=#AiP8@NKUzqtI2LJ{?@-YohL_o+1Q9vf<@n(LgBMgF8 z37XZ65&*e{8;xiUf-d4|&D4SjH{RF^+Bg6(9R} zFc@%jk@caAMGyIzM*g%w27rM#Lm5y~-b0PIJOBdJffif{w3q#>5e;Mm!aDZJ01#k~ z7$3v}z?cU;Xt9QF%p)G8pmR<7J8gqNAllj}2(Axe2MBWm7P)9gJIcX;c9*2u*FLpL zMih-5v?9E25%dC>QU4E5+*=9ea0d_!f`V+cgW(k!K)S6_5L3T6#xrI$NI1R~SOWvh zff)eC1weo!=7&23B7jS1`pE`p?|WyS-XhO850LmqJH$bY9Y6vWk01adU;zmE z9Aggrb@o39um)&M;};}GhydJx>3JZz%l|M!FrXogJ}kxoj_?LIP|@&$a2*=a0Q)~) zAYcN!{lx86#TSCX4NbJY746u^F;GG70c3d}%}6l_u)&XJykHdrZaXYaoOoJvAs5_` z1rP?{cF0Sf@{39P+NW}PE98P0kl?dCPTb`el)@bR5XUS~yaGf(WAa1zhXRUj2uC=& zAQpHAKf>{kWB)UPAMyx8)1N*KT1=rJbFcf|l@ANL+a2!(aXQqcZV<7P-Rv*WJKz1j z^{#iG@w5OvH7sA{y90sT2SE%s9^r%$2|5A%NJgIj!3ce@q96ib1U?)gZi6Hnfwi67 zrJgvP7>gwWBwT|uC|yFlUhIunK|J8(Ri3K3*v8q|7eL@aa9#tV9r(?`0B{@!tb!@f z852~QG#CPryuc{rfqXEaK@b3VQQ!ca03tksnQ_1<2!iL00vyx__HjceOa;h^9131T zG&EoU(pep-7wsW}2_gg%e%)fs;55|W0KVWf#Na=40WBm!l|=&=$RG_8p+R)u0U$yy z!~-tKg8vtq-WP^p5|Uv-I6*K>gDiZZ0H$1v{6H}9LooaRvoVBxu>&^5gCqpN?&(7} zJedHPn*l(gv&ok{$iaibSv_1LKWM|AVH%vxmmdtkmkq!I@EIt|!Ndq(RgQm4uiUp%Aw%7yMBAner7e+qIr4%3?i;Vlf^goF(Hw^w&T_7%%*TKcZrN)uJqpgZwdLI3nXXmgAEt zoc}DQ!`U4Kq&Y)05P>5ghICX!1YAPa8HBZQ**`EDIzXGf4FDw4*FOYfi#Y-`v;#Yc zLm?zUJgfsdbVEDLqVm;8oKUf<*Oyxe1n*OoaHvpwj)|V;f15>&~80?-qq!<*`8v_UcA!OZR z)S{m;!#4hd5f(%&qUAT_11|^w6yP6AGDFs>05)g?UmAqMC1yM*q+HTv7}TU&1|@wB zz#rtpI*@}S!b234;x6pNHFN`ES|vYV5pkp|UfeJjBHF#n@paK?XS~!fN zv%On9+`<>Q8B87o1`H!9T*7ZQ9JKXb8SH}a*+75E!yP!nFtP%C?n5-NL4G2cFj^x& z5M!LJ=Yyrg2au;e7{eF{0G&-m9H^db%EIiC+|~e8-#u1n ziV*^XvL~XQXFfFOlUb*FPU(%MXM@f|If$9?`R6d+LWE8ziwxnimvtyL{2mk}qt@+TJa|IW z5rUjTK|JU}01&|aokFc$;Hm)wS<;>>AepwMLl6i+;h_VcW`jDUUoECXj-5cL`awaQ zWRk_eGr+?^v?HSqfTQxl0Jwo#9%ef#&lVULLFb`6{rECb8PzI=X?a zncS^H+o`7NGo(WVnA*KPCBAZM0X%~|km0xP0lpolf5;*~Fz0;5!T)dCz6|Xzxm73x7@oyVCffc(1gz{11m(aAz<7kM{uRW? z+8YDJB9fU~ijktZ-J8qu8O+LT-U=@D0G(!mWbNshAQjR1z+PNF3g!!n?1)gFZJBEUH`!=5#3 z;WER_wgCQZt1pP#wl+gTm{}2!0ViZ@$Q5SDk=!{**v0KbEj+6`6q!8iLOS&2pt4(* zt)v(J+%DV$i4}mm8frnL@BRLP?%LX(!9(c^z_|_s_NLeXIAN)+qXo*C2kSzXt=sQ) zuqsBZi6mzrR;(s|13vJ9Ip9Mc{O!kLsdfI>u#IfV-Yv=&#ISu?x=k$88N_6^13Hkw z6+~M(;9Q}mSl~skK|}z^iXfj^1Jl-*(?Tr~|1P%iD*v7Jz<(YYDUflgeQnsk zjMcFYDAY>`n#xoBhZt5Q&pJMGU#tJ-V zPEsC1pszVtgE1e3poYO@jxj#S0W&lMi^;7)EI=-(UU3qe|N2;}?JeduLj+K39_&Im zKtVm^fh*80*>>@hn(Vou^Eg}F3={A$2r`__!~fn512)qnP5SOr>TZOkZzn@^4WGyn z_(C8KVns+P z-C~)RNm$hhpB(%xLI9qY32i~R!8+*hAVc*eOZ9)9@lNxeIQVpWCG|l_@&Jf+F-MzI z$5@3nz_+yn)+Je;1lNcRS3(4?)~Q-NkMKDl!#`LZC^}iz&GN;qBQUG*si~wv3;>f2 z?2aDh_*NdqF)xj|ng)Be!pcLf=Gd>wssDWeLp*%K6wlt1e!v>!=c=ABwyC7TPMerD ztC+zj~T zlc~e%QZNuWbPM}(gfW>rm;o68I2lYqcqhb0Yg|VUgSEYPNQ?A`j7R-N#IV69ge3#Y zo+muyqD+e{pJ{_LCNam3>O4g2mxbw|DnKM~B<|-)*JM#k;Pv$u! zL*j}e1}La5#O<#RBVRAwe@$&X|6b1GE9Po-*^&Z~clDe~r>({9KSa4M=(w--_~2S+ zA{X=Bwsw=5r|7za67#C3v8zAc!~YKC0?Xy%%7(#TI~$zeLx~gLi37ni);I&G05m4J z&R#i>OZg~^nm9B<1QcF`)k%t}av-wu3c@ z8Mvm{zsBTUufzSeKsmD-AcewaoN} z%Uo!)L)I3thwfQBm@*%LoBuV8tZbs=D}roBO65AhWT74UtH}D*i zq?KYBQX@<&pV;xb6czbi>SpEu4|Oe?@^rqNS$Y zLlo>e%e#EioAp1;=Umo8AbYt0*umZ{JcJDcne(c~XBvc6!vIL9Y&zmL!gS5c`9Ekp zajN~vyCRZ-K(x_AG;C`-%xKg*?Er`_J-~v2#_~e2)>A}9yO|s&pr{_Wg4$y`0~o}* z27#ke0~N66X}9VY48f=CUkmI*I84C{gz6p)D>0D48pLP6gX(~$!5Vx+({F2ks_DS) z+4nYp9c&}3iJ7Dl0RJYarwv#!h6^rplXI*i+8p%2E=cO{!Mr{w;_el2eGot<zF$PISW$-GBnX_@xuDVAni;@u2a$2eIb>EasN- z>Bi66P=4&%@!J<}$Uj$32MECOjbB=KTq1z{sgIR_e*y$t;)ib!2Vh z>M1ZO8vl|Xb;2l101S1R;2#t=WZ+1U7RZIKanAe)%CzFa?w|}eWGG9EwByb?=W-;< zJMad`;2E-1geXwqMC6aKZn6vz(@Ztpl+#W<{S?$tMIDK*BF+e6!I4Z8g9{)8AWo}v z8X#kel87sUj3H7DNv>Ucef0xc=>mxWF&3ih$Y7_4^PgFlW!9u%!vd+cQge-S0B1wO z@023OV6YKnyL={4`#2SrWk1@I>;KUXlcU6{Lz&s_h?d+d8t?dyhmGS6xK{8Qf+Y zuKz9LklKovfn6zz`ABak0JtQ&l;!xJ2-qx_E;ykr3*n%(W4C6LSSBesb|d(8fRyEO zve;!+D)rP$E*%x@u*Dvm?6S>18z!3*p7+RDhdn7~l-?$lRJC71wkB?Q*8Apn?N0b< zljdG&*pqp^iC&wLJ^6358y9?VnH2u`B%akJHEvY{_tf%}CP!&=zY~6ZVzq(pJ93i< zAS9e1{!zjlb=6><&5viU!VQ<-M2mU_g%tUy3^&qAOHOI-~XTg z{{8g z5oJzniA$3lpcTK6Q7>}|DpTqMm3+j8A3uYTND7jWhWy$}fGNyaCK8)yQ_%oy$sxKN zp=G*kpqf0oDMGX~^Px zMhFHpLQ1kYlvEZ9tphEhKoO3>)+gcE}CR3IDx5xIy5E@VLwCjWd?8Ydk|QJwk= z*P)de^uUECK!R4avK3N^Xa!Zd01^j$G^8YPfFr!YjiCn2s7O^RM?DHsk&@J;Afqcc zRN+aA_;szau)-`{`VR#_LKbN4#8oqUq_^@^sUWc_alVRDm5%leF`elw-hiP*K;jzG zn1f;&>saD&01}UoQCKyB++FBZ69zEATP;fw=6(ShoDBk5k?PZbNR_I?buM(#stEvr zx2hu{>r)ST*y>Vbv5kE!MbJA3;^5Q?&iF-nBS2Zi7Pbqpu+b_6!Q8OQVnG}j#UlnK zRA{LdyWHR_MOJ`_>}K`8Io)Ye-78#*q%@5wEwFjsqbeI(TNC8_#Y#k zhBWw4PiD=QvLy8|d=aYz;RKAek5w&ePwLtYD^*Jhj_vc z$<)Jn3UI|fsG0>*sExi7Rt=S0%vkOKf?9r?HhaHvs$Trh*s;b4G< z=&|X2tP&)G-by#xArC)zT6x|OCPf$tYHx`859?S*m-lh#e^95?-yk#39`FoJ>zNwb z>GPkRhY&7%8O&lPGhi}7XfLPZpS2D(3b0X*nxWtu<^M3wI_M#pc&ri&U%rMp0R1iv zU_%=sxTSn*Oi;hdG(yi%ryl5i8-t@4GJ@A5iT+!`d zv?p%gCTh zqTNx@3cTrx6aDEaYPrlu7V?w~Ab=b8k&M~@!wtx6%q5!6vL7Y;A1y!*6iywqI0#1r z*-(e8eqn{sai;Xk?p=b96-;Z=j*lXgFX0eE^#p+RT<=XHFA4;} z4bFiTjH62aK?ShkMpWP#T5kYApxcH;04@!eEZ`aTAstfb8RT!99x7atZ2*{$7g%Nh z2%#P%fdUj@7bJp7UV8^7$k!Ks8DtUkN_n@1I!^EPz4P&Ng3$EIE+F8>0&C% z!QzgPB7hD9+QIjz1o)82G|rD@jKc{BAo@BE3gQ8k4#Xjj=@J=%AHtzF+AkSi3L={C zAM~#Po$I!s+zFaVFL%0%WiDj3V}; z=}~M@P{>Fwn6TqiggoCW)D=7B_F94%0({^$u5(GE{02B{e?Z8M2uqUNz4JCl%rQUHXKDCc4x8Q?XMsW0Iq3HKl{ zO_DAMb2!fdD;I8F#F0G5F+*r_GSd|+?D#au);Oym6Bv2@109q4J%g7>R zZ<3}7OZlN4v{VfJ2uwKgDGG6!m_<1K#2UoYDw{JK@KiWJvn((~MrkxH+TkfIbQr=k zQTKpM2SXx;vmFvHBFmFjUm{7QOZE()4-G&)DZ(LiHAsbnSF^+g(a|Bq&mGKw43?Ev zLZS>AqmP7eGt~tO5=2HoLj2U>NTd}A2=x01asDQPoseb?_@m?gLAtor0HTo}Op0)O3Qb`cC4~0-3>{VIGz+udCL?1#k1QZYA zK|ySg0Ue@Rje!gj_FFCHffwL}jFJ>AhjkCm(pm?= z0OmCrG*tkqbdrvh8C=Z(FiI@Dv|35QBsAni)|HIrwO;SlV)nIP4{c~c!YsuSSS^E{ zq!m6XH97)w8FoQiku_nLwN{E_Pc@SkEfSup6E&CQPh2xzjh1G^5L&EZ5=RcY;YS@Cr^{c%=nRdZ9K zVR5xAf&WzkiFQe%=^uWzkJi;9c-1!rpaQy$IvqmL>S3h_U<&3&7Y!i#tib@7&JT#= z0UGHZk-@qgAsk|NrQXdbe6WlV*FZnwRu3Q-tcfEfLI9pLWl2H0#BW;N^&vwtUMF!u z8X#YlV;q7&x}Z}y=puJ1l3>SB01$)}j^qazR=Vz~TDt)r3aXFb1PhxE1Lk4-jtMoDPaWpK0SEyf8i8fF4IbLyk^ey(4B+)Xxd(P3 z9vUGt>%kBPq96tU1IlC$dcYNijrpj73clbQAQD`~!g&*73@{=dZovkwpa~1=NkJeR z2X>!A;Pz%DSjA!4Bl1Z|mZU=0Ww2n;lY7nlj<;SShVA$Gkd}M;V|6+71XBr-9+1Z6KkkSU7wdsN;GMhPtT5ISK;#s8nyy6A^MPVGlXk06e5n{BEGV!WsSnm&~F%u7fTf08zdJ z2%IEOmV!?p#5*QrMUK!cJCaeH;wZ*~NQ^|f=7Ku9A|9N>0CH9d8Fo<`C4}#II94DN z1_MND<4H|BE&c(xPeZrY0hbIpS0_^dl;9h>q9BG~U8O6$$)YhbK_4Pi45xuF;GwVv z-~_00(y+yLx}dT~fs?%R)OE2GQ4*->=2pU&U%Teb<}4da3tv=HS~s*lm8*S>7z2<>pI% zYNit1*(IOXU0CS-;lVxPU!~e5iCU^=V>SKC=$CU@9$kUP&UyYly}i3n-p-$X=UttC zy`J00-qz_|)=&ObSZ3PGzT4BD=i{F05uM`Yo?%lS=HXttl;9ka!7NYrRj&I<>ptbr z-tOgo*S~%)V1Dcw_T5q5(>tBF#qdC|JmK~ z@Flcgo+{v@2&!0ep3LQ#x z=*F2QEppVDGAYF(XMhys=#-+%s#p(BM5)vyQ~#D#_=)BYX1^(afeUYDLlJJqe?tccxyATz|TTfd9nwuQSHb76{i zt-Lx@xoKm-Ei)?p9GG$EyLn4q1{=9^;i9;6>)y?~x9{J;g9|@P6R=9tRRtXHn;JFo z&z%`xmOgkf^0HnNr*#Y+`)bywDMk=*cEDbg(LJYMk2Nf0_ncXJCv5gOc!KPuYZV|s z_WZ+{38vO}mX!sbYScw0m|@ecWLkO%`8QQ_;XSq*fWu{|;f5S`=;4PT;)jt<#${I` zSoLvcorxtH_Z4>zqL!kIYEekzfi1q+TK`uqLPnU4>NWS*deP-qp=}qsrX7#St#}=S z;kiiQe-AeJ9$65&mYI`GHfSM}A%-dDm}Hh|=9$dR*khH6A-U$8I|c~noNXS(Wt%wC zh@OIUt|?QHNI7>WW{2g-Ri9KY7^j+e`l#PnQ2MzgqTXex;+dFcs_CYjcG}&Ea}LVd zpp;sfWT~OrW+|RoTKDCbsBR~qZp@J?>x8Q^T57JhahWH4Gv<2TV27USC8Ds->glq~ zHtX!OzkNsSlenfv+f^ctsA!BplBnXgxOTN7e%ulJCw9dlxFt_bjyhnu5C#YDxtA*D zt$g*m$JdKR3Mrzre`1Mkz}LpKr2nfxHYPAk`4-6{h77X`?ZgyUZ1Ke-7MEvVWC$9M7j5qE${rKgWXRi6? zoOkYdOn^)7i{ylVZu;q{r>^?ytc!VsjXhI?vVFW+JblT z!ZC1QF-_pObZ`It_~)o_N?J0CSRBUp_(6^TL17=f7yu#kp^LlxA&qVzr2q(U z34Da{l(o1-JUkH+Z16Dwob)6p2k=Q`@CTRHc!~3z5sY6fK?EOggy2ed$!0q9nb5=? z_>PwVeVjrd#cRd^fN>85{zHJ8N zDD)q$xX1tgkFR0OkIs$v|?#n#`M+R04S>w z>uOQN8q>CF%Ahp0s5KPeih8`kJOZSvUCl#)Dey-L=7`2F_Ikc{D%Ai8Xa`CDpbt_A zL&>(!pJoC~OT>q2k1;%wl#)YF%1rt0u9Ucy?te15}653Y^WBwMO#tTXoz@ zTMoe$q2K&y3-+N7I2eH$X>0*M)G-GK5CR{KSO75O@rL4sqn3uX=28_ZM{~%d4;_I zE#>Gr2}5z0NSrTY^$5jIx>LVUM5nYC>sC8z50>bYRnW#KQjdbvdx|x!1IgG|Gj>;< z8ucR|2RX-0cCo|o_TMVwrbG=0Dnhh!mo1E8JS8!YdHBPC0Qki`2f>RLKpPD$ra;)Th=Nj88NB#3S|^OzM836yV5_ZQ)n-+eO82<_oE?0#`$7CJ@32|qDq)Yc z-leWh$xz*Bcsn}ar$S7$C+^+~QJdif2Te(eP=`%ufzL@ZRf<(y?r@nKUiLY%vN2w( z+rT->FNW2-3$1TpFDl})QnH^}{$umr=vDTHv#Qn$?4iSm;Ved$u!~J7DpUOFBI9he zm2`8agT^k*YxR_%%ypM@-Q+z-xzyF2r>0wd;lWy+X)3LN>?9$j$=!lVH}K=-N&Odvvp0)B z|Js%Z^nXocTjH(QidD;803y7-9TQ0n-@gWn?ouYZ2{l|3)-d)_{* z;GXq!am$z2dp}bza2l5XH_)%la|&k>B8Oi^a>v@& zgGh3xA<}gXYU(qHSjUwE0 zwsoI;6m3EqQ=gvPf6@_t|51tA_e`qGQ))I~AX8Wb>r|N7MkM!n6t9Z;i*zw|Lvgth zV+H>g5-L$lw!wQZBAf?u$ z3#jSeyyG8QkB#$>O`Df=uZYzgh<&}yuge>oC>2-WFF7%5zh%*idIhww%M--rd& z;t+REsUZ5WFF5i)rqr|nsh`&j1dITmaTHAun$aHeXbe;XuiU@^>_U@skCSZsQ(K`( z{F;-Es2>l*L1Q??-wf&mBE1ey4RTrup%c;qDq{jbuDc{%GF5JvIwjE&K$1cXr!xo; z2QY9bOKW-@Hm6(z)QHgr#p0>re^NyZz>0C0BP8i?#hZ4{v>q&Is}8{pe0{%I!=(o; z+)GXGzcYwTEw{0N@QTYLyE_!cJD3 zb%tr9&L1Q+zdHlZr4UF=4I3xvD(V8UJl+?qO%--3lAJDMe@6_pB;aUX#1!@LJRD-|0xkj|ZNd<>BGn;v(D6e=ClW%W1Ry-clg)XO zh3HeUJ|cYrQ0hfN)KW;NI7kPj^Qh`bSf)!#Qea5c0?IB3FE@EK2lHKV^4`PLH(UUH z6r!|=o+*XA{Q@B>Q=O!lNg6FO1$7FAMPC>OazSfNQT&T~A6$lqgAKx?YwNOJC8U`ie7SS2yY zTA5E(`SUJ(1)xGa{XWODP;HmI7Yzeps#f(8elkV^f#hEo*a?!^>DdcPDy^0Imz5ih zO01FZGGzcWf%Ku$@9{&>8YBg92v~(7siLWwx>tLDfn@MiUMEwvs5tW7J@RrHqtNUR zA_ni9?jdDLiFJ`=(hCK`&&zl(5i)ip;9EX5=e+?3eLkRKsi;aPP6hH=1%I!Uub1e4 zz0x)l#q|+dXt#>Mp?aqmmij}9h5JJl6R_s;{bgXO$O6#>Kcb2QPPC|^bg6Q0xM32l zsy0pKgC^A@s+Dg2py^V^;Myn?Ng`}ip?g(?d@repB)dkEDPk(18&IbvvOz}5hqMO% z*?`4anQdyI*wJJdOQ`b zipUpx5f}J3)o7#m&sKom%uy6YTw6tWN^+WQmPEbbw*I>xH~`URAy{9o9S<_^h^kdMl}+qOMlUt!d4h2nkZ+`YPv#uHHMA^Fr*j_x7(!f;15 z5@?%&m;zYlZ&Ja^I>Ja1pfIB2lrLNQ2ycDhcpY+XoRm!8Xz#EcdW{$oK>u;p868IK z;md+J0Zdr(1souy4Ke6RuglXh?b<;wrD-|90CD5G3XEN_zqqGHDxqkD>39P$KK;C^ z6O`JqJ51`*tL6?-7qQMg&PB9y0Dfj57C(P_!}Z0%+rYX`hn^p&ozRByR``YL{M>6q zu+89KdT2}B2FU2183r85b{^?>hO25U*HIj!siwFAj-M&ka)~z<$$u;sD2#NpBVoka zh$TF6)Qq~-$wTYu{wQw^J@fypOCOfkwQu42l8E~P-M&1_LoDYOWaKsH_cT+|lJ!lr zUf@0i89;8S(Q_oJVbMpXK=MwGk4K)QPY=m&nQjKO!4UrA0SCs3hWwd+>J^g0o};zr z;uE5b;u#KpJ#P9<+VWXSG2vVv&L}h7JkkQTZd2#)3W?Xc0*uh^Jff8zw!)EJbLft^ zeVeSLXrCUbKLpIn7fA)g>)a8SheToB&oi9^X48+sp2m*Qa1dl3k@xfDdOnzD}@_Pv)wUD;-Ync!F?;tp%0SAf*}F z>f5#)fTboYQXfG`Ljy@rra|aQM*GR-j7M#Ck7|tIxx{7x+<>7z%W#@5St6W}sQSRL zR*`C-?G4!KQ zwOlYF9q(!`fQC25tEE<2+g?C(r%fr5pWiS8AKEWp8$cXViqG)FlTlh2$ZAN?h@UhW zTa>d@sj;Ge}Vy852s&>Toq4h7*273T=na@)`Ad^tHH^ z`baDQh_AJE0MZ6b=HrL;QaWr(Hwdqc%sK<;$hf}L4PwWcoI?J88F#DlU52LBK##_DG$h=*us9zad^--F6F@MllN#^z$btu(Q|f^Y~$J5C?GMncyy z!y0S_=12vn6oT=asYz3?!0m$+i%agD-@WYNs^3K@|7#g#xBdbCOE@rgk1e0(E}}rZhMkS4Ko*?ntbieYwTe^Zs=x17GUIH7iTBw_F_(Pqwa;Qlt@( zpF0$gk>lS&e(8SGUYk$2C4pd$P3x`pI=5E3-!OtxxNTn*$c#`M)-t$mx2k8>UXaUc zj{Mx+n>aO3bqm7(NKp`ks7LO$dttMM+Z&7ejY@u-f%6oDX4L4bSN zH|u}Ye{ShIvA7aW5u%};=PWxYGRUv}ifc!baT>(ij<;cINqgW(5 zrSOr<&;Ci^LWg=H{yQXZ!$XTYzSXippWC-lq^5rwJzGC)G8ml|$R$NY_XTq zI-b<(s#&ZnYc6FWNdS?)`03)y_iGLctuLDm;~>9QGQdPMWoHn9>Tt?$2-g)DM0UM4 zhqO_FZ2cv#$~t`77w^8%*F&VWDWLHE-0bRXjJ7L-pUCpnxdQ=*1>+W4#TcIJjYbNP zZj}y{FMiE{Q7^2~|2D~ey+Z=n$Q1t3o6i!Xg!BEg^A%_@)jA;!5SV*ouOh9IYf`hI z4<7nRgPMBwsP1}iq3=H@9D5@37&&$Pw*>&{$n-bkx?d|PtsqpM)`L$!3Zn^B!>%g* zWQ_OCN#xQcf36x<68L^I9{QU(j5=aV-Nt$775xp&)ijEdjkW$egQ6!K6C|=lOTuoZ zQ*>Bafu^uy`PWokPp6pjJ8%B;XF<8dO|*8KoqG=To?$nW+~roveYc}CPS;|;D?AAj za14E;3n=kwXP93FN5l`^NnrGQu#u3!KLkq3fG-6KX6Fzd8SZ>}1LeTRJ^m6G^SYem zJv_Tr_w%R}@*CrbROL9Ao+z+RtU_canwks#-)8+j`%kC_1~(P|-B@biHN%hu#RAmkjAXmzfn9>y%Dq90Ez()(CT*jiOgM`F&dQAct$QcPF+ zXX$NF(eGX{J^3?B!v^@J5w0w#8|TTxg6JOLEYYRJX}#Pe?g0?p0fyfLLE9WTBWY{~ zIp0?_+$-6x?k>s?$%w-NxY&qK?sC8ncWNG=6+4tk3A#jw=?2L3mCr%bc$2>`1<=l; zY;@e%%8TyRMERaf*aNEi8yu>-+Pg7qPF(t&RWyXv9R8H%exJK3T*I%bs&htME2kaq zIO(@_f|v#C1MQg5U^l*NbwEf@wg81s_xbZqe+}oIm_&W;%DPG2V|r%qC)ed+|FJUi z#%91ZW7k6)zMZn0l6K?rET1;b_r4Vl6m9KVKXuL8eJem&n>i@0o*BA?8Q28w_5Jts z?i5!dAU5R!7Uk@ctr_Ju{#{@q6j}kueIY0%Y^BC@DT#mnXK-^R8=j>MNLEV1KU6#6 zv>(Z+SgPa^>^384Z zovy%)R(!K&w$|DvKvxrwN}GPZ$}si$O8O(gu;KdF1A`u9fL~nvP%>p+kh7*W%<1^6 z%;kKZezYP67wu8M)vsbe%0eEedI8 zd{uP(V5X@!#v3$qCt+k_@SggGb$M>UpYU#B-wH=!OPUno&(*f9#~kot-{y+fc)ieT zfGO#+qe@G08$;IEwOw$bjH${Q;Ih{40u^uRIW3Nk>`1wj@`sTI}Jil5Fl=u z&?C2U8WWOWOCo}ac890L1z#(ZB{`|T{U45+#08+zehY?&C991@%GJU*nHEwhI8thr zpXZtrWq@N4C>!=R(@a27Me5^-j#q!uGFN$~smcpKA9$$RTnDVdVttF%MVO+9KW~DW zj?XpCXwb39SDq}9>#4f_%~ZbCDeMOvG{E)o*_h7I(bs`C-^RhzyTDys@`l034eZbJdJGSMPnD4sdxX+WE4MY=V ztnR-Od|GU)3BKQ9&SK@1Q-Aw-mhY7UT-G0d+IzrX{lnm?1`ISl-bMV{$CUwc2)nJx z*oRQeaDYa#<@Of)hs0-3JcwrP^IU-z4a2xQTAVFiKiCiUUByoCVu{4-IJfcy>?;pA8O>=I^DI}G_YL$_?nrjFV7ir54*7PhUvFbot2#cRv~HJyV(2j zqou|95e0@YhyD48-`x~UXQq*gzGWFV>KnPf--n+0k7~m2aI@j zcilMPD|9p`yeNop4#yg zq3NkZ6`{!jiUZJpR?W3YInkPG3KylZCgU6I$GQbN$xU5YmKBhe4B)VMA380P^<#@C zM$XBUXfpGxoO0$O$3_YKTB16YCs#cEX z5;dI9TqS-5+#~P$TjVDnO)T}?<0Q0sP~Zh& z_9Rvf2lB=n-Hd*|-|LqR%KQJ0Ge;eC_VhbKD08bL_DDP?c#}slU})<4C;Efj@$QNV zBCvZU8y2#C1Q8vV9b>tG7t3uI`5iyGgune=4Yo|}-WKZFuNw$C@aYU%VgEgv^}FNn z)pFE-C!Fw4h?jp<^j^$U<48V8sqp-W+}~twg!{}x>Rxw-9QdtXwZwRhbw1^N^$>r& zp&mN&Q{kVI*VCPyn9%DVilLWttN+dhLjRq1hW#-2aCkPGjPPEIFcqDX)lg!8b`i~qd37KAYDkBE=uk$D)BCA)h?R$boy7E%~{1v zkGmK$x)@8lm{ifvIWwE!5a!J;wv#S)i1LbTJd0g?CuujAYB#r0H%~7$%ZSobIF!|{ zo4>UCo>6zKm@2%uh_Ivg=WfnS!1Cd(S+RM7A|_oZ=Gq z2J=_|Ss9u+n_|)4gTh5o+)h!hu~1>BxL55^XH+B*{x#K`Fc?}f7(X%?>IqOkgt~7- zzIuW}GKjpjiD6lfYP{oxouYiRG=nvXV>2{fHEASh)3=m9df=o{%R&^qhV9x5?=}Lc zqNAj;qSZZzVpyW&q%@q7iJ$U@oRHd?Zp0NQ;a^I@xTcXee8Y{}TEl3Fj_I&^Fgb;3 zlsZT9v^H@`uV#M6KvlwUO`cToCe#=n4n{{>0*GH*g3Sjhqk|**rXefbj~E!~ZB^AA z&!aRlRKuG_e?f5NPBGWg99Sl()l!Ua3o%rq25~F52sSQFI)Js6NO|zxWFi zR)XObL6tmnI~Dl?_D9v=+{l2g1KQmd+o2Jgot5-EGASpvV5WO~={%aehHNN&+?|6R zhmBW6(f+lIal}pLV+`ou(QcUPBWpN(^6J1AW5t-V?11=J=i^A8KA?=g{e|-GQM4xp zOET3L$yY3^W4Onm)`T0d#6t%&Mm1DP9eYPL-x*yE^Vy+tEsk`pHeoL3{Ivd18#99{ zQ3gFEV-jZ+H*o^(S6FF1)=`Q~$CZ$TTx6uwA?9;}b@uRC+{7fbk+?Br1PA1-#=@-N z*l#v8hLEulN`q$SNiEzMgFn>Ye=0OKtS^8Z$uZNJ3L&Y>l=nB*U<90&w&my>h;+de zO&OjCi|L*k0RhG~qJU>YF*mqAU@TZunROSNR9*q|k%;Ayhcn!eUorraCWxRM07?Dk zued&~u%c`nXi#cCaC_F{bZ$m~%-{6C9w77v8*U>%+iab&cnx!!A$5*|0iD7^&^b?L z$OH43lpZFR>&sJsqi+OBd5xyQ@MugdROk>3H3jomPnSGgIGP&E&ocg;wgZX!9#HD=B`%+Oi#YsN!E7csAB*d-!LbRv!^~%mnN2+ri>(_dH(A4L; z_#l*~h3jInaau?=vG!nm&Beqo@_M(@y~$6`ivpFHfVT$UiA zZEINRiA5~_$s2!ykQYAY>RoJS5re6v$t%XU$}g((b;di!%?iL}Q3nBEG+ar)s5L>R_%x`)ZAz;D!;9o@vh z(b(wa??0{LSxZ-V9M;D_r}AyH?Xe;SfD~&QDWaZPuvA$$@%&`x7<&w~;-Zm{jtq=M z^y(+1fvJ33kspn-6U?JKZBpAhVq+@ODumL7lwy`CvG;V5VplM=SQr72g8VAYO0CAF z8Mn#DviJ^Da+!!{ND}p2e6x)YVf|ouj=`btQ$nL_U(;u6E>o{8C(&+Nc*aj**W~pF zmcwkNX9@81jx@muTM^1MRPn$8&;~)bo?M)Sc8%jyUH^!s#+WGBer#U_e~~rYy6fv8 zvY40W$~s~OXB1_8-k3Gakr8@(o(-B$0q;5B7_H8!(TkKKtz5-Q^lBRaee%a*wxce! zDZ9dQ58_zCMH|B%i}Bm6i($-@{MqT14CL{`vMQ^aNL#Q!Ys)yj=)nds8~;_}9vJRq zE{1hmiIUy5%nF!{!P}EiT1BC-)2*z*{A*snR*@g0eMIk`SlO3PKq=E-Z6xM1|BHFq zpAw2=9leY(uf|73o9P_8*?S%_98YBz#Qo3R*1$U*w51;K+1LZN zq0?P7i7VLijdvD^4G_(_75&^U*+^X>>`~?Gk@td)xu;&H76Z(x{p<;oK><3H@c~)&*?bL8bz&aK5-hP_ zrO^T(4ADX};U7eO**SO%1gYfko)N+d_A_96w+yrck52~w8b;uIk+C8ZE*tL0no6Iy}gCXJ&xHI=N`Cnto z0UPi0M$VtGqwZ%+A27Tg!iamfse|(mB683F7J8sWZy(|)Ma`(n8!GGXn_H7PKZC7$ zHk7abXnP^7n6-NXZIk)n#Wo-(_w)Ghs`ZVAhx}Y?!?~9deW%owm+gTU#=+ZO*qg!3 z8~yY|A@f9Y%u6-YTYKO{>(jAD=x_e(1BJ!kPp4Xk@?9E5u?Z@N%3i+`y$HV^cqQa@ zc^Qgfjff>>slCmDQo!_`54c)~BP6t9PUGFB1DFBk>ORJ2KE7J74>W0?G&WW$wEh=L zDyQdb32urKuy*qz)q8ppc=dT?>7?MH0m*E;m0xn%OL zXvza^+eQ+?Jn%3qFxOj!-dFDDa}|1j-QV8+ivHoNC;IH?vY$>|LeJy$ykC7d*B3e0 z_;jvBIN>((->W-s(LalXiHq#GKly#^^!wOh?8JV>AFbkJ``9nTL+nkVf2zk;MtJ}` z!oH#EMA^f;=s!?f9F}_UyE6P^RN?N6yBDH#{^gRVN@veyZQJGa#IiyOsSk!RWqN05 zk8?T1B^Gg&ne6}0&pR&JKhe?S5xZZV-$@)HFq&|HC0xX-pEvyW=ehPz;SFjg$nR54 zgoOs`t)6`Rbk+R(s`qzb*~+;-H1N~evEhf304a_@4!an=^On`)PrUv~F_*37Cxyee z&t)Dx*JX|;5p%(K!xQz;n=gdx!O%dBGqKK2e;rAGrLprx#jCuto4%Oy!Q`9c z(IEDvtLHy&*63f>OYRD1MJdb&C`blHi(I#hEL z5Hw%z4sXb)>Tj!QfyJ(Z4H#uPX$cXVtPtwZkYD1zOg@XKv?Z`Kdag8u zw)S_7n7yzbb63hWu96a*ntuOZqx=4)#NK>En7R1i)XDN>hTiV%<>~SIvh{Pr(PvDj zn~i#|{~froNN)}XKg%Rv@e`k4p^`O=H2=9=2=4<;e18+Q`%0UePw~BKw%e& ztYCeg`@BnSAzh0=$uRkhTjQdpR-wN3eGR^H)_*iL4NLB_LM;tyk7zy)nFR3_kK0(( zW`{?c>{n(`4GKRS_c^5ss>*Q`?7X?W62Sq_NHcLn%q;vJLC`j#3Sv^%{Vqx^Inh2^ z3&F*1de>^+y1vU@!vWypC(*Awxxx2`0K?h$hvzKBy{Rsw!?NUr)pL6Z0|7{TUjIfVJ8)OwtNun}LFEQKGR zPfyj-`fH1q(p%1i8>yu(2>1-2Zdf3_^Dej62W;cS+4_Y-Jp_UuV4&*x=|RoaM~|Jd z5=mAHMfcNG7b?gdDfs|N|9l<0Gid4B+N~$E*)~cI+S(IKP=|4(1^;Q#Ufn(;$l=K3 zZiirl^+{0O2*tBQcS@kodH1)whD&x3!6sGF>Ej*La0-|MNbc-r1MeaEuJhn$f|J`C z8TVk{V(%J^5(D%s-q561JBqGi89>*zz%K1nuu|9Ie2{Y$+4JJWk2D{mgs0;G|8QRz z|7-+4-evD$@u|)=`W?s?cB`iiehG?9Hjz0Yz@cTFiR5>SSg-I8;bCcjzx7;9(%c&4 z1xh{sy~;00{8tpbDZ>h+)|on`p59i=NWsz+_G7%dJlk_x2x}4T+;*Sh+xgo37IM#F zKJ>nJaSX}`DS`%jJP~djSFd&4^~0`rDcC5^k1)8p z_6CF3xjH?n3t^=278Yx|Vw{ChcV<`*7D?REb~R@v;;^B=t|+_PuQB7aHw_ROETny* zL{32hAUPh75#H+7c^Rp~0rmtd&WhgRp6mDgmNABo6EIak1pA+H%-tgO$LV)AsXUiB zz~=fYR&cwz5Y(Wx^BN&4n~E#Db$MSraIw8>)S5#+s$V=M0H9%M$Z{!$wfvy;-{iUdk9*hq8BeuzhKdYp;5 zR2QQoH$b!eD4ydw0$k-Ed25uC8YFo#Ep4kV11ulwNKM{_n1Wxxs*#sZxR@M;2BT7k zCqe8j9Kkcaice4^zoH{Pl#M?T*5@Y`z@4)9XY{H5!p4PYsDu)nP?FeJv}b?M5*~26 zM{eLToWCWBeXA=IDT|4DvGf(pFaN}ZCagKvoxJ-Da8r8w%bJ=CMEmGv@5R0MTQ)Zw z4A<~}#AJ1PJVD`@qtwhY^jl|T2jSd6$m8EtIIBEIDvb+^7i7@MIZo> z!-y>#0Usm#*0Y=O2~#Ce{g20p$sW~4kBP*sfp?rYqazG%K&a1`W|IT_8Urrt1wyqDOr4G9!hzeZ4MzEY4-wKe- zKubzhHih19nh~mV=cmk`pqhFRsC4{hf{C9D0(1)_Qozt+u+$I1%;&U@5~(x!6Drj? z1TsiIBY-%t(6tNvF+2CpY0CZBuHyu79LX7MvahH)j#+WW?Zm_Bn9TKTT3asZ9o1aPmL`zAuX zvPW_H4%_MaX4YWMiFHjbaMFI}^2Puyv+}*T8nXz}g|$n$ z4VsxA=A}|~T}nqrtlX`dInP~3tZF=-4M2uF`_P`pEz$(6QVm%+(-xyKJX|9^&CTel zRAq?%J9QE?ld+v%1NTFw;>Vi3#7)bkF)hwyVSWgw8jUC;K+LxY z0OxWgfui54@LbwL?7|iQWeM={fW+4oTY!!aC!6ijf#y%Ozheovv?UWVRV zthA}hDlv|SEZzM;$wF|B3xks$oKkFGRzz*^6KEjIw2=XHk<7gdLJGDLm&oTJVBjd1 z>xwFBZ3QqLCOFO-mRKHga93;>bo-frHkFULqp{sjHaACOCq&M&BZ#A18Qmp)sLXx3 zsqF4laI%uS49z#_eW;wQWSVQ4mMb6#f$f1l&y1_*L@3+iPsh!UufaYFb}}q?Mf*0D zvF0_Xcj&L%sPPJWT3k(tA}BD<^;QVPUKXXbV{!nIP?B4D{VWo#qnd> z96oDSV#;RUebbjaR9Z7rF*SK;M^K(FGO>6=Qi(=cGS~NrEUlq8i=Dzp(PX$)XEr&w zu~PNiv)Sz1U}3jMM)%bau5GMhxb@222=3c`niduA${v6zPP>gVvzFJwD9eikKxb*F zpwYuJl7pO4VcYALuN!BGvh#V%EBdBfIkEiy`*LM@-Uk`rb2Hvwe7s0bXI0(FkicH9 zdynhiRH?H#F_a3Z&^oD7OwmaEYE-LI*8Uap_MU~2o|qk94257SOPENzS>BOq>;hvP z6FcR*)Skdxxg{la=tkb-UkNLgt_?(RNUFGJ^4-Xa6y?a|2ay&If@-O`i;3@)2e}ke zz>28lbUK?1ie16JqEF7wRfGwC2R4XF*=&I_TGA{6a|h!4W!6~rv205OPJYv*K=5xb zPjAjPT6IzmRik8tldJ~cx9e7b?2j|K6jQv%w9(0XjtP`{FyMU-KyXp?qgm8*>EMiF6I@nH5m@col}ViggL zDL_Wc0~!>U1e253y-5E1O8i-D{=zEE7-2@YF!EqzNVxE#nd=GMHPGf)011x%E10b} z;z1wp-$AYqISfr8rM7Tk8vnxEo%Lnz+C!4<({Wdi1Erk;;jQ<=zgBuf=tL}Ri2UzH z;Haw4E@L;ftGYpDYJ|x2INfJg00UV;;{kKGguqhsex~Bt2$rQB*`{ewmNKLXkgyBt zpG;Fauc-L8lR=?!-OzolAP^_~^RjO2fx-^Gl~A$Fl+Fu&sGNzNkD#JBcsg*WNTz7O z8c?&-ouw8@?QT=DuOg;VIAf(U{mlfbY+@0(8COuz;{tK$i{Q}5p|r`dIZVMn__Ou%ADB)9X<}C-fqjaj zRRwcX^Wq~02yuF-6A-#K!-amtJL?;VeyRE1Gc-)S7bgFtgB{sF80QACC-KJgS&1;_?IJ$or~AEtE}vLe%~ zB9!HE#jr|hp8M%_L3}@IZ1fMa3kJ}uL^1&umogAxvD%Mnj2|k!78R4jcmY2!ZENNZ zUnYB{;ca~|4fQ=W-)qbZs6|K8Cc{@GX1Ia>@sLrxCz0z>7>|%FMHbTvsm!~(*uQZ& zT7rz;F>*1GQvf$v<;OE&U3pf-yhLXxAU&*4o9gvs0Ab=cGs**QG&IjCGriaQ^5(3& znAeVp2rGA*;#Am9zRv^8-Z5bv9;paO860Ip79%Z}MiLpov8(1gjE(;>S*-t$RYa*& zvkDJ5sCdiZlGal9KW?&oeIqjx21bGu#Fe?9IZ)$)55wJw>>^}vU9hGS;kKvujjso?$M=4Y_pWS_60zDfqAA!?w+cJwp0q&28n8uGcm}5Mc@jrA~e4i zDR9>G_244~8tOy|*YUeM?*j0@|5p_a(QXl2TssVJ^$Lfl2#S{jUq^WP<(Si zw&R!cl=^{ER)z4YqSP{3Wdz^RM~~3U6b8!5!>EtXfOaB|#@gx@WVqknld3l=lzB=> zxk%odo?X=m%CJ`BrZ!^?k^10<0!Ku%vK|rrGbs8b_^f2_>PR;w34vuxp51o#zXzRENR1a?@Z{}jHIf$ zca#l>{G8ae51;5n8 z^vwtWJwZ|UjSw21FOOq?chU=N(06QRYA=Als=iu52_N=xAlK{?`aQqskKFx+#^%RQ zZWew~Hu;wf$A&X@k9q(Z^DehylD8|q^vx^ia|eBMN`77Z<#!e1!RptARfYa>vh5AI zQKReMB8tb7oyUrbC+eLidWxt2b)G&|{Oj2H*F*8luk$Qa@thFTd7i9zk=c1ssCZf4 zdHF%{>Qm=cr{eWM=k=K4&0Ocrs^Y(&o&SClZV)o)Yig+!j8X*nHuhcukLigZrkBZ( zn&5!A&GI=+x1`#tC$lR>(@3Y;X{PfUlo_?A*=uErSodd0r#tB6O4{2XKdIvj1LYpF zIh_i01K_tw_S<|J6$Yh`9`-ZdrVyyaGdy>gX?yMZ--oAN(X_H}+{_vsCmL8%(5saN zit2QLHwUW#AUoD*nJ=@}sy$GV;;&7Rm%jTS;>GZ2tT@%zgrRHTBMUM zVONxjsqs7e#~SQ^6sm1EMduGNC>P0+pxp#G)5}|~eYo9~{(Y#(RV72*dyvS$3Iw-} zKT5l44*ot#225xGO5Vrez?5<+I3h;3@h%u=0;-w_>pYO_ey$0F11-a}u#okyT=Zle zaa)Cof6QX?-2aCC6yyC;{4>X6-I@pV@iqWG*Z1WsFq7BzT7P=U_G8@Z5aGOmzR)6k zOg`hrkzJxImL^RjEGOeAH`w1AU*XfV6q6YSt-xgqb#UGrW^6tA^ENbN5X$zxF6*bJ z*KYB~?OOZhKpzkZc+npcn2PF#P#TYqKV*D1O_)&UOw@qIX2 zn0Av)1wis6py#bLY@CDHdvMRYE;K9u_`A`&j*4iB8USVVK8O#h0lY-e%vwN1yY99+xn<OkRC7S)wqEV61|`Rx z;p0SB&VwDT?usOnS1`MNk{ew-cp@t0nEhaI@E;k+TlyuI1hP+NVO9r}Z$>}`spSv8 zkYQE<>DkjU8E^kpDrEmv;AIl#+bm!GSF*bn>#N@*d@TlL9Kqs5Rq-y3Rl`=Zb)+vb zS{%eA#Ba&&%O&wWy2Ic${(DG`l9cc!Dngv!I!w)9j3hc6?N7mbE$bd!Cq;sy^ zE&F6`O3JG5jIC><=R4F%l7B#b3ly%wqUAUkJ~u=I|5*dGn>~b~;q1_@i3B(wk74OK zqskw8nHG#eeE#nGSVAenL>~a&a*FOJJM3Z6^cMF8XVvt69v`Z$zP8 zgSG!baH@0Bm`JM@zSvb}v-hJYqVwC%=Wdn?!m?P+;p+y4TM9;o40|tNlj^0~(14H| zUXwgz!V3prRZ^pmzsJB&U>nc4i+uSPL2}cBs0b`0$Iv86n^eEf+Abrn(-- zaa5uCp%IR3NI9d?yhAHJsFCxqup3;87N}$hwMi=`Pn-sE-;RoI+OQ8Ie+qAL8aRyz zfyeLz@+Or%z-kWam+1pso_wlcG615QIr=LZ2S6~m#N&Lsx2x{(!As8`NdpvGD~QMt zjGp$`EgGV)^iPHmV>208tPW1@H=Om>@R7gSEB28slhQU1tf((q3Y@Wz5m+G535g3 zFt&`cUwbKjDyzDl(D$sGR&;1j|+et89_%uX9i}i zhTEDthr{cli27#%B2&s%|D0wQKy$VEmjK2xPxj%1DnoLP9;A&6cBAYs=DpQU$ezvY z4hi0G=^2(0GrZVdYpfJ1^xL0YR_=uAMaRB9cOcKslXH+qtNUqH@R93EJJo~E8`j?r zKo)$B;7N_kK27*YAchc*0>w>|!n+hR&i+@ME`*|)T3A6)zv&@; zAgZXP{WP+y<-^aYy+A)ly)SBi`mn}FAv3=QhN4YBvgisXIa>Y)L}U+&aiT)?s-IrG zobT5(xlf3FnqbGqe$wH0di44?v#o|gb|2u>6MX}>`?zj8{FLI4wN>zU-Z|5utEj!? zHSLv0WsLPnOV3lnmbM7czeNxK9v2$E*c42^81Qx%%{mjX7g7mG+lg{boNBkfdcxSq zHhWym9^`O$@xRH2)20;ryq(ckW_|fSqLsOp_UGnp!=4Y_ik(?p)eITO0-rSHXz{ry zkX|JFylH*{WOcI+Djf@A-LBGG-qrBS>1b8pY|ISVVetwW`t;^F@5t4`vNLBqG5RE1 zKw#fYFR0jL%QyQ6nX9Fi`BM8!-?y-Qw?8)DZvmjQdZGROzCTP~-&h^g0oe{gss5?w z1!v7&gpR#Pk-X%22mcU*XSb^EBA&XlJZ?kK)zuxyIB{ z#Bv0g`Kh0{V@Fb?ZJ2RYvQ>|DCzLerr#$=De63oy==hdpy3D&9+n?7RD>%>g`*&=c>=C0;i0@M;KJ6&b-*a6#=}!J~wx|%2hWAN5 zVzoGS^!P_s_Vk+R`#+9=POzsDkj~=5&>L#)ovUP;OPN5st9y*{y!=1*-Yc%jw%zu9(gP%rP(u$zdI?29q=b$X4K@%#Lr01N zq9US%-XS0=DrzVK3Sy`tqK4j)rlNv|BA^0>qJV%|@qOQK&bimxYoG4ln(I5yX`XA` z*EPm}aHn!N6Hx6Wc>{S#?jlrO$j9H^E4KTAZx47n32ffag9vr9;4G7GxEZ8k#=C&w z`@ur%jwXTUf6e?@@8PV_!fwBZxL%Y&r7zRF*|ON)^eeKT4z zLMtno43UGOLW@H!$OGt3hY6#sK82ijGg<5(!qsxd{DW(rp|+JDf#Hvy=!L=1Iqid! z2GzSvS9W>i%o*~|QwBPLS1jI~ZqG2qiwDPEoL(NqD*COg^V%z3T2aal;~YAcxl_?K zLBktM)sbh`>8CMQS5&IP5;D;}0p=TO7#XydYI~SkcePsoirSF2`s*E9#Tl z8lS^7zEo>0u4pW4YyJq++^p8zS0Fn)`gEws^@0rELlp#0fWT}ryY}xH1u&PUO z-1U;pVJ`yz9=}vf)X=5c~MKcI1FO^$1s_K$|OjAmN zK%Q*YLzG_W4`5Whc}aorNIBr>npWA=CH20Bs_9ND*K~z>yVXo@o=)I()P zDaXdzFC%4#%1`t+)_r?R_v*dt_^f{M!+%9|N$+oJSf1{>s(Nyu>FMg+V3Ga3{m&bJ zd>g9?{50_V+4^^8YZ_bnz>B8M)%lU~ldoPp-&$u)_uf13^2N^9#_G3EuU@`nvjMmg zlL8g?XT~5E%9ybzy?JIF##(7IUht^@WCG6jKNww!N>j=5*ZrqbluF8`Qq}6`r_u-= zO4I4OZ~Uh-3}(xwGmU=EPiGO~$}?0;;Zrl&wh9ksavb!&%v>c|D}T;CeDu`kYc9SI zK3{h`|K;-ya^k-bUH&BxW^V=6f0?}<(xE(;AO7al+?|No2Xl9$etwy|M}e!%)8aX9 ziGpN>hx3K$dSB;@sMac9igS+!e7XM*qU-CIQd*+Q*Rta40bd`Kl|20Vu%iC!*K&FX zTjg6t?VEsaj~ZqleyeQy`Ssgl23&Q4-XV z`1x;(Pne0SOARyE1DBr8my|CxF4TWpddBKd{ob_pCh+_7joI?=FSdVv`~DI@sIeGO zkswwxQn7;7g3@1LwPI}4mj6a{;ruF=J0vbFEO+9Q)K;6iLHEl zrxpq*s&6lhWEx#TQ5hzSGZ4Pn!^apXLox3|yby!nmr<)M%jK-a1-B7ilL}h&E!7`m zkRuC)u|W(u6! zCmA3#Ykkp;f&gxbMiyd+T3xUtrobOi_Ef~gYPHG_{<` z^3}_=6~7Sy*cy38HPO;0y<;qgDMKpJw4zx~zooAWQ~Y?-lyPzrTF_4W)OJ^~!XvF0 z9?Z7rz+Cww{K_f9gH=>B34~}D34XS0T6*8@Vzbelu0xFW=rWIZ6L~Bpu1)5WlzhVA z@0ggg^3(Bf>@Mx6$n;A}WRVqrh-e?(PF?WosUydxb?hTB)?L||&S&EkcHgWIP7T&* zmQV;J4Dt$h1jn2q`{^jqG446BsRmBIyRN=t_eB$?&LZ~h+dAP-HQ;o92CgX**;sRY z-_Z3VDWCVGyvy_r;+3A<>V(7&r3vRlMBz>pISpsqp{_Hchsov|KRui_CtBcv{++9= z?!J8*hjKl0ZKTC8NoPl6fxP5S`?rLwP;YhduVXD3A{Bkdka+Pq=ALZ1>;brhe7qT^ z$Z&QL;yho3rSQsT^MLHwCCv7AXW@z13Bp{vFEeoxBn`a{7We(oExqHJ#^?!<2crUFU%Fdpv~noiht ze2YqQIW3b6<9l=)t~zQO%T{|Nr?11GX$#{?Y}D(&S+f@s_Obc%H&U}Yy$|Kj&*fY! zx2MSNj@{prCSancF0h&FpvSC4h|EI}{h(aD(AJM~sT;m%=+4`=sly;P%g*XJJ*XKZ zI2$SH&_JJTO&0K~^FAde^!yM4dDP))^=HncNm4H({XJ=31W*>||2=8`8&4XwCkrdR zgif{9KHaxLtNjLZ6{`bA>kF%|hzRwyK}(U~wIN%@M{C0lf59Ma)PIZ~b`JjWHw@D4 z!s1^r$e&~0H-dk@^Dlk$^L@~h#h)KSI@Q-XFv#HbiHJWi$f$Mp;`%2FLSus&FLHWg z@?SK_jp?%2px&9={#rLZpl!>&rZC{_fizrlP10d-L(40}MOMu#0}nTiBlAVa&jEy$ z_@T`?RbDE^q}1WFo$)0Ub<^kz;BjrK$?G*k5HfD!F*_0>$Ad9@ZDubBdrs&P=f)SN z2sAtB?0}MI`1v%dZGT)^0B=_vP&dP}V7lXF{LszWqLYJM_Xj`iBTeYQ=8T*%;0ln~ z$c7b0uofWCw2Dt~yh1G`L*{3n3#EAzhASM4%tD+PtP7^|b21}@KqP$Y-3RN#W`dOP z0`d#+Wls#smsJ#xieTs%7?=m>W>E$%d7#)ILbKk;bfLHAt;}eHnZ5+_WiSSS?{(%g z+-?Q;QIcE<^Lu$_Vc>VRoq#Ky&s)t&x`KG(JCv9lxzU{P47j_R|D+`>AH%)HOz=j9 zKZAv7q(N*aO-qpJ;WKSQD-m&G&v4J8iGX-wU%ZGJnKw{vMH8ZAE^Z)WgXbqf#;7*Z za15xsL4%m3J0laQXlwp(Mf%$_@59h9wzdPA(wr`f-SC@D(Q0^+2Nv#%rgKIh@}&57 zSCZ~56|eTtOM`o?-Iy|H_wn4)HRYMYUrif)C{Bk6H_=i>;*T zlvA3323cg)RzdfK-5}G4DZ1Uz>FuVKRa60L&OwdZP;_ zc0ctQeM(z;lpqy5YEDs4j{!xdcwz_e@5-aD0iNU&M@F?pn}YO^5h=3%H$`$~-Go)$ ze>97dKH$3!&B&+L8=p84)+^M-JPO2qQJG1!AD20r;FrD*}LKs z(Y38l4;|bWUa)mT#q5dXCIx=((FeB?qf=SE?n$zJJojlRnyv*mr(c)zqWNpiByr}9 zBIxfI&G(8_%g>))%4L(kgf73b!n>9Cxownoif9NY0u^!=S`ACvMf^R^WeV&irPTQH46`zL z&7V0_{`N7sHC58SzT#bt|Hzfy#F)Sj6+z9sNJHW`N+WyecN*)AdHmk%weTIA8&mNW z*bTU35Pj*x^DML*E~*ptvFXO^fRBAo|C%#_9lLkCoOle!B~|7htNr^$lTp9V?7jQB zF2=v0!~cHK{Ga@y`Tuv$P;E3eXL6lSZ~g~$cyo@Hr15LM_{M)who3C{`bO{6*jlK4 zdwOf}AL{VZ)^`R%bDPyBa%OwEOY!mcN}vAs?bSgW&7HMT=QBJ1K!-1U-&toSY5v}r zxpC(A=6vbn-@g`~eE+@0>eOU!uf09<@+pSgnq^X&{+1y&z_eB=A>0^6D(pt4^Mbwt zJdP~bZscL~83Rsxo6DdebleUqpmZHUfJlXRNt;%LGTL!0X?F@ty^xII9x%sn6WdfI z%C2och(lShQn8uKiEpSrNycjqd~Cgf8*~HCciUFhbPAgWZt;o3hG)oCE~g>RC&Zl? zqWu0kWFdW;q=)0sj2p*r&_2tQP0srWO2#OOF@Z-7)|&fUuYu(MILTqqYONN2YbPL@ zV-){M6@lh?Nw*pRgpKUXM>CJJPk@R|!nFXN8P7~|GsOU@ywC1*A`m!ly?1HS0{xKl zO{F0;$T5~2AF~E2NKV*dn%lb4=lXFhAefWfCHu=MwxDX-1pZXWV#z{`j`?gf*lc~w znhr3=l6FUN-2f>8{I$4PWa(yaGc+fUO_(LnPW6g;LUP=(0O+7L#W;thdVc1U>F7=V zfzcevPxxIfC_Ed`ueFda&f`JSm$Q8P61YNh6J=xxfXHlt&`2^|1jUFsl0H>{z2hH% zi9{y|hrp649lF(`tyVo=f@Xa^=8sa4F1Qx#?QxpyW)<(1GPxM&MyyUHHe-+AAhMZ~ zsQZgVB&FsGAF@S5PIVEFA<1Yusa+(t8SO~J2-vr^%gHM3KL2uyrg>x3^3&nr}rrDGmoh%3 zWhO}e%k!){XHFriXh~HhGc;a(-~p*Qr^K$c0s%L9ue@22f|vO?UhL*EU$96Sv80J& zl>ty0G5RwZK;{jN%QsrUwuEM+Qh84Lrq)!}*PRBV>2F_1h2^I~7fhjBe7o}Eq~2~= z8%1bQOj)n695~Egy{F^n-HOClZEaAo&8RC8auTSJWo0;hJSw6{d^^Mj=h~Ecj&70r zQWB6;*aLu2lseDNK#<2NK>d9!I)6-BwQs}6dLc_NQEm067sc)z@#|I$Z`E7(TbVzB>lE!yB5|+A1k?8|NRi^1sTYCId7gdQ2;VYEJ6)kvk~l* z$T}VcO8J_nX^Oi1DSEVe+~e-rnAl6Rq37=ojD?m^hH}%;k5Z#}(nX*Wjd|Mm-+37gKAP<3fJmf&6Qi zanquUwggZ~G73KE{CqKFSG}kkFHd}4!C9?Z#v?31Vzqt%v+-?4y2ijRH!q225@%pE z8Qyu`d=M)6qKtNP*J$po7jR6S$u2dZqf6|W%ttxX8Oa#e!nphq6po4D*MISK zmBxKi?CWh=4^7is;IAk#c?yzcyz)2w&;uIt9m4XiZQnKe`QyiqF-kVLDB56mv~m5} z$xFYiB0mC613ka1GZ!B506ge{B!hXT<%iX43(}SK>^&ng6zE#m-GmFz8qkG+`KaZy zm9}SQ@eZDG4dzlF8*xnRyKAk{R)A6IDR@E9HzHb6@6ZlcYOk;vpoMN7a4adKZS*(m8Gb`8O11w9zrAGH?6(`ovA{j9NKR9jN)vC#03 zb>TuGwq5cuw@85T>_yC=Z!jG`%P@6)YXfHj)Il#r5m@ArC?Dtj$Chm&6wn+M^{C*= zbfTLX=D?0zbY!P#k8r@k6P}MH(edFIwmXG>uM3sy+cbu|b&(Se>yhl|DAI{Z$!q>w zG*qo0G>Zl>26^>&A9_O$O_v97r1)I#q<%Jq;^Bvh>fl=lL0?a{bn`}tuG^gs2~)@W z!s#JDsEDUjZ(_*lZAx?`6F5GrVRrw-N$qrWpO~ zhX&f#dedu%J&8j>}JI0ZXov`CiBsGUe{fHa?!_E{|dYccp73oP4_lG8tKw*%7by= zdy{92f`Tx7t9E&(c%0iO$XAESjoHiu6MPz}LczFwN38+R5IB)46fp#N(qOQ7`;)~& zFg*Zg2v6|CK>$9V!Qz)KPtVxDI2>U`v4A@jN)zFSNMti-5vve* z;Mzr-Tg6U-=eG}&Z5j*QoG#TWn%VbQnYq1ZW@<75vjvW)p3>LR1;mXi^b#8TTL5fx{{y zRf8f;s}0L*UCZku%g@B}IR4~|2~lle@j2G>HU+58(0PsCc@KoBI-cisoJF^ZRdfZY za`3^ecB&5w%D)jgKYm!5BZj4vmGEQ!%bh8U^D2`D-TUj#B^W3`J2^(rfM^|3-?0e7+yHNo~P zQGk65ql*?o{QJ)I-|)`#-~CngywC<3o2E0s@`)7KT(~NYEG?+je5q4VeBjHk zg)MFN*0qvzmRrM=Rz6>j#IEJLoNLGPJHI&%0ksg8Kw58Y_+5inG>Z<8wP7$dd9@)d z`%|LQTLF{tWK10NslT*_2~J2cDo$GEW|Gl1UF>nhV4Rm-+O~HUSU0={%pdd#;N%l? zAwZGTm1GKt15Q2{&Pudg$l?9anQ?d?gyBb8W4iS%mCUi=Fcw}$&0cJ? z&{}DB5ReTzsmly86Dq-`!VIS5;DhaZe=TRJK?^{_^XaZpWc2ZHY2KYOXwXcYcx_$_ zhA%E}@4=NsFRtPn+xjo}8$vEiP6F~|5YMr3j*HE}O!WkZdjthty^;QT*RkYQecs`# z0&7f;fJ9$o6lFzzK?=AvXN8RBWYCR#6^fLs_&WG*6f_jO{fcPiqk3@rIWaU?RY@AM zIyY|}R>%wA1DIE5DV(nGafJ?o&+5j3Aj;FC>JJ7&0;+H7qwXR55%=wgl{#6Q8||j4 z%w&au;hZX?5(C(S>!wn=8DYnW8hy=tS8BZ^JZK8$Z<8IgUyo#vHp>oikV0TiR@#g? z?ZInzE#Z21n(C20*A@O@W0}!I1fkc)FFQx>{#q*~q93MoX<@d410*eXA@=YtD{Dne zOMfHmBcw+@Aj)5p`b6&BeG89sOlg+4+_53#r97ak{Jt5}jfKi(i$ATL zB2w8K4}vaq0bLd!-z4NLKknBxhF3Ei6U)goQhDr`r>v|Vm6O+Rp@`kJ5B}FLw=)%6 z#-A}bi*YJ}T-O`Y0TqL8oVm|UiJbowUn6|Ob-U-u<4^xM1iZ_lBO||_`>Gv6+ndH? zfA_DuO^y}DduU^YukY_Kci8*ke>(*J`#J>vyMMX=zxQc>mw5f&UjNSVsGw*7!j=IR zV^NR}G_Xh)F?JVGy3_>?rF)Nr4RwiAVHk_{sIgENiecP~N(cy)h>Q|6 z2fym#1hA|40w|UMmK-mQpv44r$#JuZj6GBjP*8=O^q@;8r%n%mHN;B$262W;h?s1n zr}UY8gc1G$GzhsO&RN+hw|DVb@B-YoB{+@dLp-s}Dp7Dlyip5{;@&qcMKoY=w*7qi z98(0AJne`>J7;clYCw;?=p)XzXJIWvR+yYYM*p^+2{ zkVoTq*(`YzTNySG(DNWJTh~TM5JE<#2ZKb|)l^qaw&&4TL+Tcf2pTqgWP_XXl$WrY5=44l^Wz(SYQ-6Hn}zhjedV z3nb6!!$EG^-9>+ESB+4oG#8O)p|BXaEhgZ=%28fVcpNp|%nc@h8G0e+2A#(ge_C^H zS^i0O^FyC%D#MX&kCd@G1^ibA<%DZ$yQF`f!ZucOPBRS}{@=5OvE>F*y~rYf&dLyC z)353t?KYkVJ{V!iJYHj7haNfrTIn+CmnO=r&2qeYe%2uUkl?dUVV|{h@B4s!2hDHp z)cRKRy;D8=K<7|Piy-Lm(-;bGEe+u~Z!Z38@Nz6{&u=r{e1iQ@xpjsJPqjylSEo+WqGfoUu*{ZWzPN^?lEXTK1vRGzE0uGwDeXj;nKutm zx@216xy2B!CX1y>;gd5_!J8sn!Ww6i%#mfWy`mM-a6=XMp8vPW`{$B%KIr0WROfwo zj?_~DvoDkuST7(-}354_ll%H*@*n1A3qpyJXLRYKQFIEx}Rfu6H z*|y1wEhpPL6!PEbYEv*=P9go%pXs`s>e5#z{G_X0BXT*7j4Hx)+IDE)T2A+OC=z?y z)uGq8oDq^?D55hNp3c9&@pE043GqX+Za_e{S=#Ukv=Up zTZWMQT?LS9Ii8d}grN#E{S3#R@-mqs@WPDmatCM7b1WxP@6lKAhm?87+D$5l&{s~Z z@^Ju4y6+1H4{`(q<_^NBFyvL#Qq8@zZG@m_WX5@BoDi4<){DBuNBeEIYk_mTJOAqy z<+q?ludKJDIs+9EE`U3}_|?>tBVqtE0MD@A17##fL`>a^A4DiaiQUHA)Av?L^2c5; z^I6YZh(PcR>HY7q`rAhUXam%QyCBAoWPw*_Chdj;376NVq_N2m?Yc%%Wn`V4SXZLq z05`{gIel;U5sE5H>uvMTshlguFhBO>F+cW>P7XW7>V(W5%tWFLXp7l?To6D-VECoH zCmBjmt!}&D5ZF6990J8t>__GJIPfftYfg8}wt$owXJETxx?*%GC}%>_ZcZ!d95)k4 zj%W+Mbo*^4;M{QLL7WLQE7?aR47n~jn-{yl0;*6rv2}tXJ8I~%fyJI8^h3_m^LPFWZp%8ERqX8MOV#N zy_f7TC+^l3E>03IlfIb-s9a|Rv7&`?j ztCuS0T@W-(clerk{&_khN!oRV;1M!?%C0l^uBg)kz>V(4kfILWt|P($I`R z#@$oLk%`~xE~0NL^#d1Z&shbNY0qj){2LKmiB`xeVp8{aFk=LWobVZYt%o`ZBBKTqQ)LCcc^0wyb)xs51%$@KGRNB_kDZPkk(ecBCsppB1%!3i{pM`y*Gb(opx6Z1(jWytR^B=5Sxdxx43R@EH*x9i7^0D+y@~dw=hV7oTm;kN&vPjxm8zc zC@;oO!=t#F|@ny0V zl(Stq&#{QC5^Z4l%NbD-(;`?3*c9dJbOK2O(ET<>5gsBKBRT02a)(LTG9R^)(_QWU zz-56x6j)m%$-*TAvJB29#uMO35TimCAC!}9u-VIL&Ttz}9y z;waWtzxec-7W^QB*k9`oBoVk#W+Ua6eJCb`EEo%v5ZKwA#EI8miId!0nMk0$)(Q_% zoZ?OoN3{t#I5JF3w#K5^oScbpg!LXIll!z$t60;yB+Z!Xz!ltj!wR)k-%VV&D%q!; zy%A@!Uj_rhGbH-)>Lg(*&smn2E4Agx>sDrIPK~ z5}xDeHTlQUi#;7oU8jvkjTdr7Fl|omt~e~4cE4wm^qyNgX50ov0Yd$gLO)N=gAOyE zRk|}YGRt}0U%bQP$%&y~vU#x4x0+fc7?8UjqMXW&5SskP%_1H0F!|LYCnj|9j9-}^hI_(uZJ%wkf1JC5yxjW{j1HPxxR*?N5&Jn!KE$37_TnMRpsS|z z)xH0%1UOQRg<5xkvuQEW*cZQb@8W*~I zPyAZB!9bM|lJ@m^imm2#Ih1JM=eVYgQE=N(E7-*yjJ2?4k-gk-Rt2loJO=FW1hlnENljtOe80F2(1`VsJ%#)tRQ zAfgn&1b|)=h8A4sP^CE$%(#}3f9-1^cyobcG7K?V!H~>0P#8>$wb9~$ z^RfqXdRmIX9LzI~|sJ^nare~BJ|HF!#YobNDVViPW$|55JY(@R9M5Lf6BvBf_-8jqv353fC9Q)1m8 z5Apt?;qn01Cc`~^7vecR^kqqAFv8Fw6qE0p3u15M5O2f+UWAh|(r;-7k_=CmNA4uS z@<3V9)ZO&0`2-@3bK77y>C}}6tD6y7r~qU!Y@6Nz_^W*`QGHz{e5`;B@k0 z&GQ>*R=$pm@WS4M8qZo!Y}%>B1Q{qIh#16qo|BUyI-BHI3oORbJnH2H(_DBkf3@3 zTwUPvi$h~vL|8Q|(eFaHl>uab^Ga5#4teTbe?!hC{xjfYnW^H_SM8nnPg9W&O?XXd z+df#%#LZR9DZMkL0~ZEX?{0DG>G&E4llHIKShtASDq8%?TuSrWn3DFk?b~=rz!vLY z7TUu;A%1I#=M-L2*oGke`cdYZ6D{k@2~%rvjT0sif}}{`$$OxdY7=m&=6^lLL~tYs z8}g3?+0h}gK4r%t`FQbNA$SXjwLeIviBboaRAxwV;4M;N=5ZRwgUHtMVYaIpg5@jt*ED4@ENG{=>AfpE$6~-LEs^rf zldtx$^9iYEX0 zf?%9b^W}=V{}q&AaDw$7i_uFQ=Au@Bdm~ZXB~I>=J6A_k$}J0TTy^i`?@>w|JGw6d zYe1S&nL{%u7al^9pH-8hL~;R(lvC~54~SE@FI}|KI({3~^wci@#imdG@enQsG`AdQ z{`P9QOSP1Ze!;aV4@d>6Q;i%pS$u)+qV2<#OjQ1yfOc^GV!DeKI-?qk#4~v4n2zcH z8I<59(r_NiYi2#$jApMT@q4bLso>3omF$dDQFKx8cOIGD7+%zFJo)d-73Uo`c}Nnj-6pLav&M4Bdn` z{~2FR_35wgPD4ws1WRFQSEa&tES!qVp49Y5ZG z#fmPdMSiXLJ681j-Ph{BV?|4Q78}?9iWOz)eQ)_ERwTE4iv4==8)}?UyYeSi^r^4t zwFQ3sUJNvVgS7MXfzCHy7Wb3uusol7QPfUJ*YV72kq52??XNPil#T@I(3yx#YlC#3 zqhP3TC|T%uKsE%0Rco&};K36_4%mKzL z6t$PT9Mq$T*QAibMI?SkbQFchD$g8p_-3ybaUPO3)`k)BBeTgq!Y974MKr&z27UD|-D^*U1#-tw6A~3-K8FrG9Yv_6u|jV5P2+a3xix5yuZ}=06shJC#9fM-_^E_3|L&JYL`jzmT*0CJV-ii<=EacC4=&2z1oGq!OZRyGjI z^LGza3H@3ui!UrV^SX?a@K9677SQ}c0~~#hy*KxRcF-(}DT#SL zQcHOc7YyG(->*X~#Fket20h;0t$7%Xi39}eaN)ur-OX;ND`_cbRAcP&CL6zFAIVfI zP3lF(8V@CC(+ZJyf6~Bg)0gO_kmwp=xu!yN8YKaL6i7LYyQn@6Gf&A#bNf8J&U=oQ zfNmmvQm$a6gbFY1TS)gazLx+TCqm;bj&tb|!ZYZOtS9ErPTIS*QQM7Ahh01L#U%LW zYx-#izYH=rhjYmF2*$0si&_v(PTC? z_})mhJQ2=yzPiw$ry?~0!rxr~v=fS8p%`)dE=s)!uHh2LgNZ^Hp``KT5PdiY0Jed6 z0olL;GPj*RvrR5YG6&=AP-ga%FTy3oupo-KjS$Q^C))Mv%i{EIJ}mP`@2o2)mneZ&P@lS3MzEEp(g!`vnm6cdCU_br-_o?Eq%NiHEC*2k= zk6c{b2YPi{-kbqkzpW84^r=dq?OdwUtHPAH69(otu6nhDyN2KiwO7+~8UXar)*c5Q{si3 z$j~f0K&3<#(78j1KvWX4^G1|4QF1)o>c|l65yDiEbY{XF7cGdiv zb85oj!VD}i>wYQH?NAH$Q3fxm)WKASCVNE2F| zjUEL{tmV4OPeN}|leLLzY@vk2GWkO;0{(-D#)f1z6U58%SaTMSP8N2-!cP=%iF;pW zKZ!qDzYAmuE@HsiyOg9sh{il{KQh3?MQA^TJGmjvyHkQ;mSL)Qam`zznwF+bk(5t&o=oB|NBHT&|<2!FDl*28I$kfKC+OeOQ#dccj z(Jo(mo8y(2Wd0yYZWZSjYF1;0@l&F@^25~ip%|wi!)5?Qg&BWAzzN_FxEL&8^ZZEm zLvm^vGbb<`+yjj|m@V7pXRWfrXGMX+X{Vf+G3;5Cs~3YglI5D{wrZ_AT%`?5vY&~*7ExS~vwlS@Lu zo_+n^f;S4?PQ~Y33o$)maJLq21E$;!b&9__BW*l(>-47aCNioCe$j%A`<`;|*C|aY zi~#zfwS{QG6AO&&Axvhdu$WUcgl<;8Vp7CJYx+3-BB1^b6w@j4sp?5QM0JUQts zpngBXS_xoY8W_Gerl0{*AW?-KD!!U{60m=&8yY3J{yv%4RE{c#R z*Y%M5^H?H?p`&C6Qm&R#|79XCtMpyY>#eiU5!WKAg9taaYp~-l0Yq}FRJOI9oh7Ix zGGT>7HL~nZk^X3-bcaYpiz@SOaNQaVlJn<6&spX<-@ivrUWO-FH>l_+-0dsIj>5Qh zt0*4yzkC)}%6^Px&;ua`|=0oU+cYz*FfP(ZGel#dgW13%<4D1YRvWZ$OF_0`>mPZCq zCW>%ct+>1%Hx_7o4O8bdZpo6c3(J_Fx9-D0kGbrtpylE_{O6RkQh2dd$^{zj{PZbv zx^fIZDg?A^FXqBNI##uc^6qh6w)BsODr&bQ;cNz=OxM^k#Ap>gUe6}jC8?{NeQd7; zZr84bQ17(M0$M}TBCH^8aRKi&YZ;nKV^z&Sj&w)fV-twR+E)S_gHt@KPng!RJES!U zu07&g%Ph1#Y+08&X;Gddu6|X&Gp7nd1Z_XO0K(MHS8ECoKxq5@!Ov4+)hm0SPKyQjSitV$YNq6E~#HDt}Nu)yU+th58*H$sxZ$Q`If6N z#p$>CC66E14VN9_f7bY+O7K$SK(TD)aZE*dBcF#*JI~|i;*XF05^U_n_N>{bE+G^#Y!1|4t=LvzLD{L>(L*>?6)nGrs{6iW}?nm0pakc$)uH%FE zO&V%_)A;Kzxr^RZ`|?fc`!m=%qCmg4ETHp0tGjRnx)gLETZfkP|b(?4EYzHrDiww zh(A+vYi?ItDfJXKHe@A)U0WQIgM)lQ7UR%w8vnhh83KH=6OBhjg`-JYF}%QR}rX?m8t z-A$9|DGF^r+k}%vb*rW~hc>m}8SlB(*F!gIa$o4E?d!gy*3*#R+vp&g+SipiS?Lng z@k0D@h+Ch0MPo=)GjCO2eqZ0+^u92+p25DZyzQ=_rjG84zUGDAXXE`JxBH8m`-dIG ztKIt4#=9OnG(Rxv^>6N9G#V(0YHTU*|FS)BOHG`a|LRxMD_!ub0;hr6CNY=3S5Wss z_;bCbg}&czVvx&&ygP%K3_~8tAwl;c;mbp~J40g6ha@J3q;`hzlEbpb!}9LK3YUkK z?hLCuA6A@Z~_a4X!jAr=OfEeBd9wgFULD>jCYyu3|M6}a_#g8 zxXTfPM_R{6C-X-SJRjwBe|#_+(9h_fa~QobIbv+wN$MZ*T$Jr}dwl{e3fviSa~MV6 zc@0dA%;b*-NxU9Ky*}jlx~ot0Ji0F|_zi2}O|;~5SI4He>2GgDjfMt~dOaW8;n2Sq z#;EFjIhXqa-Fvf)U)4vwd)V}j@~Hi;+ncND?`}@?cpJ6Ir+14qwV!n#yU_pszWO`i zpwX+ry_J&vWQX@vK_3G8-rjxm;Y|M+V?wm-PIrTPYr^xMn{M5O?&I10t9xRSO zQ=b^!c|Yj*KI!>*ZN~U(^@(w|l*8RO*;to8esop<69{FK6(LKn$NfGQPrx2hJ{_{ld-v#>%xOg^@8sFw z_h%NyFS;{TGAFv!Kh!yPr}i_SFEYD#nEidz=>0PbmnZk15M>WtzYqK8_fFSa6?tztfTAIN6vntM_rj z;?8tw6!U=8yxtD%moVsko+O;j0$pGl^M(fM>0zX(Fr5&@!#2PHKzb2Dh0a_DnGikS z$I>L20O^`G6`E&4H>P|+1Bi`VII9q^;~|i{CUCxj`Cyjaq$S4lhv5AgchSiGX#@7q zNzhR;axWE6lR|nCASJaJbO^$mWd{q*ILL%yI+{>}kVvMn^72CN5{COeLV9L|UNP6O zGks=%x5kS%uN*#aNKW!g4bJ|ad%HM&hL>4m{60(aLu}>9bFla&OYzwP{5%-zUyY;; z3pD@Wqv&zpBXgZ)C}(4kiC=+F7m#ToaW7@C9Z$HDSX@t?1dA|8(U3~`oYHVpf|r`G@ioyA zsxlK1ARx7OnPq|>HsJ)LAO(df2n=9~vd|@?a1$h!AsxpNdQlO%(I%8HCV&4A(?J(J zGY9%<91L&ZsM9IHfPXAPFpTnVKo?U3jL-t2pwb)x z9zlKtGQfZlRTTgIQ-J8uC@upA#GFGBr4d;`1PE9#iq43U987iTL;w+;e;hql>T^(F zOhE$#h@``zQW%OHKynxr6(L9iFBde7FhIiAe+-%&MC6IVi&uu0XoR@w;1)!J{uwCy zQt)8Hf&l~mdsuN`!-oeWF8tDQWXXXQKW0o>^WV*#F-Oi^`10h+o)cfzTy`;O$fs9N zCcXJJC?0N1j~ya^}sQKZhRu_YvyVsk_|#^Pd2^ zT#UR56h4rl0UTxl%3_7sLWTbz`h97WAy)xkI--op^xsa9Iy=6+3XxYr>BJ_HauQ%C zQv@SQ3kJS;#EC~FkmUqghG^g&I}$l4p<~QRWv|6H zTWz=Hwp(wB#39ThaLA5<@8}S~+)>^b0g+B-H9`=GG@+n`I#|`SJepni z1O|v?aTyU)F2MC&ie6l$VtYRYt0oR$NvaM_UgF8bS>`C{kSSLDwrQuIhB|7gr>469 zYOAj%@&a*b?#$d!U|HprIVOmp2LV?}#ZpRFStSsB|4rA5P*xd55CLut6~CpnLrDM* zz8+8fPW-l736=)hUDwC-K&G`NEp?a?nO9W zp^jO?t|`8=0s)(rni%L}7FbeQ&B zu1yobgB#ei$paWPdWiuS(t62EjjZxMEz8Bfnbs9;DygIiyq~}ch6SV5^6~92$tJ4? z@F0Ynx2u(4u%kczZ4W!zj}{RDh;Hd z^F%m85|+?}Cq!WimF29?+>Cuz$sYmZgF)c@ycIZIk{@;0@^ zWiEBOOJ0WYmAwRJFoiixVq)u;#YAQ@mAOo20_T`rOhFu*IZbL-)0%q!yrpIcV1+;c z0%dCa(pge6oG(;GFc1laC$ea~a)R@k?}TSO32Dl9nIb(xac7qtun7zm<^?SQXBW)* zlC?x(or8Ig6q)l+g(3fLiMU(Qj{_T2sh2?OY4w|F|_3a zTbP1i8gSBfzN7(Gpv4)GP|}k!;3XyL3p=p)OMZsYpZ0fW3Ov1pfOdRn2MAD$vXWL+xt+T$74X%2w90RqJG# zY}F8>1WFZtt3(^>pb8jB0Bwda0xH~th&gmYwSvK%A-bTZytLsHe)+;H+MtI~L_)M` zYLSc}frd3bd0&8E)&hR{)|5t1#yP8ZcX}YDKi9U5goJ8w4g; z0uWO$>Z^djfls8u5NBz_Y=;mNKzM;ssjBZN=Fo&LFf{^wGQ(&+kc3s-VG0shkVii2 z1X-|Q5fyVSuBv<8s&GKJhX9EKLQx4b)ChE&NUk3!dRY>e*u+%IY#rdkBF=V1!8mCY z7mRX&7d7MrmFTBr7@*>G3G@ZBpfN_e@Fq94X(4){qaND~PcKEQjvG-Vv4#riHQf|EoAY6CUpXkYyzccC$+h8dK z5h(q<0)(ItdlilFKo>@>vNNaGD<2c$IyEBI4&tTmPFT65~wOuh+-8~_q0XhH@RcY%UMB@2toUD$zvG%qc(kiwgnJ)jms03nUl-q$}x&gymrMcck-9t($?BcoP-y-?VF=>!T`IiCQ&)iZ)o zlR)zW!!X3C+3<`ANDC2An3=H(5r_c)z_6SF2!X@U9|HiMI;aW7Qw#wx6B^TqbP)l? zu!+Tx4<`FV8w$j>@Spr)0RLG-l`w!d{KLgipEry{I#fIna74ghL-L^+0&>KExPUmE zl?Y$}Hav|sWPlCAAU<5gITV0I6aZ7apA;}3%hAIK5P|Igq7V?E`k|G!$VD*}#$kLX zGHez%WPl$y3<1bPW|Tum`~WMcz(Cv$DOrv6c@bXIK_W$hc*>%)(GR;V?PkU`fto&DJzH^MC`VBdvz=4X!Ja z?kkLhQX|TvP1p3z-!#Af9TSAK2s7a6DT=t0EQqSc;ewXpADU7TqnN7k8;q$M11Kwq zET}1p_yC^Dsh}q)+k_KF$*$2O|IarG}2n5awg-s{}NJzAopbIltgbH*3L;wUm(3AoAf>gKz-tw(F0IuHZ zFyg{B{qzI$JTKZwg$`@L?+~r~s?Qd6QA{JZROo|Ale9}wg~xIgj~cSJ$THf210UD~ z6`3-J5;0DBgQp`H)q;>VK~l;)izI6ZqjEARdx2Ykh(?G2@EZcPkcARpEmILOf_u?1 zB~xl*0JBjA3UERHfujH)ScG+Bn0Cq!?(ws(dkKDn6P)M@kdVAAGdbh(30>Q#UOPcx z!?LRA!e66>9blCqn)ZKxrbs1pJ@nj0>7;Ssag}gv(moN6V+cu*L3BjpRkuz zU^l<;nr+hph!CDdfSHLBfc?vv3wTyG`N3Bh1w;4;52%Az_yki3g8IN#Kh;*;S-?if zMlOs%ruYv3C%V84d=X0+wZusvb@kYfg(W@wiD1-@R)iv1td)}OL{B6Po5)4%U;wV6 zp}|NCqk3725T91GpG|B;?uo@2Dh-eo+Mx|4bu3LFIu5JwjT=fc6&VtRl1GIs%jSU= zqP5zqC6c84l7h62+!!OpRHUO#jw#`dCvi!vMccFm%YAf9ptQ`39LutGM;o$CtSno! z^hUXT%Aj1!+Q>(D989ycJy4Wn19Y-OK&RX)#^fZC>Y%$lC#+-OLzW$3)BW z-CNFhOzm|``Grj9eT@38%D@dw)c{@G&EE;`Rn~CKu&mnPcuD}4jay<%rDPVr^NY>=To!>+bU_8F$huq{*=G>I5l-hg1S72#U;4?K_6;m1=3^FSDMsdHX69yg=4XcH zXqM(_rsit4=4;00Y}V#&=H_np=5Ge)a2DrrCg*ZC=W|BqbXMneX6JTx=XZwZc)pq< zID;S{CVIAKdCuPhkeLBUfO^;i2*8GP_=g18hhfN)1ki_5&=L;Kh=wVJL!pxYKLF_E zSO8$)2Yny~r!i=RR+c|l=;aV-YcNfW*63|{f!^tzRCqqaPy#-oOBHxN7MTfCOlVd{~Ed z*oS;r2JvBzmyT&G82|(@2W=RW0{{kj2m>q8X`YUZy1r}Q@M)k9>gEvWqP_?%=cwZ0OkhU)lm&vB{}tJaJGuxhFvjHlj%C)$<)7;2IRZM0_U$Z&1{fQD_scx%Ft zZQ5Si(I%3-R_cFP0awrmNw~M>Anb3^X=^Z+25_k=iR{)k?%%lV%yy2?PJpQf@8li~ z2XF*$;D%Lu2_|R-Zy*MAp$PLv?^WYxKyU=R{s;EH25IO6icsi8fQ0?-IKeQ2SuiIB z07A>r?`Y__nTEQXK!l;G@B6Ooe~@j$;O9?yfl4s_lED;N`fkn1}^xAIw%GIa}bAFc!Q3%0t1h= z1Sbp>2XdD<@+4pK+46$+es2e;auDAWTF7(v-qL?aYg9$@^ezub*zq2>6)_+174UFr z;DcYpHleBcH7=ydfKac8)O_bv&WPI6u!ac?>K($gktw`!FYjHKo!t2bt>O) z@^}e{KJ`>z^{7MaN*9cnSdf^|1R1CCqsnwI4|e%>b#9-A2Nw)JzlLZ~g5+lR0{Qe% zA9d<01rk^9!nka6?}>PKbQX7U7#Dyp2XW2Y7~j zxQ1@n2Wof;ESLv&xCV2m2c`gljh_Z)`1p&*hJ46}c#s4X;0JoRhHr=mUMOh3W`}NQ zhtvKC6u^dZ_z4vFhH_v4C};MZ-DYR zFbBSOd%+lMbI1q5kARC_{BGa}ci@UY;0JzK2Xv?vfv)YiI|2U^z@edzd)uK;HVd?ug9i~J6n-+l<>SQwLbi1~ z_wj-#Kt(on5sqS0_fJW-q01utb5(E8KLH8!ojL%lUA}m{1~~kOz?`+R4+{Xh_mAzm zeAm7WB#UJpyKCl7{@d8`BSE%c#gcva;90x>g#0G<<>+x>fnDABc?-wjuw1}5Z^D&J zml|0o-*(1h6+t3RcMPz!qX%s-%9}a!ek&aTXuhzLPzarCdo%Fh!iN(tZu~g%>dya@I%l5P!Ls^0A9%xg#dVjr@}J~4X^+(^1Ok-IcdEGOm_C+r&d*0ZML0O z1O8Lsfi3KV%tKIwX8|zk0MQpV=#)rJ5CYs}!87vo2h3G4%19$R4*embkTb4_4n$-P zK;A=c?9)q&?KH!{ANwdH0GAMXIDi8G6*gp^QwCD`kAcIOhn{-u36SNPj9?VNb=I8N zoq`OyagKNpX^>QU8>J(FlxIR=C6@Z=G5`UL@Dq+*=Oi=0ABr+SfRxGnQ|T%HfTxQ9 z1YCm89&d`M;F!;pxgwWwpw%Q0#In- zb^HzRCzB6_nhClCv>>Thd@0}xKBNdh9+$liTP%oYX$TQpZVii)1k^g)drjIzQ zS{>3!E4?(+O*{QG)KLewop#to#8{IChBL)KRB3e}n83jEYy=S$K?W!FVPoe%D4qBQXbJGCev2wsJ@(j^kSx}tA3j*z=l^=&fuYKZXP*%;|%4VH&x8oJOO%?%S zl)((-zBcK$HP4!g73P|A{?L)74!~vRn`hVfsci+Zmc^TjIO5`Mqs0K1mt2*}RXQF3 z$s-AzL(u?Ujh*^K3BeA~&N>&b28vH*gWnF?@L9Sq^F6`;OP0tQ_nfATpkJ&@?!p9F8sE0+|EP zfs6qt3v|yi%iA2MFa>VLe4J^^hF(_{A7PIyVHz6+&4#wCutkXw@d|)+gdy)xWq=|w zpp%MV1_B1BiV$&yk9=sqJ#=KnavX`j49WmR%ODjGEN`!2t zkC=x$wh73V{HRABc5#oGm2FeDYzIGFD9sf{Ph}<}r73@SB2JZsOV3ZG9EKQxMfrizVHmK5AVOvN%+U-Bd_zMK`(?%4 zQGjRIs5>zO3Zy1_3Nr%7h!8^}Q-6ifNGjAV4ZUPaqxw`OZn2VBg=j<~*HCb#w2VX~ z4?rb(6$2vw)S3i+NHUjM$L3k{ntBu@Uh}Hgz4EoM$9X5!4!M~IbRie~fJYQuWDGKx zfw5!w2P4Gttkjhg1ClZ*C|_lifyo08@i3T+NKwImST-4;TT9}~xj)?b(qRNZV;dMt z1~O=2sPX`*84Y-ov+VGg-eQJ4{E$T7(hRu5)oL@5#0+(mWj+9sX4MXdfqg8av9sNR z4F)=+tm$L1)_v?a8BJ3aDfP@D>?b!W@9@L6^l zv7N0Lf`G;-JVbvtAy0w2`(H9VHnKiBUqpSSRHov0w)({!6G~AVR=f~v18|rCB6|xX z-EIK?K5)cGcrjFU!4cP^@gt&|t|z7`YpAM_Ib+;K_b5av~=2U5}_l^7MDXX9&>B5^RhGKNcbt z3+`|$OWpjQ*{^oKGoJIT=RsO6mRF16KM3H6ad?jq7(u{1uB4*|03l*sYS|w2_a{g_ zBo68bLuT1V<8HuXMi{Wt1au@PQXoYeI%?(G40^!Fh1FMuv(u;{@&h2Utzy2s3BC&R zo;?`R*1rAl+lrfH1P`npZy*ZmLsYMlUd+Q{Mf9(erKp z-b7%U>OZ$gADrGUL@e739Vx&O;VAa8?`5_3DtS}*8$bovlc-a`8*@|Ol0BUrGe(DO zd=5d%k`JhDMR&W=ZFzK;eYNXyFEw#svP!%O@b5KnquQ_Ta16y|jffQn(kPe)kO!c? zeluzcK}J-d2MQt#Bzh^39Ul!@iNs%ix*Nv6S2mt4fHZ0Ab}p)Tl4%X1pGK9;+g`N8 zw<&5W5)mRS-=d?Z9^o99{B|-s>s15}?HL(x;oSB%$a;M`N!O?>Xx}s3<1Y8P_Z6^) z#9CG&V26GDVhRrc?i;+4k6YM4G~uvFK7L^aN3?@fIS(`@;z9T|%wrrXbG2sw--QiC zU3?#tZ$~;B{fv6_!3US%M~BAUID8CZ!BYrq;mJUL@dJ? zpa?Zk!54f3ML|Ra&cOs$U9)#0o3=I3N0q6n2p_#NZ6pU{jexI9M2iF&)_L zfeE(X;blVNE#4AZ**`=e9OTkOq@W(MAa#ua5-OqNJ;VEL)frudsBGZ)&CSXr$oie2 z`@Ksx=pOI+UO8#tGK60wsv6ymA}N-lDL#kYaR=UIg#w)3BGE%F1b_gXfGbFnJJ7)Z z9L6i=LU=r0B_-52G(@It#=gu+*QkUfT^g6L#v-x9H>88OC0td^!#qgRM8F>A*@*xs z0Y@zcjtl@Z@&h+~!-DA6O)P*bRAW3qL-2&-I4%gjUDBYqBRLZP*nx>i*@R;})B=}< z8TUQR3S@#L$%7zd#YQa>KGXu2(4sBkVt7$R@bLpzh?GSb<1cXlFf39&Py-O;V?ym? zKO#^zQVKmxMn`SQ19l1lxXLRo16f!O>J30Z4&)=)MM7~y<~1U)FytcLVlF(gnv^P?cWF;g|&v zPx6CL>Y`3`B_9%iNGy^wv;#$CWl)L-QHE1mB4k%0m6+-OhBFRHd)>LBpq`qj> zP1d6?iY7mh=Et0(Y|bWa*5-3$&I{^DmwbSWfk+XI!30o6aI6k*x|}Eu=fGguW)!CY zs72;zL2Ncn5u8DeK*V!0PH}V*b$XJHTxUB8Km(9LdIXvnXaRN-2UQTj7K{P6B?p%b zKm(NLW~e87a_2uV=W+a|1)WH8s@i*=%@A-?psi}GG?#BT=Y2Soq@^d^@~C%P#pqcCV$RM2$hh$jih$E?mj{3Zh!#fOqXf}Y5T zj)Bb;#&4eIF9`s19;a|Hf{zTA89=962mpvWjfJ}Z9EJj?a2iK=a*Z54M1~4y*>tFJ z4uFe71cqozg*In=5-D&bsVI79aJ=W2MyGA2shX}SoBon0HtBG533Dicq!6Q=wrQM7 zN6aYAQlw~eN(Y^CX_+49o+^hu6>69wYF0#Pb^IxCz$uItsiG!onPx?EK&mH+;+@`v z*H~(zPHJ&%M0*gUe{O2iIO=9VYK01is?*J#N3Vv{uSShM1uL>HQ19_YvNFe_U1_sMtF%rlwIa;{Ac8D}Xtg5iwPq_H9qG2> zsRAHEDsWA>9*2|o=((;dyS8ht+MK%rE4=Ri5vaziDblLF=BvK$E5G)uzy2%02CTpi zEWsA6!5%EaCal6PEWrw(>^WK28Yr{E!9@7)n2X4PA%3lhXHi$(wu0-cC7(yE!mc>!D{V4h;7%_ ziPws)aah?({(^J3Eg;b?M5rxs2-bAiZF2~g+Kz2=;Mh54jJKDU@!J=uJ<+v+Oh@Zif-C^ZE^5n0~jaQn(z5m9qsb1^_~a~fg7N` zul52*{9X_4;w^;L>ofred8iX|T;AOtFZ=FQ<>v2jFfa8=@6x=k0%vdBNv{K2?g4K` z1rta2elG_jht_rhERf?W2m%d#0W@%fCU`9Ym@qe}LJ<6I6|ry%8-N0!fh>rv69mIF z$U@vifdQ=W32Vak=!gL@K`VIw12NFSpBnKsNW)8kum}sn0Eq3i0)itHuK}DuD_p}d zfK=BKz#2fq4tr4AI=~i314#YD3yeY@IKni1lmXO1DVT#e%)%RVhZW3%6c+>}$btZv zZxL^?G)z!M#KAOhL$*%w8t1_o&%p|~F*m%_04(wubHUiI&<`6jH*~@PZ~!Fi0zKfu z44d&apt09J@*DF3{WwI|UMn+%@+dblGX&diHD7NwOEWgNEg*k0H7l^&igP$S zt~DDlI%9A*Q}8*D?l@on^EY$z{g!j|7O*$t?KY>gI%6|EUobvfZ#;`LJNGjWC9J~fSaDyjU05-%0G_1pc7z9FeLoWe=+OkD%%tc)kz<+e@UC2dB89+?T#5&x= z*xp56z=i>w#ZdG@Lz}}xdxF|tM{dN!ZuG{6MZmyh^gJNeKZpitn8sFo13M_hRX74P zj70G!z&{KF3i!-QIm;h+trFO@ZxjWEm> zI=tIKB*aF;#6v*;!#|va0f>w_hxR>-Hfgi3X!Elc0lKI zKCAXX&-Ou|_GrI$HJ5e-<2G=wb8Q26LjUa4l7;xnFE&UBz8HXtu!sRb0X|O*4HHZu zV9@~Zh&)&_g@j!;xPv3z-!@@Po3w|r7!5oiPCAI~6dS6jt!*owc*QUwMR#%6(hO*B}Fz zsEkUfq>cgPx2n`PhP#S2xc7-XHi^?W%Ir$7bnRnDwgLQZ*GBi)x(F)}C6+<=xU9|} zyY_G&v~b)1Gdl0{kq@~%!?ThTw?7kfk z%M*ndb)jgRw>MdMt?1rS9>uxv5YPP74<4=6%EYuz3C$`S!1RPi_4sht4gl!D4K3_| zHodR`i1aqacm!+_WM9WPM0QrN1w45AM4(U(akz+AI`3Ti9`MT^#Codztt(Kjudh*{ z8-N!LdyE^vV|zMR)c93&t+0=6g^M)*QAMMxvz8kEvc=P_=%&>oVUsoqXhhT% zrgutA??YMu1&waSIk87Nz4wN9QgcGUGrBDrVOqz-x&Um4w4Z|5YFBr})J#!(sj$3V zef-)MyV@T6)XV%HT-8HW`?E)TjElI$+frKO(mb@(OTn+Z!#la3`MPJhaeKSL6Fk3z z`@U~;^9H<_S9#kn`Qz?Akth6azjl^$Gj99)J|8~8dwD^lJKzWR!pCgGGh5e2%zViI zLu^?WbXGivh%JU70~Tre4sAT9vqIOl(9kKEY>feA^XMA%9y&mLd;hJRRhNZfmv-H6 znOWGG(T%3xd^Y5KMwQoR5pjPDS(8)@b9JqAp&8T1^zn?X(m%U%ZFq%Q*c3>8ke!2n zSy+G#*wz1a*6&L1&(@i38H6ppj8{ARi+JX5{%k?#AD>u?y?5ll^SI~#yHhzp{4+4n zz(0cq2_{r1P~kv^1s@_@_^@F`hX)BttQe7^#fBI!YIOLKqezP;FOobca%IMhC>MGR z2{Pr#jV}|HY#CB!%#$<=y6ib~Wl^I?ktS8Tlxb6^PoYMYI+bcwt5>mRy{d!%E7u=g z4;BD+5CS%91I6Amz(^md0Rw+PL<`K_TLW(Nu{wZIMK*K;-V&;}2Z6a}3=9x(r53}y z!vX{}0CFJLuLuJa4;GuQV_9o&HDLQYu)&Z4obdS>@b5vcUJpbIFev$70)3|h7XAz& z+rPI7_6;)#MPD~~KqLy#kS*Nme~zT30afqK>d@&7*giE7!MR}t%VM`pYM=^i>I48E zroa_-zyzj1{xev4Y|=mmuyt#o@8_58_oxpY0q#rd9|9Q}EW6tV5^Rrwh&yF~`5qKN zKj(h<2Zd=m0j#glZmLNxn}Qn3M3^WlN~jfcT2UjEI`Sw*nt*E2M44v)G%3asA*%5s z8%NB^C?Q{bX-6J`G}6bDT=c2OoqF7eA&z{iF`^_T(n`xMx$M%*FTo5`%rTA9p@}vk z`A3mEn$Y2(1Avj|j43>uORWmbk*ALa;y9<4%jViAnl#q<=AJ0h5`X|q^!bGfEch7= z&U|iZ0uO%f8DP>|Y;fY6a2Ab+(<`z$4o*3zu*(3?-os>{Wri?f7kHw;Q=K__*d-oT z2)N|cSZ9qwyWGs#EgN;V7(%`BuxaP8gcQX@R2$YXr#U6&xwQvZc8x$g?z{sJ8}axN zXATE;30J)VTHxna2MEEZkqPyQrHVy=l@*>L@YIuoUFPvGApjNs^%Yiqk+>wEU(9f% z9ef@HZkaI#fMOqNsQBWW+a^>{fPVMvvz7&(xu=hR;&3d2FSwyYMk-0XQRbmkoH!S3|dK_iIy2kq<@w&=OdjaQ|hUyuG;FWv6iZdLy8LIh=T;c zqn+S*^Div}1W@9ecKEq?h=jyqhnaucsYj3q&K_U^SNP$Fo^A#k;DKlQ#;2QmAUlEY zzTKfi?_K)lhn+_N6FWFnSsiGFO#bOx9zoE?;+wwdsRgpl`7uZy%7-;TH_R~M=eA`P z%|stb0%&M~T-fGkoG@0yqW5@eVPJr7T@QEFaTkOp^>(QL0V2EL{vjX^b4XtXFg*WB zX8_bar+fh6`{t(DjsVo0bI8U`suJMFdGMvWjCz*GO2 z$3A{%A${mVRTII9(u^iF8rckLP74~;D%i9W4J~O;qS4cOa+DAjErKEpkp^-0q9Wl4 zgBg5a)Up;s8P1S~HMC(-+5iiqv>`*j`9~4P;6tSp;S50_P)-2z!!bnQNoXqw5rJ?C z`UnJwaDoS9Wb*+s#K$0zX@D8D;F}}@(MksrzyKN`hA^ #lh7QLv(BpzjsKm?3k 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

rJC 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

HT_G*o#VDT$ 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

P7F8ERN_I{} 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%0Do<12q?v0r`$ckg_Sy)XLIufFxKkNxax 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%0Apu-D9 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%0A3(r(4AA>CxQ|_C=a-+ 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%0A1&U+FHs_ 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%0Do9C9+%sL&RCN&E`a%;nG;2>bA0>`_Io(9!5!& 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%0D3e;+CG4Okze2q^5>9FkUN}YECvR-?6Jq**E&X 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

)1Ogb0EfQ>rrx+?%7^+-a2 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�zqf+_F9`9R~PE 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⪼}BbG)7>=5U&~q2MAn|84vSS5a<-6Xq+= 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

    _0m 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 $^}!an^7XcenW48Y%$m$Q@!k){or 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

    )k!CbZb|naPk>JZLO21mw0p|76I*!YAd1@ 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

    %vG`%+{-#^yIPqQ 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 Date: Mon, 26 Jan 2026 22:47:53 -0800 Subject: [PATCH 45/51] feat(ui): updated contact page, added to navbar and added incentive creds page --- .../[search_space_id]/more-pages/page.tsx | 127 ++++++++++++ .../components/contact/contact-form.tsx | 190 +++--------------- surfsense_web/components/homepage/navbar.tsx | 2 +- .../layout/ui/sidebar/PageUsageDisplay.tsx | 16 +- 4 files changed, 164 insertions(+), 171 deletions(-) create mode 100644 surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx diff --git a/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx new file mode 100644 index 000000000..000163814 --- /dev/null +++ b/surfsense_web/app/dashboard/[search_space_id]/more-pages/page.tsx @@ -0,0 +1,127 @@ +"use client"; + +import { ExternalLink, Gift, Mail, Star, MessageSquarePlus, Share2, Check } from "lucide-react"; +import { motion } from "motion/react"; +import Link from "next/link"; +import { useState, useCallback } from "react"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Separator } from "@/components/ui/separator"; +import { cn } from "@/lib/utils"; + +const GITHUB_REPO_URL = "https://github.com/MODSetter/SurfSense"; + +const INITIAL_TASKS = [ + { + id: "star", + title: "Star the repository", + reward: 100, + href: GITHUB_REPO_URL, + icon: Star, + }, + { + id: "issue", + title: "Create an issue", + reward: 50, + href: `${GITHUB_REPO_URL}/issues/new/choose`, + icon: MessageSquarePlus, + }, + { + id: "share", + title: "Share on social media", + reward: 50, + href: `https://twitter.com/intent/tweet?text=Check out SurfSense - an AI-powered personal knowledge base!&url=${encodeURIComponent(GITHUB_REPO_URL)}`, + icon: Share2, + }, +] as const; + +export default function FreePagesPage() { + const [completedIds, setCompletedIds] = useState>(new Set()); + + const handleTaskClick = useCallback((taskId: string) => { + setCompletedIds((prev) => new Set(prev).add(taskId)); + }, []); + + const allCompleted = completedIds.size === INITIAL_TASKS.length; + + return ( +

    + ); +} diff --git a/surfsense_web/components/contact/contact-form.tsx b/surfsense_web/components/contact/contact-form.tsx index 368f40c4b..6d50388b0 100644 --- a/surfsense_web/components/contact/contact-form.tsx +++ b/surfsense_web/components/contact/contact-form.tsx @@ -1,104 +1,55 @@ "use client"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { IconMailFilled } from "@tabler/icons-react"; +import { IconCalendar, IconMailFilled } from "@tabler/icons-react"; import { motion } from "motion/react"; import Image from "next/image"; import Link from "next/link"; import type React from "react"; -import { useId, useState } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; +import { useId } from "react"; import { cn } from "@/lib/utils"; -// Define validation schema matching the database schema -const contactFormSchema = z.object({ - name: z.string().min(1, "Name is required").max(255, "Name is too long"), - email: z.email("Invalid email address").max(255, "Email is too long"), - company: z.string().min(1, "Company is required").max(255, "Company name is too long"), - message: z.string().optional().prefault(""), -}); - -type ContactFormData = z.infer; - export function ContactFormGridWithDetails() { - const [isSubmitting, setIsSubmitting] = useState(false); - - const { - register, - handleSubmit, - formState: { errors }, - reset, - } = useForm({ - resolver: zodResolver(contactFormSchema), - }); - - const onSubmit = async (data: ContactFormData) => { - setIsSubmitting(true); - - try { - const response = await fetch("/api/contact", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(data), - }); - - const result = await response.json(); - - if (response.ok) { - toast.success("Message sent successfully!", { - description: "We will get back to you as soon as possible.", - }); - reset(); - } else { - toast.error("Failed to send message", { - description: result.message || "Please try again later.", - }); - } - } catch (error) { - console.error("Error submitting form:", error); - toast.error("Something went wrong", { - description: "Please try again later.", - }); - } finally { - setIsSubmitting(false); - } - }; - return ( -
    -
    +
    +
    -

    +

    Contact

    -

    - We'd love to Hear From You. +

    + We'd love to hear from you. Schedule a meeting or send us an email.

    -
    +
    - rohan@surfsense.com + + Schedule a Meeting -
    + +
    + + or + +
    - https://cal.com/mod-surfsense + + eric@surfsense.com
    -
    + +
    -
    - -
    - - - {errors.name &&

    {errors.name.message}

    } -
    -
    - - - {errors.email &&

    {errors.email.message}

    } -
    -
    - - - {errors.company &&

    {errors.company.message}

    } -
    -
    - -

    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

B@`99mHrDZBzG?c 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