From 70424a5c50e5c7928c34f8adb97f928d95de7936 Mon Sep 17 00:00:00 2001 From: Mongar28 Date: Tue, 29 Oct 2024 21:57:59 -0500 Subject: [PATCH] Se agrega el proyecto al repositorio --- api.py | 106 ++++++ api_openai/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 181 bytes .../__pycache__/whisper.cpython-312.pyc | Bin 0 -> 1572 bytes api_openai/whisper.py | 45 +++ credentials.json | 1 + credentials_2.json | 1 + documents/pdfs/onecluster_info.pdf | Bin 0 -> 45164 bytes embeddings/onecluster_info/chroma.sqlite3 | Bin 0 -> 286720 bytes .../data_level0.bin | Bin 0 -> 6284000 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 4000 bytes .../link_lists.bin | 0 langchain_tools/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 186 bytes .../__pycache__/agent_tools.cpython-312.pyc | Bin 0 -> 10779 bytes .../__pycache__/agents.cpython-312.pyc | Bin 0 -> 4585 bytes langchain_tools/agent_tools.py | 323 ++++++++++++++++++ langchain_tools/agents.py | 83 +++++ langchain_tools/llm_models.py | 0 oc_assistant.py | 109 ++++++ onecluster_bot.py | 109 ++++++ prueba_rag.py | 32 ++ rag/__init__.py | 0 rag/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 174 bytes rag/__pycache__/embeddings.cpython-312.pyc | Bin 0 -> 493 bytes rag/__pycache__/llm.cpython-312.pyc | Bin 0 -> 542 bytes rag/__pycache__/rag_chain.cpython-312.pyc | Bin 0 -> 1819 bytes rag/__pycache__/retriever.cpython-312.pyc | Bin 0 -> 573 bytes rag/__pycache__/split_docs.cpython-312.pyc | Bin 0 -> 962 bytes rag/__pycache__/vectorstore.cpython-312.pyc | Bin 0 -> 901 bytes rag/embeddings.py | 10 + rag/llm.py | 17 + rag/rag_chain.py | 40 +++ rag/retriever.py | 16 + rag/split_docs.py | 19 ++ rag/vectorstore.py | 15 + requirements.txt | 140 ++++++++ token.json | 1 + token_2.json | 1 + 40 files changed, 1068 insertions(+) create mode 100644 api.py create mode 100644 api_openai/__init__.py create mode 100644 api_openai/__pycache__/__init__.cpython-312.pyc create mode 100644 api_openai/__pycache__/whisper.cpython-312.pyc create mode 100644 api_openai/whisper.py create mode 100644 credentials.json create mode 100644 credentials_2.json create mode 100644 documents/pdfs/onecluster_info.pdf create mode 100644 embeddings/onecluster_info/chroma.sqlite3 create mode 100644 embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/data_level0.bin create mode 100644 embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/header.bin create mode 100644 embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/length.bin create mode 100644 embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/link_lists.bin create mode 100644 langchain_tools/__init__.py create mode 100644 langchain_tools/__pycache__/__init__.cpython-312.pyc create mode 100644 langchain_tools/__pycache__/agent_tools.cpython-312.pyc create mode 100644 langchain_tools/__pycache__/agents.cpython-312.pyc create mode 100644 langchain_tools/agent_tools.py create mode 100644 langchain_tools/agents.py create mode 100644 langchain_tools/llm_models.py create mode 100644 oc_assistant.py create mode 100644 onecluster_bot.py create mode 100644 prueba_rag.py create mode 100644 rag/__init__.py create mode 100644 rag/__pycache__/__init__.cpython-312.pyc create mode 100644 rag/__pycache__/embeddings.cpython-312.pyc create mode 100644 rag/__pycache__/llm.cpython-312.pyc create mode 100644 rag/__pycache__/rag_chain.cpython-312.pyc create mode 100644 rag/__pycache__/retriever.cpython-312.pyc create mode 100644 rag/__pycache__/split_docs.cpython-312.pyc create mode 100644 rag/__pycache__/vectorstore.cpython-312.pyc create mode 100644 rag/embeddings.py create mode 100644 rag/llm.py create mode 100644 rag/rag_chain.py create mode 100644 rag/retriever.py create mode 100644 rag/split_docs.py create mode 100644 rag/vectorstore.py create mode 100644 requirements.txt create mode 100644 token.json create mode 100644 token_2.json diff --git a/api.py b/api.py new file mode 100644 index 0000000..f68690e --- /dev/null +++ b/api.py @@ -0,0 +1,106 @@ +from flask import Flask, request, jsonify +from langchain_community.tools.tavily_search import TavilySearchResults +from typing import Annotated +from typing_extensions import TypedDict +from langgraph.graph.message import add_messages +from langchain_openai import ChatOpenAI +from dotenv import load_dotenv +from langgraph.prebuilt import create_react_agent +from langchain_core.prompts import ChatPromptTemplate +from langgraph.checkpoint.memory import MemorySaver +from langchain_tools.agent_tools import ( + redact_email, list_calendar_events, + create_calendar_event, get_company_info, + get_current_date_and_time +) +from langchain_community.tools.gmail.utils import ( + build_resource_service, get_gmail_credentials +) +from langchain_community.agent_toolkits import GmailToolkit + +# Cargar las variables de entorno +load_dotenv() + +# Inicializar la app Flask +app = Flask(__name__) + +# Inicializar el modelo LLM de OpenAI +llm = ChatOpenAI( + model="gpt-4o-mini", + temperature=0 +) + +# Configuración de Gmail +toolkit = GmailToolkit() +credentials = get_gmail_credentials( + token_file="token.json", + scopes=["https://mail.google.com/"], + client_secrets_file="credentials.json", +) +api_resource = build_resource_service(credentials=credentials) +toolkit = GmailToolkit(api_resource=api_resource) + +# Crear herramientas +tools = toolkit.get_tools() +search = TavilySearchResults(max_results=2) +tools.extend([search, redact_email, list_calendar_events, + create_calendar_event, get_company_info, get_current_date_and_time]) + +# Definir el sistema prompt +system_prompt = ChatPromptTemplate.from_messages( + [ + ("system", "Eres Mariana, el asistente virtual de OneCluster, una empresa de software que ofrece soluciones personalizadas. Asume el tono de J.A.R.V.I.S.: cordial, atento y con tacto en todo momento."), + ("system", "Preséntate como Mariana en el primer mensaje y pregunta el nombre del usuario si no lo tienes registrado."), + ("system", "Si el usuario ya ha interactuado antes, usa su nombre sin necesidad de volver a preguntar."), + ("system", "OneCluster es una empresa de software especializada en desarrollo a medida. Solo responde a preguntas y solicitudes relacionadas con la empresa y sus servicios."), + ("system", "Si necesitas información adicional sobre la empresa, usa la función get_company_info."), + ("system", "Antes de enviar correos o crear eventos, muestra los detalles al usuario para que los confirme antes de ejecutar la tarea."), + ("system", "Si te preguntan algo no relacionado con los servicios de OneCluster, responde que solo puedes ayudar con temas relacionados con la empresa y sus soluciones."), + ("system", "Evita mencionar o hacer alusión a las herramientas que utilizas internamente. Esa información es confidencial."), + ("placeholder", "{messages}"), + ] +) + +# Definir el estado del asistente + + +class State(TypedDict): + messages: Annotated[list, add_messages] + is_last_step: bool + + +# Crear el graph con el estado definido +graph = create_react_agent( + model=llm, + tools=tools, + state_schema=State, + state_modifier=system_prompt, + checkpointer=MemorySaver() +) + +# Ruta de la API para procesar texto + + +@app.route('/process_text', methods=['POST']) +def process_text(): + user_input = request.json.get('text') + + # Procesar el texto con LangChain + events = graph.stream( + {"messages": [("user", user_input)], "is_last_step": False}, + config={"configurable": {"thread_id": "thread-1", "recursion_limit": 50}}, + stream_mode="updates" + ) + + # Preparar la respuesta + response = [] + for event in events: + if "agent" in event: + response.append(event["agent"]["messages"][-1].content) + + return jsonify({'response': response}) + + +# Ejecutar la app Flask +if __name__ == '__main__': + app.run(port=5000) diff --git a/api_openai/__init__.py b/api_openai/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api_openai/__pycache__/__init__.cpython-312.pyc b/api_openai/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86d94d392a0cb7d7a1806d5990a366ad502be112 GIT binary patch literal 181 zcmX@j%ge<81ea95rGeFpT$EXoUzC}zUr>}^nVMXZUmTy4ldGSfmztbYT3nJ^6rWgJoC##)mFOoH zWX9(gq~;}N>c_`t=4F<|$LkeT{^GF7%}*)KNwq6t1zN%g#Kj=SM`lJw#v*1Q3jhro BF$Dks literal 0 HcmV?d00001 diff --git a/api_openai/__pycache__/whisper.cpython-312.pyc b/api_openai/__pycache__/whisper.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05efd5bebadc5c7ab8b72be3deaf8ac7564cf89a GIT binary patch literal 1572 zcmcIky>Ht_6hD$jO0q4LPs-@Af&FK6>mtFS0@r-4hBq+iFwtF|=$qIz zp5P6`O~GDu)38r9R5SCZJj_(Yv`-z^b}1*pqjivtdm#x{)X-}v+&V8%^?kb0)m_3E3#)eoqQcv_M&z$I?vO{$! z?P;-EP5Lyp4taHEQkGIRe_H3_SabCw<8YMU9**$?WTw_d?%w^?^_4Yy<^G!e?do^W z6_Ij6&wfZ6LS;YfW_Gr{C?ss@6M;E-%uP+`HR=*yVA(8@XCw+~5D|NmvYNxqG?P~d zl}5tYBC^9wc0ynZJr=rCcRea{oH;>MVP42R2o^?#5r-2~XR^mk779AwBLNpvNr;`? zmYs}~&hJZl`@q_!HDc9hu;s8%Z``m}<>{Oa`P4_ za)oENUSvOPe*Jo`_|!Wn9M65+{H9kp-@3DZr(3W(1*==Q-YHz~GV)DOzHvn@0qyG(nBgg@e(lU)ns!mVJQgSsHPXP5@pv;|) ztInO)xw>n_=qUAXpjPKk`^DOLWE2!@0Oj;Llj$-!KEg;a6YXXmQLjRl>DJb+&UpkN z)*auc4O3%T>8B@lp?g7C=jK!bT{bI^k*SSEV0KnI%nrR1>+oqwk4Gjt!7nRG*A%3fVC^zU5^vFCSpE~%7D}z1{he04 zA0OQQ`Qh=x=WSf*<%>VXKgQksrB41*H*a?GW-nJverEu5vsVFhvqtkafKJbLak+!b z?F)-9@X{aC str: + # cargar la variable del entorno desde el archivo .env + load_dotenv() + + # Usar la variable de entorno API_KEY + api_key: str = os.getenv("OPENAI_API_KEY") + + # Cargar el modelo whisper + client = OpenAI(api_key=api_key) + + audio_file = open(file_path, "rb") + transcription = client.audio.transcriptions.create( + model="whisper-1", + file=audio_file, + response_format="text" + ) + + return transcription + + +def tts_api(text: str): + # cargar la variable del entorno desde el archivo .env + load_dotenv() + + # Usar la variable de entorno API_KEY + api_key: str = os.getenv("OPENAI_API_KEY") + + # Cargar el modelo whisper + client = OpenAI(api_key=api_key) + + speech_file_path = os.path.join('audios', 'voice.ogg') + response = client.audio.speech.create( + model="tts-1", + voice="alloy", + input=text + ) + + response.stream_to_file(speech_file_path) + + return speech_file_path diff --git a/credentials.json b/credentials.json new file mode 100644 index 0000000..f9cb313 --- /dev/null +++ b/credentials.json @@ -0,0 +1 @@ +{"installed":{"client_id":"19011937557-bi5nh4afvg4tuqr87v6dp55qj9a9o1h2.apps.googleusercontent.com","project_id":"oc-aassistent","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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","redirect_uris":["http://localhost"]}} diff --git a/credentials_2.json b/credentials_2.json new file mode 100644 index 0000000..6e4602a --- /dev/null +++ b/credentials_2.json @@ -0,0 +1 @@ +{"installed":{"client_id":"629922809906-pl9l1ipout6d5hh19ku50sfvnqgu8ir2.apps.googleusercontent.com","project_id":"calendar-424503","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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","redirect_uris":["http://localhost"]}} diff --git a/documents/pdfs/onecluster_info.pdf b/documents/pdfs/onecluster_info.pdf new file mode 100644 index 0000000000000000000000000000000000000000..70809fb9c1e4215f677dbd36a928f8f0434cb25c GIT binary patch literal 45164 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 Xg;TBx2*mGxb}-V literal 0 HcmV?d00001 diff --git a/embeddings/onecluster_info/chroma.sqlite3 b/embeddings/onecluster_info/chroma.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..3ee081b4ff30bb67dc5f702826c647bfddaac081 GIT binary patch literal 286720 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 literal 0 HcmV?d00001 diff --git a/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/data_level0.bin b/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..ea3192e8ec5112eb8b4f2a7bde5d13bbb95e6ac0 GIT binary patch literal 6284000 zcmeFtfdBvi0Dz$VsTV1P3IhfV7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjxE(qc00000802p~jU9!M z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA hz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VqIS}Y^00961 literal 0 HcmV?d00001 diff --git a/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/header.bin b/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e0932a7d0033aedf7dad4109641188fbb1f6091 GIT binary patch literal 100 tcmZQ%K!6v_2sVh-BLU&Jz-XxSe<%=u@)e*ojQ_7mJJntEx_t^%8~|Sk4$lAp literal 0 HcmV?d00001 diff --git a/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/length.bin b/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/length.bin new file mode 100644 index 0000000000000000000000000000000000000000..1dc89f8e47e591af4c36a35046077f0ba1d1ef9d GIT binary patch literal 4000 ocmeIuF#!Mo0K%a4Pi+hzh(KY$fB^#r3>YwAz<>b*1`NCh1`nVB0RR91 literal 0 HcmV?d00001 diff --git a/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/link_lists.bin b/embeddings/onecluster_info/ec94e6e6-76a0-432c-b4c0-d25f119adbea/link_lists.bin new file mode 100644 index 0000000..e69de29 diff --git a/langchain_tools/__init__.py b/langchain_tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/langchain_tools/__pycache__/__init__.cpython-312.pyc b/langchain_tools/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee427840f74ea241e2cb820a16a9361006bdc14e GIT binary patch literal 186 zcmX@j%ge<81ea95rGeFpT$EXoUzC}zUr>}^nVMXZUmTy4ldGSfmztbYT3nJ^6rWgJoC##)mFVXr z=A|cRBxdHtm*nT?6zj*wXXa&=#K-FuRQ}?y$<0qG%}KQ@Vg=g72*kx8#z$sGM#ds$ GAPWFCRWm98 literal 0 HcmV?d00001 diff --git a/langchain_tools/__pycache__/agent_tools.cpython-312.pyc b/langchain_tools/__pycache__/agent_tools.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9eb8555b6111fb81efe6f08ac08d7c64ea267d68 GIT binary patch literal 10779 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 NX4}jEvS>7<{|C1oKwAI+ literal 0 HcmV?d00001 diff --git a/langchain_tools/agent_tools.py b/langchain_tools/agent_tools.py new file mode 100644 index 0000000..aa52c68 --- /dev/null +++ b/langchain_tools/agent_tools.py @@ -0,0 +1,323 @@ +from dotenv import load_dotenv +from langchain_openai import ChatOpenAI +from langchain_core.tools import tool +from datetime import datetime, timezone +from google.oauth2.credentials import Credentials +from google_auth_oauthlib.flow import InstalledAppFlow +from google.auth.transport.requests import Request +from googleapiclient.discovery import build +from rag.split_docs import load_split_docs +from rag.llm import load_llm_openai +from rag.embeddings import load_embeddins +from rag.retriever import create_retriever +from rag.vectorstore import create_verctorstore +from rag.rag_chain import create_rag_chain +from datetime import datetime +import pytz +import telebot +import os + + +class LangChainTools: + def load_llm_openai(self): + load_dotenv() + # model = "gpt-3.5-turbo-0125" + # model = "gpt-4o" + model = "gpt-4o-mini" + + llm = ChatOpenAI( + model=model, + temperature=0.1, + max_tokens=2000, + ) + return llm + + +@tool +def multiply(first_int: int, second_int: int) -> int: + """Multiply two integers together.""" + return first_int * second_int + + +@tool +def redact_email(topic: str) -> str: + """Use this tool to draft the content of an email based on a topic.""" + + # Load LLM model + langChainTools = LangChainTools() + + llm = langChainTools.load_llm_openai() + # Create prompt for the LLM + prompt = ( + "Please redact a email based on the topic:\n\n" + "Topic: {}\n\n" + "Email Content: [Your email content here]" + ).format(topic) + + response = llm.invoke(prompt) + return response + + +@tool +def list_calendar_events(max_results: int = 50) -> list: + """Use this tool to list upcoming calendar events.""" + + # Define los alcances que necesitamos para acceder a la API de Google Calendar + SCOPES = ['https://www.googleapis.com/auth/calendar'] + + creds = None + + # La ruta al archivo token.json, que contiene los tokens de acceso y actualización + token_path = 'token_2.json' + + # La ruta al archivo de credenciales de OAuth 2.1 + creds_path = 'credentials_2.json' + + # Cargar las credenciales desde el archivo token.json, si existe + if os.path.exists(token_path): + creds = Credentials.from_authorized_user_file(token_path, SCOPES) + + # Si no hay credenciales válidas disponibles, inicia el flujo de OAuth 2.0 para obtener nuevas credenciales + if not creds or not creds.valid: + if creds and creds.expired and creds.refresh_token: + creds.refresh(Request()) + else: + flow = InstalledAppFlow.from_client_secrets_file( + creds_path, SCOPES) + creds = flow.run_local_server(port=0) + + # Guarda las credenciales para la próxima ejecución + with open(token_path, 'w') as token_file: + token_file.write(creds.to_json()) + + # Construye el objeto de servicio para interactuar con la API de Google Calendar + service = build('calendar', 'v3', credentials=creds) + + # Identificador del calendario que deseas consultar. 'primary' se refiere al calendario principal del usuario. + calendar_id = 'primary' + + # Realiza una llamada a la API para obtener una lista de eventos. + now = datetime.now(timezone.utc).isoformat() # 'Z' indica UTC + events_result = service.events().list( + calendarId=calendar_id, timeMin=now, maxResults=max_results, singleEvents=True, + orderBy='startTime').execute() + + # Extrae los eventos de la respuesta de la API. + events = events_result.get('items', []) + + # Si no se encuentran eventos, imprime un mensaje. + if not events: + print('No upcoming events found.') + return + + # Recorre la lista de eventos y muestra la hora de inicio y el resumen de cada evento. + for event in events: + # Obtiene la fecha y hora de inicio del evento. Puede ser 'dateTime' o 'date'. + start = event['start'].get('dateTime', event['start'].get('date')) + # Imprime la hora de inicio y el resumen (título) del evento. + print(start, event['summary']) + + return events + + +@tool +def create_calendar_event( + title: str, start_time: datetime, + end_time: datetime, attendees: list) -> dict: + """Use this tool to create an event in the calendar. + + Parameters: + - title: str - The title of the event. + - start_time: datetime - The start time of the event. + - end_time: datetime - The end time of the event. + - attendees: list - A list of attendee emails (required). + + Returns: + - dict - The created event details. + """ + + if not attendees: + raise ValueError( + "El campo 'attendees' es obligatorio y no puede estar vacío.") + + SCOPES = ['https://www.googleapis.com/auth/calendar'] + creds = None + + # La ruta al archivo token.json, que contiene los tokens de acceso y actualización + token_path = 'token_2.json' + + # La ruta al archivo de credenciales de OAuth 2.0 + creds_path = 'credentials_2.json' + + # Cargar las credenciales desde el archivo token.json, si existe + if os.path.exists(token_path): + creds = Credentials.from_authorized_user_file(token_path, SCOPES) + + # Si no hay credenciales válidas disponibles, inicia el flujo de OAuth 2.0 para obtener nuevas credenciales + if not creds or not creds.valid: + if creds and creds.expired and creds.refresh_token: + creds.refresh(Request()) + else: + flow = InstalledAppFlow.from_client_secrets_file( + creds_path, SCOPES) + creds = flow.run_local_server(port=0) + + # Guarda las credenciales para la próxima ejecución + with open(token_path, 'w') as token_file: + token_file.write(creds.to_json()) + + # Construye el objeto de servicio para interactuar con la API de Google Calendar + service = build('calendar', 'v3', credentials=creds) + + # Validar y filtrar asistentes + valid_attendees = [] + for email in attendees: + if isinstance(email, str) and '@' in email: + valid_attendees.append({'email': email}) + else: + raise ValueError(f"'{email}' no es un correo electrónico válido.") + + # Identificador del calendario que deseas modificar. 'primary' se refiere al calendario principal del usuario. + calendar_id = 'primary' + + # Define el cuerpo del evento con el título, la hora de inicio y la hora de finalización + event = { + 'summary': title, + 'start': { + 'dateTime': start_time.strftime('%Y-%m-%dT%H:%M:%S'), + 'timeZone': 'America/Bogota', + }, + 'end': { + 'dateTime': end_time.strftime('%Y-%m-%dT%H:%M:%S'), + 'timeZone': 'America/Bogota', + }, + 'attendees': valid_attendees + } + + try: + # Crea el evento en el calendario + event = service.events().insert(calendarId=calendar_id, body=event).execute() + print('Event created: %s' % (event.get('htmlLink'))) + except Exception as e: + print(f"Error al crear el evento: {e}") + return {} + + return event + + +@tool +def create_quick_add_event(quick_add_text: str): + """Use this tool to create events in the calendar from natural language, + using the Quick Add feature of Google Calendar. + """ + quick_add_text: str = input( + "- Escribe la descripcion del evento que quieres crear: ") + SCOPES = ['https://www.googleapis.com/auth/calendar'] + + creds = None + + # La ruta al archivo token.json, que contiene los tokens de acceso y actualización + token_path = 'token_2.json' + + # La ruta al archivo de credenciales de OAuth 2.0 + creds_path = 'credentials_2.json' + + # Cargar las credenciales desde el archivo token.json, si existe + if os.path.exists(token_path): + creds = Credentials.from_authorized_user_file(token_path, SCOPES) + + # Si no hay credenciales válidas disponibles, inicia el flujo de OAuth 2.0 para obtener nuevas credenciales + if not creds or not creds.valid: + if creds and creds.expired and creds.refresh_token: + creds.refresh(Request()) + else: + flow = InstalledAppFlow.from_client_secrets_file( + creds_path, SCOPES) + creds = flow.run_local_server(port=0) + + # Guarda las credenciales para la próxima ejecución + with open(token_path, 'w') as token_file: + token_file.write(creds.to_json()) + + # Construye el objeto de servicio para interactuar con la API de Google Calendar + service = build('calendar', 'v3', credentials=creds) + + # Identificador del calendario que deseas modificar. 'primary' se refiere al calendario principal del usuario. + calendar_id = 'primary' + + # Crea el evento utilizando la funcionalidad Quick Add + event = service.events().quickAdd( + calendarId=calendar_id, text=quick_add_text).execute() + + print('Event created: %s' % (event.get('htmlLink'))) + + return event + + +# @tool +# def send_message(message: str): +# """Use this function when you need to communicate with the user.""" +# # Configuración del bot +# load_dotenv() +# API_TOKEN_BOT = os.getenv("API_TOKEN_BOT") +# bot = telebot.TeleBot(API_TOKEN_BOT) +# +# bot.send_message(chat_id="5076346205", text=message) +# + +@tool +def send_message(message: str): + """Use this function when you need to communicate with Cristian.""" + # Configuración del bot + load_dotenv() + API_TOKEN_BOT = os.getenv("API_TOKEN_BOT") + bot = telebot.TeleBot(API_TOKEN_BOT) + + # Escapar caracteres especiales en Markdown + from telebot.util import escape_markdown + safe_message = escape_markdown(message) + + # Enviar mensaje usando MarkdownV2 + bot.send_message(chat_id="5076346205", text=safe_message, + parse_mode="Markdown") + + +@tool +def get_company_info(prompt: str) -> str: + """Use this function when you need more information about the services offered by OneCluster.""" + file_path: str = 'onecluster_info.pdf' + + docs_split: list = load_split_docs(file_path) + embeddings_model = load_embeddins() + llm = load_llm_openai() + create_verctorstore( + docs_split, + embeddings_model, + file_path + ) + retriever = create_retriever( + embeddings_model, + persist_directory="embeddings/onecluster_info" + ) + qa = create_rag_chain( + llm, retriever) + + # prompt: str = "Escribe un parrarfo describiendo cuantos son y cuales son los servicios que ofrece OneCluster y brinda detalles sobre cada uno." + response = qa.invoke( + {"input": prompt, "chat_history": []} + ) + + return response["answer"] + + +@tool +def get_current_date_and_time(): + """ + Use this function when you need to know the current date and time. + + Returns: + str: Current date and time in Bogotá, Colombia. + """ + bogota_tz = pytz.timezone('America/Bogota') + current_date_and_time = datetime.now(bogota_tz) + return current_date_and_time.strftime('%Y-%m-%d %H:%M:%S') diff --git a/langchain_tools/agents.py b/langchain_tools/agents.py new file mode 100644 index 0000000..b96f9c9 --- /dev/null +++ b/langchain_tools/agents.py @@ -0,0 +1,83 @@ +from langchain_core.tools import tool +from langchain_community.tools.gmail.utils import ( + build_resource_service, + get_gmail_credentials, +) +from langchain_community.agent_toolkits import GmailToolkit +from langchain import hub +from langchain_community.tools.tavily_search import TavilySearchResults +from dotenv import load_dotenv +from langchain.agents import AgentExecutor, create_openai_functions_agent +from langchain_tools.agent_tools import ( + multiply, redact_email, list_calendar_events, + create_calendar_event, create_quick_add_event, + send_message, get_company_info, + get_current_date_and_time +) + + +class AgentTools: + + def load_tools(self) -> list: + + toolkit = GmailToolkit() + + # Can review scopes here https://developers.google.com/gmail/api/auth/scopes + # For instance, readonly scope is 'https://www.googleapis.com/auth/gmail.readonly' + credentials = get_gmail_credentials( + token_file="token.json", + scopes=["https://mail.google.com/"], + client_secrets_file="credentials.json",) + api_resource = build_resource_service(credentials=credentials) + toolkit = GmailToolkit(api_resource=api_resource) + + # creamos la lista de herramientas de gmail + tools = toolkit.get_tools() + + load_dotenv() + + # Agregamos otras tools + search = TavilySearchResults(max_results=1) + + tools.append(search) + tools.append(multiply) + tools.append(redact_email) + tools.append(list_calendar_events) + tools.append(create_calendar_event) + tools.append(send_message) + tools.append(get_company_info), + tools.append(get_current_date_and_time) + # tools.append(create_quick_add_event) + + return tools + + def load_agent(self, llm, tools): + instructions = """ +You are the virtual assistant of OneCluster, a company specialized in providing custom development services focused on creating personalized technological solutions for businesses and companies. Your mission is to offer a warm, friendly, and collaborative service that always reflects OneCluster's core values. + +**User Interactions:** +1. **Initial Greeting:** When starting an interaction with a user, greet them courteously and identify who you have the pleasure of speaking with. Once you know the user's name, address them respectfully throughout the conversation. + +2. **Providing Information:** You have the ability to offer clear and detailed information about the services provided by OneCluster. Make sure to be concise yet informative, adapting the information to the user's needs. + +3. **Appointment Scheduling:** You are responsible for scheduling appointments for clients. Before confirming an appointment, always check the availability on OneCluster's calendar to ensure there is space, and check the current date and time so that you have a clear sense of time. Request an email address from the user to schedule the appointment. + +4. **Handling Unanswered Questions:** If you do not know how to answer a question, politely ask for the client's contact information and clearly identify the problem to be resolved. Then, send this information to oneclustererp@gmail.com with the subject "Unresolved customer query by the agent." Inform the client that you do not have the information at your disposal but that you can escalate the request to the support team, who will respond promptly. + +**Style and Tone:** +Maintain a tone that is always friendly, approachable, and professional. Each interaction should reflect OneCluster's commitment to innovation, adaptability, and ongoing collaboration. +""" + + base_prompt = hub.pull("langchain-ai/openai-functions-template") + + prompt = base_prompt.partial(instructions=instructions) + + agent = create_openai_functions_agent(llm, tools, prompt) + + agent_executor = AgentExecutor( + agent=agent, + tools=tools, + verbose=True, + ) + + return agent_executor diff --git a/langchain_tools/llm_models.py b/langchain_tools/llm_models.py new file mode 100644 index 0000000..e69de29 diff --git a/oc_assistant.py b/oc_assistant.py new file mode 100644 index 0000000..9b6d337 --- /dev/null +++ b/oc_assistant.py @@ -0,0 +1,109 @@ +from langchain_community.tools.tavily_search import TavilySearchResults +from typing import Annotated +from typing_extensions import TypedDict +from langgraph.graph.message import add_messages +from langchain_openai import ChatOpenAI +from dotenv import load_dotenv +from langgraph.prebuilt import create_react_agent +from langchain_core.prompts import ChatPromptTemplate +from langgraph.checkpoint.memory import MemorySaver +from langchain_tools.agent_tools import ( + redact_email, list_calendar_events, + create_calendar_event, + get_company_info, + get_current_date_and_time +) +from langchain_community.tools.gmail.utils import ( + build_resource_service, + get_gmail_credentials, +) +from langchain_community.agent_toolkits import GmailToolkit + + +load_dotenv() + + +# Inicialiamos un LLM de OpenaIA +llm = ChatOpenAI( + model="gpt-4o-mini", + temperature=0.9 +) + +toolkit = GmailToolkit() + +# Can review scopes here https://developers.google.com/gmail/api/auth/scopes +# For instance, readonly scope is 'https://www.googleapis.com/auth/gmail.readonly' +credentials = get_gmail_credentials( + token_file="token.json", + scopes=["https://mail.google.com/"], + client_secrets_file="credentials.json", +) +api_resource = build_resource_service(credentials=credentials) +toolkit = GmailToolkit(api_resource=api_resource) + +# creamos la lista de herramientas de gmail +tools = toolkit.get_tools() + +search = TavilySearchResults(max_results=2) +tools.append(search) +tools.append(redact_email) +tools.append(list_calendar_events) +tools.append(create_calendar_event) +tools.append(get_company_info) +tools.append(get_current_date_and_time) + +system_prompt = ChatPromptTemplate.from_messages( + [ + ("system", "Eres Mariana, el asistente virtual de OneCluster, una empresa de software que ofrece soluciones personalizadas. Asume el tono de J.A.R.V.I.S.: cordial, atento y con tacto en todo momento."), + + # Instrucciones sobre presentación y tono + ("system", "Preséntate como Mariana en el primer mensaje y pregunta el nombre del usuario si no lo tienes registrado."), + ("system", "Si el usuario ya ha interactuado antes, usa su nombre sin necesidad de volver a preguntar."), + ("system", "Si el primer mensaje del usuario es una solicitud, pregúntale su nombre antes de responder si aún no lo conoces."), + + # Instrucciones sobre el manejo de solicitudes y tareas + ("system", "OneCluster es una empresa de software especializada en desarrollo a medida. Solo responde a preguntas y solicitudes relacionadas con la empresa y sus servicios."), + ("system", "Si necesitas información adicional sobre la empresa, usa la función get_company_info."), + ("system", "Antes de enviar correos o crear eventos, muestra los detalles al usuario para que los confirme antes de ejecutar la tarea."), + + # Cómo manejar preguntas fuera del alcance + ("system", "Si te preguntan algo no relacionado con los servicios de OneCluster, responde que solo puedes ayudar con temas relacionados con la empresa y sus soluciones."), + + # Prohibición de revelar herramientas internas + ("system", "Evita mencionar o hacer alusión a las herramientas que utilizas internamente. Esa información es confidencial."), + + # Placeholder para el contenido dinámico de la conversación + ("placeholder", "{messages}"), + ] +) + + +class State(TypedDict): + messages: Annotated[list, add_messages] + is_last_step: bool # Cambiar a booleano si es necesario + + +# Creamos el graph con el estado definido +graph= create_react_agent( + model = llm, tools = tools, state_schema = State, + state_modifier = system_prompt, + checkpointer = MemorySaver() +) + +config= {"configurable": {"thread_id": "thread-1", "recursion_limit": 50}} + + +while True: + user_input = input("User: ") + if user_input.lower() in ["quit", "exit", "q"]: + print("Goodbye!") + break + + events = graph.stream( + {"messages": [("user", user_input)], + "is_last_step": False}, + config, stream_mode = "updates") + + for event in events: + if "agent" in event: + print(f"\nAsistente: {event["agent"]["messages"][-1].content}\n") diff --git a/onecluster_bot.py b/onecluster_bot.py new file mode 100644 index 0000000..7cdf82a --- /dev/null +++ b/onecluster_bot.py @@ -0,0 +1,109 @@ +import telebot +from dotenv import load_dotenv +import os +from api_openai.whisper import whisper_api, tts_api +from langchain_tools.agent_tools import LangChainTools +from langchain_tools.agents import AgentTools +from langchain_core.messages import AIMessage, HumanMessage +# from tools.scaped import scaped + +# Configuración del bot +load_dotenv() +API_TOKEN_BOT = os.getenv("API_TOKEN_BOT") +bot = telebot.TeleBot(API_TOKEN_BOT) + +# Handle '/start' and '/help' +wellcome = "¡Bienvenido! ¿Cómo puedo ayudarte?" + + +@bot.message_handler(commands=['help', 'start']) +def send_welcome(message): + bot.reply_to(message, wellcome, parse_mode="Markdown") + + +# Creamos una lista para el historial fuera de las funciones +history = [] + + +@bot.message_handler(content_types=["text", "voice"]) +def bot_mensajes(message): + global history # Para acceder a la variable global 'history' + + # Si el mensaje es una nota de voz + if message.voice: + user_name = message.from_user.first_name + file_info = bot.get_file(message.voice.file_id) + downloaded_file = bot.download_file(file_info.file_path) + file_path = "audios/nota_de_voz.ogg" + + with open(file_path, 'wb') as new_file: + new_file.write(downloaded_file) + + pregunta_usuario = whisper_api(file_path) + print(f"Pregunta del usuario: {pregunta_usuario}") + langChainTools = LangChainTools() + llm = langChainTools.load_llm_openai() + + agentTools = AgentTools() + tools = agentTools.load_tools() + agent_executor = agentTools.load_agent(llm, tools) + + respuesta_agente = agent_executor.invoke( + { + "input": pregunta_usuario, + "chat_history": history, + } + ) + + bot.send_message(message.chat.id, respuesta_agente["output"], + parse_mode="Markdown") + + path_voice: str = tts_api(respuesta_agente["output"]) + with open(path_voice, 'rb') as voice: + bot.send_voice(message.chat.id, voice=voice) + + history.append(HumanMessage(content=pregunta_usuario)) + history.append(AIMessage(content=respuesta_agente["output"])) + + # Si el mensaje es de texto + if message.text: + pregunta_usuario = message.text + langChainTools = LangChainTools() + llm = langChainTools.load_llm_openai() + + agentTools = AgentTools() + tools = agentTools.load_tools() + agent_executor = agentTools.load_agent(llm, tools) + + respuesta_agente = agent_executor.invoke( + { + "input": pregunta_usuario, + "chat_history": history, + } + ) + + # texto_respuesta: str = scaped(respuesta_agente["output"]) + texto_respuesta: str = respuesta_agente["output"] + bot.send_message( + message.chat.id, texto_respuesta, + parse_mode="Markdown") + + # Mandar mensaje de voz + # path_voice: str = tts_api(respuesta_agente["output"]) + # with open(path_voice, 'rb') as voice: + # bot.send_voice(message.chat.id, voice=voice) + + history.append(HumanMessage(content=pregunta_usuario)) + history.append(AIMessage(content=respuesta_agente["output"])) + # print(history) + + # Enviar el historial después de cada interacción + # bot.send_message(message.chat.id, history) + + +# while True: +# time.sleep(60) +# mensaje = 'Que mas pues!!' +# bot.send_message('5076346205', mensaje) + +bot.infinity_polling() diff --git a/prueba_rag.py b/prueba_rag.py new file mode 100644 index 0000000..bdadcb6 --- /dev/null +++ b/prueba_rag.py @@ -0,0 +1,32 @@ +from rag.split_docs import load_split_docs +from rag.llm import load_llm_openai +from rag.embeddings import load_embeddins +from rag.retriever import create_retriever +from rag.vectorstore import create_verctorstore +from rag.rag_chain import create_rag_chain + +dir_pdfs: str = 'documents/pdfs/' +file_name: str = 'onecluster_info.pdf' +file_path: str = 'onecluster_info.pdf' + +docs_split: list = load_split_docs(file_path) +embeddings_model = load_embeddins() +llm = load_llm_openai() +create_verctorstore( + docs_split, + embeddings_model, + file_path +) +retriever = create_retriever( + embeddings_model, + persist_directory="embeddings/onecluster_info" +) +qa = create_rag_chain( + llm, retriever) + +prompt: str = "Dame información detallada sobre los sercivios que ofrese OneCluster." +respuesta = qa.invoke( + {"input": prompt, "chat_history": []} +) + +print(respuesta["answer"]) diff --git a/rag/__init__.py b/rag/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rag/__pycache__/__init__.cpython-312.pyc b/rag/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..64ed61bb73fcdf75065e427d9a0b75b0668f426e GIT binary patch literal 174 zcmX@j%ge<81ea95rGeFpT$EXoUzC}zUr>}^nVMXZUmTy4ldGSfmztbYT3nJ^6rWgJoC##)mFO2G urt8PYXXa&=#K-FuRQ}?y$<0qG%}KQ@Vg;Jc2*kx8#z$sGM#ds$APWG4-!3Bn literal 0 HcmV?d00001 diff --git a/rag/__pycache__/embeddings.cpython-312.pyc b/rag/__pycache__/embeddings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6987f37853d9fa521ce98349b17de12bb22fd21f GIT binary patch literal 493 zcmX|8y-UMD6u-+ysn*s`ItU_Sp&4qRE*(U0=-^;GxOE9JIn%%;SMIK2MWI9ghpw)r z{wFRXPQikpi-RBp96I?fZGCXR_j`Bm`<{x$bp-NK`MvrE{h^GNXiJjr0~sS9`Iw>z zcQ965qgteQbm003b&P>wnO`cv!byQL*LQp-Nqh}vx!oi2=~*+nB)%WUf$)}zGo=Hn zlhy&oNaE}kV7eqw0pBC3d@{L1kJ@zUb%89sb-N|WjjWMX{@PJZL@uQhoR|^w3AHq? zqPd|U2Ow1V-n?yhSw!rJ#evJ~jfUM69uFnsA+vj&4TvY1a43yz788&5g(Tc@g$RMf z(&lbp{}&a9y+KmS24CF?z6NDXRc{+$h~A9N(fRwv!La#R*mh*ouOKq JGqIIL`~jH1c#;4B literal 0 HcmV?d00001 diff --git a/rag/__pycache__/llm.cpython-312.pyc b/rag/__pycache__/llm.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..935a7ab60a753ecd663d58bb7b3139a396eaf1ac GIT binary patch literal 542 zcmXw0%Ss$U6umY5P^M=xf`Z^8h!B!qn1G-gPV}m(8N{TxEq*|g{$0Z#{+fmxmEX3b?Um?Z3E)hvwxp=2*4i~Jfbxx zvkfGtkV8&52+}9S@fL3hukRuEPN46P{5ZIC1u>~3u4ta-$};&C!}jig+D{de@7`zg zmW>P0dbnmgXimZ6{0CgjJ@zKYU|mjwBb=Ihm;S|k=a?LkLx_We?@>|N%`LSlN?8_X zKOC;!mOmHpI$j+Jl`~#PmWhgKYKNNDZ9%`KR()a8#4YXmX&(*p5MAwYE{uEs`uhET zGEjmgLdk;aSKHgkp2>7+l`d6MX*FV*RVKxPL`jzMp|MP-)R+>9w27ugf`>1wQQd2F z!5~$r1}$}j6Pya>1)4GZ_IoEEry+FL#(THzmC2Lk$;#?vdG+stABE%HX$LyJ@rN1a z!a*F=;e*1>?dv5@WswbNDIc4=_cRmEL3bQ?KYhRW8r2wb_C_yZ=p;9eOg%!#4LrSp L=d-XwdQHWDww8xp literal 0 HcmV?d00001 diff --git a/rag/__pycache__/rag_chain.cpython-312.pyc b/rag/__pycache__/rag_chain.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19589a78bb32f1fe4a9878ba89f92097d7c8a3d7 GIT binary patch literal 1819 zcma)6O>f*p7`E45?qi@gcP;>4hRFs3C=L=w7U;Jzh_1&unJK zUAE0iJ#gS3a6;mW@(21KxVYrd$|9l?T)0Kr3Z$NR$M!A-f?%Ze&b;%^^FHtA_p`Ip z2CN^>{}%l27{<@~FkY2%Gr9tsuMOYu&B%z&j%n(BC91?$$BONaou4hZt9GjS-j1BO z)~Uh1`lZpS51eN0R}I!QvsF(JtcV*@skj)pxQ_*K1yO>MyF@fA*-P(*SnUWN_tY+l zdl6`7r>_$!ahJ%Q2zw;tkq@e7wpfCd&vE2>A*Kv&mdhKdk|1z>?jyflXuWx_UJw_nsOWqxJ95>!;RJQ}`rQ0n`3cd{Q^sy5cxH}=ha>p)w9 zHMITeu=<}is{g}=qoxW>!vGu3LCJPlQ!^8}yfurU;=DCp*y`2Dm zU^p>OfnI;&gev+#N)U^N&fP~N41%>V~-p_Fhs~ac}gv0|7LZbhwSiIlW2`8+pLTy`f zDx)eP_K~ksBB6z-N1=a^X5#w-nh}Zt5UB(OO&@$Cei8hbV5UU{rHIB5TCgl6i2_|D zg|*!Jw2sF8vVew7N7zud*=zvK@5W`v3*Bf!_m0pFC3L?w>zNfraW*xMmB>~~lmtig z9&z{FB8zS>A0#j-iYlF4m-3~5nM2v!9{wA|6iCWf3*&Ngi(nOFMb?2@kza(KZ?{7p zlXlEm7mGJ9UTnWFJwajSQQiia0r3=G z*X*h3k>#v9sr~A+Q^wlXllsh8H`6n%kyTj(;o0M9=gfR+zYLf2uRWgId^ES216@cP zub%)k?>x8$swa|>2(xZJqg(k` z=84S~Ct}y*g0zY-%e)+l{Ohb|=O$|9>z2pkTa=MM2YgW@Ix^oGVhR4l0(_p=-;KGS mMC6KChNB+WQePfhrfD7-mwz%oIx^lmGCm$T>*l9s{_qcJA|b^9 literal 0 HcmV?d00001 diff --git a/rag/__pycache__/retriever.cpython-312.pyc b/rag/__pycache__/retriever.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d871bf9989daa9ee4f0c14129559267c168bee79 GIT binary patch literal 573 zcmZ8eJ!>055Z%2y31giS#Wn#aDGox4Bj5v93K%y|AeA7vb91bB*Qbr|ZpG}%j))8{ z{2%-il3*A5A8Bk{#2lnbv}$ zX0I@u55o+td1V8 z4A6YE*?V-S#8M13#&k^1>DfK^$Qyf~9q&H~?5yZ{aCTp}P2xr`_Q1(jOS0INLZ~uJ z_l706N|zPgziHwd4%jx50q>{#hYT`{pAA8s<)P;h^3^>>9_9 zqUg4l^mQSVLYEnX^=>!$U^pn;ROw^@dgS;f&GRDBrR4e0SP3aJ?kKXf39u}A?6@`< zRUHnJS@~}ac!HhWMrIA&F`0*?^Zfe7+v}Ha<_*8oJpMQhNx1T>6;E9|6sgcgce}7rXfe#?CM;v>ZfjQ1 WO?^t~Z}NKD4C%Yc)|_CdtNsGRgOjEJ literal 0 HcmV?d00001 diff --git a/rag/__pycache__/split_docs.cpython-312.pyc b/rag/__pycache__/split_docs.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0cdbb663af223d932c24074b920039452005ac5 GIT binary patch literal 962 zcmZ8f&1(}u6rcUbCT(4+NSfB#QW3$Rc0m*>i1<;97C(v#g-~6V-AS`?Kf=sxF|vU@ z_zx5h>9NO3JoIny>ZRI)VYDFFi?=|Fhn{?sO;YHCdG9x0@BQ9y=Bus`Be3t6{*`aZ z2>lV0zNtNMa05USImnSbjGFU6Cj`l$1?U zmU?VN$iPrw9DD)SL=1dtRp{ZQRmJHO=17hlqn5}4){s~>MF_=Gt5>NZ$8vS3zkVEB zJ=jnjr2$?~VbEef}(a>V8s`vMfW2_8nWaI2hRMenjC$u9U2aIyH=9HQX#83 z$Y0D6p-4~T?nOw;v_^{Y9yHlEjt(l%3JvS<$j}1QzRxNUU zZq9f}ZQ`%aVIA8nq^9TjMi^k*izs9>ElOPg0W*lTY7F?%*;<{C3NC3S!I_c* zl+$3)H{cSqpD#3**O!|s>nodAw$`@myZL*`<6rvt#>B3EFpZb+>RcS^Pbc-%;}iPyrQl{IX{S zt9He51Je$DKMGt{pY021reXnEr<{si7#yEv@QqXQ&}UbFatd;Cg))%WgRZ;%d_rU# zmdO~nqugyjbRrMmA=5AwzmHx3*HI)%+Cz8u(EXoisH5r9*aqz&2%GFsgl>xeJ<cCu_Y!dA zNGWJirA&d4QU;kHkdmIpCPOFX6GV)jJgRfF;freI-WKIf!L~Clt(f{Tpl|lY* z^d3;NXV-L+Y3Q%OYi$iB{UJfkIN1+?TJGOi12ucx_*hct=WD}#?~iSu257*yMzhCd zEmH?|U}hIq(M(Lr0th%MpuJk4!4f6J3oG0*b#XSPjC(w>iN~m$M651y@&uOy8YW!i z2Aj>S$TAxHj!Q+xkDgN|w1^87J4sa-^o4}rOtluL%JL%Y0fuQXHMPhOpg2<(AhKjB zy&9(8gcw>$yOSlZPG&NdqbF813aAxCVZ~v$OC{?ecbO+idXW{gsIE%5?fZchh1B(z zc|w`(a5aylZ!xE09m8^2LucZ;z%HXsLhTjG)UausU636WC0>?l9qi-F9X#E})7#H> zp6=mW9b9VT(k|Y0_wc`9>G{hO-2`g^Z@j}~8A8>kx?6k}Z zWT0Psk%CZ@C%sw1ae&?5A)j(x list: + + file_path: str = os.path.join("documents", "pdfs", file_name) + loader = PyPDFLoader(file_path) + docs: list = loader.load() + chunk_size: int = 2000 + chunk_overlap: int = 300 + + splitter = RecursiveCharacterTextSplitter( + chunk_size=chunk_size, chunk_overlap=chunk_overlap + ) + docs_split: list = splitter.split_documents(docs) + + return docs_split diff --git a/rag/vectorstore.py b/rag/vectorstore.py new file mode 100644 index 0000000..b4245c0 --- /dev/null +++ b/rag/vectorstore.py @@ -0,0 +1,15 @@ +from langchain_chroma import Chroma +import os + + +def create_verctorstore(docs_split: list, embeddings, file_name: str): + db_name: str = file_name.replace(".pdf", "").replace(" ", "_").lower() + + persist_directory: str = f"embeddings/{db_name}" + + if not os.path.exists(persist_directory): + vectordb = Chroma.from_documents( + persist_directory=persist_directory, + documents=docs_split, + embedding=embeddings, + ) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6c8255c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,140 @@ +aiohappyeyeballs==2.4.0 +aiohttp==3.10.6 +aiosignal==1.3.1 +annotated-types==0.7.0 +anyio==4.6.0 +asgiref==3.8.1 +attrs==24.2.0 +backoff==2.2.1 +bcrypt==4.2.0 +beautifulsoup4==4.12.3 +blinker==1.8.2 +build==1.2.2.post1 +cachetools==5.5.0 +certifi==2024.8.30 +charset-normalizer==3.3.2 +chroma-hnswlib==0.7.3 +chromadb==0.5.3 +click==8.1.7 +coloredlogs==15.0.1 +dataclasses-json==0.6.7 +Deprecated==1.2.14 +distro==1.9.0 +durationpy==0.9 +fastapi==0.115.4 +filelock==3.16.1 +Flask==3.0.3 +flatbuffers==24.3.25 +frozenlist==1.4.1 +fsspec==2024.10.0 +google==3.0.0 +google-api-core==2.19.0 +google-api-python-client==2.131.0 +google-auth==2.29.0 +google-auth-httplib2==0.2.0 +google-auth-oauthlib==1.2.0 +googleapis-common-protos==1.63.0 +greenlet==3.1.1 +grpcio==1.67.0 +h11==0.14.0 +httpcore==1.0.5 +httplib2==0.22.0 +httptools==0.6.4 +httpx==0.27.2 +huggingface-hub==0.26.2 +humanfriendly==10.0 +idna==3.10 +importlib_metadata==8.4.0 +importlib_resources==6.4.5 +itsdangerous==2.2.0 +Jinja2==3.1.4 +jiter==0.5.0 +jsonpatch==1.33 +jsonpointer==3.0.0 +kubernetes==31.0.0 +langchain==0.3.1 +langchain-chroma==0.1.4 +langchain-community==0.3.1 +langchain-core==0.3.6 +langchain-openai==0.2.0 +langchain-text-splitters==0.3.0 +langgraph==0.2.28 +langgraph-checkpoint==1.0.11 +langsmith==0.1.128 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +marshmallow==3.22.0 +mdurl==0.1.2 +mmh3==5.0.1 +monotonic==1.6 +mpmath==1.3.0 +msgpack==1.1.0 +multidict==6.1.0 +mypy-extensions==1.0.0 +numpy==1.26.4 +oauthlib==3.2.2 +onnxruntime==1.19.2 +openai==1.48.0 +opentelemetry-api==1.27.0 +opentelemetry-exporter-otlp-proto-common==1.27.0 +opentelemetry-exporter-otlp-proto-grpc==1.27.0 +opentelemetry-instrumentation==0.48b0 +opentelemetry-instrumentation-asgi==0.48b0 +opentelemetry-instrumentation-fastapi==0.48b0 +opentelemetry-proto==1.27.0 +opentelemetry-sdk==1.27.0 +opentelemetry-semantic-conventions==0.48b0 +opentelemetry-util-http==0.48b0 +orjson==3.10.7 +overrides==7.7.0 +packaging==24.1 +posthog==3.7.0 +proto-plus==1.24.0 +protobuf==4.25.5 +pyasn1==0.6.1 +pyasn1_modules==0.4.1 +pydantic==2.9.2 +pydantic-settings==2.5.2 +pydantic_core==2.23.4 +Pygments==2.18.0 +pyparsing==3.1.4 +pypdf==5.1.0 +PyPika==0.48.9 +pyproject_hooks==1.2.0 +pyTelegramBotAPI==4.23.0 +python-dateutil==2.9.0.post0 +python-dotenv==1.0.1 +pytz==2024.2 +PyYAML==6.0.2 +regex==2024.9.11 +requests==2.32.3 +requests-oauthlib==2.0.0 +rich==13.9.3 +rsa==4.9 +setuptools==75.2.0 +shellingham==1.5.4 +six==1.16.0 +sniffio==1.3.1 +soupsieve==2.6 +SQLAlchemy==2.0.35 +starlette==0.41.2 +sympy==1.13.3 +telebot==0.0.5 +tenacity==8.5.0 +tiktoken==0.7.0 +tokenizers==0.20.1 +tqdm==4.66.5 +typer==0.12.5 +typing-inspect==0.9.0 +typing_extensions==4.12.2 +uritemplate==4.1.1 +urllib3==2.2.3 +uvicorn==0.32.0 +uvloop==0.21.0 +watchfiles==0.24.0 +websocket-client==1.8.0 +websockets==13.1 +Werkzeug==3.0.4 +wrapt==1.16.0 +yarl==1.12.1 +zipp==3.20.2 diff --git a/token.json b/token.json new file mode 100644 index 0000000..5bad47e --- /dev/null +++ b/token.json @@ -0,0 +1 @@ +{"token": "ya29.a0AeDClZBjncDp4ZwNKNtQ5ghKHPr1IT4XkgDc9QtvhPLrFGAR84f5r5iZPCd91VB7_WoJCG3iGQS0MU1n01xdRlEjDl7wVlKjKF0H680Bdim_bzykCXn3Jj0nVVkkHDOZP7RWeP1oAfY7Vjd4qbw_VxOdOzVzG_Bc6Auy4EJINAaCgYKAcYSARASFQHGX2MipaJllxIRMLCcZb2csCZECA0177", "refresh_token": "1//05nbircha66xlCgYIARAAGAUSNwF-L9IrxbE2v7kfLwXb4u0pD6Rin7xEBOTT83DeH7t2ttfD5CDmUCyhDsOaVRMRK_r8UtdoMq8", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "19011937557-bi5nh4afvg4tuqr87v6dp55qj9a9o1h2.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://mail.google.com/"], "universe_domain": "googleapis.com", "account": "", "expiry": "2024-10-30T01:16:56.882894Z"} \ No newline at end of file diff --git a/token_2.json b/token_2.json new file mode 100644 index 0000000..96f4f9d --- /dev/null +++ b/token_2.json @@ -0,0 +1 @@ +{"token": "ya29.a0AeDClZChMN7SEvjp3dFVZtee2pDoqAoPFC7AWiEeIG7H6qN2HDnf7c6DcFuc--aG60e1cAnOpoKf80H8aqrFFYbF4-F4LE_vz9MY8oc21Ra9PwM16FYxGGKcM2wcrrOGaFncs9Um9_yNxzAa6MUVNq88Y_Bhpr2F2mO3o53NjQaCgYKAZESARASFQHGX2Mi7EodrKchyiyPIZ4y5Lwh0Q0177", "refresh_token": "1//05CtNC-Z3ii8qCgYIARAAGAUSNwF-L9IrbOfrB0kNACEJ5HX4T-fmdNUqsGFqn1QFlvK_1L9h0emULUS1yU85IbaNyESXZSQzHU8", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "629922809906-pl9l1ipout6d5hh19ku50sfvnqgu8ir2.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://www.googleapis.com/auth/calendar"], "universe_domain": "googleapis.com", "account": "", "expiry": "2024-10-30T01:22:34.287442Z"} \ No newline at end of file