From ab5d4d0fe0ba413fbcc367474fd452615082e6ca Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sat, 29 Jun 2024 23:27:42 +0800 Subject: [PATCH 01/21] Add webui App --- app/__init__.py | 0 app/webui/README.md | 89 +++++++++++++++++++++ app/webui/__init__.py | 0 app/webui/app.py | 153 +++++++++++++++++++++++++++++++++++++ app/webui/image.png | Bin 0 -> 93607 bytes app/webui/patch.py | 135 ++++++++++++++++++++++++++++++++ app/webui/process.py | 128 +++++++++++++++++++++++++++++++ app/webui/requirements.txt | 12 +++ 8 files changed, 517 insertions(+) create mode 100644 app/__init__.py create mode 100644 app/webui/README.md create mode 100644 app/webui/__init__.py create mode 100644 app/webui/app.py create mode 100644 app/webui/image.png create mode 100644 app/webui/patch.py create mode 100644 app/webui/process.py create mode 100644 app/webui/requirements.txt diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/webui/README.md b/app/webui/README.md new file mode 100644 index 0000000..7d41b28 --- /dev/null +++ b/app/webui/README.md @@ -0,0 +1,89 @@ + +## Translation Agent WebUI + +This repository contains a Gradio web UI for a translation agent that utilizes various language models for translation. + +### Preview + +![webui](image.png) + +**Features:** + +- **Tokenized Text:** Displays translated text with tokenization, highlighting differences between original and translated words. +- **Document Upload:** Supports uploading various document formats (PDF, TXT, DOC, etc.) for translation. +- **Multiple API Support:** Integrates with popular language models like: + - Groq + - OpenAI + - Cohere + - Ollama + - Together AI + - Hugging Face Inference API + ... +Llama Index supported, easily extendable + + +**Getting Started** + +1. **Install Dependencies:** + **Linux(Using Python Venv)** + ```bash + git clone https://github.com/andrewyng/translation-agent.git + cd translation-agent + python -m venv web_ui + source web_ui/bin/activate + pip install -r app/webui/requirements.txt + + ``` + **Windows** + ```bash + git clone https://github.com/andrewyng/translation-agent.git + cd translation-agent + python -m venv web_ui + .\web_ui\Scripts\activate + pip install -r app/webui/requirements.txt + + ``` + +2. **Set API Keys:** + - Rename `.env.sample` to `.env`, you can add your API keys for each service: + + ``` + OPENAI_API_KEY="sk-xxxxx" # Keep this field + GROQ_API_KEY="xxxxx" + COHERE_API_KEY="xxxxx" + TOGETHER_API_KEY="xxxxx" + HF_TOKEN="xxxxx" + ``` + - Then you can also set the API_KEY in webui. + +3. **Run the Web UI:** + ```bash + python -m app.webui.app + ``` + +4. **Access the Web UI:** + Open your web browser and navigate to `http://127.0.0.1:7860/`. + +**Usage:** + +1. Select your desired translation API from the Endpoint dropdown menu. +2. Input the source language, target language, and country(optional). +3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox. +4. Input the source text or upload your document file. +5. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. + +**Customization:** + +- **Add New LLMs:** Modify the `patch.py` file to integrate additional LLMs. + +**Contributing:** + +Contributions are welcome! Feel free to open issues or submit pull requests. + +**License:** + +This project is licensed under the MIT License. + +**DEMO:** + +[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI) diff --git a/app/webui/__init__.py b/app/webui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/webui/app.py b/app/webui/app.py new file mode 100644 index 0000000..ccf0cb6 --- /dev/null +++ b/app/webui/app.py @@ -0,0 +1,153 @@ +import sys +import os + +# Add the project root to the Python path +project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) +sys.path.insert(0, project_root) + +import re +import gradio as gr +from app.webui.process import model_load, diff_texts, translator +from llama_index.core import SimpleDirectoryReader + +def huanik( + endpoint, + model, + api_key, + source_lang, + target_lang, + source_text, + country, + max_tokens, + context_window, + num_output, +): + + if not source_text or source_lang == target_lang: + raise gr.Error("Please check that the content or options are entered correctly.") + + try: + model_load(endpoint, model, api_key, context_window, num_output) + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") + + source_text = re.sub(r'\n+', '\n', source_text) + + init_translation, reflect_translation, final_translation = translator( + source_lang=source_lang, + target_lang=target_lang, + source_text=source_text, + country=country, + max_tokens=max_tokens, + ) + + final_diff = gr.HighlightedText( + diff_texts(init_translation, final_translation), + label="Diff translation", + combine_adjacent=True, + show_legend=True, + visible=True, + color_map={"removed": "red", "added": "green"}) + + return init_translation, reflect_translation, final_translation, final_diff + +def update_model(endpoint): + endpoint_model_map = { + "Groq": "llama3-70b-8192", + "OpenAI": "gpt-4o", + "Cohere": "command-r", + "TogetherAI": "Qwen/Qwen2-72B-Instruct", + "Ollama": "llama3", + "Huggingface": "mistralai/Mistral-7B-Instruct-v0.3" + } + return gr.update(value=endpoint_model_map[endpoint]) + +def read_doc(file): + docs = SimpleDirectoryReader(input_files=[file]).load_data() + return docs[0].text + +TITLE = """ +

Translation-Agent webUI

+""" + +CSS = """ + h1 { + text-align: center; + display: block; + height: 10vh; + align-content: center; + } + footer { + visibility: hidden; + } +""" + +with gr.Blocks(theme="soft", css=CSS, fill_height=True) as demo: + gr.Markdown(TITLE) + with gr.Row(): + with gr.Column(scale=1): + endpoint = gr.Dropdown( + label="Endpoint", + choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], + value="OpenAI", + ) + model = gr.Textbox(label="Model", value="gpt-4o", ) + api_key = gr.Textbox(label="API_KEY", type="password", ) + source_lang = gr.Textbox( + label="Source Lang", + value="English", + ) + target_lang = gr.Textbox( + label="Target Lang", + value="Spanish", + ) + country = gr.Textbox(label="Country", value="Argentina", max_lines=1) + with gr.Accordion("Advanced Options", open=False): + max_tokens = gr.Slider( + label="Max tokens Per Chunk", + minimum=512, + maximum=2046, + value=1000, + step=8, + ) + context_window = gr.Slider( + label="Context Window", + minimum=512, + maximum=8192, + value=4096, + step=8, + ) + num_output = gr.Slider( + label="Output Num", + minimum=256, + maximum=8192, + value=512, + step=8, + ) + with gr.Column(scale=4): + source_text = gr.Textbox( + label="Source Text", + value="How we live is so different from how we ought to live that he who studies "+\ + "what ought to be done rather than what is done will learn the way to his downfall "+\ + "rather than to his preservation.", + lines=10, + ) + with gr.Tab("Final"): + output_final = gr.Textbox(label="FInal Translation", lines=10, show_copy_button=True) + with gr.Tab("Initial"): + output_init = gr.Textbox(label="Init Translation", lines=10, show_copy_button=True) + with gr.Tab("Reflection"): + output_reflect = gr.Textbox(label="Reflection", lines=10, show_copy_button=True) + with gr.Tab("Diff"): + output_diff = gr.HighlightedText(visible = False) + with gr.Row(): + submit = gr.Button(value="Submit") + upload = gr.UploadButton(label="Upload", file_types=["text"]) + clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) + + endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) + submit.click(fn=huanik, inputs=[endpoint, model, api_key, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff]) + upload.upload(fn=read_doc, inputs = upload, outputs = source_text) + +if __name__ == "__main__": + demo.queue(api_open=False).launch(show_api=False, share=False) \ No newline at end of file diff --git a/app/webui/image.png b/app/webui/image.png new file mode 100644 index 0000000000000000000000000000000000000000..daf74d46a9d0fd31b5c2c24bc02cf7c56fc802a1 GIT binary patch literal 93607 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 OUk&t3t`l@!9{dXs@%Rz| literal 0 HcmV?d00001 diff --git a/app/webui/patch.py b/app/webui/patch.py new file mode 100644 index 0000000..75593f2 --- /dev/null +++ b/app/webui/patch.py @@ -0,0 +1,135 @@ +# a monkey patch to use llama-index completion +import os +from typing import Union +import src.translation_agent.utils as utils + +from llama_index.llms.groq import Groq +from llama_index.llms.cohere import Cohere +from llama_index.llms.openai import OpenAI +from llama_index.llms.together import TogetherLLM +from llama_index.llms.ollama import Ollama +from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI + +from llama_index.core import Settings +from llama_index.core.llms import ChatMessage + + +# Add your LLMs here + +def model_load( + endpoint: str, + model: str, + api_key: str = None, + context_window: int = 4096, + num_output: int = 512, +): + if endpoint == "Groq": + llm = Groq( + model=model, + api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), + ) + elif endpoint == "Cohere": + llm = Cohere( + model=model, + api_key=api_key if api_key else os.getenv("COHERE_API_KEY"), + ) + elif endpoint == "OpenAI": + llm = OpenAI( + model=model, + api_key=api_key if api_key else os.getenv("OPENAI_API_KEY"), + ) + elif endpoint == "TogetherAI": + llm = TogetherLLM( + model=model, + api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), + ) + elif endpoint == "Ollama": + llm = Ollama( + model=model, + request_timeout=120.0) + elif endpoint == "Huggingface": + llm = HuggingFaceInferenceAPI( + model_name=model, + token=api_key if api_key else os.getenv("HF_TOKEN"), + task="text-generation", + ) + Settings.llm = llm + # maximum input size to the LLM + Settings.context_window = context_window + + # number of tokens reserved for text generation. + Settings.num_output = num_output + + +def get_completion( + prompt: str, + system_message: str = "You are a helpful assistant.", + temperature: float = 0.3, + json_mode: bool = False, + ) -> Union[str, dict]: + """ + Generate a completion using the OpenAI API. + + Args: + prompt (str): The user's prompt or query. + system_message (str, optional): The system message to set the context for the assistant. + Defaults to "You are a helpful assistant.". + temperature (float, optional): The sampling temperature for controlling the randomness of the generated text. + Defaults to 0.3. + json_mode (bool, optional): Whether to return the response in JSON format. + Defaults to False. + + Returns: + Union[str, dict]: The generated completion. + If json_mode is True, returns the complete API response as a dictionary. + If json_mode is False, returns the generated text as a string. + """ + llm = Settings.llm + if llm.class_name() == "HuggingFaceInferenceAPI": + llm.system_prompt = system_message + messages = [ + ChatMessage( + role="user", content=prompt), + ] + response = llm.chat( + messages=messages, + temperature=temperature, + top_p=1, + ) + return response.message.content + else: + messages = [ + ChatMessage( + role="system", content=system_message), + ChatMessage( + role="user", content=prompt), + ] + + if json_mode: + response = llm.chat( + temperature=temperature, + top_p=1, + response_format={"type": "json_object"}, + messages=messages, + ) + return response.message.content + else: + response = llm.chat( + temperature=temperature, + top_p=1, + messages=messages, + ) + return response.message.content + +utils.get_completion = get_completion + +one_chunk_initial_translation = utils.one_chunk_initial_translation +one_chunk_reflect_on_translation = utils.one_chunk_reflect_on_translation +one_chunk_improve_translation = utils.one_chunk_improve_translation +one_chunk_translate_text = utils.one_chunk_translate_text +num_tokens_in_string = utils.num_tokens_in_string +multichunk_initial_translation = utils.multichunk_initial_translation +multichunk_reflect_on_translation = utils.multichunk_reflect_on_translation +multichunk_improve_translation = utils.multichunk_improve_translation +multichunk_translation = utils.multichunk_translation +calculate_chunk_size =utils.calculate_chunk_size \ No newline at end of file diff --git a/app/webui/process.py b/app/webui/process.py new file mode 100644 index 0000000..1e7c9e4 --- /dev/null +++ b/app/webui/process.py @@ -0,0 +1,128 @@ +import re +import nltk +from difflib import Differ +from icecream import ic +from app.webui.patch import model_load,num_tokens_in_string,one_chunk_initial_translation, one_chunk_reflect_on_translation, one_chunk_improve_translation +from app.webui.patch import calculate_chunk_size, multichunk_initial_translation, multichunk_reflect_on_translation, multichunk_improve_translation + +from llama_index.core.node_parser import SentenceSplitter + + +nltk.download('punkt', quiet=True) + +def tokenize(text): + # Use nltk to tokenize the text + words = nltk.word_tokenize(text) + # Check if the text contains spaces + if ' ' in text: + # Create a list of words and spaces + tokens = [] + for word in words: + tokens.append(word) + if not word.startswith("'") and not word.endswith("'"): # Avoid adding space after punctuation + tokens.append(' ') # Add space after each word + return tokens[:-1] # Remove the last space + else: + return words + + +def diff_texts(text1, text2): + tokens1 = tokenize(text1) + tokens2 = tokenize(text2) + + d = Differ() + diff_result = list(d.compare(tokens1, tokens2)) + + highlighted_text = [] + for token in diff_result: + word = token[2:] + category = None + if token[0] == '+': + category = 'added' + elif token[0] == '-': + category = 'removed' + elif token[0] == '?': + continue # Ignore the hints line + + highlighted_text.append((word, category)) + + return highlighted_text + +#modified from src.translaation-agent.utils.tranlsate +def translator( + source_lang, + target_lang, + source_text, + country, + max_tokens=1000, +): + """Translate the source_text from source_lang to target_lang.""" + num_tokens_in_text = num_tokens_in_string(source_text) + + ic(num_tokens_in_text) + + if num_tokens_in_text < max_tokens: + ic("Translating text as single chunk") + + #Note: use yield from B() if put yield in function B() + init_translation = one_chunk_initial_translation( + source_lang, target_lang, source_text + ) + + + reflection = one_chunk_reflect_on_translation( + source_lang, target_lang, source_text, init_translation, country + ) + + final_translation = one_chunk_improve_translation( + source_lang, target_lang, source_text, init_translation, reflection + ) + + return init_translation, reflection, final_translation + + else: + ic("Translating text as multiple chunks") + + token_size = calculate_chunk_size( + token_count=num_tokens_in_text, token_limit=max_tokens + ) + + ic(token_size) + + #using sentence splitter + text_parser = SentenceSplitter( + chunk_size=token_size, + ) + + source_text_chunks = text_parser.split_text(source_text) + + translation_1_chunks = multichunk_initial_translation( + source_lang, target_lang, source_text_chunks + ) + + init_translation = "".join(translation_1_chunks) + + reflection_chunks = multichunk_reflect_on_translation( + source_lang, + target_lang, + source_text_chunks, + translation_1_chunks, + country, + ) + + reflection = "".join(reflection_chunks) + + translation_2_chunks = multichunk_improve_translation( + source_lang, + target_lang, + source_text_chunks, + translation_1_chunks, + reflection_chunks, + ) + + final_translation = "".join(translation_2_chunks) + + return init_translation, reflection, final_translation + + + diff --git a/app/webui/requirements.txt b/app/webui/requirements.txt new file mode 100644 index 0000000..2a39a23 --- /dev/null +++ b/app/webui/requirements.txt @@ -0,0 +1,12 @@ +llama-index +llama-index-llms-groq +llama-index-llms-openai +llama-index-llms-cohere +llama-index-llms-together +llama-index-llms-ollama +llama-index-llms-huggingface-api +tiktoken +icecream +nltk +langchain-text-splitters +gradio \ No newline at end of file From 7f3a6b078ef8eff2145a389831c4c5618d969948 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sun, 30 Jun 2024 01:44:11 +0800 Subject: [PATCH 02/21] enable indepent model for reflection --- app/webui/README.md | 7 +++- app/webui/app.py | 55 ++++++++++++++++++++++----- app/webui/image.png | Bin 93607 -> 105894 bytes app/webui/patch.py | 3 -- app/webui/process.py | 88 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+), 14 deletions(-) diff --git a/app/webui/README.md b/app/webui/README.md index 7d41b28..80c7802 100644 --- a/app/webui/README.md +++ b/app/webui/README.md @@ -20,12 +20,14 @@ This repository contains a Gradio web UI for a translation agent that utilizes v - Hugging Face Inference API ... Llama Index supported, easily extendable +- **Different LLM for reflection**: Now you can enable second Endpoint to use another LLM for reflection. **Getting Started** -1. **Install Dependencies:** - **Linux(Using Python Venv)** +1. **Install Dependencies(Using Python Venv):** + + **Linux** ```bash git clone https://github.com/andrewyng/translation-agent.git cd translation-agent @@ -71,6 +73,7 @@ Llama Index supported, easily extendable 3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox. 4. Input the source text or upload your document file. 5. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. +6. Enable Second Endpoint, you can add another endpoint by different LLMs for reflection. **Customization:** diff --git a/app/webui/app.py b/app/webui/app.py index ccf0cb6..119c38e 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -7,13 +7,17 @@ import re import gradio as gr -from app.webui.process import model_load, diff_texts, translator +from app.webui.process import model_load, diff_texts, translator, translator_sec from llama_index.core import SimpleDirectoryReader def huanik( endpoint, model, api_key, + choice, + endpoint2, + model2, + api_key2, source_lang, target_lang, source_text, @@ -33,13 +37,28 @@ def huanik( source_text = re.sub(r'\n+', '\n', source_text) - init_translation, reflect_translation, final_translation = translator( - source_lang=source_lang, - target_lang=target_lang, - source_text=source_text, - country=country, - max_tokens=max_tokens, - ) + if choice: + init_translation, reflect_translation, final_translation = translator_sec( + endpoint2=endpoint2, + model2=model2, + api_key2=api_key2, + context_window=context_window, + num_output=num_output, + source_lang=source_lang, + target_lang=target_lang, + source_text=source_text, + country=country, + max_tokens=max_tokens, + ) + + else: + init_translation, reflect_translation, final_translation = translator( + source_lang=source_lang, + target_lang=target_lang, + source_text=source_text, + country=country, + max_tokens=max_tokens, + ) final_diff = gr.HighlightedText( diff_texts(init_translation, final_translation), @@ -66,6 +85,13 @@ def read_doc(file): docs = SimpleDirectoryReader(input_files=[file]).load_data() return docs[0].text +def enable_sec(choice): + if choice: + return gr.update(visible = True), gr.update(visible = True), gr.update(visible = True) + else: + return gr.update(visible = False), gr.update(visible = False), gr.update(visible = False) + + TITLE = """

Translation-Agent webUI

""" @@ -91,8 +117,17 @@ def read_doc(file): choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], value="OpenAI", ) + choice = gr.Checkbox(label="Second Endpoint", info="Add second endpoint for reflection") model = gr.Textbox(label="Model", value="gpt-4o", ) api_key = gr.Textbox(label="API_KEY", type="password", ) + endpoint2 = gr.Dropdown( + label="Endpoint 2", + choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], + value="OpenAI", + visible=False, + ) + model2 = gr.Textbox(label="Model 2", value="gpt-4o", visible=False, ) + api_key2 = gr.Textbox(label="API_KEY 2", type="password", visible=False,) source_lang = gr.Textbox( label="Source Lang", value="English", @@ -146,7 +181,9 @@ def read_doc(file): clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) - submit.click(fn=huanik, inputs=[endpoint, model, api_key, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff]) + choice.select(fn=enable_sec, inputs=[choice], outputs=[endpoint2, model2, api_key2]) + endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) + submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) if __name__ == "__main__": diff --git a/app/webui/image.png b/app/webui/image.png index daf74d46a9d0fd31b5c2c24bc02cf7c56fc802a1..c0e700330900a4321ed9a87e199e57908ffe00a2 100644 GIT binary patch literal 105894 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�O!w6m~VwZNw@|!5284E-QbjwR7>d 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 P>_51tbGJa%`t|<<#H>sZ literal 93607 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 OUk&t3t`l@!9{dXs@%Rz| diff --git a/app/webui/patch.py b/app/webui/patch.py index 75593f2..bb3be64 100644 --- a/app/webui/patch.py +++ b/app/webui/patch.py @@ -94,7 +94,6 @@ def get_completion( response = llm.chat( messages=messages, temperature=temperature, - top_p=1, ) return response.message.content else: @@ -108,7 +107,6 @@ def get_completion( if json_mode: response = llm.chat( temperature=temperature, - top_p=1, response_format={"type": "json_object"}, messages=messages, ) @@ -116,7 +114,6 @@ def get_completion( else: response = llm.chat( temperature=temperature, - top_p=1, messages=messages, ) return response.message.content diff --git a/app/webui/process.py b/app/webui/process.py index 1e7c9e4..cf289f8 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -56,6 +56,7 @@ def translator( country, max_tokens=1000, ): + """Translate the source_text from source_lang to target_lang.""" num_tokens_in_text = num_tokens_in_string(source_text) @@ -125,4 +126,91 @@ def translator( return init_translation, reflection, final_translation +def translator_sec( + endpoint2, + model2, + api_key2, + context_window, + num_output, + source_lang, + target_lang, + source_text, + country, + max_tokens=1000, +): + + """Translate the source_text from source_lang to target_lang.""" + num_tokens_in_text = num_tokens_in_string(source_text) + + ic(num_tokens_in_text) + + if num_tokens_in_text < max_tokens: + ic("Translating text as single chunk") + + #Note: use yield from B() if put yield in function B() + init_translation = one_chunk_initial_translation( + source_lang, target_lang, source_text + ) + + + reflection = one_chunk_reflect_on_translation( + source_lang, target_lang, source_text, init_translation, country + ) + try: + model_load(endpoint2, model2, api_key2, context_window, num_output) + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") + final_translation = one_chunk_improve_translation( + source_lang, target_lang, source_text, init_translation, reflection + ) + + return init_translation, reflection, final_translation + + else: + ic("Translating text as multiple chunks") + + token_size = calculate_chunk_size( + token_count=num_tokens_in_text, token_limit=max_tokens + ) + + ic(token_size) + + #using sentence splitter + text_parser = SentenceSplitter( + chunk_size=token_size, + ) + + source_text_chunks = text_parser.split_text(source_text) + translation_1_chunks = multichunk_initial_translation( + source_lang, target_lang, source_text_chunks + ) + + init_translation = "".join(translation_1_chunks) + + try: + model_load(endpoint2, model2, api_key2, context_window, num_output) + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") + + reflection_chunks = multichunk_reflect_on_translation( + source_lang, + target_lang, + source_text_chunks, + translation_1_chunks, + country, + ) + + reflection = "".join(reflection_chunks) + + translation_2_chunks = multichunk_improve_translation( + source_lang, + target_lang, + source_text_chunks, + translation_1_chunks, + reflection_chunks, + ) + + final_translation = "".join(translation_2_chunks) + + return init_translation, reflection, final_translation From 29258f7e385e854202b4d1b3edf647b24c29fcf5 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sun, 30 Jun 2024 12:31:08 +0800 Subject: [PATCH 03/21] fix --- app/webui/app.py | 8 ++++++-- app/webui/requirements.txt | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/webui/app.py b/app/webui/app.py index 119c38e..3b7687a 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -35,7 +35,7 @@ def huanik( except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") - source_text = re.sub(r'\n+', '\n', source_text) + source_text = re.sub(r'(?m)^\s*$\n?', '', source_text) if choice: init_translation, reflect_translation, final_translation = translator_sec( @@ -83,7 +83,11 @@ def update_model(endpoint): def read_doc(file): docs = SimpleDirectoryReader(input_files=[file]).load_data() - return docs[0].text + texts = "" + for doc in docs: + texts += doc.text + texts = re.sub(r'(?m)^\s*$\n?', '', texts) + return texts def enable_sec(choice): if choice: diff --git a/app/webui/requirements.txt b/app/webui/requirements.txt index 2a39a23..c390ee4 100644 --- a/app/webui/requirements.txt +++ b/app/webui/requirements.txt @@ -9,4 +9,5 @@ tiktoken icecream nltk langchain-text-splitters -gradio \ No newline at end of file +gradio +docx2txt \ No newline at end of file From 32e2f463de5e6f495f9abc2cb61e9407c947b84e Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sun, 30 Jun 2024 14:00:47 +0800 Subject: [PATCH 04/21] fix --- app/webui/process.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/webui/process.py b/app/webui/process.py index cf289f8..920fc59 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -152,14 +152,15 @@ def translator_sec( source_lang, target_lang, source_text ) - - reflection = one_chunk_reflect_on_translation( - source_lang, target_lang, source_text, init_translation, country - ) try: model_load(endpoint2, model2, api_key2, context_window, num_output) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") + + reflection = one_chunk_reflect_on_translation( + source_lang, target_lang, source_text, init_translation, country + ) + final_translation = one_chunk_improve_translation( source_lang, target_lang, source_text, init_translation, reflection ) From 0d109c6a45ab3766d1c4346954640aca009293ed Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sun, 30 Jun 2024 14:03:22 +0800 Subject: [PATCH 05/21] fix --- app/webui/process.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/webui/process.py b/app/webui/process.py index 920fc59..3646b4e 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -1,4 +1,5 @@ import re +import gradio as gr import nltk from difflib import Differ from icecream import ic From d212b79864a870c4756f0d09e643ae62f19673c3 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sun, 30 Jun 2024 17:51:01 +0800 Subject: [PATCH 06/21] Use simplemma(mit) tokenizer for diff to support multilingual. --- app/webui/process.py | 9 ++------- app/webui/requirements.txt | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/webui/process.py b/app/webui/process.py index 3646b4e..6a4d315 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -1,6 +1,5 @@ -import re import gradio as gr -import nltk +from simplemma import simple_tokenizer from difflib import Differ from icecream import ic from app.webui.patch import model_load,num_tokens_in_string,one_chunk_initial_translation, one_chunk_reflect_on_translation, one_chunk_improve_translation @@ -8,12 +7,9 @@ from llama_index.core.node_parser import SentenceSplitter - -nltk.download('punkt', quiet=True) - def tokenize(text): # Use nltk to tokenize the text - words = nltk.word_tokenize(text) + words = simple_tokenizer(text) # Check if the text contains spaces if ' ' in text: # Create a list of words and spaces @@ -26,7 +22,6 @@ def tokenize(text): else: return words - def diff_texts(text1, text2): tokens1 = tokenize(text1) tokens2 = tokenize(text2) diff --git a/app/webui/requirements.txt b/app/webui/requirements.txt index c390ee4..eeac3ce 100644 --- a/app/webui/requirements.txt +++ b/app/webui/requirements.txt @@ -7,7 +7,7 @@ llama-index-llms-ollama llama-index-llms-huggingface-api tiktoken icecream -nltk +simplemma langchain-text-splitters gradio docx2txt \ No newline at end of file From aed92393d590ecc89ad4a6c0aee7aaef7522e406 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Mon, 1 Jul 2024 15:31:44 +0800 Subject: [PATCH 07/21] Update UI --- app/webui/app.py | 40 +++++++++++++++++++++++++++++++++------- app/webui/icon.svg | 6 ++++++ 2 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 app/webui/icon.svg diff --git a/app/webui/app.py b/app/webui/app.py index 3b7687a..476dbe4 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -95,9 +95,13 @@ def enable_sec(choice): else: return gr.update(visible = False), gr.update(visible = False), gr.update(visible = False) +def update_menu(visible): + return not visible, gr.update(visible=not visible) TITLE = """ -

Translation-Agent webUI

+
+
Translation Agent WebUI
+
""" CSS = """ @@ -110,12 +114,33 @@ def enable_sec(choice): footer { visibility: hidden; } + .menu-btn { + background-color: transparent; + border: none; + padding: 0px; + max-width: 48px; + height: 48px; + min-width: 48px; + cursor: pointer; + transition: background-color .2s ease; + } + .menu-btn:hover { + background-color: #e0e7ff; + } + .button-icon { + height: 48px; + width: 48px; + margin-left: 10px; + } """ with gr.Blocks(theme="soft", css=CSS, fill_height=True) as demo: - gr.Markdown(TITLE) with gr.Row(): - with gr.Column(scale=1): + visible = gr.State(value=True) + menuBtn = gr.Button(value="", icon="./app/webui/icon.svg", elem_classes="menu-btn", size="sm") + gr.HTML(TITLE) + with gr.Row(): + with gr.Column(scale=1) as menubar: endpoint = gr.Dropdown( label="Endpoint", choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], @@ -169,14 +194,14 @@ def enable_sec(choice): value="How we live is so different from how we ought to live that he who studies "+\ "what ought to be done rather than what is done will learn the way to his downfall "+\ "rather than to his preservation.", - lines=10, + lines=12, ) with gr.Tab("Final"): - output_final = gr.Textbox(label="FInal Translation", lines=10, show_copy_button=True) + output_final = gr.Textbox(label="FInal Translation", lines=12, show_copy_button=True) with gr.Tab("Initial"): - output_init = gr.Textbox(label="Init Translation", lines=10, show_copy_button=True) + output_init = gr.Textbox(label="Init Translation", lines=12, show_copy_button=True) with gr.Tab("Reflection"): - output_reflect = gr.Textbox(label="Reflection", lines=10, show_copy_button=True) + output_reflect = gr.Textbox(label="Reflection", lines=12, show_copy_button=True) with gr.Tab("Diff"): output_diff = gr.HighlightedText(visible = False) with gr.Row(): @@ -184,6 +209,7 @@ def enable_sec(choice): upload = gr.UploadButton(label="Upload", file_types=["text"]) clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) + menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar]) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) choice.select(fn=enable_sec, inputs=[choice], outputs=[endpoint2, model2, api_key2]) endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) diff --git a/app/webui/icon.svg b/app/webui/icon.svg new file mode 100644 index 0000000..b19dfbf --- /dev/null +++ b/app/webui/icon.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From e634fd61460eeade2dc74676c3c675ff41344218 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Mon, 1 Jul 2024 15:40:22 +0800 Subject: [PATCH 08/21] update preview screen --- app/webui/image.png | Bin 105894 -> 113637 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/app/webui/image.png b/app/webui/image.png index c0e700330900a4321ed9a87e199e57908ffe00a2..ea7a587c4d09c800a5aa2a5b763bc7d7b2a6d72c 100644 GIT binary patch literal 113637 zcmbTdbx@p3&^H-Bq|ai(u)@_P^CVKDZh9DxBUEZLxg{>K@984 zfBu1SR+jwmqI`sS_xTT;xrm&|ix*YV$oEFCp8vmg_^9Rl;ssjwKOdNW`@&BzUOeSV ziHWFs=pQU2cwj+D5l-w=^O0%2L2qKH?+Hxp-^`Oy5Q%8L{6h8(v5;3$LN%XfNHkEBh;&02Q+5bhCe|QKKIO2v6T+~Q; z3jhGl@c$03bnC1$Hmsj{X!&aG;MD^DXG)4cCHp*aD>Ie7(9HhcQW<{!AQJ0um!|K7 zB0M@U+^0MouU1L}ZMHZA?fK_rd$@^V=l}3G zoRzs)gB@@DBI+;86ZCS+GBwQyZUXTsK_;UW2FC9@jPOs!N#{HbC>3b_745+QrI5&X ztJ+`0F__D2!-480;!(tW5tB8=J3AI0o}L65$7X=9rAxM#TFy6DT{|^9QE4xwFCJgZ zta|Coo8l4@r_JH`std$T#_6({T-J|{>oOID(LNA|bTGIbsgHp2- z?~WNjtW&OFk|5;Zjf+Z=YM%()l33-iKqE6|L0|*e=4+blcVdq!h)f|S84X4E zsGM{5EKjU;s-3#7g-Oe`Dh_bYi}0r{7j?s0mKsvqw`z`YPAg#~aq+rIF1W$q{Ae$X zD`*~X=S8{GVTttExXADsALHbToNyb8@)Npkh7S?VZ9UbC)%K(}raijx){ia0j4Ma!0R+1MQJu25p)F@5e|SVS^9ops^7;o+a^GSr@_-iksvMJ5-nm`mZFo2gaj=SGR zx@)}F(fi3GNCiCx0Q*=H zuATXb9dkqWs7d4rQ=6)+>3%DjsjyG%mqmlz81{XHr<~LN#%mQFKBJ6_?H|5%L>+an zdq+|X*1&lM4#FenF@E6ls6Hi&qm0gT0AP;xv;B< z))qf^O}F>C@da&rt#@1m#+uK*^f^1EIA}`oS?;?)yMxPcXMz>>{9)_Z*yzWcf8Pq) z@`6jSe<7{m^?G^bC=%!zu2niZjz^cv$HF}HA^a%ZQAIvq!V?fN6CrY=aQW-Cl-0H# z*0=6(zwX>ui;hPkXAf#OxbO3lyf<=U^%P4g9|lT?ohHxd6Mb%Q%szUaj`5do?1n2} zc$@q*_Z_DSx@g{jSMj8HrdOVp8r?Tr=jh&Q6}C8TF)1t zD(n8+Uiy67`sP}~429(Iy6vBaZDt9_&K7h2*zJUxs}GPdm@xFCtJ9vfV_zjbpxt-% zzPHgoWIlc%m;=9{tn9!%f(Hqif41^pp7)7LQW-!1mN@9j^Su9cW?_ zgk&3@D|`Zqg%LD_Tvs0g&**cn_uzF{ltX8YSGAeyNqE*`YezIK^Yq&R18SYHEbv}g z%QE@{sTu>|GbaU+LTGyy(3;`L$Y zhC#01b!1q=cEGB2oZzK^;u;&ULO%C!9v%0AXBrSzo>0`u3Ae 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

mUbFKuZv z+wg03dS;=@fGePrdK4JcIYNg~Ms%OXsYj zSL|)$ksH6~N=OT3{xyG7P;bEJiuW3!(D>u^$e?4Q{+DR58;!in3 z{+7Zy^{bhNB$casdF4gyUZ{Gkt&=SB?TxH-n{dZY@*xiis_Rc%k$uy8RODi1u*P+2 zz*nfF{hi=G$jPO3lL%=oVp~o}dS6I`4-={nNEX3Bi;0dfY8FSA+FG(S#zb5JL%*qx853GEy5i&#zPIjY&2a!$O&=Zx8orZle1W~&om%Sd zaeQtur8m}E4;`~-c{rP<$#~9yp)j*4M2OVj#-Jz5JKkmx8$?_cA5P7FzMct9`z7B+pGspDBeA)SL3jurz?BaSf<+U)Qg&~w;)YLv6yo?3iIP8)LsaZS#oD^; zb{D*okGO(wlib>&nmeShUG);Ji$bZB#)|m$1cQT3;nr5tTbQ{>A{pXec8+mMd!h!v$ng69?6E+% z=oLej$TwFQ&^45e%XT;{6LN7+sY>;R7+x)y2yh2Kf2B9m(<`>MvqkTd?Tre0h*fgZ z7+giTcd4!?zY*%+Tww6s?xXGe#`eXUz3Z*S%IF$H@M3k8FJq&?P+rb*20+!ab=sbe znI3WchvCebd)Ka?m({a8qTf4um0NYS&U~QUOFdzktycQp^+KOx_#-bOhgB3fy07Xc zheq3}1lHz;gDHoZr1uX})U&g3*K99}IEN`kDU3V3LbTl;NRY4Mkh8f8bVC_qWql$W z8pce7-!=J*WqnPKTImchy7F%#3^;5|r6$!=5*XQsEjM~7j<^}}+n3jB(6IAv9KHcz z0E(LoCiQ!I(0)Nnqy#kX`-#I>-N9orvW-7UKXx;@iTw%@cg>v|#B1BFzSZ$Nz4mmp zyd|Kn#8`Cm^;I;G98_+5U)<6ne-;O%Oph=!bN1{naI?`$cz8B|S_;@4*ofR&_Z z2W$3_fjxTLVY%t-2%B-22cPhfIARN2bfVYsBl0dNA0piOU0g8kRXPqobxS}om3MpO zz*H=>OJg`DPVqhw6Oe~H9 zt&8-1`x0w|CnSZfSGSHn{&0Pzk#<={7eCem(Os51Hz;Z~OIqrSaP=Tvvi-OV9h348 zdHe@MPoH*FlYgJZ+fDH!VE3%1PtTgo*Qzw+F*Vxnra$@u--IIBAJlx{rPJkTDBR1X z8M^Mm)UIQyCsqd#W;t&`)h`AIJtGK&RXb0oY;tSa)D)ZX{kK@&#>WF$xtVvWsvMWM zi~XvffEo^+?~Xz(Ek^}vk*)Wf_xp?1YezpN!!rKB+7;ff%v;=o_56a4^luJ2v4+_9 z5DnPaV&!5Z>43n1{;%DyeojvdEKwI__Iw?o%?#-`6;qOjnckW%FAo27>!1%i_xQ+Q z>vF>v^VjaiQn{k%i{BCro#uw*OjPLzgH>qaJ3hEnZyUbc;x2n0ckI94gT#|9CynFy z4DM|l5dEu=H`H4nMwu_vW($Rk{3CoQi>O!mfeyqf@8rem{!)zXb}_++Ye)>%j(z&& zMGY~5wl<)WInXgO2uGh+$|UtuhD;l;n89Jh2n=d@-gQX8 z94qsPHTKTWqsad8DOFryzef-Oh($!b-4Dc;$*fuBz`77~+o?08ljHt%*nG5s%Ch$E zrDVzt+Fc~ph=XjV;z(tcr7fk<{y0>fwxdLAuioMCGH#XYUnvN$UC+VK7-3d&Bd*_^ z7E!QFd^zetjlmvgq9=;S@x@{v7yzo^<^9e8F4a-&GF&xL;Or$894f1x)1BQ*}#;xcf}0BLmKUn7J5+xx}_PnR-OZvtSa*qW_3 zaj>B2$e-Jbl!d=44Zbl@UEn4m0mJ*7)1fX)kBw&At`&MxxA%==u}#of!6?HzW^_07`1=9I>QJr|6A=osafFNUSmI&}6-V zM!qs6L!~!93iDw2-YwZhV>m!&B9;sVb@nKf6o=IahW*e*#3!OuWS^Yfs~1)~C_?pW>Y_l+pmH7ih>@BNZoI0QId?d=u1oLDZSUYUk+0YT%9^IHC(PnH%DHS$&ToxgLqVW9|`_62!8jcF{qURW&1=^IBlgDYK+s7 zVYmk`kdv(MAgX1!64eJS_Kq(&)h_UGK+e0X3Z&)1>3Z6|yjM}Dd9;idzQqn}Ff!xE zPz}!epe>fZ;72Nn)?4(+U}X`SOv+)%$lum{EHUYq*=wOIwsHub`94WcFN-k8^+L`~ zL+bqEBb6-GUTW0*D>0PA1DVeZxe8w=HaIRR2_8_IzlmVR7@K$n&I8&%^YHSD1;A2Ate;k%RhpgmKb5XG*;uCSF2C$z(htQnF@<5ot=9;2MQlg7BopR_h&;D z8E9kcpj^vOUze5e6TiPh^>zNMG)dIPC5ghmY+YVRY=@Ix(Gi`XVpWq4iX7q>_ID6iZZ)D6 zG0L$aGym~tvlp~}Nj1U(1vssARS}zC#WzDnd=#1^1w3^H# zeN6ShRKBn-nObjBzx@6aRP(D( z%9`gzkiv_Vm4NlE8CDWvZ}197o;!Jj*H(2nArhL7YkV<& z6%^*C46Yj$#=8lx9W&gXDf;=L`+T70YuZL{FyuHA-`qa_{==3reeqLbV;!;~7$k9imhzibvnV~JSw3l0^vT{3z_lF<}g zMDcYLyYTQZz^wt5iA#a_(~Id(C8Fv}V@?;`e$VX;vsg0nCbWNWg=Sq%x+QrDpeJI2 zmUOMrPe*J}xQ9#_)9U1fgPbSK@LHA1e!afFc?~~}DQXM4GmPWVsn*e)yHg2;%}tY=~xB!SpbHcRKN3_KoIT)$Ude#gIt_FK~`yAphG zrobqT3*$plwXRswwan5C$R7Q6>QPmvhCS`2`xbtxdAT`PT_WY0$y5lm5v!m6j;veWlf+utY z^u~9d%>uVJW^QtbzoL>&yhXQvXBru-TEH7zaD~zxzj}vna11?nSxM-<{R=Y_uC8mG zqV2u!*+)67uBe61+f{?COPk8h^@-e~o8KCEdIlHYcYa=OCV6Ku-qPHi?t*Trp4k|# z7blzN%E1jAd42_*GxL1YZo=;t8|_RYWLv-(}@9mOZ}?A zckA*@k^Q*8h}miJT*Sl?<&dw0!8RGiZNhCPg>S# z**iO%0{VhA(lv|*;gHB`BCtaH&|X|6f|sIL&%6=_b7=c_DudP7$_NXt=Oh>H)AFBT zx~$#f8StS&)T;LS45TUusGn|&?ZjK&0lKl@a9g_D#*|&d5%F$(hO$EEL$qW;q7LRl z-i^qUB(GtHAXcuFEOYlKVUOpsimF_WWlbz@SP&m>1z8)zzxJ-XR<5nl| z0fb01HM;sVhJ$F-Z=a5{Pyw$ZZPQQOt7g=|r9%TdS2kUuEPvC6valFAs!|xEGCG!f z)V7%Y&D)Y|$~?Sa@2D;4n{mWI7(Pc(`3m1uj{M zDIV|Wf$z7bh|Hj%>q^C_O!N;m-q}Z&FVeOBqcW`g{up8TIlrI(c%y;b8MUGW_8_+H-y%?l^9@Xb}Efbw3OAjgAkZdCv9q3^$= z+8bo(1FkurO)aK;+F$#71?q*Ltk6Jf)d)+_GkLv|u5i$6;yIR!1?zpsjpKDEv{jcH z>eYCOr_ACSYB&Qa*K|2y_G8)Wi(>JLya^0(&kt$~Lp^ea@t%1x59<{K32W=hyDUF| zcu!z&`(_(M1VXiYqQ3^CaS_Wm{c;2;mmxE z`thXoRq6Zle$zn1G<_7$YTjqUE_7j69_z*}E#9l^HeKoO(hp48y=c^4Zr@^|j%+=@ zJ7+k*nMHfOGwTFj$_KSyH?BBLMSO6$@1?Bl0W*=x{dSwr#xU7~NmZ?23wt}H5zZ|4 ztB*hh^9=zh${hhAiE5X}svJoJb*a!tCLBfUz?=^LYQs*LYnxLto>nf5%1Z|Jjj8Ud zzWUX{1qk~0k0iI;x*0Y<)dS)-!}ZJK;q&9$9>qTE6U|uOy&|unIXxtQ0hV$$$TPHg zssXB@alZH;WzSB(fA!9Q)qY^8_v`c41dr5n94V;5m;U(AKkY2FASdUCDAfYxP%~uu z-^q@K{i1TsvJu~ge8ir8tdK59OGe z`Q}IH^8T;m?f3ro)AfI=gE##_J4XMt8u-AEdWb;a)jibFAtFr9@KC)9z;INhmC5yS z>C*~kjXxqnKE1?%qNJjuC|lZq56U@mcXOqsK+ehM37`=d4Ps*Fy$){9(e>rNR)1+2>;J>nTSv9gHR{`KX-frb@nQvvyE_z$yA^i`?jE#-;?_cN zYjJmX4-g=@yF<_f*I)WP?|aTV-}>fnX05%M$s~Kvbzk=>(Rw}O+>*q(+K9zq+gY>< zGG@86WzU?5Bo^Cef$1hQx6CYa*G{UVIUag(_r^$~yWaqCDaILfytUPFL9yORJ=BG)WYTE~WEt7TS%*l=nwKM z^`tOl{_Q^z2yyWXI%N1ROU}v|vw<+o2kRR7UKc2bjT^quxfc30`0aCrSJ98nXb^md z&fZrVIWIEtcrNUE3mpNh9BVrj#w&K$x}a1FmV=J%w|yZx`L!|Y?;31K9<(cQQIC5V zHl#=R(q>x-X(-}5#qvH+(*=!gxTIFX_3$vpf1_x*ev~HsnB5;o^v;p}?X{;VS;BEk zDcUB6oj7fPLkOiJA+v3ll0$Dss)hl%rGqIn&!yr59%xI69Pv7#JtzP<*cS`b@{B?+ zpCSW{S+Dtm=Z-ys{O@mQsZ7e;OZ%nmowDR=zB)l|@1xnT_1d8;cRBFpps5`-)B{P)?J-n>881~hxuf^P z>NSObilCCOwnv}^P`~X9-wQ%ywz;J#>ANU4nww@Io1*kr;t?kGGxC{(O%}plA$7PcQP-WX!+iVTZ6Ee ze-In^!4~tfhGNN|UudfNcyE53 zMz1O7~+{1eY^8^b*8^`g{VUnLlh0`YYvfL*Hhdb&Wsr!3<4`@rcGTZy1XzFx+=C%o$Srk0KC{t!rhGsIo2U1 z!aTu0H)ew%Xm7|tORIYBpw1BUdKmnBEG|=)&&RB15{cb2li)`{dl^~6$ey@r0^d;k!3`MyB^7NH!yp$_H50?Bf zcqk)&t0$W{4qWA*hYRT7L>Jac;32R6*?c&&jk~dNV)%(0etidh10F+&`O*U>_6^sU zfz6e1igoLc_M#!E9$6|SK72SFjizl*s}5=6b|ANgZwkd8Ml09Kyy~==BKL!RYulZV z71ob3dST1~Rk`7vQ_e)|M@BpTsg)a>z(u!`Zx+7#n_L5W=GTl(P9=uT=mMBQ-NjnZ z>@(j4oY~@Dh12Y6G6^(lcNP?a?K z2TAPZBf2;+L6VLv&Ijm&_cZl5+YFthhjb|n{i&2A`K-z^#)^FOySVe8GZPE#f-Oh1 z3+E+krK%q8%-t^vF$QrbFzM|#R@YrR5V${MVbqW}ia!kbL>jaSWn|nUQyM&Mu@$W| zBzjHoh~B#qrh16{Z~)-zEme^jw>{80+hEo$o=Z-tCh(wj@>WnNA252Z@CExbKdT)C z?&Uux(FsAowRd(1LepWGtFyhRjGD&tt-FWl1m{gcZwM?z3lq}cMinbT8mJX;NZ>JAlo==E1mTfJOpwWY9P0LUw72` z!UfmtPZS#>5FX#1O|0Bz`}+Ff(9pIgg5WA3Mo_;b(U?pKn|kMQx^=di;gyV^;;VLoQ0a1O zS{96)$T|_AKYk|)Fq1g+tk=bP?swwYW#nx$2*sW>E(Y_y?F=+CCdUWvt*m@2fN=z_ z?TK}KgV}RU3*Fr4c3l`3dRg*IqmiK}Xruqg?G>*z<8f96YzF=FrKo3R4tor(ivwxr z{I`2v;*?P5-20!}PR3^X_t+s)ea@7_aC%>jDVC~P0n|$C>Xrxd^Y1FmGj#K`Y4eRA zQa1(L-s|H$Y{^3|&$JUgUJh)v>SYLAX?~W0z#q=sOBT%f4So4+s-E?+*MS0k{8$!( zH_RcS-AnqZSQQBIn{z)~ER53S&@WO$u-`*k&Bs0bg1ogv{>Q@MaetyuSdJt51KUmb znoQ*(n}OUH%3`M_)L$EDv3E8J()68kE;MxbWr(c0vP15}*O%v<$(v8b9 z!fgs=#bVfyj`B$FA_VgUg1UG{rYf?G#^f1CyJV>PekXk2X10!tK%!VMu4t>YvW)TA zs3Z}@Kb_OoSi$o|Gab~#gbQ4-Pw$zw13SrZ z%&mT?=s@r1ly~F7Vl&~E74o$eg;xsmdLkxxJ>B1)uDcP|IbJ_nVv9Mn_<>gTj`G$tl1Km3PlhKeOPb2)Lhd+!*WJOd}dc)prJ_v zvwAy&$czT_zo-=6?qC%YIj_;2m8@X-ZoMt0Bl)n}dmK&iX&X;N!Iv_CWsKj z_1kxLV{g$CH^H;=&)V{mf=-SA4>edFD#kioOb8XEH~xjE+Gdoo{A$W5Ji@p7?h z2BouwP+JNoiJC6A)C#6MCF2eCh2K2B!XSEY9(Yi&P_U)9(dY-lj_z^N@ znz-D?SY6!}NVc7zb>=zj7*7awbRW`hqi05u;E5D3abr?)FSF_8WZV(O`HN(ev7}x3 zzHGZ*5wAJmAoAWiKyN-H3a;4=_LwH=XZdjBFo4jzIdv0UxfQr~-YWLJWBWtq_2>y^9sBp)4;R+NWf))p z5gnJvW$gkN9vQ3}KQqD(t~m(TG$)CTaRv%p4tFvz-I#7)gV4u!dh69j|J>r-Ik9Ps zM0~yat&8e?U~&CPmt(cywxlE$pLQ_`0Fx13ptsHZ# zZArXDhVIB&+{GPlf6^vot=OJi=OL&x(?crv59}lVQr;_Y=9kp0zR+A=roly_iLn|{ zRCzWbEEft_zTo&$8(N;t&I+c4t*?qfro&0pC%%UQ2Z{b4Z>H(dY!`6SAJj9B;~{S0 z+XsT2cC+tM;suu(8nyLn zh#H>3Te-R}{3D(MQjNyvL2v_5Wi=RGJk?ySLeoHUc8`p$#8tng*%s4$rZnQ|MD#A? z>>KC){Yh>1XqGzJ(3HiILJ1-53_8=!{K5R^gG@S-{XczXfX9PtVg&<&@OCCRi|x6x zx~;%71WTxx5vK6&*b_JN^q@KGPZ?lPqE7bA_}jrYf^SvmA?r$U06-J*n1b7MzUNlZ zk*7mU%dj#2$<*%~S`HJgy5aqA<2M_OFK4)wBoH?wY;&7}17}(dSLr^&?wz+Ljm}K| zUVF_2V=w`P#={&H8EQ3bS{%GK=v3kM#sFylkvl2#;1zNkwbUBDm;HXAjff+4Mj}xO z+HqhDx*RxoIm~AA0NhI1a%)kx|2Q2srD4`Y>~zn5=+XjPc^|iZ+ynH5`ghlknCI#Y z+%>5UiQulF0pGE-QSAFUwIW_OC0a%_E@&F(Xw@~8#g<3motMXK3(1#hkMlX)jBu8j ze&RllgQhMA+q}8wuCb23)PO9+p-k&hhI%(68!9PJ ztRru<#y%fz;q%Pb7m0j?eH_s~Fbo81ambE9$RmEYPqsFoIn?=LuQ1+HPSu9_2@R!n zu0tOrWp^|yOEN4)?5WQ3huX+StEXUBeK`j8a>&)BOb*iZ1)(dp586xw(UQ!*rzzD- z{FpB7;-w?QaHvJ&Z;{CzWi_WHuFjhKmD-%@MTnrZi;pB-acn?9RXU@-9GVQ}J#B4o z#CW}xV%$Wa%lI#?38$T$n3RGX4FBY4IRS0i*65v_#wc>PbW^@%cKyWZ_5-?W%sJZL z)X10>Ue%%^d+K}F5!RL(l20Hq3X)cPc4&ZoEULOH#40})**lRQ>#xaFo9u`DlVg;^ zHVX!;u|m*s7%-s@0lHh(F=b~yG@~nRX>fN2sgL-BYC3s|o7MN%^hG~-e(E=C`)D=X zBOBXvt~vht{>0rXN#s*KMs+Ub0HS~I5}&GLy}7boR$uUAq0SxDcA0X8hfO;}(C1ih z&|}k;Zk4OhbE;DH+d#wSr|Gf$Sk56^5~$3IJ011Z75t~MmM#8bF5X*(M50gklVE*% z9;fDk22c$Gq7&QHyEE=Lv9X`wL+k~)Er-MmY_uIdD?B`=M(oC2pVB9MRey-y<2K}H zmxW&fC3KA37xU8D@o0y4M5-3^Ei*|t{C$!W6ky6XJ+S2buY->KSaMr z38&qIKEi0D<_g)+%6yfISbgHws%_7aNw6S{6&VZAK!7OwP(p zy|nhlA(d)kUv{oP*@u_tqKLbi%J8b9IG8PHTIl2nkcJjsT8LXGpaMlKCRpJ zR`ea;TS%<_T~p#D9QGN|Pb=$nHR^gDdv-GOJ@!#RH~vozLaeD(d0!nNWL0~uiTlCo z_Ub|vLWsYmM8~IRB{yMeK^jFPD7;~fY`zgy7|35DrsD*X<_<9-+c%eUA{AJ)Wqlv?6Cjim zRT9jZ=3GD3h5WgR5)G=%u5V55TXl!obsuxoAUPubA{0nlqh7w*Pw>cap4{5N#<*g_ z_`ILW1yE-i{qo_Lxq~2`ek^45MY*@kR^N;MOtm~1L~>_)yaqMcSf#JaKdGiKr=+E( zDrA$|!7%$+0dnRtZoxFE8V5{7@BU6E%hjSQ$8nVF16AhnlxaII;UP?PuLAL7vd@ap zOFvMeplygR>6fI}Ox7H=wW*}27bczcy{9_fsfmNh8CtDYb%21IIQ+%&oB9Zpy&{4- zFFw56vzupy<;{A>+!^NXX+erMX;qn}ym*RHj4WS&)^h=x+y+$lTSiuSe9b>JnJe`?gwbX$obHe^nvYN8+9 zRS8GVnm7(^vePra&XjN12*@XpG|PGo9}`-22m>-Wp+rvi#%WS|rv2bL+!@RSI@4rB z%B1NR@0@{#utyDcMg|_?fT_54Q!m1-a{p9c3Ogl#T<4%IUk!6QB)8fJa?okgM@G^d zEWoR_P30tGYX|LcK|}Cr06X<PwOYt*8->$K&({B2#%+0S9>r^ z`A5b#6Zujb`RyA{D;oZ_4&U%S(sjViz1|RyJT;7xC zV;c9Tjw}yzIwTu?)8AX@2hw2j9bl%I^-Lu_1ZMmZg3xa=D64f&FWebSZLJq{Y>S1^j=5Rw*779}3y=Tw zK1^w4F6w|uNS1x|4T#>JFL!*NIOcB;O&I=e?$Bz*U9JQPrgfvCy)OSF+(xz8#Qf&+ z{1(pKl~EjB^c{b^EUuS-+LPp7c2V=9)%cO;VC6&SQ-NP;Fw*o>e-wpGm3&FC{jk$c z7XUD;&dOch@;#9nLyB%9eQ$y27_;~{nwA_RjGQ0MF5qhOJg&Y_oW-@c0#(4}t}lR| zfUiJsnsF)pPV=VUt)2Y$$VW7$@<{3JFoSOXwLZhgyqd`7J0d^eBI=&+_? zpcSQ(TWX%=w_wlOOsmX!6HC4NPe)5^f^63rX_w^bE0TuQfmsAzQLxuD-xPS!L_i4d zAHzs}Y^P1kueH?G3x`hb$0N^DPu_szAbPr|QO!I(ORcC|zG*>#TnM(XFkG@vMDZc& zYVfP_{yv}@&oBY_9bP(`cgFPGKr?ulxbsH;f#6Qjt=j&}z78d8lLQ`f1jmwJknY=- zr3JH0t=m>>A=ZY3y$=Zz;DlVq!$AcAFO$gveU`(D$tyX7x-^R@{%na8(F4VDnvB|u zvhJq+FDGHz=EY-{!X?dmYfY5Q=8 zRk1wRr_r56Zz~m~XZyEu7e4=c(< zQKpkYmkFpD62%{nzX#Bt ziMLNvL)`77CC|5Pl88(`wjw0;{2NRVg;&ZSUmh}q^~JcVKZR_jY1*H`L@MlSu}3dp8$ zQ>#iBQQ~Q`adO$MZ_Z!8(*8-n^3x8K5CL~O79uJ7GrRO#nT%FrMc3~Kx_^WX{9zpO znMTqP?jovr+v}!_G<~NjLc4-pq`>S2XUQ#I9^I{TlaFz-x%?L_n5P{|n_`Bh3+Z%y($@fzQr;4h5>ka6fzz1&}DejM(1(5 zu>RTgp`F{x@J#rT|Hc&EkB^>tqIMRJ;0O6-ld->{5=KP!$`MQ|-fVmoww=HwynZeb zo^yJTB#W!Oc8YTC)r)~V_NtRFkL<}R4BBTmSfI;5n3St+`}=F;bJ)y4VZ zQfyYhI(ia=zTbGWy$Dr(Ik&_!-q?kcshnvSz+h%;u z!hB(0D6*dkAWZ+veiLyz1ot(tJqmGJsp3jl*GSD!;pv-IQ*CT?NFP9V?;{lUmA~Aa z>S=Sb3(cwNd%Rjcfk#TJiz_C^bv40|D-g=f`_+Q?78YLPA`U(0;A|tO`juCisAb){ zq|I!IT>Q~~2pJ3K!{}xu8Q;%bn;-lHi3D>RR^=f4ObnGP#Sy<;e z1b5>NTEz#38rNn_l_dnk`qtV~Onrd%CfY}w3|N9De2HV}J+pPidGywo!ni!(tr1SMSDI)K`eY$;olTRX0&zeM)Se9uet)WQ32R4lDaMERodqxTKq-wxE$bS; zi5KZ!&8F*D6rKolOtjS9XgqkWuBs;m^JdFSc5hOB z*H3D9x-$9UMtjO-v7s*LP)2F24%Z~3KdF>ztIRz&_pyIuUX%@O_nca*HDFQ5m;Ec& z=W0_-j7eLNfJ17DKJJ!cIxCPndHn{1*k|?$I*hiv&eiE%+Z=)-K~E>Hg=L4y`|VfI zKw+qxtIcwf}2POD??5bXdJwhA~AsaLQUo z-3PWa38Tq39*&=L7F&9mZQvUU6iJ^F;n*@PuV=jg0(9sBrx&Y5v#bt*KAE*onlR>QL6A6i@vI~?fzy`x-Q zg$F&qe#hW{P4zWpQaPE4W_qO4LxS4)a;#l#WPy;Si@P>L>k-MXB##V>A@^4cG;kmG zwoW&8#wbD}ctE~Z@!677Cuxs-X|hxEmw4_D{y%P*tm%>0rg7Tkm5>*O8(|HQM{&~T zhvcB+#n;agD`yuC?yMw=|QTLJqXU(rY0{Y{4Kd2JI^R(L24l4Gw zl(TKK|6HBMC^R^6W5u{f1}`jDUUlt@aSLTlX?TG}Wmmr*Kzj!7S;3y9DS2Vk-iTSh zgZh?oKc8n7N5V8@G1^*+)Xv9E9Ic2x$9t9RM)q+7o<8qJ&@= zSftvd;>wUo@x{L5)(<=e{2rr`sw>cwC2aI*s9f?+7diSv5_Zf)<)CYCTpavz^AvVT zvp%x)iFgGk2Dl>Jxvc)QqXwBa8EuG;8%XsaUd=N!MCD~*DMD_z-nfqH7<}H&qIpM$ zPdnf2Z+i5esP4Xq?df9+N#wi38`F!R0#N%wIFIi=7tUAjVKCQZ$L;Ye8@mz}Ai!Q=$gUb_yuBsB=YHFY|FTP~)KZMwWYhw6bS?d<)m_ly%l*iXh8r6; z;HKh_4?O%AynX}~ujVU{f2Xq#ZkuFdC8rHI@t%(f<}AEbD>1EYXPtH>;Zotf=uI@o zR2=!>aCTioX79)Os@;I~B72O&wU>8j$?9Qej9Wi-qo2ocU42loGh8M@o|L&%G7%cQ zc5z#t%qZ6qf1u=(ey6;dRxIrE-U`Q$(?TNP;;&ptNUx9!?=m~nIE&i6@b!7zt)O=|f`3tF`t_Adg?fdE z0@DcAi94oua}!3y!X;PuFO`;qn)`ae=^Zsr3|OGMB0;X3Hj(Euc^DlB9UvEmixI;l zK`0)RBaVs+9XN=$J^vxDd!wtr;(@$6IJu-9&%;AObSCDq{}R7ZH~)7ZtB-+=@4g^u z>+_UON@V$6yl-&Tac4f>mSu+&!QGL4BWZD1XXaF2A31g<4d8|2euT$Kvpa3D`&UUo zTod#;8d`doM_Y56>dPhl7|g!IFA*{hTdcc`oE;z!1{33=dk&0t)ch8xilN6!M)(M| zTfOJo>i}edk?6Q>ch4!2!iB^~bIjE59m3sXn#|dy28!-lPKICWWFPQ2o55+GOSQ;%!g zx|CzR$o-8SN_wDg`sx^W{j*w%Q+nE--%cZIByk{DrmCsa8G1 zYsCla8djU$lI~yrTn!&~o;)%iT^SYO=lSeMGshESc}oNWntQ5eVjY2M&qn(3*@UC? z*-q7f8HExj8egsnScSfKZ&cU@Vx0D-olJ)qB(V-)leHY9`Cs39PbZ^3Da~z6|7Pm3 ziN=gnT%_I0Ae#uu76PHNGm_X5lNNoruIcSq4{vp{{;-!x9J^RfGZaIY2SY!g)7bZI z@kLc^q)VO@sH5cW&xroAjv6&B71_Syd>+5m=wqlIdQVBgTBg8+Q));?WzG3{CGfDq z4Bj1^6=T_Qh<>F}O8MxAepUB~u}}B(D&PC!u`H?b{cfW(O0aNB00vc2 zKTwzCd=R7e53^jQz0QaZc}{Vkr;oq|w=k`){v5cJ?RYN3GEZJ{xFH%oEKOG#U8_>A z{zbk~8&x5kzS=CX>73E_s$RIxqbO{?4eo_g9yX&<*Rhx!70-v(67m=jB&29;`P%>b zDh`o9SS|mnz_1_gB3uKO&etAa;N0*42TL z%rrGhWw!GG_e2brxX)F@Ht|zGvZ0^5NB1G19^!#`hbrx0F2LWaZ3O{#}dqEq>x}cyD@$$Dee=4!BUgBa~P?^(h?bStS+TC=Eflh ziM`Zrzhq^M$8|X@N*x?afVDvczCR97f$KMtH2^H;n3_-+;61yzetT z_I?}Idqp*`-wU9y-cOb2RRF5)_XdwHRc-jq(TYk5&1Zv09=q+Y%U1GtG_|N479PF& zA-KTl296XZbjea`D5-<6v9dWHT6X6Yj|%gBf?H zqAS-Z`htqoP;$M?gS;nphBB(-?R+iPLW<E>Z_XEse34qpr^qn_O_FlA-&QaLXh8+dr}EEdwX>0Cq4-+~{w9B26L z)w`>+M_dSv_-e$5uPRC-E5W_6^(B24leNl$0(&j-3%;4&9DRg}#}^UKi}&X;xST}@ zrZn@zj>WdRLJr@R2O~9{m%(u-^-r z@h9DP8Nn|$wWiD7eQ23_JL^sGkSti#^pgTf{9o#^1?GV>@nmb7#q#D#}*t>z2Hu{L-am7#_Dz@M5u;C~; zSW#k)nz@?FBtxq`Lx`>ry#~gw;q{SwICPR2Ez%N9@XhOtk{wBc`|myGYIr(x;mJM9 ziZ@iZ+>ODT%pKF!$QfeD$+LXEWGn3C(rb7TkbZwJtQ{e2Ry!1b^hsoqVJ_1l5!@~m zP_c#!5a%ZzOkQczo7u7xxt66zbg`A%RiY{hWFGca@u*y{Bs$soIsn9vss$y(4u&V_ zJzSdgYIbgVmtmkTXS<&Zo`=8Mab{s*ZpYc{{w(X$P<_z57jplh;y}kuiQ#!kEUqqM zW1b}LceoLD_*6J{>j4@GzU-tlgiSyBDXCVe`%!MbdA9uE{Y0))b6%S!mB&5@52clP zJkEyb9L%N1jtD4}A*TO|-+z_znb*hb z+N;L9NX*<|c)kby2&GWmP0>h<9H+ku+npyNVNUs5{w(x*-HB}^SN$XidoZlSN&G!? zsxZw)7)B>`xx!`fY60eCg2gZzfj<{E{i-PaSo*D7Gs69_$tiJidx_|yg7=J}Icy)qPXAGwMLztGHOI>+5OS(Crsvqw@ z^G8^m(dnItQKIr%yJ`vWywtq}Z+!lYw#_8hgDr*1X?gezH*K__Q8t6)H7dSv=RV0P zZyP0^$YVjL{=_Avx`!kR+3G-{=aBA)2ox!F$ju&%;Le48s#$pg$4}be=p~8C)>in; z>r7p;Z2z}K(y1exB}5nlyP}^l zSOI9ltwt5Lw*xd+E_;gICL$a5uHDW$elpX0_U<~GrM?uv+{1#Eisi47da3~LqjdFo z&<@H1JWSp*A50;wJYk_sg_7MM)Ruw&lT}?b)0)P{#NAh~Dx)$Qo%%%J{YUcoo})yI z!dDp{F|;Mk|BBuU93B4&&AhAHiokip&?f!8z=$4;MfDZN%UJo;bDe>)cNl;n1NTo9Kc9II_91s+H+_?jO>!<}Yc9P#;{3W_kkkO)%=I9kM&_ISnU8h-G$gpp)H@h1G!@Yswy6! z!O^yJqvgzbMEVS!d+RYgHl2*-g@PBDYmThW)q8MuJPJ9^SO4`q_opq@xk5r%WPOX0 z$o>nk{zE|8<`_r+Wgq`J%rcQy;qAIxO!X&Eng?XWMb+1ed_D?oqy8sC^~?9K^$uA? zK>dqdx&J@Z$BIhMQ174=hBH=atUJOH%0_y8}(`DEf9>1VvzoYfdy_J43piW{`SGD!nidx zf5(c{kj1Q?c?9xXH^YO4iXuzUq#R$!$~IAG=?Z`QWAG9~|4vSNrpH{TOMDgN2v#EI zdM}EXBvohn&xq8B%Idk^hye%xN+$n3{uL4b_y7HWs)uIPFq>pzdyoexKa3p< z*=-8=`JBn#Ry$(Cc<^H`9lQ&}whgNkZ2(y3z@Qk!5U7odMA7Q?By-rc2!w>|2^pXO za?}6}qp|NF0Uz5NqXHu?*P_`$jnZj`weNOZYCnc|XD@g-iHH@W?Yt+2yx_$Qa5Cy; z+k{rr$3z>ZhV_IEr#fXRXTF+y7v-YszN!aemj*K8N9)?*1Ox`2enhgVM)t&4L;`SF zuB7k?(=~V;>1o}H}vk8!fHs$+Va!*QXrIjQl2lk8vl&k9~kJDbV&Oz4Pt>tZC zQX`)@A^(54Q?d9p#-@67j`pQs??EGDoEj&7YKNgNHV+^2U?#ybv`rpxrPKQ_xW`nLX^#)#3Wg+C-$+b=EzTt58VwD)XJtJ9h@ zLabtM0XVB(@b+i^Kp(jDg3YXDlO!mxTm27)wx=MYT@M<7|Y9pG=bo8?5((@ za2m$H7-e$FO?o=SQM4#f6@$mob;+EV-x)=vm;SdN8?3Ip!SvmhT3^kWC~uW74@MgB zn|Qm0^5C#cGDSbk6ZWajULaZxKWbvbQE}wh?iOQBtAVHm`)K`6|F_=Od-z3!J>%`W zZCH$j9!TOgNzZGx9<`x_h}_wnYWeKr)I?c@a+(CY&v+&^;S zw$9}8^z&k*d&mmMvZIXf38SE3IMw6Rr4`$N*g@L+3q8S5uI8rFPqF?myFEB^aDdpt@$M^b!&%UR??*<8~0YOw*HJL0!Rr5M~>2aam zfojdCmq*#Wg!``^;ccOUR}2Z+0(~{|1K-i0iE=hC^!%oqEqRfZ-D)GD))gvjuD2z|LUg^ausq|Ain3Z^+}sy%nhU@982a2C$L6|jPw z=_v>&z{CJfBS~bBR_WylsM^#!pW%FXKWH%xLG;$Dbu^h^iIde6#eaCuwmcfIa5PA~ zz#yOc;8UKM!_I^+J6ni3wPjM4oK(|1D5RO2+-T=@HNcXRT_AC@dN0o>ql7yR72^R{ zdA#aGTB-=~@vHXblLh~H7Um|*t_V7b4<^UNJw?N}PFFs(#PpyLL-S;-ZdeRjc@Vpi zHbx$jIA&%zm*Ks5tR(R)B>TWScjSU-KW^L+;*V4>_ER+bU$tAF<0XOTGcbMoeWnrcYijRBl( zEr2Q57FHlQn-C^P z(aNy4_mVCBe`FYg)d_!1aAWg50|PRdRbEJm6bL(Oh%G^+FTtS?UdTF{mL9~9?zI{y zWc+#P#SqyT9&SikaBU33gnzq%0GgrO+c9|kw7l25_~3^hnewSC`4bXTRn2;{`+o{% z-Jfq8hW6+sKBR&M^#+ z-A_~xIu(wlbsjXioerWlZ`DS2_FjJ(8}R=)t&Jld^FSKPJ)CFc5ZZ!SUfKb!wa$X% zTc{?)?>VFG99=r|&HR^uWuE)<;)=G>e@Mnht(BVpoF@&+Hj`jt8{|dMbnu6L>7}dY zDFRl$9fguW{Bx#_$L zFt>LTffy^C`rOTjhaD=?cm4&TlDehq9`qn+@C~!sqnAkJs6(alC#RWSSw9jN7;xD( zw!NHT+b;jy^JAd>e88q)!k3(xuG&nNv3paHlU;zUw*K_iXu`#lO45BV%=j_Y;bLi` z+EC)2Sq%-wuya^-Dm3aTeo@!#1Y=8b5gTY9E6;+YF>HfN+YVsi873kWc=!)DSceM= zJt+sm&Eo+VJ$h%%GdOV|e%Ne{u%*VO8nFsS;D7kZt;MD=E)?CYuaHJw3qhcSFSksY z1raAW^m^wVB@~;r4ke@fmgxer11Q!pt(0Uo>r#A7>tlPs(p~W(joLzNCONk$Ael~I zirq60V#Z^gH#y*< zoTZ29zUN?)hF?#M^SRy1)l=_o6DOM$D8XnJ(ej)v?`4oY6y@5ZUVb-v2bF$jqBM$t zB~!`aA$wD%jC3LY#0l0^aC)TLpZEpd_JHlcX&-u2tboT%8pHa?)A(Q=Fw&l*=}*|? z<@X?p3QCAcjhC_?L=2p{S)y>Jw@J0ZLp%3!DV4Je2QGWqPJ1;8mWsJ_LV+gs#z@cR zZ}skXS2LU1b_w8_X=pP9Ji~t--mA|0Ks=AbB}q_6Wd?QSv>Sb@CeLh+e9BoFM*f7& zU9$OKY6H_tW*>Yg5r@^eauf4ePT9~ix0VO5KmKxO>FyJ(V}r0C&nQK+gh$H6hnC}a7xOsgT2 zQghlgaHTdr?%tboLw3M{h8hXFgT#Oosg!tR)^9V~#ybGt{|~38+?QJ&sYVHr`wM(^ z-wOZS$G4$j5(2P8&!fh3WP5XX5|YXc=Lg1Xd$15Ve__V^$TRB>^te;e@suzVeFo`n zMfwfJ=-9#Qm{{&lP*Z6lYK@@rm1Ky)c%py0Zm4Nxu9!_FLxM0K<{ey5KsJK6W*gd8?*TVmVsoPGBghz)*W^CYs zKcQ=z$BP1q>7hhRlA(5eVN#U6W`{` zo*UlCG?@^{?hwyXm!e0;i5$fBal$Bvc`f+QfBE=$fST@{!K_K!URwP%dcR7MY^QQ- zBIocy{gJdw6Hgp8*H!UVHA0&@!PuGfLvlt;R%DT|XZjq_LMzdHdnFz*?32+w{$txW zM|%cjY*XJ{sb`SFB)w_q4b+VSe4j-n$*nU?Jq`?k*Gf{mBilNx1Gs0SQ`iHcRodA#~b9k0}=*zgz0Y@TAIn{>@kbIB=#bM+N) zQEx;JB+QUa>%9g1WT%W?+J-l#B$Uk1WHH;t?(2=(-YXZ`dnp2(Nkdmk0YG6PLB`T0 z7enC;J8#?kc#A*zipl6;78pZ(38xOf195(NyI^jai~LSA^NV55!uB&T)+fyB4avzr zy*Wjc!?00hAW*pPILuT`n1z3Y-SDEw{%9Ng!veS`RBcLeeo7Uso9XT{6s_y)tA7Bn zx_9e78Fzf9nd zJ$bxMCotYLGe`^ASsqSuZp}??5gK?5$D^`cLe|>_RZgYSrpiO;n`=EtroZk*kP90( zkPw&Tc-HvjQrREQ$6pi4^dpHmu*-ghewFOkng5o$O-F~YB0+1K()Hj{a6RgpF~4FxeKh-w?SMCT zD8bJA6gs_6z*84JhtU6rtt?f;P%nlirX=jptS&g<+yvS8z*iSVj*m)bzm2w;j)FA_ z|7boFYWKn30+Ac>aF>;bYogwM9NHufcNimLvOn(0*bL|=(Wk-S@i&im(Qgr`3JfCvgB<@c?bGT&ALwjZIYOPBqI#W*9 z4d=h=pQs&s#YJig6%MhkFI#W%v-aBQh}hNc#hq<`v2fSCQMlkpH3A$U&|ujKr5L&`Z?l|T|O6s`=#7TNX3AV{U9)WccGr3D;B|vbNWAQ z;!Z=Yc=}gwf@M3Sx)7DyDNW^Gp$!)Zpw}6Ai1QEoxwXNkEl~rkWE?yr`bJH?6Wipb zHi_1l-J+s3X+yrtKesM;dKh&X()gFK8+@hvx(^=p52iT84c@`^;p@PKXeO!WNOHG4 z^q&@!sIq5HP0=mPnd0clL{Fn;_YCcai^ZfGR`?UuA=*NS$!~~_u zq~4ty)Ew#66Rrca3By?!91d}=N!AU~Ys(E;{Tmf)|0E&8=QOeoi0IA}zYBO_a0=Or zljyuaF}xI&hPRcwe}t{pMoSuox$3al^rZ9|UEP1F`y4St51X5Aodq2Rka4w1GV zr&}zRONRj7xRw7QG2`fK9$_x58W0?!kwJMl14$)v<_AKP!OaQpG90!SoAE+|Fk#qcxZf)A$PPPtwF3L&`Q_8 z^W)5yB;f|keUX)y3WoO|be$Jd$^Rwa9%!kPKg83g2o`{mVJL^)r97e=zn@iQZ=2HAQ;l=dWf&$uqkkXMD z=bzZ6>d+?WVa1CVf~57?kFzpD;~-gS%rw1UY)Q_ZeVF!rI}w{$`C%r$kb7+-wTY1( zL7+?B9`3b7vx?X>Wqd+M-gq|hR6-riB(TmjZ;p*V|C=~xvBBhMu13F^5Ic(|PFu2_ zlA_hGq}`0|i=y-)rKS@*wXwW87y%qGcvDur2-L9k_(fqQh*_Ze0sqd-{ zZdUrz&8NegA@#nU?^jDTP?|vG9WSA|eyN+?6A{S9&DTDYcNA^VBuGz3rj|2l_>xL_ znvq4E#0#6jBI!WNcmBBoB8Ar2CsOORNSw%Bjwms>%OS@4nAZ4C1D%I^R?qKKf9bL{%>g8ejYzDjl2PJ(v%Pk&{ z=O{-|B+qMVa8%EXT5yEdP zshOPunf4s=a)}r^h@o#6imy~J(kw;sL)8k|FPPm)TFQMC?I3qA9LZW=65-{Q?4XuT zw4zjeG(1aCIOfS#Za2mS%u2U4TzG$*$Y&}ateI_u=F~=urCN?*uu-%>%QOj{qTNx=F`lcJu_=hvS;sE>o@-;KRuF;Q^&hqN{DdH zP#RPClFy7hdoMCJdwQ1$w9qcAFaY(Q{i)gIk?^m4pn9RIkA6Cr=CbhK{dm;ItLOzk zb4+A?huT{Cls3#>J?j&Pmr*}$5@MqK){i=$IE1&=jhs2#NjQaa`x>U5(a>;^vJ`p3 zL>YN+d#Ad7MonMDMIZ!{_I+No7gu-|R0Am}SJmbR-}qlpPp;h~h|^F&*sF@@6mz;~ zT3dR7@!s0PYJb9_UfUd64*zLz@JW~Q;M@&B)eI)t3m0%HO&�KlAZdj=ZDX>ueyL z(?Es}&oqc}zwPfa&X~CuB$>p>_}fs`7NgKvWb1iFp-VoXiDuVg(|rCj>DniSgy$awIhaa;i6fuBA?CgTWOJa7_@OY z(Rly)$=mkbT%3PkkKHE3;1l8|fNEB8H(%_KQ{xG%nB5GXZYBV?Y7>n&Q|q0ANpuG$ zfE4k#AmPV^wpzDLZEocO>dNC^xNE~3+(7wj;PJzMH!8N?N=S^j$5kobk^02DF*7Wx zwlb3TxBJ~nPYf<8u)ZXJ{l|@;3e@A_Lc$*1t$|(fl}lbM10y?*XtFWmj@R1#v+W}O zf_R8b=U2-TQAgjM@8g%wb%-wn#^HWuhhCxkm?tR1kG3weL9Hn92a>JrWS%I9HoC9G z+B#g~{r8&`YR@H-b>>XF5EbQslW;ZvqW^rhYu|~~=35F8k;Tnbs9MmWzd<;UhalwY zfuh4YwWdGUWJwo(ZnbRHeAW(^eGpXe|6#{E)TU;d@l|Ws$a*6ai~I)@&P7LElC*sX zLOyhVLt$y^~%ux0~AtwaNA!JtLwAVjtc`XQdg!U zwKDXa&ZNQ6f7z$rtioabUxcZ&au;Dr+xvXUEA|T0?&ps~$*Z8C;y>J9;FiADY+*Gg zy8plYRxkcWw~Xe#=g>C=C>=Ilm-(F9&+Qbf^oFM=Cz&jhH@6-w8WgHem+oR@`f;-; zi=VkEFAiF9J*d7lLKqB{WASpOb!z6)IrT^93J0Y~T%3p@d0b;%3`<|P~x&3AWX1Tq4Bk-^bM$oWpv*QFK>U^_o^~OIN zrd?uA-eZ56CGp>7l$iG7Z7I}xsm?DI{5Vmo$R4j|&aczir^)0>>DK%z6qT!(2DUnR zJoQuHTU`wipsd}2iWxHGGH0B3sMV~_NvcU&bZ!?Fj?Wzy5?f_*i@7%pCK8o?n6B6V zerl0(;*32EX_yl#fn!00aV{xrGx(u1XLQsy8#Vl79ZjPYZjQdR5Xu)tmcah|&_=CdGS_i0w0#&DQ? z5!OD{X%_sK< zup;Dv2^dcGbdoCaHu|lWs!(#xTK->%M3vS+2zYT%GS$ui%iz84kZ9g>2cNl&SMCX2 za%mO@s5K>CjNv*bG(Gw*qhy+`6qYouJ$J4hn4yEqi;V5pU=RAByU9l)x|NV>IJa-)snXJ*wZXEtmy*@MJf z+vq=9A~U&8%#i_umDmllvQ@ptHZl2P)sZ6D);KabM4fjL($ z75xI2PH1N-hg#w7cM|=@)O~9t{lMkF(~m^nagk0Ie0~$9+n#SlP4w!^zu<$GOblh< zsoGU1t==6R*}0Ml@O~Mkq*HLSrZU3YWj{|H`ErLo!JlaTJ&Cd^aqt}S)%Ytul?Xd3 zCwO&58JBO{%34z$E3k`$Pi}fxe4hAg`^e`wrI#00Bh!zSUQ)rhQY#|_y?aby8hlT= z&@4^q9RW+NB0f74EA@768HqF7SlAY`bKuSC#(};~6E6HqbfOayfIne1zK_NxdrOu5 z-Cnlk^aH+}h>-*tXS9Cfq8GN%%aKQjwB+nKmFAZh$eh;N@A*wcuZqu?RD2)W51s7t zA<867jQ>?{gdcqh<6`-M-VblTHE5zOZ4Bg1hP-0yU%sKz_R7hpqG=`tNncABAE*=I zlu*mU38`UArsuA(SocbI!>;={JB!*SDs1^58mn9x9&X!Ly5L`0?RD5xaF;PCu)hjF z{#+u|C*RdOaDs3LVO4L1KzqY#K1D!x?v6{8W_$iZ)Rul^OVBUNP zO~q2TdLrrolR6i$PF37)fY$7N|DIZBel&&Aa++ZVH-Skb$vaCrd?^FTopW}hlab#? zMzKo+^T#9SbvG1e{Y!DPs;JqOM@JlWWKw54G|MRKCxlit_s<5WX?t!($EIXG%rO^2 z+6jk;4+0I3pO}@cs;aU?5IB{^yJGL>-S4=K2&u%&yfOar%EHS1w@yZCV_Ko^8{>;K zZ2af(CuhDs0(!j9dZ{;Q*~?ovOA76h-p=pRg_-vmtjJZW|FhpM9P(29b?N!Plim=xckl?|ms_zDfli;$_s{j&b{?y+yz zkj0`^bBN-IhB?J%GS$6y{`%=b3!7gbl;T&-_eQ_foK1VN%bY9(DIK6ZsmQ7+;+?t5 zZC#l^-iZrpfs{pPHO{+ce*XM>R}C)3{~e>q+}xbQD4PCtcvmDGHv$0w!W?QWmRx;c z5tR?ZzCyge|6&wL)X<;;_2KFXclLweFjC9^BY;C{hxUEKiXT8|I3Fwd`R9E zIy$yrao?Rg83DC}I7DHUi-Imk>XSZL*x~a36(N)9Pg?mCA=@fcjXnO16DFfcwmtyQ zN8pYSaqqQlqm}{AwsTb}jPN_0MLFGh4S{o+}gX%;cUN-5q-t~u{W8cJN)?GsKeGvM(LFxT~0ES|`` z`qD+6nCoK9+O>TzM4rs)!Y2d9_7AI8>1^PIT-XK*JM8m*{Bc9vtBSYddMCghjng$n zveen2%C#tC>JNDG$|(NQHBW)Kmw)u0g<07?pCc<>#QxGm%+^9Gsj8Y~|B!Vrc&iNk zwyEK-);AS~E&IE!HQHU=iKvm?xvF~zWcDl}>X+@?rlN}Q_Fu!=y&;fyYXC^}|K_91 zpsJB8{$vvfN45eLiH}>S{<)K(amZvLQ8Ju%M)UVNuV(x8Pn1tS5j3lMe8=CjbT8oM^1IA^l-n?-uvQrP znnEgF>Z@usV9r!*FW~wuSCpjxWP14fCsP$i-`+XYyzRS3vv>Yg)URJbshhdO2lAZ4 z3&+-y{zpFW_k`H*FJmt?sQsk`OH&H_#*xSD?mVx)b)jstV+QXSrNOJ4asK(s^QjHT zMdO{Eu!iY!D7W6{J!goOvTdkCw@e@Yb2^dvyzPQ!Nl0Au*F(1*!+t5&96M(!b7Tx4 zgsPoS%Ai>r*Zm+tW9wOUzmlk_X`g#8nffqS6WuL11~vEA<%n=`Lv5476wJ#Jd|5mfreiLcKqBA82*Nz z*;oxcbw$Wo>qNGZZ{v|W;BTK?2rF}0?nhh0Zylee#t*zXC+cH^usNJ}?p){BrAf_k z_}782J8N~Y)m_bJS$M2P+|HY^&a2*K1`JpPw^QD0XYJvKGyLb-Zwh)$a6iBUv@`Q1 z-A~ILeQV!=;v5h^9=r%$^%THcxUv5E(LAl4WxtWP=l{8VbN?x;y*EFeJO5kc=6HU? zahp>&&tB$mr+B)7U)~;m0g2zY|Ebo)7qM4wN>pF9{%AXYKXVRd5#&7>Qtv&#)eJ%v z)CV<=yX1C3BXf22xg&lW71(>e#1Se_o3!|A6;?VHDzNf%klFKRxe;lvnU!vbD08%W zu(m@Utr`p|(<#~xbY!<5fE>7BPUeF09a$gyOHG_|EbB2G^d=%pjBuZpU1u?-mYd>e zi|+nmeQdaE0-2I*VVi>^dL#AY+N+=%F+`f=81o?#x*&&^R&|Q&j=+&J{BRUCq3E<0 z)q7bgEw=XdHO3d^uEdQ55tkIm!MWr+Lw5A{Sp*s!uHN%BxVLq5nZ1KqF0SIvMORvA z8q%{F;`6*N2>pF84MB7GmjhkHJ7%?ZLS^%b1{w~Ng@UqY)XI@je{>H~9PnZ2F zG)k0zUqH{IjuAB~F!=F*+H4t^+R@k3IOpOL7~}84pX`cSlkf*T4xCKD`;_}VI$HVr zAl__XU)F7pDQ5%;wTui#!LGWESYTUBg_b%b^2^K3TXb{~bad2ofuO7lB|CpXG>WgS zu^wv2-iA+%sAMN_F0?K(nDAg1plnm`$7+Q$rT%jTHj^r?q=*EZx@@imc;8 z`aH$E2}1TyjdXFqG5c`C4|U9(w5~z(8odlP>oj(z!7VfFVqvJLO2?5z;)ni7wvpG9 zZ*)~8A(^~`C=J{Ox`a~V>KAzX(|x{YweT`QJC(*dz>5hP#qy3L1xILS$)SwDbJjN7 zn=pAA&vIQk(MO@zXeUC~EYK&h4{+wfAwB*o3)N=_D;Jt(Yb6#N7j0dnuaWf}Hs8Y- z1h`7bM&fUGsckj*)cA=0<`^U$0(=>abZy`rGh_0M=92B6s}|qVYf-;$#ds;?F4oO@ zd-x~&;Cg53@(I^Ca>rqDo6ZH_GD^1)-W zRz@w_G#Tj5sLk@qk+VcnxX1wC8n8`nRWckifSJH`#}E*M=UF9fBd?^JmNW(5dc4Xo zOy6?m4*SF0Qr%coCR>^V%Y-oYke~epfY*XHhHeAB(oy%kI_1pHa+)+jQ7uul%&^c0 z^}%-YJp!lf?QaL;NBj!p`HW?79puXwY4~gah*sB=SgZ=lO{t+4s>@sub8%1(zExIx7UPaJ zRrK$iYHU8=u?%tf!gNsPVy`MD=Q%OubM2`3%6^AA88^Fdh6|mL=fpBfHyofpZiyMN zUnEXo;~YpQ90x0Fnj7tHH)SR)QVlRp$X-3l`i@d>^9}upL}DrX4Fc_%JFe{sEAP-y z9=stKeOBiPg%76h6IrNoB@^=9L^S+^(XOcL4{F*%@REHw`gibf9f$O6Qja6h7klis z2IiMFXD1LhS3Y86D_CXv^nFhsDndr)Y(FE1urA47VLiVWmFLSqjj!}B`w%+0nKh1~ z_G}v4doo>iAx8I6woddH*RkmVU^276F?ZG@jNP-*yYEX%={!&_c#Fpi(A5bVXMEQ) z=$gVRhtfeZoykFA*_OGf%1cQv6vf8M^-{cN&9wE>?JsIG5HDizog?h3Ax)M2v6kfr zdrZh>ps36r7dBW|1$Jth+qs8dehGXw(2P%Wj|?!st95b%PZ>i4J7kpi z)$up}J?&Q~bicEIRMtJsS}2^^N8zfy!v3 z@y$uniq@TrQTxu(hB(@kMUu0HN5?3}EiUZh3Z~MMb#-tkBdY@G6t(2UOPE7?0uPAh zNyQ#+p9+{qliC(mrv4^}3?{H1z9JrL5e$=?!p3hw&fHX^*^;5u%TQ^5k+>IbsS`^q zS$!=HTidR_WvBF{MiBFA^&c~bcg+m7Vl#St!rR419j^4s?5fTVm1qR{I2^nm)1O5m z7s&%l_vH1iS*WkI*s^X&Jg_549c+9Z751AfX`o%Q_6+Wk)a)z`ay}RC%n+Hs9i|IB zQ^c)=*y2W8jVZ^V`aESae_VwXa4!q#gl{yp5V(t^S-t?%L2}m&zY@7d(QK|iE?~W?5(nJN(hp|ey=mKYw01$S}%-UGZd@uJYa5#{M@3z6uWrAC?RU*ItJHw z{`?w#$+Sj^Vr^QGzjgXAt*C7C68Qj=yIO^Lx8oEvHSGkv^`vrJ#9W3)uHzyk$UEj{ zHsW(qwfTK>tD^f=EX(hw3cGu(Z@nOke#`hG280%Qn-INPrzCyGzchgYriZ>O#c%d} z*v|>=@zbUgtoiq2+#`7^nGHrhwt%Z{5@W4W3x%WC-+z^p2RoIjlsKWtK@V-|#47U& zj|$Qp$e=$cC$Ejr(|1lOYbQC3U|^_m(te(MC0Lyjh5KrB)Rx55a3$*SSCb8Rf$!3s zx{xDZpZlC%**IxOUiXkV){ry|b8CL=2~7^ZxP{DN(>76 z152b;@F(mhH_eDUmw*cxiTKU9P1jU9$@VC2Q^V}KAfVnR=c`8MdViE5+NW@lh`qbz zn?YPodN9gr8L79GNj!vl!X63IGg#N&S+o2IZP`f{N9Xx_~jh;u85mhUoCu8y@hgM^Rs+UDf=2myLZ@O;Rfzy&x_Bm?9(&l(|u1?47ACRdC z2ub5{PBDJl9&KTu>8AhTHjGyaXUUXUS1_OD&DiD6tn))IKI|L~7yU+}c$#^EG^mo2FJBd97#p)e5eM29pP8zU=58hutTjAIt2&L9+jBx^lMN!X0o{#r zsLRajIi4f4;n4!_y1J5{B`F5~qGNg3Y{EY$xLA2$0Jx78=Z^!F&Sl``X>O=JL6-+r zV@mG$4_Z(x>N}B2IuDB~%}W=;P0u`$m3P`MBh$7yhWC?`7iM&u zaP_W32HpQhH@kv{b4srFCZs)WOnOF8#!+B0F=KOgZ)h`M!?dD*XlpYqT^h_m_{P{_ z`dL?W?&452>0I18D$pykm+~&NY>wUY%vXCGhFjy4J#rMwi&1^!N*WBOYxqlzD#8oU7|;J z|1KHtyuE|lWG%+k|`RjyXfSaI@!=tkQ(w6U-&qa=zfOFD~R{$w|gbLk!O4sSuFz8jcA$}Tq5 zfrn^{IH@QeE6q=e|5h1@+Kpghj7Qhwaxt^da;|MD_Q;T3HaRU7`ynUMfgI{$K$u7Z zPk$X(eHy#@rH$ty@=)9jq{lDZ(Op#4XyJMHsG>5sFQT%^M)ojTI8%UciPT(Y#b@#$@A-}cUDmcx`=NA=$-~tZWE^8p=q-KwrqdOes3b~AFXSl zZ+C*{q;vT#p0m5JC>y(zm7lV^-(xK)(m!u|ywxE#-bX2aozreM1c}TS_Ucp8Y2UZ@ za@`1m-a&1pW~S#HUn@W$*4|VfVihN~`IFZ|yzyygD8n&Jfa-~#Ly=UCzvbKw5HN95@w@KmiY50QW9qGloPOSpX=7^)^3v!9aSFs z&Z{O3P|kJG0T;G3Hzt*lBkLDM1qtZzYEGRWGSLE`x_t^W_f*CAeS5UHzyfuIQO+W= zx4GL{?#TCSNUB4u`|r`GBizx2+y1WucI{jv1%rL(gd6Is zYzgg3`EYa&d|t=z1EYCTlFVMch186LY0d>ZQOGw%(LZ%2PYSXtoFEfl#EHctgDu&< z6Mcp`Li671()XQFB5yzi$8Hx3(YP5PZOEhd44;5X#r8jEu+J?%uRMWuY~O8&O+@{BlgV|ksdEI_<;hArfChxY_PXv_Ij1Q`doPDe7G^f z7DM06rwP~Gv2cbZnm1^C9gniA5BEn3gK~?votoiet6VSiGw3@RbzH(pL7$YJM9`Bq z`mu$Y?{*H62sY1yMShtcZY5ao_%?lo>qvLDXiO_jWr`5JX%polYMOQ1JsY($kUp-i z@7lD|{Uok6ete~&_`oS>q6B`i)4#6NV{d0?GfXs!vM!7x7C}6YShv=277pRleGmo> zB+iHQgh79-VJ3KeCRj4cL7d6m1x=!-bO_#R58?Y4>au;|^W}9kz4FMp+tPJ0lnrJf z0zN#Qb0)%hEG%XfHi8wEH2~hA!6V@wj$PMrBRgZ$yVBt*?FubVrN`1CSlm0#dV*7^ z6?Jdsr@()n0__`+&^05J@n$lGxxaP0XHar&^>pO)^oQV%K%Eu-qoc5n;5Jr`Et9ea z6u7fRW$?Ld zjP-*D<0{Q7`JP+fp6|=8?o6>Nu26MPljyZDcYpG@NgBhN(=tF+HVjayHDOs3fgpQy z9yhlvi`V8Kq!LNBWi#n5tr+`?m8{cD^X+*bcA(jtCel`0LgP23{a4)v|7H_XXA-@* zuORjQ*@Weoe57s@e~+@Gp_cHp%TpFjO8DhCpW(ntwHbwcI+?K*Ak~0EXME^h7Oqs1oA<`;RJ?CqqwJOeNzs+36$A1-a_19x-7e9 z&j6IbXzo8~H)GGMoq-!GrWOD+yixpbWR-C~>yhPWuN9JVrKp#`Te_ zcmuEkoHpBVmoo&N4Ky1M-(dih)0KfR16T&8RShK%l zxtjQ8?)DpQ>&Wi!MBLdB#FY4Re(Qg+6J^7Y)Dbm3>alR@i)hM)8NcZEBam?)y4I>n zYX#NAMlt-SA+`EL7g9I{ilOmbHlk5cEpq^Py;{2si5=ZKhfWx;SE`TesrquCk?6k- z^PeW8K(-y^M?Xa*s4uo#4%deAjxuWe;Bz}98O^f@P-r+<0A!0CW3JfO*9QX@cd8+& z`b(>9Cq}$EuAQGM(1KCMseVtDNbOhMz5!S_-gq+l&EGPO%E7_N)32B(DX2PR89fD0A+B0ZpPYlmO{2V={A;duSXd@zt8QnuhH}Mit zv2Ft-v6<$7K_jWuRhJcI%qGLL3G`&y9&*j{+jUy!ugZY%&%AKEAV8uTFQ1O4_iL+lYb+PVy{>+OQ;0_+MrcB7%mvV>>@Etto0296#O~d8|YH+z?%-jI5Svd8C0}d3AWZp}tkqHva?3&{I7@JNQ zUv5KoMI=bD@1)04Qn11A94Jlu#^IjbzM<QdUoZE7s>BO$#V;Qpgb zaf<+4txrt}kREweK#7YCeO}F^#!@>`ir(5TzO#fslSPu%;L#h6X=!Q2??mMnCvW;6 zt-qhDu#fcyU%%D0Ux`VA=_>WhgTw_mv+$VJoSkJz%jiXaQX+2I z&t7S>vH1CEQx_k+yEa|tsMj)%Y(Df_P=-qIH8uMvooNu6t}GLYtU#uhg^9Zi)Ku1I z81=Z>c5#k(K%mUz{A7FuB2-b;_hH6zKfkh~%WD{sZ0Yu zbB$P|P(nG_%wjZswb9yK*DTZy#X_{m=Y(~Ebz1$Yq;hCQw1tueY9#o6u!f5ujt4Xh zJT9|c&rPYdG5}c2D_%s!=*tVC*mb;x2 zwZZrThHV{d_{4KvCe})D3Diux`y-7`x=Vie>*5QaqD(dmDAyx6sr;1Lp}wy*y{LLy zI$)&r7Yl&}1-w5nF``!!nQw(ie*+3@)}ORRqy7MEJUIO+IgSWPXsFKBf8=n@x<-m^g>$P2y5`0$EC<6iM-BY*-oxH>lw^a) zZ=lnozmym_RKkvVAPqkW8od)ey7g|?^Vr=LV>K)>NzE@DC0*NnmB=C&2^6{$9hQ#Zvf!K0 zw&!QIvdWq&WuqF2I6);d(Y>GIe z8p=QqjSH0m#vXPxFZ~EcYf~>eo!zv>eFt)O7FHcMXxJxbFQkU_TZ?$`l`P8=LU+6? zN8p(js>aqhaJixoaX^N`#xFk5am`DF2?`q}#QgW+#Rvp;o?`86!o7_4PNv%?5qncI zCNRyv+`cQXX>&+rlL5do1?S8nJ(_ws6ltG_GofGWwuLq{{vNe~Gx) z*d$ujZVZOe(|=C-etEv+h~Mh*B98?6L-9SoV7DfB9d4l!-!JMz1qBXGBs&sGJArRt z(IPq%UUqu&%gK}FrH%|KyIyzH;-Zl!eKbpz;x@e-UbcZ#ZAzY#>2Bb`mA98?13inf zXB)An2Zz24j_5FX7*!xU9(Oq)A<=(QfS3pMG|lRvwb$kJryxCiko(TCO5I;FuwN;g zYVPTj-9BnMyCmdZ$$|#gD_20VezLiZ&HgU~mmil+Fl~DvQ_uMN3xO^Jo6#EnkOaRN z7}#U|^U2gPw%TB>1iRe3OE`3)0L$NgWiaAp(JjYhLJkZTZdTX%1kA2{aGwCg{2Ll_ z!1@^FSAKP8mtK71Nxti)%Tssr)0zdIybt4$%)4?AaF+UzgX1{l38#$eW88+tE2A{52ao);H*E4i}wM5%Ma|n6@nm{ zNtxCD@p3@Xl~MWPj{d0->8ySqKpe#sDYOs|z6QK&vM*(7VI zfD%!+s8OykGP?UQk#=^2AqAMS$z|`lS~?=`eX%X2SP=eB+4Q0HS3Wk ztOXe-zAJvz2=ZFnTAg5^r9$55Yj0#OY`pQU)uO(+VF2^xyx6BxzwFHl=+7CSK2?+x zozND2{T}r%%n90X@GQ+n16*f~SmHjMeM%g}BL>_|HhMO?XOrebKj?2>-tze1TDcZG zcXfLgGcyRzTXQY|$}hfd6kp6igFLZw1z8mqvKNbHw*E8e^6Drj)hgEjMPcU&IFGGq2~KU75(u0coDmtS^MXYzzAy84d? z==@bjv-?GJO|5@)e*+TwDO1yY@Lu{3eBvzExy~;@5mNV0VDWzEtv2Qcrv8B<+Pm%+ z2r3c51CuJYW5OSeZj|LZjao7BXW)&MDlU1&teF?rHHuk2vz;Fh53;O*J#2)>$i_vD z58wg}zwVw9n<5h_Xg9oh>PvRQZYm@Fm0nV2Rq#tY=FS~y8l_wSb^RDT*ysZ#-h%SY zAB{KL0;8EN>0WY(vj>MYdV9v!4waiUEp-~&fOFI)_qG5d-`gp}ks~kN)LGBp*?B)P zF%jN6<_Cy#uvBu;0)COp40*JD9}H|P%N%PR`Ao5|qIugGInYS@G4B8Y?|jSYGEok} zG0u4}>Gq4XP=_$_$CwyDrDXmOPyXZ~N` zCG`uqYE>NN)!s~izQdTkGX97RI8m0im_CTN@`N<}G$h$(L2~;l#(o3ibMa_EHS`Tc!&NB56VR zXe_Qk{TM7m{1oW6EP40lM`LYz_WC;mmyC~%vgZ*9A9sKM9a^!ddH`?F^4Wpg;myrA zU>P2dOt1rPIUG8q1a`Y-F!ZrSi5zg}T^Kj9s*tk5E1-A^r&TL9Rx5grX{@g|c3vIG zw<*Y^B=5t74K=Mm{JqY$W+F3h87uZR@!v%aey@m<$^-HC5~4Q5zKz{^w%)Dy?_9Qm_aMFAs{$5j z;P%SMT+gb0Jh(|Cy6J#H)O!P5*sD1YhUKMh*gd@X#X4pTB(c%(WZ; z{`+q(7rWhA_P!{s5=K`{(AxT(iPka;?e!~D@N_9*W*+TFmOMCR6=@t z?uz;86TT+B_y`trSni?>y!bAp!Q-7Se~cWgDnSzo!YY0BgU0iwklZKl46H?Xyf?i( zh9eqS+&D_`t*lvO6Y5iS=4bR^7v04O92jS&pk}kxu!R0$)U%X)-HgD`z2kCyP0!+B z(5jSw+3G8EA8UN3N2oOFA(E9o+xO~{O{EO7%8WuX^l<6X$o}W zAcg2z%THZNhE(%K1dBEEMDbEP2+LKVer_}ZBQn5&<&HU;_wND7$l!gsDgHh;k3j{R zzeJv8R5c6q2zSLnk1Ui=mpC87(Fsyf<&k5#KIE#B-bGGr*!V^RgH@~KQ)b0HYP}?7 zKd-LV0tSS}l)d+BQi$j|SOW!Sh^bN@0daFrDB@J6W*`y6tuBsPFk-UwQ#@|$i=at zb!q?L?uDk99rq@51GoAW&fZGt&0>6ii8l)@jxdDKwY(^1wDD`!fwb(WE|mu?He)R4 z%ay+BU&-4#2saV57SmjbK?X@LExd6^&rpNgjDeFkabpakzNmfK6d&aqVvmcTlY6N? zSDYi+-xx>x>_=XeOh8hUx`Ga$FJHdR*||gy7OBO`{_&|lH!<+br!jrK@sEdw+}-58 zR=(R0@tgf}*}j1jMI2_`oDLwaxa@VBg?84*I+GgzX9ae-K|ghh7eQZ8S=b^0W;F9* zY;dwR({ya5xOaq?D6=pKVkfzlzrmXmgVUcXy>)C^DUwN)DyY;jN2djs_v&nV?>fcb zMEk6zJ{?IFE-{Hq!yyqm*{IXGP|EFP*=^&Oxw21F<*i^vKY@km!io(U^XVO;d@%>M|b?zzIyrE(46wHWOC)SPl@aHORy2IBE3i*@w5m z^VWN+QYHsj8Lc5t;)^HNzPkJ7Xf#$C!0M7{1Z;K4oq9EWcTmn?@6bDuc7!eW#o4z= z4PKP@=(t>yTP&qffl{psr@VTe@3=V9fht>GqT67~v@PJpqhwdRp;8G>t;O5X!#Wji zPy4%?ip||}X0?^G5QEFQAzfVd!c+Va+B^=ZSNyqTtZeo=al_4=uwTTUlu&-2w~)dJqHw7#btEsXw?D!h|@u$I#Bf5Qgb5qKUyFUEl${ zT2`sRMSheTWDouJPpIS8%N+*ru0AgYa@t>7bvtc+#@kH4%iDT6guLMrOul|OPKRK) z4Sjg#oplHWylmdb ze^-YwcdhK7sjOBp`6Ur4wu0NH5g56LdWqfkCcidnZ}u4-2-OXNTy=8ZEKp;7&^oTqo+ zzW8`vXSChV+Ge64orKV!n6`b!F`NSpQdckMB_9U@IrA zBa9z>&Eb$PkscSvS*!wa7Ku(K;gbjU%sTwO1qinC)d|k?^?T~)^LfvWuS*jxPOGb{ zxpIYsa@)a57mOaY=j)-#?%L8)FLESJI(LsBwav^CC5b6m2WtZpPb zVP}nNVSTCO;fofd$W+ch+b7L(xrI&pYmmPC1INE6ZA|QI_a1TE7uw?uCbV>2gNDrL zKSD(+4m$4qj*y7@1wY}Mq zFTQLG@A>84DIu8bwnq>Fz4phn&nA9Q{mq8&#r7e;e3$Am>5|J#Pm@tsQPRsyKOoy< zV)Z}^cgo!Rnd|$4q+MEUw?@mYlT8xOzdJpmVYD=P+`V74c(>IDnFzw^VKKP?wS(kN zxtQiunOA=gY-i*$vR| zIoZ05%4?lZ=j+_!BAXHVHhVMp&>x3bvAf<3nZ}>X$8IUzn$o%cBj(~~rP6j!?QxPe zco%DP-o@IMw61{vi?vPOZ>@5gf?Y^8;`u2KzTb3GiG#{Mo7D_ai=N6<@md!dkB062 zXE-`96ZU%!SoyW{$$at8JB=bT6`z3$Jsp@g=oUr$I^$gtWO-i@=W)!p*B`e}*eN!b zm%sTn;`Z#j&L2dtH#AGy%)LeLif8-1GCd;&tzMP=);@{k_dKaG_33b@47&KC%fj!b)OV@aN5V%4??vmjQ#$&N{=w-K8V;Xm+CE;r_aJ)u71&@G{n}kDSvIA+ zyF1U{0{q#$47nxI^m+`o_s_0C*5l%=?f)G1>-PMCJz{rui!5%^_WdcEN&K%dd-fbu{qH6B z?D^;SLGpj9?}`2A!tOc#v%L85e_QeDRl-!r82|NYX)$lMnCq?ll+Wk22QP;IOZqZ> zP&m1JuJWv+E#g_y-vL8frc<^@1Pt9$H($cnxWmO-?v+&?=rKkYDEX~U*ngUlBKx`} zO|cW5W%1j$si?8gg6gROIBg5p;TTh`}oP~}d>(}No$^bU^xn9(1LcK`I=cAd8X=`mT!#TTZg zeEQFuF07jOP`oV;hdfDPK)(1Gg$tDaE&rE6d;@=g?#eBC=xomC_`RQV6!smj|HP?( z|5bkYuL;VSEpdTZ*hF><@euRI|FBWgoz8LTD9h9tE2?$0YAW=71Wpaei81`3yeNj? z%2wv@CD{^VF^KtU4`Sh|^quj^9O3_33yIpk9DZipJU}p>gK)BU~!}uq;Dy6xZ#=w=;_?uJ(sKB{&jkLe~!qX%YVc?2ysuX z3y@e(nLQ@ctE+zCLQbQLANPjm8`rOZV&Kc(`?|8@f#yI<5_Rd~=)w$-p<~8RM ztWBF8{yv~?Vp~#I-RJV4ZJ&m-#iNz%y#a@){NT0{tflhJpns9t;3X^KNm$}Rz4|=IdTaUt+KwUr9OZ&KPho0-ORl$mC~TP~ zE#A3`!Y{snTmW6(F^z!5rI@O0<&o#CS$ZbE8C<5#AJh`A_i(gT7!)F<3wC>*f5aJs z&UnIx48_rNxk&WLFQM-$Vh;LvEh>4IFVG#!^;WYng1}CuufnvR!(dmXRHXhL@$p=r=)sPI+{wlJ zZcw##4no|L^3S*f>?GTw;MB|M8IG6RHaAYi=dAj6Zw9e#Wl(9b>Ut~3vW-`6fwgAq z+PUlM#FpYwyAu0uQ%~p&@?VQ+J_zJ=!fgzCjfR}}WytCk&HF{p zXL~bJ)kGtZ*LlYE>8F;Ri|iCzjgK%GVO?B#L>-0-G0SjR%(GSciLv_`3*&Wfm-*Mig%$F~D# zAlK{2<3@a+3!Trc?mX#>&sn1lWADS&9KHwZdRCMWE`5zZ<%4EW*;gHCZ%cKaE^gz6 zUWgAfjd)trDM{Kn&!;4xH%&n6L#*LWF6lrogi}KnqI?glz){|hTRf^5| ztkdF81F~cQtpRskqyqF0+DkWXOgsL(sD65jwW1T8SmVmU4)n=mqI5>4Ia!xc$Jj81@)) zaw^jZwxkRS)Lv8N$8TZRiN!x$dTrA%{UgAx<=R9jlT2iR%R6?RBJ&8`&_)xyeJl6q zhE@!_RHN}#k3~R*+;eMi0IA+Qe8qRt&0qB46zcmW|MUlQ5gl`zhu26*dM-~982}-?&OC}?{FeG~ zvu9>xbfj6Aq4lS21f@NrhyT4c9UBQ>s);agfK=}V+y}}VQ=}v(ml`Jcp8Ig_eLrUV zqTTVd!IMio&ODtWlj<7kBGZW-EgDLvEw~-ssUfd4OhHPcG3!-*iAZiy`a3}?FT3&v z#R^{IQf-KKr@7~(wtN6RU-k8?EU?-d40LtlCkR1V3>Flp^}c;eLcKpM zL>FXn&Vn3wLl=+GXXoUMNrF^8<4fOu#Lc_wig)rc&joY(ts~C)_ci~=p+IeH*w+|x zL2A#jYT-s#LwYYx57#+lGO|!qLda-l=G~eJm=_UN#s>PQ>wRBz|_DXB--e?r@$r z;};Yh-J%3Ze2Nw!4r0pqi|DTjBI-JUBx}4D4jKu(>&$chRn^CC#jT&~g#JG^NO}*U z69le-SH}Os%R_Nv2?`Wd!}l)AhP@Lo9Vq&)$%px?BZtj={p19AyX7`Fpg8|!Qayil z^zZ`zlnLlEpGodKL+M@w$NfKr(4+QdDavouox5E5QMK@~X(Gw*mt{Dex9*r9;3;1u0rT^pe4X^-m#@4vY7jtE6i#KlG%=%2$mT<2oq>g|! z^uvR;mD2VS^@{c#S&-C^2Z5Bh(XP4du^2laxkJxOS+H}Nmb_Q3&jFnI^|IGRe+eK2 z>-0af%(GnzSH|TD%SbvKa4&(xH-OEEM@b&IOH#(&DT-fL;`XO^ckLxHO=ov5H@tfd z8$X}7ZJL6A@uCS}2_e+=_dlrMZ@lE5CBaE|;AguKeqc_`!X|aPZbtqGq2a;h2SoGh z6Rs-Cw91@&d|DxV*~_w}6=n}jk%l}H3xFz98^uU&+M`|h80;ny>??Gu2tlGbh}jwL z%T}YSB@}-lP<@B-^kcV4vNE#)|6*N2K|+3ij5b(;g+EL+YSdJIA~8F~Pd=&{k$+!a z$(e(#7bRX5gm07TaZETI1|`Lg=Wt0?hN3q((s`g2HGSnLven^vh=gl`I|ADW>N$L? zaS#M;7N4cma=evSdSAJ<9GsYzG>?zPvdCa_NAsve1L-9ls{Ce)MwCU znDku&+@jFgYEF6zCBwdCm*c8uu)Q6tRx0Wlo{J$MqX$Ir>E*$um6k~T6f;jVT+9}C4r_SF|}T_)*g^I^|3$-hkZQ>jY2wI#6a{bDQ! zpP^Avab`DSmn2$cG1jbbeQR)EpMh1leUwVsL)752gBrEHPSO(GqhQzDF<9YYiK)EO z&nYca$firnif9FU*vSG<%st{o-ZdJKB~8W8EF z>>woOm=L-21nT)L3%VAqxmp#c$6C@Wc+zKetz5Ln@5Hix3SbhcJ!`8N$}<@p-5ORW z&xW~~`>s(tLdz<`j&~H5`s>*4*|Quf9`VZf1-W^~An0PEJBH4bmp+pb8pK%{zHPw!zxb-Z1vOg#=UeUtVe6zMpy)q^+Xdrk?V2R?3T%&gpU`H&bT z%^y6NknK8pql$k;==;Fy`oXC$YN+(Aqi=8DTuyd&2<^@_KhyfI%V*tnE_?bkcXA}g z8B3=H-t1*ZxdF%K<+0Q0uYMaZ9Gtpn*WW(uPZQNLQYd>t5_uSi`Q@3waFSYoxHz1Y z619}r;Fql7v|#SqxE{l<6+51XXbYTiv|73oh)eF1T?lDmT^-5%~88bt$JbllF+d{_Uebe3b&yCty#6H?dpCr z-oqD2RL{_a&Iol;I+s)p_b5AX8hq@Mk**%ea0ksK)514y6&J>V++eI*zDC*cj;#!I zf-)Q8@>1l?(0ljx7I^7>>&mf2$QxF}=WbuiNxNP^l}e5MxV01pvoQ7$6!D63e=Ir= zUe9Y39)H;d^;kb_skUO7Kd#bNu7A|8Ka0tFA4{_guFYK3$Z(OWm6c*sY)ecY-Bv*z zk1j=aBxFxDI9Rn9lMV&u`6k{1=RxY7GbB5zIGzp9R6ocnQ0^aekMo_HSJ#KY2an>B zd18+%4o&j3;$#I1F^T*+BmIRgC4&x2am2O-w0W^EPNNi<(QPQ)HB=H`UsO<%!<)c`ka;p-_kOe)z6UW4Mm}6@I;FV$B6NRKw-}`Vum9=O)37Un|AODUH zhQn^;Nart8O%qKm^!*qi25j-P6pET?btZ{=f|k52YjtYMjQq7wwc7o@W3)1qKIeFt z1r24$_;h48YwJRt<~sCwar;^3=R)iKHn?RnlVKqoPVKb!wl7ff$3VVbd}O7&Nv(T` z0U9o~{JP^A*|Tht@O~+({`zJ2OveCyzBao(*sAe*-)sN16jC$vLg<4mJGZ5YhjQ=@ z2RI{?(l+iXZ*JxoLufzqDwDH%vprf2tR6Q`pI>%m04JA05?p|N+S#~j!Igg1qxnOl z+n9)leO4yh9lhXuiabMD@#`d72dh=Y<>b-FO$WCxg+MhTjeW$F4<#9iMj+bGo&JSp)|caSgux zOM)7umA_J`7ufe{acrobz{VGOe;*j~S{9Crj8qS*} zI+w3)eY;rJp%|qOsXo`zEONHH2|!NuH;X^|Tiu@!^vVB5SCctGL4u!=F<$$U30(eL|nRBkS76CX$>hV7N2-YiEPKyy32 zK570)OI&9hq(rIJUK6*T&d1JQo%rh|4$lFU`hx7lnp`kt^*p^iNLByW+VVU@9j<#- z4e!_*L+IfkP*xaQqW2sbzBJWzTxrhP6jv(7LDACLHk)YYEf?HFoCyKgY*GSvn=SjD zmdK151#l7q)$bc<=L`OQ;dqns`h8}4l*5gysrS=5@iyND6+T=+Akcs13-G=|tf|0X&5b!vfFNr zcC)B)@n?}`?5C6cJd2d7@Le$@govTR%SmoPWAqV^NufTT=sAINv&OXJ? zWrHKWrJ>`Cc8v)OX@%6k_AIHxp}Sg@_6X}Qg2>3A8hys)jsr#Hyy^O%;fv?r+IT5%ji$^?K-be$ohS#h=5C& z>%y=NFOUPsk^m;Hxf?F%c0f^B_S-CQh+g|vxHhunrZrUnoYa-5vO0>i+?~JMm5>eO zcN&)TO=onNpe%?lj_AAM~^Pua9fh1-WzxCGTz7-7SajvL#Kt9&_~!X!9fJGSa-|R(u`Oasfz6lEiLfi8XoZkod+6V z+ZzJ#T`VitHh)eYRFEqw8STt#Dm6UR-ZJ)5sDHsW^ zo!5oQGqT6lV&I3L`1d{6ibtJQ1?N9Ip${sBTr3wxFZsP>^LJzhgS7xU;#wXW2-#_l zPD)Z#!ppXAnr{G^dniCl97cBl52qC2A9N*g`b)o_*qD zhje24?Lm8<7h^Pbbr=u(msCZ@^@694Rp7d4^fm})*m?f3erJD_()XS9#seT_hpJYQ z;RtCpoq!pA`nxTW3Dz>)XFpw!gu@I!pT7*Y`_9M4WY2SMEZ_?1qw@d{%t{5sZ`nN_ z>V;C%#&zvWX7etEu9kwD%LM+B^H;}rRz_y74FCA?Ll{SGc>T=Gj2AY(jMQXP9x`;Q zu=EA?9^evx5D07-n9lwS=Th$`fL15mraCT4LhZ5fwVDSj-o)fbrowiKM^uKzX;PpYW}aeWHFX%qm^rQe@$)yRp-2?C%%*%P&H9HOF={Q>3r z6_C*iXq;so72mm}1PXHULZS7#X3~$gHC`k%>`K)MZVm(f{G0gq zPJx@Vr~mK#`Tw^a|NrS9|82*b#;b!oN{*Bs*WRU^!e80H;jfnY{~Z1bP;`!VHoV66 zsEPhu>hG3#T=CdaKVOy6YU5URbSAG$0qqnZSzd(6#El$37dss}z>6{q0Q>;_)!f_a zi@(FF2dJynm((#I|9Qh*-uj<6{NA1QqUt}CPzoG;T4H(%pXxmDTd(vgl|}3H2$i?c zx3|fiW9ms~xCul^2)NB7&eSDt;VY zRGJ{mcCFIUityZ#ZGNBK1x+6PrGp}7Rm7@<^a*Iksm<7=NH*Ha>vY}gMS6T(GQnu~ zbIc5URpco)!hCBFgGn(k*iS=JL`Fto6Mylr>z z;6ntzY=1VhGUwq)UZLDH#KR#|S+!ajLQ|-Z(AghJ$Sj%ZcmAdyp~nAZl<5N5ep$8i z?NQIE%7+kR7O3*lhxsF)JdMPipu8Q-d&tCH#h-qtOiwk4nphKpLkRF9v`C(93C8Wx zi?NaE5ePS{G6kZDQteUerDVAqty0z>jU15Bc|AlfOHMTzDdj!OQUeUm`?+1TZ$-)otAa(Ag3wf8q!f;ARzYH&cz-h zC=cA@{3=DF?=*fZe2~J-r%@xOQ#U7 zp06dH10_xYIlJv>BYo0Zukv`GLHJ(p~@S6ap^~DRhD3<(eAT7o~C^p-A zj-smDiYCX^s5u7pNJ&Utaadbx$T@6>!2AWVP=&c3NrEZcJm>`+4}n#x{cFEMvx`KBmDbeqfSrQ+_E;%zpboak6H>aM@)}}m z=F(=Z792*b^Z8s3-%5ovUw9umC)3>9R7OVUzLtlA8Ie>Q@_?kE5dP$$T0BPZfr!6cxVA=t{zil*e#j z>Q=Vrkq2dYQfd!gAkjqoX!F;}tSPbZ47^ok>JN3q;YODXFr&2(wDL(;o+wO6Pa}eE zeNLvxnBLhGned4zoMvCT*?EvcjxD>G>jMeslnF73Pj?S;O9H4Xf*s6_5qKQTKO@y9 z0Oo)oG90b?lx9oVx83u_+~={-f}o9_RK8`SEIQJlvEJutkEoX}x2VrkyKZG2_z8<0 zec@n5CKHD`@7mGbqtd%ljh(Us%RMYh{c{bwZ`G4W=j~9wDeu##d=-09{`0ANhf&!* zqRO44K5@ubQpfktDTkubtIY+MvM}|QH@BO%g0P1gZTk*EwV^A(sp!DvznO0{%hUDj zKSC)sXeMgSzEzShn8=+Qf_bLZODWWO3a|+Dh#vjj>seO`TQTX+P31=;vs1DKw)+|5 z!ZpKHJMNk82&;D>dLf1_g}FBlX%ivswqNp)x=r`Eghb86HopAHRJ(S%*W;PX7g-Lv?N3CftYk zXeUGi3V2^W)Er0rrSXamR3j3K7AUEs_-ABg4a3ZM8=VFZ{qrWQ&aWknbmV3 zDTzPmQNAbnqYTL_re}L*bOGQXIwda9YOUZ66aPqZ995zJE}H(MnrUU@2yVFp?tg(h zevuy?z?Ub(Dat0gcJO}}ZzICIBKwW~PzsRfunNqlU3tzAY|jJs7hVSa6R82QcKlIZ zfK44gW~p`m4e>C1{}tJ|Fp5n4O<+RnJ_YHSziM_aHxSnFf%AbgQ^2VLbtloT`tdZ) zA4rR20&qtHv;bm|{7b)Y^HY0Y$SM9jyf$$tS-HLK+!F``&Y^$L<$f-eRdH{|u}0Xh zxw)CAsj4Yf@=uShJRt&Lq?+$xp`qK(7hxcYwrGKd&DLnCY{ktOJTi7sK~{nv$i3;T zrluBP3kqk~AV?_vs>21iHcwmmGVik_|CCe#w{wOojelR0&T=`;VoF9RVY z0J)gUzDp$f)S*8y)FtMQQ;}1vB}VH8gn7?_eLEiYdYSeVR~kl<^CqO`9BY{3 z$ZS4le)+UC5Nr6m!BcD}81MW)^+bDqX}Ry;7y1Zi|KVKI1fVRs-!5!4SKR2}8 z!W3uSv^!-z@{(#Fd(cZg`Q1(Fqzl2E*^Lefp@g(^x~!PuU%GwDy8PpF<+cQvJwPfM zz^sv1P|(Pdk6B^c8^#uKt?kqj903?dnT*9VxC2*YcWv(5rsG4c{*z&Dy0NDsqgCG? zmh1@AD>K^|<<%&-v8%P_>Qy;8$DaH(7Q58HiXA9c0^90U%7#=i=R3aQLv4(cl3DgJ zo&sJ9nL88C(%|*@*&}HA_g1A*%P#ar(vIN5XJqgr(!nsT1=GG?dR0rmv=qS5S9-eM<{@qU$*t5Y>#iiD-^jJ3fW|ePVnvvIXEF0kpCU!2x zYBt^hRohcRz4OzPc}=gFy6Snb(LL0z4k|0{KfU^aS_IuB5!}f585A8tUXfKAYD1bsaS{PEtUAUzP}_{N0Vph z5o^3GcV;U;oDT{ByLI%MVEd@WxgTFEY@M?VmsvRn?Q8om*`6`!Ujd zJV#8k-qyk3Mz^*5!pqngYLUGd(dwq%2IVf=NlBID2gX~{Nsx#Os&Li*GipZGHUg#w z@jlWm)IEHUXxO>6dgNZtwd(kyyJ6d-YuoRo)%c#Lz5Da;&p#*o)Dj>{#izJ7h`rA9 zFPN@Q0+}BQU_Eji)o1`~(_%Mjg(n_^QiVC{Rk*=sDyl&tgqXIf$^POFOK4wBBc@15 zwA1^MRUrzpm=fcmsa3(=Cb(kV?jg=2W1LsEKVIC5@X%B7L{YU<_@IjlJzedNk;s$J z+*nBBs;ARz7i4P5yJAtqaQzp5V4+t09Nuh7tz(-=GoUDefDiSPw-(qrt6HrNh>m`k zY<11J75*wiDBD7?uzk%Q&ehyq%g~|3XDM5*+(vhJ@^sT7%Sq=*7LVFA${qJ?y69;$ zN=Ot3Om@ui%TUuMi^thu_jM7&W=ZVYj^8_p;Mj=0rwRsDIxJqHKYm~*jYunmTj*Wa zdXr>MR8n|XatsnjX4G#wvp#z`_{jKB_3CO``bbeiN)MWE%8OkdjI{7DWXBiIUfoB9 z0@I|b86EeL9-;EjqQvyem-4*$chQzJ+&V5^eCVb89J`TX8Lyphde0HAI?E-mhM@C8 zI{C2)ljiTfjF)RL3GQy(&v0pl@>crtyKK}|ze(bv(?6~(TC#7@caI(U9oRJM^8hD& z0os0@`u=v``3EXj=6b!w;iO?754qm}+Wu^8k_a;t78g`LBs_ zH>*7ofU|RP!U7;~r2v|IwjA3FgL`G1oqTwSFTMx(eY?h+uj!R2;e{#gZ{z3LgetG# zZiw%Z0_uLca8~();d}VM%&Gh{ss*nF1IXyRz*CGB_Wc$v)~9o-b`>#R-B<3CCRrAX zDnI#PQ1s@3Rvvj#tkJW98of-$l@WWKbp+r*=!@lCE6kjDV zc^KEvX?Cs5m{$ya<@|C;SBU`X!ASL8RQdO)yGrqM(H#hI^zkotx#BRn!8*T{vmhUF zQF%Ef{y6Qrl-#_;OnuAN#eLC-$oYJ&d3(t8UpWvHRXG-&pW%*Kk1M7rb9_%)3)@>| zkZ1tvpj_@CF&h0@`v(T2&j;+PN;V^K;%B5B=gG7cTKI2lu`@>8xmv$6Ol?c>x!&a5 zA>UNm)NTOgv$7h*m{ZZE=S}YwhlKUs6;12J3a-S6uy5AZu+`75Vo4BOA ztbZK7Z<+-7PgHk)16=BY@VMjTqWZxUY8IJ!s%ka?DHHfdPC*IEYx(JF5jy?NyVCg% zqJSg+UM2w(*+}>SL)RwKeuW|(PfPfo)OSrzJ%=qX!Ra6QPJtCld4H>|}*rfmE zZLi?+!sr>TgY|Xa`-^m>_nc}g1L(LsN|A=NiW__v z!ie2Ntqg7A7mArGHaIOJ&ZtWIBWs**s7;Y^7Fvuhux0zeoE&IN6R&l?B*(6N#n{vQ z_abJs*MW{Id2L)Gtu`x**@$UDG;Y(by zi=A0MVE+3GY_&U{&B(8)2Q?6Rb4XO*QtSN=mz&jKIxi4gqMFkkSi4Jiwu&p&`{p02 zFJQyfCv>a${Ngen&fElJTgi?dF{!QBCFQC#$f0Ye1foZU^$VeL;Vya9yS|aWdXWWs z>i`Ty4htL#R%cNm?Pdkr-n^Gp%X@&mdt}qI)g`ztL_T=MMUhjmitjkGV2a`{v_*OS z*SJ)^4+m5vJkz=ai_q$R(`T*6F@L61CUG#QC6e{tR=xl*cv|n7Ivy|g1$z)5m4D4j zert-H5|!rPeXAXs?mYedvC+VNMLC1M?S9@I3Ok2<{W7a-rC$yZnxl(9bX}}(WtaQ) zmw$v?V!9txSnHKX=+|n5j?!||>CO!7mLk8biz^Av>*HuMoFjd6{qd8r`kL zbqxiYgdo7FqCwl;Bvy?RrK%3mfJFSuQDA#Do~%VDLUp#0YgOr*#(_cpQj_P-wlJ_* zEdKD6Epn*!@+h-OsRKJI#Ejm?Fb@1g$zLKG$B&chaX@*t!J$}W?bmf}(ZE2tYY|n1 zfD9b?&FlrZ_e2T3T9<9`k&6DCEI=^gDHDh4U(y(0{6J!qqBOlg2wT%Lu?=dEdnYD4 zT}^$_?)3=4a|8V6QV*~E6O8eY@~D34VfAvv9M~7Y#|C_)V^10qDkbKyKE!JtX zA5U?Q0@Rq{QxN8yxZDQG=%LV5bra*C zUH~3`jYS~VYQBZNdBfUw32@g1viTWu#Vy#mySq#O(jIm^^&tZnK|3cJ|;8*FLIQwBOdC*lTBgdFDKg zabKLTeS-~z4Ztn{WE)8Ro&^6Ze8|Z4zfP(9T#&9yMKwV;LD3Wq2dF(l98v=!(~(V# zg9qIMViKRV-!s9pYs4Q!Tb-5$PR^5(-~<9T-UBQh@Ps#hskYqc1G0;&>Z>W^mdi^v zbFH50_)DsAHR<0saN!pj1vmiZqQa@4`SW>Jh2Os9k5RaG131yY1?U!jeq7;ke7|tm zlH?3|X=1&Q2C%Ecm-54Ry9V!gDUN(loLTczj8Gb}{cUijvmOCkP%-$pRUTQlO;=B2 z7r|jM7~Wu*EMxZ}$ooIQE1G0kqRs|8`(E;kV)~>-??vI|hRR-bDu?N8`xc3_!ga=F zjk?HA!|uF*LIvyurN%aaG?C8c&9v*zJ%_XhpO|gxinwHq8DE;qs_h;?2l8Ljl|aPh8lagW(sb5N-%U9h6#9*6bF76{Kb_}?wKG{~m?kb^fQQ}16^aCto8>X(KK4i<2#osd^iiR+kC*Vl&wbQNfb0YUvdkZG0rpl&JUWlHni@p^3Fa zfm^v%awjxeF=ZIHMKUj1|L+R&^6KX1nT(8#Wc2h!A3i+rlJBPN=B>pEW&agqPmlCBP#@jDEy^FvpOxo`mq!sN^E^_ z9a}D6$kZ6HSvJvsrg8>NV{{;rRgxwRSv~30tgw=rs)Py7aI_qF-m1@1FVTSBukNIo zC`n!+KNEspc_OCv-WR-e^JWa$$t#4+Q8)swAXq1Cg-S?L|;@-GPH z(V+F~;Op!7ZSXrQdsf<*YyE*kU3X*YtJ3F|TIjiUrwW&*r<`T2=5EMtYY*}MM!iIA z+U0Dvg&vL-Ah;lE;6Y{B8vQ}i($Zpy9&&H(oF|y0}Kh zZN=S~b8L4&FPRXkUc?a_@vqc4mOlD!b<)q4-82aQ(Gf@6ed$i^m{4`iFU{n2of^^y z40|cDVw3GagrV^tcqVHXlhyKb*~(?VM^@?3rOb6jMGZJ*PJeIj^2DYo`88@;d_)z< zKT-<@MXl=dDXse)*ZUsM*{$lhfCY+c*XkDTC7ZCM?$dyDfiR8Jfw-LQNDYL;O`mDZ zFY~;CgPHIn6n>V-;on&p96!HtHXbknY|P&P`|EcDc*I>?5BKKf*mq!VFlE`iTsBB` z^nYT={-4E=1(Tzs0)oi*d~Iqj*#aIFK=sh%P#%8nzNV0%jPKyDMkNybRYFD&dwX|O zdvRGf(qG$(<`D-~guW9#q&giwRcUe{@DnWZ!z_K}4k-6lq((9V-hdm}*=$`caHmvG z-p_L&@<6t&%XsB(kInUfwf}Q4P4I=>%Zhq3WjKG9_>+sPOYf=eK7b1>73sg` z;o@ref6)!j6o&t8Sw8*+m6QTO$Njdul&67_j7`nLeoBNOi-fV&9p@tFbrW1&h}f;t z49uTaH#O%yCQS7P_BkCm#{@mDLAULm$h849QJ@E-q1mB47I+=$lG;jUr$%#Fb|#1& zq%oNA2)}_Gk}WUwj#q_I1E;gx)R=eZk;nC?Z*WX}!l@1>B{_l<^j}pA#cIi>FXmDJTbs}*6!NTH8v;&<;m;iIe`T8RW#S~B zKCyI+o`C&LO3JsnsBqsET)kOS!i^Uz*P&r2C6VmhJ~Hc$6N$;dxrB|Vsv>VOsW=hr z3*Tdp*Re+%Z>4vy_Q&z>4oE#4Y`5;w|9klh(kY@uA4=kxoKH!~JrHfMG~6sMu)9Sn z__N%}<;OeB4nC&kOiM!x9+&#TA^aje$ef$39nS64RBWbOoct%BSlZYnsY(lybW-k z36&*r&o4*#&;4rbaclg-aVLmG7>Rn#?d>fTv}U{%6{w@a=7fA`eMQ zm&Kg-CaoN5Uf^}ixg}onZ0{=ieA?Z(FB8X+zJFczOe$-&-Wae&Hn_nFTu{0=$JpR6 zk*(In&F~}a3cQo@zSlZc{l*VgmvtU_hQowR5oqJUtNPmI^dY`sr(1-)TgRdh@ZagN zx>x1L1+{juOZhaS6Vu5nhWV8Hh6N3XUAaC62C+;SW$3pd-(A@;ev5!nSE}rX9Xs%H zRffOn)$705e67#cZ*rsFQj!ewZis`7WR&K*G#JyPwXfduWwTQ-uqzweZH-XP5mkY{ zu17F=QD#aT?%bSnxgCbmvGQ zGVDOq>F$1RDDYrX#&&-cg%6@Aj67$J2htb=Pxm=619GRYWBVH1U}|GiMd)mY36bW1(~GBUev+cg zhEh;IEefbk>fPM{8njni44mg@WGBdG%1mi*<}P;0P-AOty)Y-7A>-5`DH>wA33wW( zy*RO5I{f)+hqb6*$T^htem+X@**U_3-3IyHPH0}-N%>?eeWGa_4+PuDzHc?C3a*l| zh}x(r65Z7?TJ|_15E+}1t|uQcF;Ss{@9C-g4rRoR=f5KHv9l$CW?CByDpIFd)XY~f zW$ASBRS<0HPFX6u%PB}#Y;!Ga77r}86>onc2d{c0!3FAq5Q3(4Zesdl-#@Q+519Cvs_IsZ602O_Y$A zc)$nIzSOaRhf)n9aQNJ%O?L)~TB!^v-<#>#t`d=6o<#q;po1|ceW2Gb^1`6~-0E=6 zSbtWMH*)E)f~!NMOS!SsG|JP**?{P{?ss4|8~BJv;&=slQa+{mup%1BvuV zq^6q7x@vZAlyl!t*T&u@eeBQ>b>rs%LFF!Qr{E-i@ahjs>QhQzX2Qanb+ z>gyF>xV;cM{#8eR`(0`PQ;cRITqIuUB{7TL&^G1DoTal^`$%P8xLmpDdKweb%qP|c z&bwJ;sjQ!pMseWECR$toX<^vUIF@@9(_aTc`d&Es+?DT%W|tSd>E2v94&-1b+=0Z2 z75!h)1>v6i9lKa`N+V=>`%VB3mGFOe z)nT#HXx*2#c&m6NwLm~y%cW-1&^GyjT1RJU9y4}v+!_c_cH0D3evGkMB4dPBOr@m-TDy zws#!D->wb(kQ!mQU$U}`g$&P{d$IblqN9_$KQ1j1y7=XNc&3mZLL~oR9)G)v{=T^V@U32wK zS&%LIV6vd2QgKj(M6vG^2kcwTaZLT`p}KV3r-$mov7TNZ{>CTyT|g7^I=m|Wl%r8Q zA2!$(ae{oBj5G)Wg7bjGvz%NHv0r&gFGr=VEcF9Uk@ll!~WJo@eWnZEkpeW)R?jY*cVQ4Q)SR}sp6F;!LC7EsT^2Ef{T5wtzPEP`&TQyD`n zZTupxu(IUu4TWUoH2TV09`R}x>SI3)W+iqvKuY1qQ`eJcl9?T{ zEC=;Md2{5&9LMcH^*5h?k5YmnPiBUer*eu0^r)6SWM4H>uq-~im7#hH(#-o7OgYev2DH};Vp_=e?h*dAUl?!M`DPKMObVD=4J7a4vR>k zrRN9_NJdFU#5TyTe)S=)?=Ft1d3dtDh-oA>b$NW7)Vg8-!3_tK~6 zivD8knB3baa!|BMO>(sSQqvo!Yaq@0NtPfGbK%_{a0~Iop^A77_5!G#|AbT>cGU8z zh5*FQ*UbZ1``R}b;EX{qf#lFm6J>RfYRN^!JMZRCkJTKCfQ+GtbD-$*NWmd8Hs>v| zJA21)E@5FqwfFA_r#i_mf};KAY2P8%VtF{b_7f2^Z;>AsE_H)JAcj9BO9a7QurQlY z(vW7nxlI3>2t=OT5mOXBFc2CQUCcw|8TrHT0_f|t1uBrZ+|@5NUs(I7m^Wt0C_CD& zfWBLF6VBINcQ0Zs_&DSQ)aDkhMVz_|aEWBC!>NzEuYuFi5bQv3)UWuhmjYrJ5lM#! zPNa_;F+c}_4jpin|B(dsCh~dyvpxaSN%U0u>97U}^wqqZWL|jMZ<3YuWXK*Uc{X6{ zFHmYG`GVmyvd7L_CLh+r($g7FmxH-wH|Yx&mXl-g7h4J8K)>GR$M@@p1!})QBxc@= z)P(YeGPw;%e67=iabx^_%Evtc;PZ~nxbX>gEc(f|P4#7$prJMAJm?*b6XL-_NE0II zw2DM8@t?&4pJjFCSdlmf`l_J3Ko0bw|KHQX7l2InmjsH*klBfPseXjOsvz=OV_i7} z`3Dz%SO{zCCIN}7_0UN*yg0|g3KD-pw%~m_uge_%`Mg(Uw8|M%I8AlA^A2+7k= z2A_R$j#hmZST*tpr(JoU-7Qb%$E$dUa;oBOXUV-dM{yzTuAv+g#oipT;@)r|I5dDU zelK3%Z6$Az&AS^_L7^I4POak5Qo)|3wg6LM&^x~b~B^ZBp z>e(gHU!YyCa{`V{efrg=x7v5Uo)9vA&x;I{swg|zXu#oDS>)3YpA|^6`}~09FvAUY zj-6hDKl&LVuhVP{WO80iaDDU!_1+>6wSf7%?q&A|Wel$_>EK8ixwQPtomH`1pP=9y zmKLI!kc9i3QwDAJfvwQfNK6 z9Tc*Y0%i*;a0+*s6u2JTuS}s#$G1>>MCcqpItWs|ch~NhzMJu|T$hkBQXxopNHjt; zeVGfB5o_y-f%k?~^dQz3lMVcXf&8v>gQE|tmb>k$I0VweyBX}O5I%=@L=MFLjuy(F zWnKXC!}K6Z29U*LqAA6Ne#fa->XD-}nHK8_q>DW8@^Si8xsobzYTgJM9w%k5JF_FT zHC)#CzdEftN#*YYiOGh3xUKb)a~D=E5L{;m63gaPT8$RC*Jw)W)E@^<(m53F8=-ZM zVDw1-dn!XIjr9fj`5p`70;^Kj==W0zR1D|nrputQ^gJ^u@T}w=R=+ly`DHXq0p>Y^ z1t90yo;%ShKfKUW-kQByIiH+o$*|q+HMN+aZ`ZTb7myuOlrp@xpHr;JB5lAf@ z^m`+keRGd51te?DsL7#4|JJ(#||ZSqKK^U#3NlgVe1V#%+oUOyb5!T{772h zy70Qk#P_ra%t()udtrj5{`@AP*kf&tW8s1o@}VU8U;QV-7Tq#jUeut}fwA41wO{Mr zbh0EmGc+uVyL;=HBN+mZA|K;J`%>SNY14^s>()LVb{YqlYGg+;M`pYiVi&MWJ&C0g zf_FT|)P3R}M(mExM|@=OJsx^8cu3lXRsLQnp*Awldxs5d;IV*0~8$6&c(^ev>0?F1}9Dhg=wyW{*af9)S( zj|$QturEqAIxM2)sz`k!Fe!;13tvxCCA*;0FI}aE!kXRs6^{sklC&g)8JA(6h(ZYA zwY7SMDAAEf><^Z@Gy=bUz%{W^v^w;v2Q9Ldc@?pzWw)DLWT5ONF+$CHsfb^-o%XT2 zEWnFJoC;r4Q&XyBv2HMHl=lLW%eM}{hRlwYUMlZ}YmKF&29-mqGo=0H9?Lg+s{hhT zTz(-(>TDUlaIS|{V5lx_@@T4m|Ks-krMnZ@-UHNB9iIanwziQuZ>}(0aJBSY6t7c& zPtl_)v+5J+2?3wt($6+(gC1Ocg8!?qGY^NV{Tuj^^VL&-dKt zKHvMC>;8PVF6sWBQ6lBb-;m9K^b_N{&m%igdIH_^E{fYL(7w`^8JRp}JLT@Rg=$be z)gK-KMZ{5l%=3{hpcjgwCVXa_07yT&(yV#R6{E; z;)CW#32WoisMKypf5Mz$n*O(=Lz&<&uiP&8FBeWPFz34F_6BR1qxo&1=!s+YLeHfo z4XSbsIRts8geRq%q%CeV{vn0npOO)jcH@rHk+fQ(h6tJqaucucn?Ja6;(TTn>6R6~ z{GI{VY9yao`6)?`(mypeYu%X*t);xlB?=|m7|1Z%aySU3xh>m8sn=W9J}WHN_p}5R z1^`ZXBFi5J-n$D9AMQ^hjS3~iE5iR{spZz2v3p-=}OlTRemPHPG17? zfs{6af1wtLw{O}ptHI|%Ue8IzoF=9ggrBr0x;Bece3@MhdIveW%ft|f)QP<7c6fEo zjklwgq>i;B2!UfGj1KF(2wxN?(-i&G0K+cX%^- zU81nIK(FuIX9X{_vkxtU9Mp8M%6=Mu4d@`@q}%qv0Y+sz2VF+6*)sOb`PaT{@@aGR z%gOq8+iz2p>o0_`rfu@r+WR;+nZVw zdN~BtWfd&?I?^kPRUzPRD}}^Jmmuqf4tndLMNgVI5#tFPWKU_5mQf1zho%0PzY=l9 zDOoLv$-icF)raTs1^W(e%l;7!&o9N5Ywt9@%ER*d6D!wa^<7kqS>i+dxZ50x!8v@5 zO#rbvo4fdp)rvEPk=DE3)2+0*bwryPJbS4uk$@+|{zr*WC)*Js+HgMnq8V=-mub zQ}un=t^|El`N*R3wo#6bYw)UV{?$MfEGXyh%|TI|O1;p9s<1)fJt~R55!*(@O&_J`7S@M@0ZQ8YpKAvqf1RA)gh42*Y zfQdw1$yJbiNpeeTfU?+ZHJ^D$#o!0dN#-ZtO%i)*Pf`Wpc!jdtE6;FB zjtPoNWm@u>Jvl`U_e^QhZ5ol&Eu(m;+uDynxyQ1Zs#*?UHR&ii1^=Uyp9R;$di0Cz zy&dp;M+<%iVGJvKb1xf+^_EZ<%diEo$43h<=c`-RPwp_x%e|&-2-<)C;0L@7U|RD^ z8)|vZ%gz}YS!?ArR7MeDZ%$-JK5tKepBDkH5T$P?DYg2lHkG?TY2>6sN7`%_uxYa! z7MJgo&HuGhzFOUs)Kitp5(YkI&4zul{hs@?)SD!8jB3{ouJrI;NuZrQG@aj$6Z>8m zhEaPQ@-0PefYsX)+WV6vOh>1yGnw;)dX7!~@2w7Zv3C@o4NK!ysI^O{9{P6ll?4)3 zn=7H;Ln7gqBEeBY7T=`COn8xt^{`LQT^_K}GeCo-lCh!eD;p%yw%q4+wck<}8)Vnc zWoh(xbYG4vI<40XgZRH^snf>u>r+5>2}eZo*T%gWMmdc|f%zn9Bn)1HLlzQ|iqzIzrZk4E>W zi9YM6g40w95hj{@)_STY(9o24R1nfHD-Vc|SLAiaGh?NBkeQkxlKS8?DrmJ!%iG+S(x;~IkJlAE(G!YwP|_<9Z?;Z{ z`VULA!+U`XuajaORP421y_Ftufh`5n(b=g8HaX8m(!PXQ^oDLG&L?|L`&GiaR-sTF zD@3DKi$+QD*X@ypUAQ`XC z!mn}o&aCMLQVZhautjm;(t{0r&0R-}Yo3FJ6MdLs-07~lsa3@j+Ge$FkG%;R)W5CV zx(s&fT!P#yd32x7z%iEw^`jgaGO%s3fAz;o^LBA;VMI@&hhhAJFA}zE3@(Vv%AR}3z^vplwYtIql) zWA{O-UG$^lI5BzSAaTFaoI7cB7>>Da;HvJN5)_j=d9ZkQz-`kFdvEH+a#J5xkI|MO z`?DZ>A+WHHbw0!!FA8$8fn*tI?bq&ZwR3QguOIQMq$dtYEQIj7_!v-lo=nr>8=NSg zsK4_*O2t5PjU2Vt3evBb=_#Wow9}T48Z9?88h#JZ_22g~VW*J;YiO1pI-HShy1fUI z3jY3(f4O(lrkJ!faQJ7zx?@j zpU;rrTmS152LSh@Gk*u)xt(DAi(o=dMODvEQ?zi%M@mkJG4_z;JHKfPwK>aXQnUMCs_)rcco4&}usB&0r? z&P3!A?Fd-BtZX6lmSq*@FwpS1WAbB!07h{4i4NumSqv;5)3THzm&y%v45lFvZmI! zf2P?zQzJkiobKU{Q|?20CxO`aL)&8y%si0I3}lvdac1&ZXiQDj^VYePDn6zPFgiZX zcN(=XRh!SV`(hG5o&93+b%)SnqRFW^4&YNHNDb%K(;^Rx<`HDz^qtf=rZA#F?AM`2 z0l9ZK)Nnr^;n@4UbLH%@TcOFw(EV$kgUs*8t6!^%f`nf#a5B-Cs?U!mGxbO=7xB7kStbv8GN- zqlZu4xQ1?OHK4KK5SvBSepZ0VJNY7wc+P!149Lfry4t?Ex34-OZLjtR;;36Xjf;Z6 zHhpSj#c^dk^2C)74hLUI!GLtc88&rW73wOAupyRh z;4?D@&h7B8m#(VPVlT?aKJ3GPytWio5Pk8YDjM~{1QGuGt&@z7>x&oYJ%2wh2ONvP zzIgFmAS)rN4lq1iMFwC)$dFGR(|@7TdZW;)DNE3@n}?wdCkd%z;^2tls5s>oe>;^{ z3Cj6MtN3-W@UZPB>y>$;7~Lu*)ZfuXmf3o$ki-7YFKc&Wtz|g!=6G$T;>6prH7>4B z3KQ#}5i1QCe#ZXKF)}MF4aGm>{3Fti#J_{Iw=*N;pD`Ffkn$f=ASQzAzmyahrpAi@ zQf`Z)jfDP7Dj4#e?|&}J_TP*C-|l(>f}}gUppXpeTh5+1OYpqy(Q8uzBQ zCGoxU^EJZ05l2U!dCVMrXb7$E|KfwbuzTTcdoeA|Ma|0l6zDaz>C6cd!FH{`(7VES zAj|Jfis9M)*3L8M$dryOml@m9nuyz+5EdPrlnOuzUH@SM_NZ`oU@FVtTl}$cF{q*c zRx_OnUIo(=vKc84)mP~0{j`xudWOv%g!y4XRuL0RCCNBl1pX*AJjTNY(jA9-O1}ba zX^=Vlr_K~O;E0vEbwL5JnC#Ff_n$Cu_hw@~jVJ=q`vf-IKVC z=@p}c*73!e3Id8PXxs2F_V@@G-+Y40{9LwRc7*(4mDq2RH}c|7DRU;eD0A+4H1 zAim*Dj)SbF(D3rLEGE>^>`On${~hmX_Dg3M2Jh*+Kc!*~Pc}2mX&U|~+{Vy`(A(W= zK8^ZJmNll72#h2U*WP#fh_t=%gTkiYF=Ks`?{rJ!qaHOAj)<^#H)Z#m_pdXElJTiF zvQc;TukT8}wi_n1ux$*w2V6a*M6VLtx7_DA11*8Yg3?=$05bKaoW65&qzv?$Ov~ve zfNEee>@KJEyty$oqQdfkTv1dk!tFVwC@txxp}pzj95mQ+JHgfROd*<0`vZADS)Xmk zSoa1>At8G0!o3bz#InONU)gbp$XQQ#;1_UIUXt%O4-Uoj{*qQs;^0{wZMl_~dB3>()qD`%D-n(nFalJiJnl*vS zQc~cGHW|xsZ;jy!;VC5wx2Pk_?}Fs+UoU&)^<1VrTC?NXb8SSq7);6NH@<}KQg03y zcr9Nu^^QmSrhW_U*mq`L5&nkv-W2Wjq>?nekc#}1epX5l4Eg=p8M16jm1^{JMwuEY z7@J(z=gFGFLxMhf=>s4XTm_3z9FqrDzV5M5UE)`|Z;jWga5ouBc~W^_I1Dp;3qmx= z!{SjqIGx@NO=$%Ih4rpwOP|M%C4AT=`7L+t;7s!y?YgCK2)}*SuM#OlL!C7Z|Bw)l zzMdvrB=+6HM$r7NZvNGR*QYCcDg(Lx?dbSZwUC!QIHFA-$9i%ThX_RY-WDC}MoqH$ zn@_pB7-!vitum2hpTlLqpjnEV#<)A1Ut)OLK4Et-1XaGk-mhXHm-u>j(Ty1$%6bNt zIMghcaFi&0&}kVK(_O1pbau$d6!7MnWS0qq-H^%jI6s_?O9Gn%_PA0ywxU{B5bO*I zU(rD`8bc*Jj*^lY!usv)M1kE^*^}TqLjX9KM0HK~hqY+C6AYLSs*aoErDXlqXt9jF zJ+)`}@t7R_wAy@BSX$DKD$8_7L}I*N-~lC~)l@$-hq&X?ZwJ0YPh8m4i$BX>^+MyV zXI;D`-oO(Mv_BcwVmU$d2TDKKmQ0o>00o))K!7fJEYVQi8<1&cV(ZcM5T<44)`|O@ z#OWU$wdjtti8!AoULYFwupH1PPYG(rGINB`_?Hs zf+>XYlFryLIQm>~#<+KGacH4p!LXme3D8EG1Q>2eA{v!IMzVRQD`ZxZC`_0aP|}gS zSN_Q)ZqUelz&Wh7cDsuC3rce$4LKr$$GAd&w^=<@gT$&u5rhoFrZQ=XKT{wAHrkeS z@vpnICl(REMS8fiuRdy42Il6(LlSnYl*#F$xA%X)^~&XAT$R)}s(CNH?OaeiOJ3Qc z5LMn~6z1J~;Ppm~(VzGCG9t@R-O18)&4l~JI4_o&V$U*0^qhTEec7+vW6IOy3jD_a z@f6k#@lqM4VswEJjUuyAaM~+c&C(ES+TvpC`KN{t;z*<2L!72Qa8LC3*BP4Q@4qw> z1ml+%bcdWhr3i6+cDO!@wDkU?QkBBv6?xWk>G*Iqt9{XOK<2j@?bxoIUs&h+2dju1 zS}K|*Z{x^Ga$u`FKOg_Vc10}W!=)amI;XnkEade;&=!_2dL=yN=L3mWITyId@4q)& za`X2QmWcGr|L6CYX~uvHi@CAADvKm^OI#6-Ic-q330(iy z+lvf#dU;s`sX!AW8Q@hNkYu{!tglk4-t7H%Na2yMhUUWo)_F4NW|DYpRGX#}nGZvz(r{I{E6ha65l0bB_tC+TJxRL)n`P#Z z60#|=?0&u}A>uQofN}|;k|1SP;+jB4(bU=$pRO}mOFk*O%dy2>23EE(lb&@U7edr4 zTNs;{qaaYu^s3>5YteQ3^V>EOZFhCjhUQR7c|{Ny55MYuJ^j3Kw8?*NX!N3O@?#?j zN_szw>3xcbi8W`gS1tb2TFYBve8t|8{i(`R#}Dh5@9qWZExkqzBgi_&BqLiTMQ8lX zsL_w!b+wn3DD=d(4YO9DbTV6eWy3~~h$!;iLfq>Om!%nPwqQQyI4@sZInDSI8$biNvaH?(7Zg*)17UMl$dJZ{;4;3UcC zrXrdJFG9jVgwI~3^(8eUfNUJ(KNPawv;d53E$#lcf9tAE@|u2KdOkty0t4UJ0`}wl z^~Uj%`9l9-MhLCaKUUKo9vYSOms!;36&-nFc|l`7B7$~wc{zM-oaICvIlY&F&W3-I z@WVi03ae)GNY+-B6{3&CRi28k+KtkF=0D3WM|(^?2=}0c_!|q9dt({W=DxXn=M^lX z{WX?B`d$4^W;ih43<2NBQ`LC&cVJ%qb=b=}kPR|owq|}5*huAzI^a+97Vj~^(W|C# zDE3*;hut3j0V2mtJUxuX^XGkIuES?$icIKkYZ=#!EX}1hbRtV=D{pH7_0L56Z)nB+ zXSxZ$?pee?)8M?VXyQoSmV?g|#EDrNIyW5qe_m>BJ4;7%ISG=cx{=xlQ%B2FbgMcx z#i-!I+(mtX4^KEQwlmz^ z#s6dOl7AQ$A6M5ehQLEr*0cE65k3s0j!}xeMc{b59(^GS2vuLTr^8VGnBZ36pK~h| zdM(5@A`*ecSAvs6OHE~750{a(M;O?rJA;6T)R++e>wT>3F_65$FFXcIYSWRHDd)Dt zkQ-sm56PSl-m-?u?}0q=qwNNb?pkL9fm4R%-jm5V#XI(}-vR+xH~OtS%ExT;Myd34 z*#>Vr>^g_k#)9QtzFA_miw4Ih(I0%q)kQ2=DZICSr>kwd_imwP@#%FR-8#cf><#Pa6$33csrAI?-kq8el?0-?zLYve2U1-h+uFy{&g(J zPVHCT=M|had=d9c0@(YVewk95g!`!4y*dbhuoErciA)#t6{^(ucGA0U;o#3>TW$5s z^W`R@@3p$3K;jY^tBVx*>xL4hCqpXP&iXpMrgN^{F^}!TMXUa9NUM(#))WZERS)w1{k^ zaK_<@Zb`VNwP@p96A8drMWz%%?HsZ8OF1n^YV-bmX2-;mpxH`Xf;zpqi+e1wgLL?y zg>3DNeG*6C$~}g$P9H5#bU)8IKCak@%8-^M-EDpX`Egu0Imh3%j2g`gW4inT@Mv^f zq3{>EQD8$ui^GrGi`sKizEd+n7r`z1aQL)m!fHB?r*~^m^(Xo0Dij&%P_95+V3m&~ zN+J(4_I8%q0i%QR6YZiYrD!gE}+@pg1i zJLmR{t*bDb-um0kiM9A~iETHweqA=^WQ|TsVA7BvMNo(5xBK80r>;noix!aLYa9o| z?%y+O#276ljpdIjGAb=k+u$%V>khxEr)C$5%Tu~0+;6=tVV6K4yfWm122WG-KHzzY zouNBX;Re-fk*7Nd%R{wfRK0wynAWiT9_>%kN8Q0P zLy04=H&0KV9V@SL8Jj))L7WyUH;c`4cqQcouw4J zV9tVSTBOP9_V*E2MVrRFK|t5>R9z(A0--SA^MV(mG9njf)?b^P0#xzWMgik+Fn-yI z*>pP4$<(x&!A-0OwaFL~$+51tr53wI^}xQS7UC< z$iF8gCYSHm?qnC7dUDkSGD(qlsLV3+0&0q~)p}+b<`)n0(7j7f-gxH@5reW3T-jPH z>f6jdFd<$GKpr%0CmMpwo?nP3yhI(K*$i(|B|Vhszb28rwRCtT{GsBOkFQAGYIW&4 zIPs^M?w1F(@Ijni@yq0xkm!ytF0jPl%L_4Cy+BR}!#VS<=+{KG`xk;E$-ys!cON2p zT;_zPtA0v^qKL zoADDmz5i2t?1V5j;)R+o-c9o3Ktlf(Leg3_Gl%dwx8Aobb0T%-C?J`vL1@e1*&gTK zuLj=)eX?mGdEC1#yra~Y1V`d@nBk~y@Mi;#7K^v@5dh`y;;g*8FJ|@e36GWOj z05Ka%xv-}2(|YI!)KBbJ+GUc`Xi}R!5KK<$z4FsGMqklD zRiZL{uV&bJCK7)-fKK8NvbNxOPzhF|BY4m}gDo*HaP=j<8e247mtfi9cz=2(=xJ*| zyT>haCUE>#>Op|-Wj+%$Eh%L3gvw--ZCPOTiA!VeD9;miXx@4JE-cM}Qgm9qNW#yf zxvl)0_oqz>{zZ9-vYhOwc~A}Q`pAMTi1p#{mw1;A0aqOh{ZMkuQy2M{ zgGoFkk!N~Ck}LAHxS%J4A}g^$+3^t#44c`io9PpcCFON`SkMBeeZR74O+F0jJ{%dZey9C&p;Dw7s>F-}5+L z8NSUmx3Ent@>)8)j1c@+MyL4^PtRZ9bfjnvM8u<}aLyK~+GildJ(sQKvhgPANL&a$I(%zmnjh;$uB%8QS&mQ7rrucQjfg>P3h zcKzOGzhB$C$i*NkSd!=@9!HWn<$WKz5Qdur;l)j+8K+-!@@GB zqgx={39b@qJL1>jh?Rr9SNhH7QF`Q=TN7Y}AmSsmhHQ`y$gRam;e)ZCvOprQ#eLbF zQ(!Mkn&U9whDEdlWO(YV{hNORwd~i%O(Lh!mS%1b0of&x9>V`1FEh<3f_D_uN#lFA zKQFweF^(GOyB&%*)r^{~l?#;zZ1M;j@DSR_b|E-MYZA54HqQ(-OT|} z%fglyz9xc3E47r6+~W+275JQX1>4McJctJ@p;94aw7rjO&Pi@w@I%(uHLEFSPIH<+ z3TO{Ydiy757b^qwPNj6ns&ws&p|EWVQvO3EKs2?9!*^q+rXmly6KvRK{;$@y)y!WC!f+*YfFush53l0hm^8JG--F>;- zdF|77`>r#cSK>i#(<8%GQ-_7AJwt6?a=)(Qbay@Z$5|(Cn*Ydty{_a;VGi zMUF?O!f(F9Hm zpqaaNp*nmytt+YJa$zfd;mE9WI7mgS_YW)uy1~hWz5NSwd}W2BSP6RnF9huRTnxS@ zeEc`A_201GKd|Qiaa8jkdi~ zWtx8&R)T|-c`F0)<5v6VBa#Zy(NauBAtC21Ds!RiEG3l>pWx>~tJU{+;|BXEBYgs~ zrTgT0!J)Jl5{tJvZYRbY#*a#$^7LtRa12vB&pA9z3E@RBiSn=4cPv8HLag)q z-&-(xMTf8lsmR_bSBLCbea`wU(G*1U$~7sQFWj6J4q($kz8Ys8DJv$LS-5ttBWQaC80R18he)BH6@P!VAc+LI`ZQBLUe=v3zre~xbtRY^vk61+x zdyuy}yVp_LJ~s-C9;rLSKeXB7NFxQ_d+y5k6PfB4whC##AYf zneH&l(!HZ=Mi;4Mf9uUch?)Koce{PZrNGadjI;EYR2GczxbpSLvj*~fhx$&Sr6F?& zUMfAl4idaiK;?eBWSz~Eif=9CmY1>?2`HA8E7p^YvQegjcv`(I+LSX8b$6D+Cxlf5 zp_7oR=;9=z2g&K|UlC!CM{^GMY ztt!92V}zw^rM|MY4RJ}lsnNs@caaSqG_?^_o2_@WPI63co2-pz36mK>>e`w%R-7n~gyyN2PW+cM$iHhEH8a1)yb&h`w;1k!z zaTb8_4co^d!D$Jq(YP&JJ>z2+gU_Lsk7r(bk#{e7xUu|4zx4OLo@Olhb|6f!w2rX_ zJh{Fn7+FSzwx>@^S+B;-*&D9)>hZU0q2|~Jeti%YCcI|4$rN;>Kh2Gy^&GPQ&PQ*> zdTQ>U;ITx#{4Je$>ulH|z_+XhL>!5XxN(OW9l&|3vBnaFF6+|_i%36=#6g@A}gXNhPTIF4FPAI~|nZ7G7%G$){2vysqa#1%&Vk?$6 z9igBe8^!_Bp7Z68mpsQWuL2%0XF$ZV18$9}w4_L= zxtxY{{9sQTxuDwWI~du>&}kZEAz#^Wbp`EV`QJ;<6&OHc z-(T)swIT(^#hu=~vThN+hBz$nQHIT`gR9;n9j0Z6P)-^GER;pj4)%gA)6<5h@};j> z=dMKyUH}8=2%Lb~v$~6anywf<`MksjRfIDpUFHu8 zELVwm_lgbV{u>3B*W;Rp{gLuXpeRwZurF2FItXW^V?o*e_=8M=R9hBNLb6m(fw{h? z;%mXV8H`zlQQkHzTHp4t+E?PWbNs7QZNTPl^q0lkmUIFL6HnH3PD(T28N}&dZopE77isD-Ao)a|xab4SgVGh> zmXAww%HoMRJ?1K4BeB3Z&ykK8=eB%+_WH}?N5oypn9gm^~a?Z#?^sw zVN6dAJ`D-4N;OqnJPeP|J_(lzgx0J=GhrbsMh}kUR9{5B^03gER&ZODr;ZKW>3BVL zDB=F>Ej=!1_TA?S9u$+q+aCbW5R5;#uksYB&0re){!RLqH4KBl^1e7!Wo1Jzui?#%b`+q*ZXJPztnB0;CVyk~z*4ADceIbuh$* z5CeH9RqI;iLVO|eLN?5k?%l1D`Yx|C)UEpN<#_M6behYMr2epkIMNN!Z)MHW!)8)T z92ScM7Gg~1#}hTF#I0x~2?;*=U;z`*`6w|W{cWy}!eqp1ND6IE+&+m5{B4(%rp|$v z-eGlm<*(%L&{1O{tt3hJHIEy}30T!9wD7PjCAWAw+Kje!>w#4LahoGGpU&!DNXhQI zJ%1=nhfW(s4^-G*PT-!4k!O-Z{i6mHT9Oa{20|`0(QpTfncI_Cqnjc8o8Z@e9ckh# z^SidwJT4yBiIxQQe>+wOkTQ4#%bcoku_S?mPyUYYJrU&&~hB+t}7!ruYf|T=TD^q^J zlaLUA`8F1bd4Fa#DU(IoEx9MJcte_7)% z+x^{@zxNX%CLwiVE=_#pS_Z^SQRsXW(17*42cqJMX0O3 zgDOJIQ~+@50sZe!7XQR@`xnY>W`0IqA6uQ)Ok!S{-B_PKl=xX`Poh>OyDwBrg$Lw* zj@+>c$-Zz_ugXH|%j68Dt_Iu4no-FYp_aplIMJa%iDiEBdyZ zzLr?`#dyns(3(QsGAzeMlv3=5+H5uI>jzEEVQj1>Q7Xi_vaItU&!0^Zx-^OAc^Pty zd19xS{xf)^^N+rhmOs^*lafIT@w(Q8Op5X^t(*GW3FZd0{4}HkgW7!0zOsEh{?l|Q zh<_3|z%WcQSRhC584ROr48q?k*f8?(c*doCWqZ3(;Lu)}qnA)1{=?pUzd4d$KkQ6w zmfr@Z6}Xace}Bn)?@e(n4an84Bs-83b?^EpQu})=5En{xRP z;u4tQ02(`=cGdnH2gb%Yrd1bR@Fjd5;h`|)+u$4V{+mKr!y{z;(|BoGgZ~ota$s6WQlc@xO6hR+b8^ow?XXcwu^>1$y=v==KoDN?(tNJ^G_nM^$7H^`bx=9 z_4pK5#Fdg?Ol0IKd-H=&AsApgD5K^|7U%6>IT8*0_l49 zr$V0`oYXwc5(NY@`cPV$Q1$`Ur;uuy1lgo>x`zMcfzH6QI~KiHt`PA80#2fLWVE4! z`4WVmKos!{lON!f63BB4WBA^7}OhcrbGedgSFNSBlX#3Z5f3G_+6i*dWKI~76$ z&zMx^Ku6>Lc#E25%;@@Ge^^Z`!K*6TYaFV0V@+@WO)g6lm$RRL+S!Ac`RU<;U@x)w zm9EHz_&=Ml@QA=SA%btBjjQT&bib-mA?U0 z2EqAv`Y<*W%!n%=!!#Amt3u+n>n@0@ zt&dXOuv?z_LX`O+c1Cq31C=1q3CdwRGY#$VcDqkx*HFwTFCi06-F&6*sI0``&<8AEbX)N;aydndl8hBi zn-8G7R{DcWi&7yH%A(p^$6cfkqm$tSxWUjgmq5YyDe^{xC6>m<1J}j#GlHB)XM8&( z=;H+#@^Gg}yUj5JGY-#iasrYY9@b#uL%y~$Zp^ zyd24|LHjEZ-ks=Y>?BI1s)}8|&n@^JJzcyX9p;hjl1MxA=AuO7a~ZIhN878NDWi5n zStbceN!Jh&l2;P@#jE^QQ}xeQ{cn?HQ~V_qm6L{i@4Sd@3rD-t^jut?#agerc(lFr z6nB5>5wii8q_jQA^&s2zs%Bbay9Nz&W8K?zN#PJyi?$m=VLdGBBB7zp=0bh)8|0m( znv~TNO0SWo=z1fj?zu9kGhjOV_O8u__tcQ3wO-KBFeYS=Jdq$WgciRpWQkyU^n9Ogb5=+D#m6hd> zRa~so<44U!uAWJX`-rCfH6uNx&Gwqz`Cge199;2w-ykV(bTX5A#=sK?9_KocL8OfZMvcwgwFkb)R z#(+400ml97$(KUD(I17l&qc8T+JLdOod4Ct7|fx#avR#?(j^=Ah8~2u`v%%bhDcw+I{8xiFzo)T`if#UAhA zHWag4q57G!BXBo{J8(Jv@+T36)2&fegbyjx0DWfk^i)%=?R^GdI!P(&&cVJgJp_6V zROjBG@6TvBhO&7ohJ6~npcsPP=pD?LTUrc$1x&_xq+Sz&4{p%546FU>!`JuFMzD?k3~>3WvDQr^R-3 z6gH};yByc(PGWw}ua(fmY}6rpl%*uF)0H3)jl}aK5TRXm8SjUqG-A_;vK5(Va!rYx}rU&N6T0RbX#_{KayBkrvDqEQUoxJnh z)$*;b2(FmazN{Wiw<89n&$TRR?~Fo>7JCCi&NF3xw$8s5RpkSI{175g^V;#Xr|1pY zxLh=HAZEj^yieoIxp2nf&dJ)q!i`^_FrPg|;y789$dB#MeD-lw(+s%;`PgawXo`66P;=%~s=#oH=N+xqx&|V~MM^R`-hz8(MvOQL|u2Xt_ z1l%LSkSEZ%9wU0sHw`AdX5MGiAIlp(oFtf!mUrkq&;Lef{<0eG)C;~O15eyHv1vPu z%A7Twu$gyb)*kSPgMtD2t9-}^X&$}lwnr7wXjlXMw)|^8epRXDQ@9ovu3SCt|#lY3lG!Ed;9&B4s&6$H|yb{k6y-KWo-OYohP@KtA;v$f3b_6 z12fIf^6afxpdE%|4*VmouuQdE6uig`%a-|{%kpg3nbD_xaxfneL73Tt-)LNyS4LK{ z7oqQAI%zSnT{}Lx0cuC|aRgG&%Cldgo1EMn(JIN5DJww)f96<9Lc-UG@bLH|i|(h; z{$~4jo~+pT-vW*qGljWTI~%zD-sd>^Y>SQ7ZnkDMvX;Nt(zoN+iS=elEgqQUK6wyH zbHCwkZ(!&Woc^>3@R3t8gQTrS#E*gELujXu*TPxrp;PO(R--|R$ZSfC@z@fCR3Lg4 zi_mHYrZG_OC7Sh+`rX}$K) zIJk%adh@(|+bJkbkKRBO%tLJUK}c|c*C(LtlW*l7msv~dJS0KPON0fq(JvGkuShSy z59>D80EP~#AlL_WN-E1vI6+oZ+j&3sdT-SwEuijN$NEZ(AxQ-T2ke5nTzUZ7 zmEzOSyC2w3cf4DBKD*DgDFJ!}bv{})C*h6?<^C-NTcpw4Yb}-?Q{EyN?3#YA0U2?Pt{qJ^WtWE1giT|atKdTKx~c?`b574= zpukphY*NEGHG`$OMc9R-NpkXUeJv$!_0nlS18YMv2mf6OVt;SG1zv}aj0FA6#rXw? z!`*(5Oux9{ubY+5`svR7SB1FEI#TN`Cr;zX9PRVJikuIq_>OkkQqs3CFO0l`Rt(HY z@uO#+f)dXSF#T)y*L74{+Q}FiH2XJrY?s=i3x9K=Q4*02pqy#_G9X{Ll~HQFD9sks zn#j2>{%#d3-P}(JVvxgO3F_;3`bIQc0#dW<<%CP7_#zdW?ObsFG!*2bswzle=5=d& z6-N14+2}I*2_F@5U8Exa+#k!0!1{Z5dZFDdUtioC0Tq8>D^L-lKqs*O*h(9~;3<}E ziq!~Y_(B>tk>lyQvRpNgn`*p-;z=0dpp~TEfT7=sAtG(EF<3b9)k6;#ls7X3fp0_i zlh69tQcY9$Qh4s^6!}_Tl@rF{4E7%CD!bBiYI*#8SuJ2KIccwsub!YrNLd~XvsxB- z6FT?sMjTL8zNc~bk((?L-}Qd=p1|vhKFq0a_dV28d^tpD!JM(g~Q_`5ptbGSyX;y=ZxSa z+^8X|s8rEvPk7*!{Sge4hD=6a&5M6Pe>jLCi?`U)o-9&PVPe_2Y`H?3dm2A;Ey2=& zIpfq=`~vS*r}TI>4Ew}oQT>rx3*@p4FM1f8FNTAj;$Df&nYuKJcbk6l&sPT-c<|@%+bOrUI^JZ~vyDA$MD8&dHNytVkpui{-iT z;7tnzUvF!BhShl$qzYHd@m&;$^$X29Hj^Ix)`JFoY~&jWgWq-zGiE4a?5oVnSMC~+ zs<`t;N}h6zh7Q+XOm%kQNYdQK;kRjg?|&%ZF6EdR1JMq(h!~!+)`N9R4ZU>RxtXSz z^C`LgqLLzEri01#zWTBIA~CTHO#-Ye%Ov6lCw*Gey)D{=D!8-5*#na}Cqj~@H@Px1 zzJ<+q6)KjB%N@z&Kacy5FO$b5wvn*DJq!C&r*V4qbA~u0LHKgtlUDfP4@B|Jp;%YB zJ`)NO;(V18x>v=((YdEV4}OZ2jLl?S;B4Z)Z+99{&v(1cR-nBSBgWxo%2aI@eg;sf zGfts_Eqo&RqI#t5)%CPVG zo>m^W;t_fbubW`Yfqvhn+ z#_nMDt-vX6t35w5VOs~g6?i;FbHn{m|2)%PAU``%timqldo^dxd=m#@^X}uHoZ*!5 zO2Cy@27fha2Paz<00@C1_nf)x24>{7@8#jfBQG(7&jfR zx~9tM)7q7s@5wtH#3x={+!$^iXDXY4i4MaJ13OqaC6nC@Jhdt}mMN_sr{6QyA1@~p z#C%`=xe`B2Y>O|}P|=^$58|0{)_*g`uv8bGrPe^A1U>mSd$x2sP;~&7UBI)rqnGK8 z)j2WM{KA4}OGOnBWDMv_B;fGFaL~i&`+g#<9hv^*k`_{}|M{B;-UI6>TqZzoiQIfj z@Vh(w$u5|+QPi0nD$>8*GzbOq+z-~Nf486b-OW6b)`>T=7I%^Dm} zFe8*G^6S^`1sBprrpvQ&Of}kE|3+siVOUh}6dfx;k3f*=Bn*6(dHI63_Pf4F%#gkH zO+_zRq0v#yZ*u96?b2^l{W3L-J(VT|=`bMni}=jvN0G`S=0 zekqw0gL>s#PrdF4>hjzz94U(S1gDa(a$HJhjSOMjqkm4-ra~i5j8FGu z`U&x3P-in`_q#Wjw-m1jB;pt3k=ag;+Ha4=q{If;Y1J<2$Mn+nnj4)!Nz6aw@wc@| z3(RW?8=qHHT=!n68wz1m_+kIZ(P|!22;lJWFId@i3kePUy=92GYg~BA$Uvh|ec(4N zqm#A>T?uttzgX(gZq;7YYexAV=mT-4^9Ch#jt(b}03AkQ2UgQxXdn=|7G9I{8-dtQ zG<{?QYkrSd52;(t_h|CRjb81tuzROxfq_!P;KDZskBEK((>MrAgX`XD+)CxU@|~~EXR!93h5OQ zXAgFnNZ(Vx(dLQD@8`urKypQun-h*OszZRT!g9W106M^Ry(XpO@ZAh2lL}4+N4rn0TbFZA=gI-d^9$+|d-T8~xPj+V|cVr-!>C*Ih5B6-x>~ z2X~YJ;(7^^eXokE!}NvqE8NL6+ukL-qr&)>(QMh|WJzfOxjR;9Pj|`XtfI+q-9YSUwA^Uu`B(@8;DA zg10J3=LKm}`t8p}?F}~g9}e)I12r3ts43*=ivCvDZ|30*#PFK*TD>EES{p0g#r0!w z`VDrhlL*=XUUXMU2W~Is1?qr=1O^w<4zsm#v9=11oMR2qUvQ&(-U=#S35zebth>@}%MxIFY{Hib{I^)!08uBc_9tJv-ymkJJG_q-VY^NSyHG^BZdKYD z#<)3|bIj5T zM#Sny=B~gFVGMg&5u4HC8 z8X%k>rjZ$_k+bt071dYS4h$_I%ys*sb#2dDW;@%St{5##j2$Lq+k5S?l`@S`S;Z+m z)1Q$%)+72etxyi=q_Kt{?B3{VsGq4uynIz*GgjZ!?S@FZxQuBSbOWJwz_v~w1pOmyA&<76xZTfyto&NOL2GiQXEamT%P{h4GZd#|kZtY^(<&biF@0vV%Iw23DyHQhT^xm`PrkB^#K>Zp}pS%|aDv@T&LsG=AruTkOk5 zf;*mpsyS*GSiK_8i>adNla<9}#hY<27yDwZsMbhN9lMP**&QMr_s_r$oj6aCucgkN z?&|TjM+s$0mlpmapxhDjMQA~MCeu&NkKDQnVU95tf=M(G)fw`H;!YhOh4~H}YWLOa zMs{q;9P1Fs?8n?j?v0hiTOL0}(P!v)mJ203={gC}t=ziBQkhHRdA)@5K&PUSsz)IB zSY@HxJb|>v$fe>g3@W`=TUfy+^k;&|@o0(Or(@oX9po4i!Y>IB&yrO}0AKo_jfps! z55s3C1XH5BmK$xq8uPt%{GySLtj&JoXk~(5PM+>!0fX1nS1m{|n;j7v*bl;47kv(f zPSm1DkH2Q9wY;3dB8x8M+t7bM8s+9_J<(K~e0Ic*6N=Z~n0ed*d=Xrw&`X`^9NT=c zNIQ$;cQ%G$HtB`=cE1UwBegqA2{`=uLNgB|KEV7E2K-J`kmDd`P9I_hgI{Aobg7@A zB?rSVk5~*cv=X=K4Bd2B)?|pWzfKWEv31=J|L&V2sa;pK7Y)6~ICm|2?g7}?C3_90 zx4NKfVB%CE{EVD>QMbQY)W!T-`H1OT{oyFb5&QHuz}d*9r!A7a%m(xRwsM5oI96$i zofn~NSES=Ff$%%$Z9gWJes`~{XnV7pIYI{4x`7AyTIRBR{o9|~lMkNcQQo8Q&VfR# z8%o+VKIHQ+(Z13SWY*>8^>yWWdoGEWr;o7Bwh)JUFm@SM8y!;MHV25m-e@h!yx7Yj zgbqkv80OrZdbyo-U)*SBq{IwdPbduK#=7gZ4Kj5ilFnw#%W7HcCquX2Hk#yZ_{5a- zB(Mr=x92(@B59uAAgT8|?j;Q*KzwcyQfDLlSHYO&M>y;@Y$T%?^!wq>DE4g*%k@cl z`-^)2fa8L`T)yXmUCrn8XFcYzn`#$!*H~}Dtp-6R<>uPGt_jf+H|wQI(c%r~wQ@da zrwx5&;Lt+L`F_uN9djL{tm{vLO(>etY>UV7Y+9f8KN+uSwlpG$COfmFyPA7k3~afT zoBPV*?_eCZC)FS5w|xw@Hm@}R<)7ARYRKpHM6$6z=K|3iAMe31b(JgmmvjT60Nl$H zLuhold;^CHw)+egTJY4_M)euJ529 zRA2jH=Ojgi%-qi1kN625S3r`(BGRb$+3PN;bIF#ZANKF*_(z(_l`~sHc+3H$=04}4 zjy(SbH}AArQ#_Nj+E5==Eh4SJ=7AIc^L zkjsjw0I2WVeSDj1`XRhx?g0pHpm5K#{~T!3g+v_-MiQwwx&Wkg{bFY35M;?2B&M$3 zGD&fo0F?1Sf#sim97LMRhMKKbWHLtfzfJuvSZrq-X|EXgwaY|hpckj3fr!WwUDu$A zS^+DDE8^WmRf&vYt&RFm=Si>bI$8OoI%j_Ljv5P2&a>;wsQG5<^y`VKqSo#%Im0Xs z+tsu#DVH4}GpVDN(c#>VgC<4XO}_SMe8K}d4E{#2&X2rpM2TpP%xNm?9edX$#azV^HJ5dr(qEB@7WoL7vO*VtP)On@NXcNNvtFWg z)2qDHbOP4_^9uXX&6=){D!Zl8o+IVsTQ$Gk#sLn^WRj-2PAb|8_%^!gBS+K4eD3K- zz_$XCD$G6Rqt!zr-1?zxVG-1Z6w7z7q>LJLF(?8a)q!1&nK5@yRL5TYUT%fv?AMoM6yPaky(*6 zx7I`no`9bTua5RH=K0d_Z&?cC!T&6Vk3L5DZd^oEI;DdS=ZLy*`M2q zN?C~Azn>EYuSpZ;1zr!>8`aNM#(uXH(4#vsv4Z3)< zU1z|>L6x41#cX3yKa7JQDdG0!?xxVSKc}}JHrgu$xtjCD1jp`F?Vqg7IbY3jH>l{X zo>)TIdlnQLKb5-Ig7B!p63O7^`P1|+;L5I#!m*ECxx6a~-L)B-vY`HwI;|Wq=x=U+ zCYzum8b6t+Ws$+au}&9e1P2A zW#P?I5f5Q}hh`B?6k-xQxvFPc{Y8GSy+LQ3<)T0N?4S@2qbuJg2exDi&72%WtT;#y zRhfrLaFr~jqzsfrkVX4iqLQkDY!*4H5sd7rbu{W_q(e?W?tc;Nq_jK!n8^PoQ}|%L zuGUBav|e7YD~YnhWlA_vgdv$XxpyqGHl0Y;tN|2J(oxQShcH`Q$UnnLA1FgmlBire zVcQDaXvh?fF<$(+Y@>AIe#E*v=Q2_i@lN4vGjJws9G_ViH>+MRu_@|MdR%dJTRbIZ zqY)Mv=A+}Z$VE$a#j$Lrh0H$`EuvY!KGXkk+VoR98ah{3@^h7*DcO3Vd~G;8Ur7Mh z6o9z7hzs8+bE%&r-1yNM%i}U8UY#EzUBr^?E7j>e$^K$3uP{= z*j64{jA<%s)kX{1|G>Y!=B{TPsUS6)$ir{xthS53=Iot#8-)&G&`&Csgc9u40#~6s z`z}!bO=H)#u&mj9rbDfku8*FnAJcNrZ;`jdZ-?&;GcRvY#29agC1+57|721yf{sK& z>g)W2!i|nZ@*ugY6ZWf`=zxJ#fIZT=b+>Y{iBt+-aZ$aKeQ}4G<68KFu_rvSZ?-QrgAB&^d2w+0rCuTDz!nO1=MH^Uk ze&jw;ZNIY#WI+b zw)=<7g^E8H`3Q&6HLhyCNX=`PYl}IC3UaIk%;V|hKR3;}wjTMo?)cbIL{_x#9W>*f ztK9-%3Wd1V`e8G6fmf1}lCSCLK)n2Jhko#g=p+@N72_GRim;5MXgmSJ^;9f_$HMiP zq`?;f&*l1;cFlfedDMH>?YT56FgksOfzZ`s)gvD+O-gA%ChCZ?F9p(8ax&bkV(>)t zTc34=AX=9%49O+(Z)tgDlEjN=+w@b?{?KlmiF2cd)umgib%WpLYGPN{i{*~s_6^Xc>Ws{7cNfLr7e z2M2I2wE3{gssY@`PdiYYCE3)`2+r~*ujF+9VQqVX5r2n4O@wyQS96<= zAwv}@ZjDNo(baa~np7gZ*A;XDwDK7E#0yg7+hQ;c=+cK~3BH)(foBE|k#Pj_W{rNa zme;Mc0}83p)8D>d8#o87e{w?RjZ&Kx8%X&bRtz4Zt-~bqEr|OQA`wtQA168-KC!VbLFYB|A*mR+D&jKjFf+g-Zi?4jPK?7tk_pG zpmW07H}vT^c=~0Id8n|pypg}tUhs7TnlL%kWy;z@nI6S`~fOxlJzUtX%| zs#4`T)f!zPucJ}sscKhZ`64eoAII+1M%<^q?f_xF< znVI=uyCMl|cEG5)^uY}k)>G;4Ile1)n~NH_(@24Gms-T$dUb(#^hS1%82t}Gt3qy$ zH)HVi;cGYvhVEbKR>y*7%WpJ~X_RjB4?njs<3VkSzw$Kdj(Qf`UcVegZi-5kX|62x zJgHRHusYt%P(RuoSS;t}MF{uhi4v_zv9^EPs~BH*PB^5M~dR5Iko|RSoHZMzz?%MQ#5+A;BJW16|opN8*fqB zfpf7RsfT$wB4cKqtVn8|yjAA5F5PJS*0%*m%0c;>Vbl^wx1%44dG+);qP;LXH6K}k z0yL^kQwPgE$%#gt$k;}wm1p#<%I=k3yswZd|w;QpkSS%9AC9ZKxs2n@hZ^Tx4Vi7p6}ubcZ$7)i4O3FT(nG)semB zO2aahxgRK={aHP;Slyc>Z%rqsA53r(=(`7zHJJ5Bow+XdwNcfyU1!SV+zwXf-Aq2X zo?GURc={s!H|&2^$=#uUp*2MJn(3{z7j|F+K}?AbQ8RW8!yPWn3YS`AH&0v8h7y@xAOy4-qkFbjYl?>!aYD{fp=5#Bqz zK0PHoKIh?I92{AZ;9cKWFd98^#e)s8pH-k6hHn!$iZxDH+70^VSqDD#X~v7*mtrvG zTmYD23Oj=jVJqGq9Tu7X{Ay(-R7Y4d{G$iU3L?l^cU!sKN(?N=ENAemlYK)37;_E# zX|ztYf#sD)p$CIzw-Fk-92V6{kt^_xt61*M83i106cl7YkOh z*5K=5AvOQ`!=rDr7i9)oW0rGIfmX~Ebk7VIbXs zoW)9c=AL5~Qz+>Ignr+i1J_)iGw$4=Tc_de#KpVU&CTui=+qQBiJ|+I(ZZfl=SoGqB z2*>1L{n;PhoT|~{R3sHL{Pm$8htCE$QTuc+F>KjAbFNb<<#6+>O* zme;uX(9;85a=%ak+|$&F9h+wX0UgexM9zG7&rYG?EcDz0!uB2q%)(8_*ZM!cEH>e^C&r8!eDJ2VXMO5!FM0FK$YjPLhp{>K3(v7?%#Np=^!*qu90Hza$x%D zWpbFA4mW4hB3`xJWZl%+6NW-|tk?kXb6j?`E`xclGwA4LG+iQ_=BLWN{c}~AA1zrp zBLPviC%k)%SX0IDZI@I&uZt{4%iM~5eY({C97d!>lvpIV^ha;ec+k(1@iJh>F=za<U*6-a7{I?=Qc2(3L|<=SUJw zJvVIcIp(moMs%;@e`x=Yyrn@2hIVY9-^ok#_B7F4kxYC|5e1|;QLRiNShZxusQ`5Q zU}n6OgAcxI%=2Bz=9OjZ@hN@bHr5?$=EUExD83kMbqpR(%(Xitj|5-Byaxcp_cj2a z)qerx`c}=RD_DV^DX&8PWmB^ohP=GZo4lSJ$9F?bd#EXKu_pJwku~@Jw1+y~=WTSJ zRE{Buf*1xhu=Q26aReVY50;ywA((3sMM|V46Af#73vk{W7-QYiq&UIn**wAf74Jt* zS!Ox>b}48ff5RJj_M=R1NcOUmMIfn8`Qq zkx8pDhFq+AmK$!crXZh-bV8_>%7`j=5RWFm&QI0v(K+Reg>XBPDfx3KmY4DC5eJU) zO&Il3P|rFz9X!D=g69REu&WkW@xe&vDFKGWq2IY{9N}xEX6vwV{3>!#8W$$ty)Q-< ztZTMKnb;Eme|G=g-H56Ciw&+F!|6VkaG}q;ve*1%>aGK=ez~Ma>obJzf_4w|#A_HoGZb+}~HDAexJI^62kU&w~3x=#r`TSSOb*YwV z)5)>>s32(~4>p=sM61J&V3Hov#aV1~zK|K�O!w6m~VwZNw@|!5284E-QbjwR7>d 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 P>_51tbGJa%`t|<<#H>sZ From f336d84fb7f9c3ae77bb7eb5e973a9e998e78d4d Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Mon, 1 Jul 2024 18:22:09 +0800 Subject: [PATCH 09/21] Update UI to use pure CSS menu icon --- app/webui/app.py | 53 ++++++++++++++++++++++++++++++++++------------ app/webui/icon.svg | 6 ------ 2 files changed, 39 insertions(+), 20 deletions(-) delete mode 100644 app/webui/icon.svg diff --git a/app/webui/app.py b/app/webui/app.py index 476dbe4..cdfc742 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -114,30 +114,55 @@ def update_menu(visible): footer { visibility: hidden; } - .menu-btn { - background-color: transparent; - border: none; - padding: 0px; - max-width: 48px; + .menu_btn { + width: 48px; height: 48px; + max-width: 48px; min-width: 48px; + padding: 0px; + background-color: transparent; + border: none; cursor: pointer; - transition: background-color .2s ease; + position: relative; + box-shadow: none; } - .menu-btn:hover { - background-color: #e0e7ff; + .menu_btn::before, + .menu_btn::after { + content: ''; + position: absolute; + width: 30px; + height: 3px; + background-color: #4f46e5; + transition: transform 0.3s ease; } - .button-icon { - height: 48px; - width: 48px; - margin-left: 10px; + .menu_btn::before { + top: 12px; + box-shadow: 0 8px 0 #6366f1; + } + .menu_btn::after { + bottom: 16px; + } + .menu_btn.active::before { + transform: translateY(8px) rotate(45deg); + box-shadow: none; + } + .menu_btn.active::after { + transform: translateY(-8px) rotate(-45deg); } """ +JS = """ + function () { + const menuBtn = document.getElementById('menu'); + menuBtn.classList.toggle('active'); + } + +""" + with gr.Blocks(theme="soft", css=CSS, fill_height=True) as demo: with gr.Row(): visible = gr.State(value=True) - menuBtn = gr.Button(value="", icon="./app/webui/icon.svg", elem_classes="menu-btn", size="sm") + menuBtn = gr.Button(value="", elem_classes="menu_btn", elem_id="menu", size="sm") gr.HTML(TITLE) with gr.Row(): with gr.Column(scale=1) as menubar: @@ -209,7 +234,7 @@ def update_menu(visible): upload = gr.UploadButton(label="Upload", file_types=["text"]) clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) - menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar]) + menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) choice.select(fn=enable_sec, inputs=[choice], outputs=[endpoint2, model2, api_key2]) endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) diff --git a/app/webui/icon.svg b/app/webui/icon.svg deleted file mode 100644 index b19dfbf..0000000 --- a/app/webui/icon.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 12de254143aaafba6fd0ec1bf9bd483079039551 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:38:06 +0800 Subject: [PATCH 10/21] Add: Export func. Export the final translation to txt file. --- app/webui/app.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/webui/app.py b/app/webui/app.py index cdfc742..da7fd17 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -7,6 +7,7 @@ import re import gradio as gr +from glob import glob from app.webui.process import model_load, diff_texts, translator, translator_sec from llama_index.core import SimpleDirectoryReader @@ -98,6 +99,15 @@ def enable_sec(choice): def update_menu(visible): return not visible, gr.update(visible=not visible) +def export_txt(strings): + os.makedirs("outputs", exist_ok=True) + base_count = len(glob(os.path.join("outputs", "*.txt"))) + file_path = os.path.join("outputs", f"{base_count:06d}.txt") + print(file_path) + with open(file_path, "w", encoding="utf-8") as f: + f.write(strings) + return gr.update(value=file_path, visible=True) + TITLE = """

Translation Agent WebUI
@@ -230,8 +240,9 @@ def update_menu(visible): with gr.Tab("Diff"): output_diff = gr.HighlightedText(visible = False) with gr.Row(): - submit = gr.Button(value="Submit") + submit = gr.Button(value="Translate") upload = gr.UploadButton(label="Upload", file_types=["text"]) + export = gr.DownloadButton(visible=False) clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) @@ -240,6 +251,6 @@ def update_menu(visible): endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) - + output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) if __name__ == "__main__": demo.queue(api_open=False).launch(show_api=False, share=False) \ No newline at end of file From bb32d21065f0b24aaba049f41faa6db8dd98127d Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Tue, 2 Jul 2024 23:18:45 +0800 Subject: [PATCH 11/21] Add: language switch button, RPM settings. --- app/webui/app.py | 74 ++++++++++++++++++++++++++++---------------- app/webui/patch.py | 33 +++++++++++++++++++- app/webui/process.py | 32 +++++++++---------- 3 files changed, 96 insertions(+), 43 deletions(-) diff --git a/app/webui/app.py b/app/webui/app.py index da7fd17..9b7a7c9 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -12,27 +12,28 @@ from llama_index.core import SimpleDirectoryReader def huanik( - endpoint, - model, - api_key, - choice, - endpoint2, - model2, - api_key2, - source_lang, - target_lang, - source_text, - country, - max_tokens, - context_window, - num_output, + endpoint: str, + model: str, + api_key: str, + choice: str, + endpoint2: str, + model2: str, + api_key2: str, + source_lang: str, + target_lang: str, + source_text: str, + country: str, + max_tokens: int, + context_window: int, + num_output: int, + rpm: int, ): if not source_text or source_lang == target_lang: raise gr.Error("Please check that the content or options are entered correctly.") try: - model_load(endpoint, model, api_key, context_window, num_output) + model_load(endpoint, model, api_key, context_window, num_output, rpm) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") @@ -103,11 +104,16 @@ def export_txt(strings): os.makedirs("outputs", exist_ok=True) base_count = len(glob(os.path.join("outputs", "*.txt"))) file_path = os.path.join("outputs", f"{base_count:06d}.txt") - print(file_path) with open(file_path, "w", encoding="utf-8") as f: f.write(strings) return gr.update(value=file_path, visible=True) +def switch(source_lang,source_text,target_lang,output_final): + if output_final: + return gr.update(value=target_lang), gr.update(value=output_final), gr.update(value=source_lang), gr.update(value=source_text) + else: + return gr.update(value=target_lang), gr.update(value=source_text), gr.update(value=source_lang), gr.update(value="") + TITLE = """
Translation Agent WebUI
@@ -159,6 +165,10 @@ def export_txt(strings): .menu_btn.active::after { transform: translateY(-8px) rotate(-45deg); } + .lang { + max-width: 100px; + min-width: 100px; + } """ JS = """ @@ -190,16 +200,20 @@ def export_txt(strings): value="OpenAI", visible=False, ) - model2 = gr.Textbox(label="Model 2", value="gpt-4o", visible=False, ) + model2 = gr.Textbox(label="Model 2", value="gpt-4o", visible=False,) api_key2 = gr.Textbox(label="API_KEY 2", type="password", visible=False,) - source_lang = gr.Textbox( - label="Source Lang", - value="English", - ) - target_lang = gr.Textbox( - label="Target Lang", - value="Spanish", - ) + with gr.Row(): + source_lang = gr.Textbox( + label="Source Lang", + value="English", + elem_classes = "lang", + ) + target_lang = gr.Textbox( + label="Target Lang", + value="Spanish", + elem_classes = "lang", + ) + switchBtn = gr.Button(value="🔄️") country = gr.Textbox(label="Country", value="Argentina", max_lines=1) with gr.Accordion("Advanced Options", open=False): max_tokens = gr.Slider( @@ -223,6 +237,13 @@ def export_txt(strings): value=512, step=8, ) + rpm = gr.Slider( + label="Request Per Minute", + minimum=1, + maximum=1000, + value=60, + step=1, + ) with gr.Column(scale=4): source_text = gr.Textbox( label="Source Text", @@ -245,11 +266,12 @@ def export_txt(strings): export = gr.DownloadButton(visible=False) clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) + switchBtn.click(fn=switch, inputs=[source_lang,source_text,target_lang,output_final], outputs=[source_lang,source_text,target_lang,output_final]) menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) choice.select(fn=enable_sec, inputs=[choice], outputs=[endpoint2, model2, api_key2]) endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) - submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output], outputs=[output_init, output_reflect, output_final, output_diff]) + submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) if __name__ == "__main__": diff --git a/app/webui/patch.py b/app/webui/patch.py index bb3be64..f98b0dc 100644 --- a/app/webui/patch.py +++ b/app/webui/patch.py @@ -1,5 +1,8 @@ # a monkey patch to use llama-index completion import os +import time +from functools import wraps +from threading import Lock from typing import Union import src.translation_agent.utils as utils @@ -13,15 +16,16 @@ from llama_index.core import Settings from llama_index.core.llms import ChatMessage +RPM = 60 # Add your LLMs here - def model_load( endpoint: str, model: str, api_key: str = None, context_window: int = 4096, num_output: int = 512, + rpm: int = RPM, ): if endpoint == "Groq": llm = Groq( @@ -53,6 +57,10 @@ def model_load( token=api_key if api_key else os.getenv("HF_TOKEN"), task="text-generation", ) + + global RPM + RPM = rpm + Settings.llm = llm # maximum input size to the LLM Settings.context_window = context_window @@ -60,7 +68,29 @@ def model_load( # number of tokens reserved for text generation. Settings.num_output = num_output +def rate_limit(get_max_per_minute): + def decorator(func): + lock = Lock() + last_called = [0.0] + + @wraps(func) + def wrapper(*args, **kwargs): + with lock: + max_per_minute = get_max_per_minute() + min_interval = 60.0 / max_per_minute + elapsed = time.time() - last_called[0] + left_to_wait = min_interval - elapsed + if left_to_wait > 0: + time.sleep(left_to_wait) + + ret = func(*args, **kwargs) + last_called[0] = time.time() + return ret + return wrapper + return decorator + +@rate_limit(lambda: RPM) def get_completion( prompt: str, system_message: str = "You are a helpful assistant.", @@ -91,6 +121,7 @@ def get_completion( ChatMessage( role="user", content=prompt), ] + response = llm.chat( messages=messages, temperature=temperature, diff --git a/app/webui/process.py b/app/webui/process.py index 6a4d315..ad8d57c 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -46,11 +46,11 @@ def diff_texts(text1, text2): #modified from src.translaation-agent.utils.tranlsate def translator( - source_lang, - target_lang, - source_text, - country, - max_tokens=1000, + source_lang: str, + target_lang: str, + source_text: str, + country: str, + max_tokens:int = 1000, ): """Translate the source_text from source_lang to target_lang.""" @@ -123,16 +123,16 @@ def translator( def translator_sec( - endpoint2, - model2, - api_key2, - context_window, - num_output, - source_lang, - target_lang, - source_text, - country, - max_tokens=1000, + endpoint2: str, + model2: str, + api_key2: str, + context_window: int, + num_output: int, + source_lang: str, + target_lang: str, + source_text: str, + country: str, + max_tokens: int = 1000, ): """Translate the source_text from source_lang to target_lang.""" @@ -210,4 +210,4 @@ def translator_sec( final_translation = "".join(translation_2_chunks) - return init_translation, reflection, final_translation + return init_translation, reflection, final_translation \ No newline at end of file From 99e3c8bc4ffca45a5d879ff7a1acf3b9dedd4c11 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Wed, 3 Jul 2024 18:08:45 +0800 Subject: [PATCH 12/21] Add: Translation progress bar --- app/webui/process.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/app/webui/process.py b/app/webui/process.py index ad8d57c..e943598 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -7,6 +7,8 @@ from llama_index.core.node_parser import SentenceSplitter +progress=gr.Progress() + def tokenize(text): # Use nltk to tokenize the text words = simple_tokenizer(text) @@ -52,7 +54,6 @@ def translator( country: str, max_tokens:int = 1000, ): - """Translate the source_text from source_lang to target_lang.""" num_tokens_in_text = num_tokens_in_string(source_text) @@ -61,16 +62,17 @@ def translator( if num_tokens_in_text < max_tokens: ic("Translating text as single chunk") - #Note: use yield from B() if put yield in function B() + progress((1,3), desc="First translation...") init_translation = one_chunk_initial_translation( source_lang, target_lang, source_text ) - + progress((2,3), desc="Reflecton...") reflection = one_chunk_reflect_on_translation( source_lang, target_lang, source_text, init_translation, country ) + progress((3,3), desc="Second translation...") final_translation = one_chunk_improve_translation( source_lang, target_lang, source_text, init_translation, reflection ) @@ -80,6 +82,7 @@ def translator( else: ic("Translating text as multiple chunks") + progress((1,5), desc="Calculate chunk size...") token_size = calculate_chunk_size( token_count=num_tokens_in_text, token_limit=max_tokens ) @@ -91,14 +94,17 @@ def translator( chunk_size=token_size, ) + progress((2,5), desc="Spilt source text...") source_text_chunks = text_parser.split_text(source_text) + progress((3,5), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) init_translation = "".join(translation_1_chunks) + progress((4,5), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -109,6 +115,7 @@ def translator( reflection = "".join(reflection_chunks) + progress((5,5), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, @@ -143,7 +150,7 @@ def translator_sec( if num_tokens_in_text < max_tokens: ic("Translating text as single chunk") - #Note: use yield from B() if put yield in function B() + progress((1,3), desc="First translation...") init_translation = one_chunk_initial_translation( source_lang, target_lang, source_text ) @@ -153,10 +160,12 @@ def translator_sec( except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") + progress((2,3), desc="Reflecton...") reflection = one_chunk_reflect_on_translation( source_lang, target_lang, source_text, init_translation, country ) + progress((3,3), desc="Second translation...") final_translation = one_chunk_improve_translation( source_lang, target_lang, source_text, init_translation, reflection ) @@ -166,6 +175,7 @@ def translator_sec( else: ic("Translating text as multiple chunks") + progress((1,5), desc="Calculate chunk size...") token_size = calculate_chunk_size( token_count=num_tokens_in_text, token_limit=max_tokens ) @@ -177,8 +187,10 @@ def translator_sec( chunk_size=token_size, ) + progress((2,5), desc="Spilt source text...") source_text_chunks = text_parser.split_text(source_text) + progress((3,5), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) @@ -190,6 +202,7 @@ def translator_sec( except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") + progress((4,5), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -200,6 +213,7 @@ def translator_sec( reflection = "".join(reflection_chunks) + progress((5,5), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, From 98bb86bb7bc869265ce022e0e7ef90cb85a0c863 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Thu, 4 Jul 2024 14:35:11 +0800 Subject: [PATCH 13/21] Add: Stop button to cancel translation progress, llm error notification, fix Readme --- app/webui/README.md | 2 +- app/webui/app.py | 42 +++++++++++++++++++++++++++++------------- app/webui/patch.py | 27 ++++++++++++++++----------- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/app/webui/README.md b/app/webui/README.md index 80c7802..d3955fc 100644 --- a/app/webui/README.md +++ b/app/webui/README.md @@ -70,7 +70,7 @@ Llama Index supported, easily extendable 1. Select your desired translation API from the Endpoint dropdown menu. 2. Input the source language, target language, and country(optional). -3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox. +3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox, enter `MODEL_ID` or `HF_ENDPOINT_URL` in `Model` textbox. 4. Input the source text or upload your document file. 5. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. 6. Enable Second Endpoint, you can add another endpoint by different LLMs for reflection. diff --git a/app/webui/app.py b/app/webui/app.py index 9b7a7c9..a210b2c 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -93,9 +93,9 @@ def read_doc(file): def enable_sec(choice): if choice: - return gr.update(visible = True), gr.update(visible = True), gr.update(visible = True) + return gr.update(visible = True) else: - return gr.update(visible = False), gr.update(visible = False), gr.update(visible = False) + return gr.update(visible = False) def update_menu(visible): return not visible, gr.update(visible=not visible) @@ -114,6 +114,13 @@ def switch(source_lang,source_text,target_lang,output_final): else: return gr.update(value=target_lang), gr.update(value=source_text), gr.update(value=source_lang), gr.update(value="") +def closeBtnShow(): + return gr.update(visible=False), gr.update(visible=True) + +def closeBtnHide(output_final): + if output_final: + return gr.update(visible=True), gr.update(visible=False) + TITLE = """
Translation Agent WebUI
@@ -191,17 +198,17 @@ def switch(source_lang,source_text,target_lang,output_final): choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], value="OpenAI", ) - choice = gr.Checkbox(label="Second Endpoint", info="Add second endpoint for reflection") + choice = gr.Checkbox(label="Additional Endpoint", info="Additional endpoint for reflection") model = gr.Textbox(label="Model", value="gpt-4o", ) api_key = gr.Textbox(label="API_KEY", type="password", ) - endpoint2 = gr.Dropdown( - label="Endpoint 2", - choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], - value="OpenAI", - visible=False, - ) - model2 = gr.Textbox(label="Model 2", value="gpt-4o", visible=False,) - api_key2 = gr.Textbox(label="API_KEY 2", type="password", visible=False,) + with gr.Column(visible=False) as AddEndpoint: + endpoint2 = gr.Dropdown( + label="Additional Endpoint", + choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], + value="OpenAI", + ) + model2 = gr.Textbox(label="Model", value="gpt-4o", ) + api_key2 = gr.Textbox(label="API_KEY", type="password", ) with gr.Row(): source_lang = gr.Textbox( label="Source Lang", @@ -265,14 +272,23 @@ def switch(source_lang,source_text,target_lang,output_final): upload = gr.UploadButton(label="Upload", file_types=["text"]) export = gr.DownloadButton(visible=False) clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) + close = gr.Button(value="Stop", visible=False) switchBtn.click(fn=switch, inputs=[source_lang,source_text,target_lang,output_final], outputs=[source_lang,source_text,target_lang,output_final]) + menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) - choice.select(fn=enable_sec, inputs=[choice], outputs=[endpoint2, model2, api_key2]) + + choice.select(fn=enable_sec, inputs=[choice], outputs=[AddEndpoint]) endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) - submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) + + start_ta = submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) + + submit.click(fn=closeBtnShow, outputs=[clear, close]) + output_final.change(fn=closeBtnHide, inputs=output_final, outputs=[clear, close]) + close.click(fn=None, cancels=start_ta) + if __name__ == "__main__": demo.queue(api_open=False).launch(show_api=False, share=False) \ No newline at end of file diff --git a/app/webui/patch.py b/app/webui/patch.py index f98b0dc..50b3fc1 100644 --- a/app/webui/patch.py +++ b/app/webui/patch.py @@ -121,12 +121,14 @@ def get_completion( ChatMessage( role="user", content=prompt), ] - - response = llm.chat( - messages=messages, - temperature=temperature, - ) - return response.message.content + try: + response = llm.chat( + messages=messages, + temperature=temperature, + ) + return response.message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") else: messages = [ ChatMessage( @@ -143,11 +145,14 @@ def get_completion( ) return response.message.content else: - response = llm.chat( - temperature=temperature, - messages=messages, - ) - return response.message.content + try: + response = llm.chat( + temperature=temperature, + messages=messages, + ) + return response.message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") utils.get_completion = get_completion From 4a3542c65e77c477fb9608723b8116a8d706d4b3 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sat, 6 Jul 2024 15:38:29 +0800 Subject: [PATCH 14/21] Update --- app/__init__.py | 0 app/webui/README.md | 38 +++--- app/webui/__init__.py | 1 + app/webui/app.py | 73 +++++------ app/webui/patch.py | 241 +++++++++++++++++++------------------ app/webui/process.py | 67 +++++++---- app/webui/requirements.txt | 13 -- pyproject.toml | 14 ++- 8 files changed, 230 insertions(+), 217 deletions(-) delete mode 100644 app/__init__.py delete mode 100644 app/webui/requirements.txt diff --git a/app/__init__.py b/app/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/app/webui/README.md b/app/webui/README.md index d3955fc..6d8fc45 100644 --- a/app/webui/README.md +++ b/app/webui/README.md @@ -1,7 +1,7 @@ ## Translation Agent WebUI -This repository contains a Gradio web UI for a translation agent that utilizes various language models for translation. +A Gradio Web UI for translation agent. ### Preview @@ -14,35 +14,30 @@ This repository contains a Gradio web UI for a translation agent that utilizes v - **Multiple API Support:** Integrates with popular language models like: - Groq - OpenAI - - Cohere - Ollama - Together AI - - Hugging Face Inference API ... -Llama Index supported, easily extendable - **Different LLM for reflection**: Now you can enable second Endpoint to use another LLM for reflection. **Getting Started** -1. **Install Dependencies(Using Python Venv):** +1. **Install Dependencies:** **Linux** ```bash git clone https://github.com/andrewyng/translation-agent.git cd translation-agent - python -m venv web_ui - source web_ui/bin/activate - pip install -r app/webui/requirements.txt - + poetry install --with app + poetry shell ``` **Windows** ```bash git clone https://github.com/andrewyng/translation-agent.git cd translation-agent - python -m venv web_ui - .\web_ui\Scripts\activate - pip install -r app/webui/requirements.txt + poetry install --with app + poetry shell + python .\app\webui\app.py ``` @@ -52,15 +47,19 @@ Llama Index supported, easily extendable ``` OPENAI_API_KEY="sk-xxxxx" # Keep this field GROQ_API_KEY="xxxxx" - COHERE_API_KEY="xxxxx" TOGETHER_API_KEY="xxxxx" - HF_TOKEN="xxxxx" ``` - Then you can also set the API_KEY in webui. 3. **Run the Web UI:** + + **Linux** + ```bash + python app/webui/app.py + ``` + **Windows** ```bash - python -m app.webui.app + python .\app\webui\app.py ``` 4. **Access the Web UI:** @@ -70,10 +69,9 @@ Llama Index supported, easily extendable 1. Select your desired translation API from the Endpoint dropdown menu. 2. Input the source language, target language, and country(optional). -3. If using Hugging Face API, enter your `HF_TOKEN` in the `api_key` textbox, enter `MODEL_ID` or `HF_ENDPOINT_URL` in `Model` textbox. -4. Input the source text or upload your document file. -5. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. -6. Enable Second Endpoint, you can add another endpoint by different LLMs for reflection. +3. Input the source text or upload your document file. +4. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. +5. Enable Second Endpoint, you can add another endpoint by different LLMs for reflection. **Customization:** @@ -89,4 +87,4 @@ This project is licensed under the MIT License. **DEMO:** -[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI) +[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI) \ No newline at end of file diff --git a/app/webui/__init__.py b/app/webui/__init__.py index e69de29..9cfe7b4 100644 --- a/app/webui/__init__.py +++ b/app/webui/__init__.py @@ -0,0 +1 @@ +from .app import * \ No newline at end of file diff --git a/app/webui/app.py b/app/webui/app.py index a210b2c..39ac80b 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -1,15 +1,8 @@ -import sys import os - -# Add the project root to the Python path -project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) -sys.path.insert(0, project_root) - import re import gradio as gr from glob import glob -from app.webui.process import model_load, diff_texts, translator, translator_sec -from llama_index.core import SimpleDirectoryReader +from process import model_load, diff_texts, translator, translator_sec, extract_docx, extract_pdf, extract_text def huanik( endpoint: str, @@ -24,8 +17,7 @@ def huanik( source_text: str, country: str, max_tokens: int, - context_window: int, - num_output: int, + temperature: int, rpm: int, ): @@ -33,7 +25,7 @@ def huanik( raise gr.Error("Please check that the content or options are entered correctly.") try: - model_load(endpoint, model, api_key, context_window, num_output, rpm) + model_load(endpoint, model, api_key, temperature, rpm) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") @@ -44,8 +36,6 @@ def huanik( endpoint2=endpoint2, model2=model2, api_key2=api_key2, - context_window=context_window, - num_output=num_output, source_lang=source_lang, target_lang=target_lang, source_text=source_text, @@ -76,20 +66,24 @@ def update_model(endpoint): endpoint_model_map = { "Groq": "llama3-70b-8192", "OpenAI": "gpt-4o", - "Cohere": "command-r", "TogetherAI": "Qwen/Qwen2-72B-Instruct", "Ollama": "llama3", - "Huggingface": "mistralai/Mistral-7B-Instruct-v0.3" } return gr.update(value=endpoint_model_map[endpoint]) -def read_doc(file): - docs = SimpleDirectoryReader(input_files=[file]).load_data() - texts = "" - for doc in docs: - texts += doc.text - texts = re.sub(r'(?m)^\s*$\n?', '', texts) - return texts +def read_doc(path): + file_type = path.split(".")[-1] + print(file_type) + if file_type in ["pdf", "txt", "py", "docx", "json", "cpp", "md"]: + if file_type.endswith("pdf"): + content = extract_pdf(path) + elif file_type.endswith("docx"): + content = extract_docx(path) + else: + content = extract_text(path) + return re.sub(r'(?m)^\s*$\n?', '', content) + else: + raise gr.Error("Oops, unsupported files.") def enable_sec(choice): if choice: @@ -195,7 +189,7 @@ def closeBtnHide(output_final): with gr.Column(scale=1) as menubar: endpoint = gr.Dropdown( label="Endpoint", - choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], + choices=["Groq","OpenAI","TogetherAI","Ollama"], value="OpenAI", ) choice = gr.Checkbox(label="Additional Endpoint", info="Additional endpoint for reflection") @@ -204,7 +198,7 @@ def closeBtnHide(output_final): with gr.Column(visible=False) as AddEndpoint: endpoint2 = gr.Dropdown( label="Additional Endpoint", - choices=["Groq","OpenAI","Cohere","TogetherAI","Ollama","Huggingface"], + choices=["Groq","OpenAI","TogetherAI","Ollama"], value="OpenAI", ) model2 = gr.Textbox(label="Model", value="gpt-4o", ) @@ -230,19 +224,12 @@ def closeBtnHide(output_final): value=1000, step=8, ) - context_window = gr.Slider( - label="Context Window", - minimum=512, - maximum=8192, - value=4096, - step=8, - ) - num_output = gr.Slider( - label="Output Num", - minimum=256, - maximum=8192, - value=512, - step=8, + temperature = gr.Slider( + label="Temperature", + minimum=0, + maximum=1.0, + value=0.3, + step=0.1, ) rpm = gr.Slider( label="Request Per Minute", @@ -251,6 +238,10 @@ def closeBtnHide(output_final): value=60, step=1, ) + # json_mode = gr.Checkbox( + # False, + # label="Json Mode", + # ) with gr.Column(scale=4): source_text = gr.Textbox( label="Source Text", @@ -275,14 +266,14 @@ def closeBtnHide(output_final): close = gr.Button(value="Stop", visible=False) switchBtn.click(fn=switch, inputs=[source_lang,source_text,target_lang,output_final], outputs=[source_lang,source_text,target_lang,output_final]) - + menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) - + choice.select(fn=enable_sec, inputs=[choice], outputs=[AddEndpoint]) endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) - - start_ta = submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, context_window, num_output, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) + + start_ta = submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, temperature, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) diff --git a/app/webui/patch.py b/app/webui/patch.py index 50b3fc1..48a3509 100644 --- a/app/webui/patch.py +++ b/app/webui/patch.py @@ -1,72 +1,47 @@ -# a monkey patch to use llama-index completion +# a monkey patch for completion import os import time from functools import wraps from threading import Lock from typing import Union -import src.translation_agent.utils as utils - -from llama_index.llms.groq import Groq -from llama_index.llms.cohere import Cohere -from llama_index.llms.openai import OpenAI -from llama_index.llms.together import TogetherLLM -from llama_index.llms.ollama import Ollama -from llama_index.llms.huggingface_api import HuggingFaceInferenceAPI - -from llama_index.core import Settings -from llama_index.core.llms import ChatMessage +import translation_agent.utils as Utils +from groq import Groq +from together import Together +from ollama import Client +import gradio as gr RPM = 60 +MODEL = "" +TEMPERATURE = 0.3 +JS_MODE = False +ENDPOINT = "" +client = Utils.client # Add your LLMs here def model_load( endpoint: str, model: str, api_key: str = None, - context_window: int = 4096, - num_output: int = 512, + temperature: float = TEMPERATURE, rpm: int = RPM, + js_mode: bool = JS_MODE, + ): + global client, RPM, MODEL, TEMPERATURE, JS_MODE, ENDPOINT + ENDPOINT = endpoint + RPM = rpm + MODEL = model + TEMPERATURE = temperature + JS_MODE = js_mode + if endpoint == "Groq": - llm = Groq( - model=model, - api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), - ) - elif endpoint == "Cohere": - llm = Cohere( - model=model, - api_key=api_key if api_key else os.getenv("COHERE_API_KEY"), - ) - elif endpoint == "OpenAI": - llm = OpenAI( - model=model, - api_key=api_key if api_key else os.getenv("OPENAI_API_KEY"), - ) + client = Groq(api_key=api_key if api_key else os.getenv("GROQ_API_KEY")) elif endpoint == "TogetherAI": - llm = TogetherLLM( - model=model, - api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), - ) + client = Together(api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY")) elif endpoint == "Ollama": - llm = Ollama( - model=model, - request_timeout=120.0) - elif endpoint == "Huggingface": - llm = HuggingFaceInferenceAPI( - model_name=model, - token=api_key if api_key else os.getenv("HF_TOKEN"), - task="text-generation", - ) - - global RPM - RPM = rpm - - Settings.llm = llm - # maximum input size to the LLM - Settings.context_window = context_window - - # number of tokens reserved for text generation. - Settings.num_output = num_output + client = Client(host='http://localhost:11434') + else: + client = Utils.openai.OpenAI(api_key=api_key if api_key else os.getenv("OPENAI_API_KEY")) def rate_limit(get_max_per_minute): def decorator(func): @@ -92,77 +67,111 @@ def wrapper(*args, **kwargs): @rate_limit(lambda: RPM) def get_completion( - prompt: str, - system_message: str = "You are a helpful assistant.", - temperature: float = 0.3, - json_mode: bool = False, - ) -> Union[str, dict]: - """ - Generate a completion using the OpenAI API. - - Args: - prompt (str): The user's prompt or query. - system_message (str, optional): The system message to set the context for the assistant. - Defaults to "You are a helpful assistant.". - temperature (float, optional): The sampling temperature for controlling the randomness of the generated text. - Defaults to 0.3. - json_mode (bool, optional): Whether to return the response in JSON format. - Defaults to False. - - Returns: - Union[str, dict]: The generated completion. - If json_mode is True, returns the complete API response as a dictionary. - If json_mode is False, returns the generated text as a string. - """ - llm = Settings.llm - if llm.class_name() == "HuggingFaceInferenceAPI": - llm.system_prompt = system_message - messages = [ - ChatMessage( - role="user", content=prompt), - ] + prompt: str, + system_message: str = "You are a helpful assistant.", + model: str = "gpt-4-turbo", + temperature: float = 0.3, + json_mode: bool = False, +) -> Union[str, dict]: + """ + Generate a completion using the OpenAI API. + + Args: + prompt (str): The user's prompt or query. + system_message (str, optional): The system message to set the context for the assistant. + Defaults to "You are a helpful assistant.". + model (str, optional): The name of the OpenAI model to use for generating the completion. + Defaults to "gpt-4-turbo". + temperature (float, optional): The sampling temperature for controlling the randomness of the generated text. + Defaults to 0.3. + json_mode (bool, optional): Whether to return the response in JSON format. + Defaults to False. + + Returns: + Union[str, dict]: The generated completion. + If json_mode is True, returns the complete API response as a dictionary. + If json_mode is False, returns the generated text as a string. + """ + + model = MODEL + temperature = TEMPERATURE + json_mode = JS_MODE + + if ENDPOINT == "Ollama": + if json_mode: try: - response = llm.chat( - messages=messages, - temperature=temperature, + response = client.chat( + model=model, + format="json", + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], + options = { + "temperature": TEMPERATURE, + "top_p": 1.0 + }, ) - return response.message.content + print(response) + return response['message']['content'] except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") else: - messages = [ - ChatMessage( - role="system", content=system_message), - ChatMessage( - role="user", content=prompt), - ] - - if json_mode: - response = llm.chat( + try: + response = client.chat( + model=model, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], + options = { + "temperature": TEMPERATURE, + "top_p": 1.0 + }, + ) + return response['message']['content'] + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") + else: + if json_mode: + try: + response = client.chat.completions.create( + model=model, temperature=temperature, + top_p=1, response_format={"type": "json_object"}, - messages=messages, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], ) - return response.message.content - else: - try: - response = llm.chat( - temperature=temperature, - messages=messages, - ) - return response.message.content - except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") - -utils.get_completion = get_completion + return response.choices[0].message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") + else: + try: + response = client.chat.completions.create( + model=model, + temperature=temperature, + top_p=1, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], + ) + return response.choices[0].message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") -one_chunk_initial_translation = utils.one_chunk_initial_translation -one_chunk_reflect_on_translation = utils.one_chunk_reflect_on_translation -one_chunk_improve_translation = utils.one_chunk_improve_translation -one_chunk_translate_text = utils.one_chunk_translate_text -num_tokens_in_string = utils.num_tokens_in_string -multichunk_initial_translation = utils.multichunk_initial_translation -multichunk_reflect_on_translation = utils.multichunk_reflect_on_translation -multichunk_improve_translation = utils.multichunk_improve_translation -multichunk_translation = utils.multichunk_translation -calculate_chunk_size =utils.calculate_chunk_size \ No newline at end of file +Utils.get_completion = get_completion + +one_chunk_initial_translation = Utils.one_chunk_initial_translation +one_chunk_reflect_on_translation = Utils.one_chunk_reflect_on_translation +one_chunk_improve_translation = Utils.one_chunk_improve_translation +one_chunk_translate_text = Utils.one_chunk_translate_text +num_tokens_in_string = Utils.num_tokens_in_string +multichunk_initial_translation = Utils.multichunk_initial_translation +multichunk_reflect_on_translation = Utils.multichunk_reflect_on_translation +multichunk_improve_translation = Utils.multichunk_improve_translation +multichunk_translation = Utils.multichunk_translation +calculate_chunk_size =Utils.calculate_chunk_size \ No newline at end of file diff --git a/app/webui/process.py b/app/webui/process.py index e943598..cdde226 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -2,13 +2,32 @@ from simplemma import simple_tokenizer from difflib import Differ from icecream import ic -from app.webui.patch import model_load,num_tokens_in_string,one_chunk_initial_translation, one_chunk_reflect_on_translation, one_chunk_improve_translation -from app.webui.patch import calculate_chunk_size, multichunk_initial_translation, multichunk_reflect_on_translation, multichunk_improve_translation - -from llama_index.core.node_parser import SentenceSplitter +from patch import model_load,num_tokens_in_string,one_chunk_initial_translation, one_chunk_reflect_on_translation, one_chunk_improve_translation +from patch import calculate_chunk_size, multichunk_initial_translation, multichunk_reflect_on_translation, multichunk_improve_translation +import pymupdf +import docx +from langchain_text_splitters import RecursiveCharacterTextSplitter progress=gr.Progress() +def extract_text(path): + return open(path, 'r').read() + +def extract_pdf(path): + doc = pymupdf.open(path) + text = "" + for page in doc: + text += page.get_text() + return text + +def extract_docx(path): + doc = docx.Document(path) + data = [] + for paragraph in doc.paragraphs: + data.append(paragraph.text) + content = '\n\n'.join(data) + return content + def tokenize(text): # Use nltk to tokenize the text words = simple_tokenizer(text) @@ -82,29 +101,28 @@ def translator( else: ic("Translating text as multiple chunks") - progress((1,5), desc="Calculate chunk size...") token_size = calculate_chunk_size( token_count=num_tokens_in_text, token_limit=max_tokens ) ic(token_size) - #using sentence splitter - text_parser = SentenceSplitter( - chunk_size=token_size, + text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder( + model_name="gpt-4", + chunk_size=token_size, + chunk_overlap=0, ) - progress((2,5), desc="Spilt source text...") - source_text_chunks = text_parser.split_text(source_text) + source_text_chunks = text_splitter.split_text(source_text) - progress((3,5), desc="First translation...") + progress((1,3), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) init_translation = "".join(translation_1_chunks) - progress((4,5), desc="Reflection...") + progress((2,3), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -115,7 +133,7 @@ def translator( reflection = "".join(reflection_chunks) - progress((5,5), desc="Second translation...") + progress((3,3), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, @@ -133,8 +151,6 @@ def translator_sec( endpoint2: str, model2: str, api_key2: str, - context_window: int, - num_output: int, source_lang: str, target_lang: str, source_text: str, @@ -156,7 +172,7 @@ def translator_sec( ) try: - model_load(endpoint2, model2, api_key2, context_window, num_output) + model_load(endpoint2, model2, api_key2) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") @@ -175,22 +191,21 @@ def translator_sec( else: ic("Translating text as multiple chunks") - progress((1,5), desc="Calculate chunk size...") token_size = calculate_chunk_size( token_count=num_tokens_in_text, token_limit=max_tokens ) ic(token_size) - #using sentence splitter - text_parser = SentenceSplitter( - chunk_size=token_size, + text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder( + model_name="gpt-4", + chunk_size=token_size, + chunk_overlap=0, ) - progress((2,5), desc="Spilt source text...") - source_text_chunks = text_parser.split_text(source_text) + source_text_chunks = text_splitter.split_text(source_text) - progress((3,5), desc="First translation...") + progress((1,3), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) @@ -198,11 +213,11 @@ def translator_sec( init_translation = "".join(translation_1_chunks) try: - model_load(endpoint2, model2, api_key2, context_window, num_output) + model_load(endpoint2, model2, api_key2) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") - progress((4,5), desc="Reflection...") + progress((2,3), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -213,7 +228,7 @@ def translator_sec( reflection = "".join(reflection_chunks) - progress((5,5), desc="Second translation...") + progress((3,3), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, diff --git a/app/webui/requirements.txt b/app/webui/requirements.txt deleted file mode 100644 index eeac3ce..0000000 --- a/app/webui/requirements.txt +++ /dev/null @@ -1,13 +0,0 @@ -llama-index -llama-index-llms-groq -llama-index-llms-openai -llama-index-llms-cohere -llama-index-llms-together -llama-index-llms-ollama -llama-index-llms-huggingface-api -tiktoken -icecream -simplemma -langchain-text-splitters -gradio -docx2txt \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index db621f6..f0947b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,10 @@ authors = ["Andrew Ng "] license = "MIT" readme = "README.md" package-mode = true -packages = [{ include = "translation_agent", from = "src" }] +packages = [ + { include = "translation_agent", from = "src" }, + { include = "webui", from = "app" }, + ] repository = "https://github.com/andrewyng/translation-agent" keywords = ["translation", "agents", "LLM", "machine translation"] @@ -21,6 +24,15 @@ icecream = "^2.1.3" langchain-text-splitters = "^0.0.1" python-dotenv = "^1.0.1" +[tool.poetry.group.app.dependencies] +simplemma = "^1.0.0" +gradio = "4.37.2" +python-docx = "^1.1.2" +PyMuPDF = "^1.24.7" +groq = "^0.9.0" +ollama = "^0.2.1" +together = "^1.2.1" + [tool.poetry.group.dev] optional = true From e5b5e523097f5402ceba1830556ad82ae8bb3d63 Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sat, 6 Jul 2024 16:24:50 +0800 Subject: [PATCH 15/21] Update to use base url --- app/webui/README.md | 5 +- app/webui/app.py | 24 +++++++--- app/webui/patch.py | 111 +++++++++++++++---------------------------- app/webui/process.py | 5 +- 4 files changed, 61 insertions(+), 84 deletions(-) diff --git a/app/webui/README.md b/app/webui/README.md index 6d8fc45..be7700a 100644 --- a/app/webui/README.md +++ b/app/webui/README.md @@ -1,7 +1,7 @@ ## Translation Agent WebUI -A Gradio Web UI for translation agent. +This repository contains a Gradio web UI for a translation agent that utilizes various language models for translation. ### Preview @@ -72,6 +72,7 @@ A Gradio Web UI for translation agent. 3. Input the source text or upload your document file. 4. Submit and get translation, the UI will display the translated text with tokenization and highlight differences. 5. Enable Second Endpoint, you can add another endpoint by different LLMs for reflection. +6. Using a custom endpoint, you can enter an OpenAI compatible API base url. **Customization:** @@ -87,4 +88,4 @@ This project is licensed under the MIT License. **DEMO:** -[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI) \ No newline at end of file +[Huggingface Demo](https://huggingface.co/spaces/vilarin/Translation-Agent-WebUI) diff --git a/app/webui/app.py b/app/webui/app.py index 39ac80b..9cbb32b 100644 --- a/app/webui/app.py +++ b/app/webui/app.py @@ -6,10 +6,12 @@ def huanik( endpoint: str, + base: str, model: str, api_key: str, choice: str, endpoint2: str, + base2: str, model2: str, api_key2: str, source_lang: str, @@ -25,7 +27,7 @@ def huanik( raise gr.Error("Please check that the content or options are entered correctly.") try: - model_load(endpoint, model, api_key, temperature, rpm) + model_load(endpoint, base, model, api_key, temperature, rpm) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") @@ -34,6 +36,7 @@ def huanik( if choice: init_translation, reflect_translation, final_translation = translator_sec( endpoint2=endpoint2, + base2=base2, model2=model2, api_key2=api_key2, source_lang=source_lang, @@ -68,8 +71,13 @@ def update_model(endpoint): "OpenAI": "gpt-4o", "TogetherAI": "Qwen/Qwen2-72B-Instruct", "Ollama": "llama3", + "CUSTOM": "", } - return gr.update(value=endpoint_model_map[endpoint]) + if endpoint == "CUSTOM": + base = gr.update(visible=True) + else: + base = gr.update(visible=False) + return gr.update(value=endpoint_model_map[endpoint]), base def read_doc(path): file_type = path.split(".")[-1] @@ -189,20 +197,22 @@ def closeBtnHide(output_final): with gr.Column(scale=1) as menubar: endpoint = gr.Dropdown( label="Endpoint", - choices=["Groq","OpenAI","TogetherAI","Ollama"], + choices=["OpenAI","Groq","TogetherAI","Ollama","CUSTOM"], value="OpenAI", ) choice = gr.Checkbox(label="Additional Endpoint", info="Additional endpoint for reflection") model = gr.Textbox(label="Model", value="gpt-4o", ) api_key = gr.Textbox(label="API_KEY", type="password", ) + base = gr.Textbox(label="BASE URL", visible=False) with gr.Column(visible=False) as AddEndpoint: endpoint2 = gr.Dropdown( label="Additional Endpoint", - choices=["Groq","OpenAI","TogetherAI","Ollama"], + choices=["OpenAI","Groq","TogetherAI","Ollama","CUSTOM"], value="OpenAI", ) model2 = gr.Textbox(label="Model", value="gpt-4o", ) api_key2 = gr.Textbox(label="API_KEY", type="password", ) + base2 = gr.Textbox(label="BASE URL", visible=False) with gr.Row(): source_lang = gr.Textbox( label="Source Lang", @@ -268,12 +278,12 @@ def closeBtnHide(output_final): switchBtn.click(fn=switch, inputs=[source_lang,source_text,target_lang,output_final], outputs=[source_lang,source_text,target_lang,output_final]) menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) - endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model]) + endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model, base]) choice.select(fn=enable_sec, inputs=[choice], outputs=[AddEndpoint]) - endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2]) + endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2, base2]) - start_ta = submit.click(fn=huanik, inputs=[endpoint, model, api_key, choice, endpoint2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, temperature, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) + start_ta = submit.click(fn=huanik, inputs=[endpoint, base, model, api_key, choice, endpoint2, base2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, temperature, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) upload.upload(fn=read_doc, inputs = upload, outputs = source_text) output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) diff --git a/app/webui/patch.py b/app/webui/patch.py index 48a3509..b4267c5 100644 --- a/app/webui/patch.py +++ b/app/webui/patch.py @@ -5,27 +5,26 @@ from threading import Lock from typing import Union import translation_agent.utils as Utils -from groq import Groq -from together import Together -from ollama import Client +import openai import gradio as gr RPM = 60 MODEL = "" TEMPERATURE = 0.3 +# Hide js_mode in UI now, update in plan. JS_MODE = False ENDPOINT = "" -client = Utils.client +client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) # Add your LLMs here def model_load( endpoint: str, + base_url: str, model: str, api_key: str = None, temperature: float = TEMPERATURE, rpm: int = RPM, js_mode: bool = JS_MODE, - ): global client, RPM, MODEL, TEMPERATURE, JS_MODE, ENDPOINT ENDPOINT = endpoint @@ -35,13 +34,15 @@ def model_load( JS_MODE = js_mode if endpoint == "Groq": - client = Groq(api_key=api_key if api_key else os.getenv("GROQ_API_KEY")) + client = openai.OpenAI(api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), base_url="https://api.groq.com/openai/v1") elif endpoint == "TogetherAI": - client = Together(api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY")) + client = openai.OpenAI(api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), base_url="https://api.together.xyz/v1") + elif endpoint == "CUSTOM": + client = openai.OpenAI(api_key=api_key, base_url=base_url) elif endpoint == "Ollama": - client = Client(host='http://localhost:11434') + client = openai.OpenAI(api_key="ollama", base_url="http://localhost:11434/v1") else: - client = Utils.openai.OpenAI(api_key=api_key if api_key else os.getenv("OPENAI_API_KEY")) + client = openai.OpenAI(api_key=api_key if api_key else os.getenv("OPENAI_API_KEY")) def rate_limit(get_max_per_minute): def decorator(func): @@ -97,71 +98,35 @@ def get_completion( temperature = TEMPERATURE json_mode = JS_MODE - if ENDPOINT == "Ollama": - if json_mode: - try: - response = client.chat( - model=model, - format="json", - messages=[ - {"role": "system", "content": system_message}, - {"role": "user", "content": prompt}, - ], - options = { - "temperature": TEMPERATURE, - "top_p": 1.0 - }, - ) - print(response) - return response['message']['content'] - except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") - else: - try: - response = client.chat( - model=model, - messages=[ - {"role": "system", "content": system_message}, - {"role": "user", "content": prompt}, - ], - options = { - "temperature": TEMPERATURE, - "top_p": 1.0 - }, - ) - return response['message']['content'] - except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + if json_mode: + try: + response = client.chat.completions.create( + model=model, + temperature=temperature, + top_p=1, + response_format={"type": "json_object"}, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], + ) + return response.choices[0].message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") else: - if json_mode: - try: - response = client.chat.completions.create( - model=model, - temperature=temperature, - top_p=1, - response_format={"type": "json_object"}, - messages=[ - {"role": "system", "content": system_message}, - {"role": "user", "content": prompt}, - ], - ) - return response.choices[0].message.content - except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") - else: - try: - response = client.chat.completions.create( - model=model, - temperature=temperature, - top_p=1, - messages=[ - {"role": "system", "content": system_message}, - {"role": "user", "content": prompt}, - ], - ) - return response.choices[0].message.content - except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + try: + response = client.chat.completions.create( + model=model, + temperature=temperature, + top_p=1, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": prompt}, + ], + ) + return response.choices[0].message.content + except Exception as e: + raise gr.Error(f"An unexpected error occurred: {e}") Utils.get_completion = get_completion diff --git a/app/webui/process.py b/app/webui/process.py index cdde226..2319238 100644 --- a/app/webui/process.py +++ b/app/webui/process.py @@ -149,6 +149,7 @@ def translator( def translator_sec( endpoint2: str, + base2: str, model2: str, api_key2: str, source_lang: str, @@ -172,7 +173,7 @@ def translator_sec( ) try: - model_load(endpoint2, model2, api_key2) + model_load(endpoint2, base2, model2, api_key2) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") @@ -213,7 +214,7 @@ def translator_sec( init_translation = "".join(translation_1_chunks) try: - model_load(endpoint2, model2, api_key2) + model_load(endpoint2, base2, model2, api_key2) except Exception as e: raise gr.Error(f"An unexpected error occurred: {e}") From 7d4393a047fc8073dd852a6514ee88a07ab4e25a Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sat, 6 Jul 2024 16:28:00 +0800 Subject: [PATCH 16/21] fix --- pyproject.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f0947b3..db00826 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,9 +29,6 @@ simplemma = "^1.0.0" gradio = "4.37.2" python-docx = "^1.1.2" PyMuPDF = "^1.24.7" -groq = "^0.9.0" -ollama = "^0.2.1" -together = "^1.2.1" [tool.poetry.group.dev] optional = true From 03373711cf7b404298efc8562e17ebf592ca80ea Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Sat, 6 Jul 2024 16:29:17 +0800 Subject: [PATCH 17/21] fix --- app/webui/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/webui/README.md b/app/webui/README.md index be7700a..e6c4df5 100644 --- a/app/webui/README.md +++ b/app/webui/README.md @@ -37,10 +37,8 @@ This repository contains a Gradio web UI for a translation agent that utilizes v cd translation-agent poetry install --with app poetry shell - python .\app\webui\app.py - ``` - + 2. **Set API Keys:** - Rename `.env.sample` to `.env`, you can add your API keys for each service: From ad4006902fa0fe5891af9698ce1cce2af7e9aee1 Mon Sep 17 00:00:00 2001 From: Joaquin Dominguez Date: Mon, 8 Jul 2024 10:44:07 -0400 Subject: [PATCH 18/21] style and formatting changes --- .gitignore | 1 + app/{webui => }/README.md | 6 +- app/{webui => }/app.py | 216 ++++++++++++++++++++++++++----------- app/{webui => }/image.png | Bin app/{webui => }/patch.py | 76 ++++++++----- app/{webui => }/process.py | 114 +++++++++++--------- app/webui/__init__.py | 1 - pyproject.toml | 3 + 8 files changed, 274 insertions(+), 143 deletions(-) rename app/{webui => }/README.md (94%) rename app/{webui => }/app.py (55%) rename app/{webui => }/image.png (100%) rename app/{webui => }/patch.py (69%) rename app/{webui => }/process.py (71%) delete mode 100644 app/webui/__init__.py diff --git a/.gitignore b/.gitignore index b5844af..0d68f6f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ poetry.lock floresp-v2.0-rc.3 *cache wmt +outputs diff --git a/app/webui/README.md b/app/README.md similarity index 94% rename from app/webui/README.md rename to app/README.md index e6c4df5..1d84349 100644 --- a/app/webui/README.md +++ b/app/README.md @@ -38,7 +38,7 @@ This repository contains a Gradio web UI for a translation agent that utilizes v poetry install --with app poetry shell ``` - + 2. **Set API Keys:** - Rename `.env.sample` to `.env`, you can add your API keys for each service: @@ -53,11 +53,11 @@ This repository contains a Gradio web UI for a translation agent that utilizes v **Linux** ```bash - python app/webui/app.py + python app/app.py ``` **Windows** ```bash - python .\app\webui\app.py + python .\app\app.py ``` 4. **Access the Web UI:** diff --git a/app/webui/app.py b/app/app.py similarity index 55% rename from app/webui/app.py rename to app/app.py index 9cbb32b..06d3303 100644 --- a/app/webui/app.py +++ b/app/app.py @@ -1,8 +1,16 @@ import os import re -import gradio as gr from glob import glob -from process import model_load, diff_texts, translator, translator_sec, extract_docx, extract_pdf, extract_text + +import gradio as gr +from process import diff_texts +from process import extract_docx +from process import extract_pdf +from process import extract_text +from process import model_load +from process import translator +from process import translator_sec + def huanik( endpoint: str, @@ -22,28 +30,31 @@ def huanik( temperature: int, rpm: int, ): - if not source_text or source_lang == target_lang: - raise gr.Error("Please check that the content or options are entered correctly.") + raise gr.Error( + "Please check that the content or options are entered correctly." + ) try: model_load(endpoint, base, model, api_key, temperature, rpm) except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + raise gr.Error(f"An unexpected error occurred: {e}") from e - source_text = re.sub(r'(?m)^\s*$\n?', '', source_text) + source_text = re.sub(r"(?m)^\s*$\n?", "", source_text) if choice: - init_translation, reflect_translation, final_translation = translator_sec( - endpoint2=endpoint2, - base2=base2, - model2=model2, - api_key2=api_key2, - source_lang=source_lang, - target_lang=target_lang, - source_text=source_text, - country=country, - max_tokens=max_tokens, + init_translation, reflect_translation, final_translation = ( + translator_sec( + endpoint2=endpoint2, + base2=base2, + model2=model2, + api_key2=api_key2, + source_lang=source_lang, + target_lang=target_lang, + source_text=source_text, + country=country, + max_tokens=max_tokens, + ) ) else: @@ -61,10 +72,12 @@ def huanik( combine_adjacent=True, show_legend=True, visible=True, - color_map={"removed": "red", "added": "green"}) + color_map={"removed": "red", "added": "green"}, + ) return init_translation, reflect_translation, final_translation, final_diff + def update_model(endpoint): endpoint_model_map = { "Groq": "llama3-70b-8192", @@ -79,6 +92,7 @@ def update_model(endpoint): base = gr.update(visible=False) return gr.update(value=endpoint_model_map[endpoint]), base + def read_doc(path): file_type = path.split(".")[-1] print(file_type) @@ -89,19 +103,22 @@ def read_doc(path): content = extract_docx(path) else: content = extract_text(path) - return re.sub(r'(?m)^\s*$\n?', '', content) + return re.sub(r"(?m)^\s*$\n?", "", content) else: raise gr.Error("Oops, unsupported files.") + def enable_sec(choice): if choice: - return gr.update(visible = True) + return gr.update(visible=True) else: - return gr.update(visible = False) + return gr.update(visible=False) + def update_menu(visible): return not visible, gr.update(visible=not visible) + def export_txt(strings): os.makedirs("outputs", exist_ok=True) base_count = len(glob(os.path.join("outputs", "*.txt"))) @@ -110,19 +127,33 @@ def export_txt(strings): f.write(strings) return gr.update(value=file_path, visible=True) -def switch(source_lang,source_text,target_lang,output_final): + +def switch(source_lang, source_text, target_lang, output_final): if output_final: - return gr.update(value=target_lang), gr.update(value=output_final), gr.update(value=source_lang), gr.update(value=source_text) + return ( + gr.update(value=target_lang), + gr.update(value=output_final), + gr.update(value=source_lang), + gr.update(value=source_text), + ) else: - return gr.update(value=target_lang), gr.update(value=source_text), gr.update(value=source_lang), gr.update(value="") + return ( + gr.update(value=target_lang), + gr.update(value=source_text), + gr.update(value=source_lang), + gr.update(value=""), + ) + -def closeBtnShow(): +def close_btn_show(): return gr.update(visible=False), gr.update(visible=True) -def closeBtnHide(output_final): + +def close_btn_hide(output_final): if output_final: return gr.update(visible=True), gr.update(visible=False) + TITLE = """
Translation Agent WebUI
@@ -182,8 +213,8 @@ def closeBtnHide(output_final): JS = """ function () { - const menuBtn = document.getElementById('menu'); - menuBtn.classList.toggle('active'); + const menu_btn = document.getElementById('menu'); + menu_btn.classList.toggle('active'); } """ @@ -191,41 +222,66 @@ def closeBtnHide(output_final): with gr.Blocks(theme="soft", css=CSS, fill_height=True) as demo: with gr.Row(): visible = gr.State(value=True) - menuBtn = gr.Button(value="", elem_classes="menu_btn", elem_id="menu", size="sm") + menu_btn = gr.Button( + value="", elem_classes="menu_btn", elem_id="menu", size="sm" + ) gr.HTML(TITLE) with gr.Row(): with gr.Column(scale=1) as menubar: endpoint = gr.Dropdown( label="Endpoint", - choices=["OpenAI","Groq","TogetherAI","Ollama","CUSTOM"], + choices=["OpenAI", "Groq", "TogetherAI", "Ollama", "CUSTOM"], value="OpenAI", ) - choice = gr.Checkbox(label="Additional Endpoint", info="Additional endpoint for reflection") - model = gr.Textbox(label="Model", value="gpt-4o", ) - api_key = gr.Textbox(label="API_KEY", type="password", ) + choice = gr.Checkbox( + label="Additional Endpoint", + info="Additional endpoint for reflection", + ) + model = gr.Textbox( + label="Model", + value="gpt-4o", + ) + api_key = gr.Textbox( + label="API_KEY", + type="password", + ) base = gr.Textbox(label="BASE URL", visible=False) with gr.Column(visible=False) as AddEndpoint: endpoint2 = gr.Dropdown( label="Additional Endpoint", - choices=["OpenAI","Groq","TogetherAI","Ollama","CUSTOM"], + choices=[ + "OpenAI", + "Groq", + "TogetherAI", + "Ollama", + "CUSTOM", + ], value="OpenAI", ) - model2 = gr.Textbox(label="Model", value="gpt-4o", ) - api_key2 = gr.Textbox(label="API_KEY", type="password", ) + model2 = gr.Textbox( + label="Model", + value="gpt-4o", + ) + api_key2 = gr.Textbox( + label="API_KEY", + type="password", + ) base2 = gr.Textbox(label="BASE URL", visible=False) with gr.Row(): source_lang = gr.Textbox( label="Source Lang", value="English", - elem_classes = "lang", + elem_classes="lang", ) target_lang = gr.Textbox( label="Target Lang", value="Spanish", - elem_classes = "lang", + elem_classes="lang", ) - switchBtn = gr.Button(value="🔄️") - country = gr.Textbox(label="Country", value="Argentina", max_lines=1) + switch_btn = gr.Button(value="🔄️") + country = gr.Textbox( + label="Country", value="Argentina", max_lines=1 + ) with gr.Accordion("Advanced Options", open=False): max_tokens = gr.Slider( label="Max tokens Per Chunk", @@ -233,63 +289,99 @@ def closeBtnHide(output_final): maximum=2046, value=1000, step=8, - ) + ) temperature = gr.Slider( label="Temperature", minimum=0, maximum=1.0, value=0.3, step=0.1, - ) + ) rpm = gr.Slider( label="Request Per Minute", minimum=1, maximum=1000, value=60, step=1, - ) - # json_mode = gr.Checkbox( - # False, - # label="Json Mode", - # ) + ) + with gr.Column(scale=4): source_text = gr.Textbox( label="Source Text", - value="How we live is so different from how we ought to live that he who studies "+\ - "what ought to be done rather than what is done will learn the way to his downfall "+\ - "rather than to his preservation.", + value="How we live is so different from how we ought to live that he who studies " + + "what ought to be done rather than what is done will learn the way to his downfall " + + "rather than to his preservation.", lines=12, ) with gr.Tab("Final"): - output_final = gr.Textbox(label="FInal Translation", lines=12, show_copy_button=True) + output_final = gr.Textbox( + label="Final Translation", lines=12, show_copy_button=True + ) with gr.Tab("Initial"): - output_init = gr.Textbox(label="Init Translation", lines=12, show_copy_button=True) + output_init = gr.Textbox( + label="Init Translation", lines=12, show_copy_button=True + ) with gr.Tab("Reflection"): - output_reflect = gr.Textbox(label="Reflection", lines=12, show_copy_button=True) + output_reflect = gr.Textbox( + label="Reflection", lines=12, show_copy_button=True + ) with gr.Tab("Diff"): - output_diff = gr.HighlightedText(visible = False) + output_diff = gr.HighlightedText(visible=False) with gr.Row(): submit = gr.Button(value="Translate") upload = gr.UploadButton(label="Upload", file_types=["text"]) export = gr.DownloadButton(visible=False) - clear = gr.ClearButton([source_text, output_init, output_reflect, output_final]) + clear = gr.ClearButton( + [source_text, output_init, output_reflect, output_final] + ) close = gr.Button(value="Stop", visible=False) - switchBtn.click(fn=switch, inputs=[source_lang,source_text,target_lang,output_final], outputs=[source_lang,source_text,target_lang,output_final]) + switch_btn.click( + fn=switch, + inputs=[source_lang, source_text, target_lang, output_final], + outputs=[source_lang, source_text, target_lang, output_final], + ) - menuBtn.click(fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS) + menu_btn.click( + fn=update_menu, inputs=visible, outputs=[visible, menubar], js=JS + ) endpoint.change(fn=update_model, inputs=[endpoint], outputs=[model, base]) choice.select(fn=enable_sec, inputs=[choice], outputs=[AddEndpoint]) - endpoint2.change(fn=update_model, inputs=[endpoint2], outputs=[model2, base2]) + endpoint2.change( + fn=update_model, inputs=[endpoint2], outputs=[model2, base2] + ) - start_ta = submit.click(fn=huanik, inputs=[endpoint, base, model, api_key, choice, endpoint2, base2, model2, api_key2, source_lang, target_lang, source_text, country, max_tokens, temperature, rpm], outputs=[output_init, output_reflect, output_final, output_diff]) - upload.upload(fn=read_doc, inputs = upload, outputs = source_text) + start_ta = submit.click( + fn=huanik, + inputs=[ + endpoint, + base, + model, + api_key, + choice, + endpoint2, + base2, + model2, + api_key2, + source_lang, + target_lang, + source_text, + country, + max_tokens, + temperature, + rpm, + ], + outputs=[output_init, output_reflect, output_final, output_diff], + ) + upload.upload(fn=read_doc, inputs=upload, outputs=source_text) output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) - submit.click(fn=closeBtnShow, outputs=[clear, close]) - output_final.change(fn=closeBtnHide, inputs=output_final, outputs=[clear, close]) + submit.click(fn=close_btn_show, outputs=[clear, close]) + output_final.change( + fn=close_btn_hide, inputs=output_final, outputs=[clear, close] + ) close.click(fn=None, cancels=start_ta) if __name__ == "__main__": - demo.queue(api_open=False).launch(show_api=False, share=False) \ No newline at end of file + demo.queue(api_open=False).launch(show_api=False, share=False) diff --git a/app/webui/image.png b/app/image.png similarity index 100% rename from app/webui/image.png rename to app/image.png diff --git a/app/webui/patch.py b/app/patch.py similarity index 69% rename from app/webui/patch.py rename to app/patch.py index b4267c5..91cc56c 100644 --- a/app/webui/patch.py +++ b/app/patch.py @@ -1,12 +1,14 @@ -# a monkey patch for completion import os import time from functools import wraps from threading import Lock +from typing import Optional from typing import Union -import translation_agent.utils as Utils -import openai + import gradio as gr +import openai +import translation_agent.utils as utils + RPM = 60 MODEL = "" @@ -16,15 +18,16 @@ ENDPOINT = "" client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) + # Add your LLMs here def model_load( - endpoint: str, - base_url: str, - model: str, - api_key: str = None, - temperature: float = TEMPERATURE, - rpm: int = RPM, - js_mode: bool = JS_MODE, + endpoint: str, + base_url: str, + model: str, + api_key: Optional[str] = None, + temperature: float = TEMPERATURE, + rpm: int = RPM, + js_mode: bool = JS_MODE, ): global client, RPM, MODEL, TEMPERATURE, JS_MODE, ENDPOINT ENDPOINT = endpoint @@ -34,15 +37,26 @@ def model_load( JS_MODE = js_mode if endpoint == "Groq": - client = openai.OpenAI(api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), base_url="https://api.groq.com/openai/v1") + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), + base_url="https://api.groq.com/openai/v1", + ) elif endpoint == "TogetherAI": - client = openai.OpenAI(api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), base_url="https://api.together.xyz/v1") + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), + base_url="https://api.together.xyz/v1", + ) elif endpoint == "CUSTOM": client = openai.OpenAI(api_key=api_key, base_url=base_url) elif endpoint == "Ollama": - client = openai.OpenAI(api_key="ollama", base_url="http://localhost:11434/v1") + client = openai.OpenAI( + api_key="ollama", base_url="http://localhost:11434/v1" + ) else: - client = openai.OpenAI(api_key=api_key if api_key else os.getenv("OPENAI_API_KEY")) + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("OPENAI_API_KEY") + ) + def rate_limit(get_max_per_minute): def decorator(func): @@ -63,9 +77,12 @@ def wrapper(*args, **kwargs): ret = func(*args, **kwargs) last_called[0] = time.time() return ret + return wrapper + return decorator + @rate_limit(lambda: RPM) def get_completion( prompt: str, @@ -112,7 +129,7 @@ def get_completion( ) return response.choices[0].message.content except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + raise gr.Error(f"An unexpected error occurred: {e}") from e else: try: response = client.chat.completions.create( @@ -126,17 +143,18 @@ def get_completion( ) return response.choices[0].message.content except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") - -Utils.get_completion = get_completion - -one_chunk_initial_translation = Utils.one_chunk_initial_translation -one_chunk_reflect_on_translation = Utils.one_chunk_reflect_on_translation -one_chunk_improve_translation = Utils.one_chunk_improve_translation -one_chunk_translate_text = Utils.one_chunk_translate_text -num_tokens_in_string = Utils.num_tokens_in_string -multichunk_initial_translation = Utils.multichunk_initial_translation -multichunk_reflect_on_translation = Utils.multichunk_reflect_on_translation -multichunk_improve_translation = Utils.multichunk_improve_translation -multichunk_translation = Utils.multichunk_translation -calculate_chunk_size =Utils.calculate_chunk_size \ No newline at end of file + raise gr.Error(f"An unexpected error occurred: {e}") from e + + +utils.get_completion = get_completion + +one_chunk_initial_translation = utils.one_chunk_initial_translation +one_chunk_reflect_on_translation = utils.one_chunk_reflect_on_translation +one_chunk_improve_translation = utils.one_chunk_improve_translation +one_chunk_translate_text = utils.one_chunk_translate_text +num_tokens_in_string = utils.num_tokens_in_string +multichunk_initial_translation = utils.multichunk_initial_translation +multichunk_reflect_on_translation = utils.multichunk_reflect_on_translation +multichunk_improve_translation = utils.multichunk_improve_translation +multichunk_translation = utils.multichunk_translation +calculate_chunk_size = utils.calculate_chunk_size diff --git a/app/webui/process.py b/app/process.py similarity index 71% rename from app/webui/process.py rename to app/process.py index 2319238..9dc1b6e 100644 --- a/app/webui/process.py +++ b/app/process.py @@ -1,17 +1,30 @@ -import gradio as gr -from simplemma import simple_tokenizer from difflib import Differ -from icecream import ic -from patch import model_load,num_tokens_in_string,one_chunk_initial_translation, one_chunk_reflect_on_translation, one_chunk_improve_translation -from patch import calculate_chunk_size, multichunk_initial_translation, multichunk_reflect_on_translation, multichunk_improve_translation -import pymupdf + import docx +import gradio as gr +import pymupdf +from icecream import ic from langchain_text_splitters import RecursiveCharacterTextSplitter +from patch import calculate_chunk_size +from patch import model_load +from patch import multichunk_improve_translation +from patch import multichunk_initial_translation +from patch import multichunk_reflect_on_translation +from patch import num_tokens_in_string +from patch import one_chunk_improve_translation +from patch import one_chunk_initial_translation +from patch import one_chunk_reflect_on_translation +from simplemma import simple_tokenizer + + +progress = gr.Progress() -progress=gr.Progress() def extract_text(path): - return open(path, 'r').read() + with open(path) as f: + file_text = f.read() + return file_text + def extract_pdf(path): doc = pymupdf.open(path) @@ -20,29 +33,34 @@ def extract_pdf(path): text += page.get_text() return text + def extract_docx(path): doc = docx.Document(path) data = [] for paragraph in doc.paragraphs: data.append(paragraph.text) - content = '\n\n'.join(data) + content = "\n\n".join(data) return content + def tokenize(text): # Use nltk to tokenize the text words = simple_tokenizer(text) # Check if the text contains spaces - if ' ' in text: + if " " in text: # Create a list of words and spaces tokens = [] for word in words: tokens.append(word) - if not word.startswith("'") and not word.endswith("'"): # Avoid adding space after punctuation - tokens.append(' ') # Add space after each word + if not word.startswith("'") and not word.endswith( + "'" + ): # Avoid adding space after punctuation + tokens.append(" ") # Add space after each word return tokens[:-1] # Remove the last space else: return words + def diff_texts(text1, text2): tokens1 = tokenize(text1) tokens2 = tokenize(text2) @@ -54,24 +72,25 @@ def diff_texts(text1, text2): for token in diff_result: word = token[2:] category = None - if token[0] == '+': - category = 'added' - elif token[0] == '-': - category = 'removed' - elif token[0] == '?': + if token[0] == "+": + category = "added" + elif token[0] == "-": + category = "removed" + elif token[0] == "?": continue # Ignore the hints line highlighted_text.append((word, category)) return highlighted_text -#modified from src.translaation-agent.utils.tranlsate + +# modified from src.translaation-agent.utils.tranlsate def translator( - source_lang: str, - target_lang: str, - source_text: str, - country: str, - max_tokens:int = 1000, + source_lang: str, + target_lang: str, + source_text: str, + country: str, + max_tokens: int = 1000, ): """Translate the source_text from source_lang to target_lang.""" num_tokens_in_text = num_tokens_in_string(source_text) @@ -81,17 +100,17 @@ def translator( if num_tokens_in_text < max_tokens: ic("Translating text as single chunk") - progress((1,3), desc="First translation...") + progress((1, 3), desc="First translation...") init_translation = one_chunk_initial_translation( source_lang, target_lang, source_text ) - progress((2,3), desc="Reflecton...") + progress((2, 3), desc="Reflection...") reflection = one_chunk_reflect_on_translation( source_lang, target_lang, source_text, init_translation, country ) - progress((3,3), desc="Second translation...") + progress((3, 3), desc="Second translation...") final_translation = one_chunk_improve_translation( source_lang, target_lang, source_text, init_translation, reflection ) @@ -115,14 +134,14 @@ def translator( source_text_chunks = text_splitter.split_text(source_text) - progress((1,3), desc="First translation...") + progress((1, 3), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) init_translation = "".join(translation_1_chunks) - progress((2,3), desc="Reflection...") + progress((2, 3), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -133,7 +152,7 @@ def translator( reflection = "".join(reflection_chunks) - progress((3,3), desc="Second translation...") + progress((3, 3), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, @@ -148,17 +167,16 @@ def translator( def translator_sec( - endpoint2: str, - base2: str, - model2: str, - api_key2: str, - source_lang: str, - target_lang: str, - source_text: str, - country: str, - max_tokens: int = 1000, + endpoint2: str, + base2: str, + model2: str, + api_key2: str, + source_lang: str, + target_lang: str, + source_text: str, + country: str, + max_tokens: int = 1000, ): - """Translate the source_text from source_lang to target_lang.""" num_tokens_in_text = num_tokens_in_string(source_text) @@ -167,7 +185,7 @@ def translator_sec( if num_tokens_in_text < max_tokens: ic("Translating text as single chunk") - progress((1,3), desc="First translation...") + progress((1, 3), desc="First translation...") init_translation = one_chunk_initial_translation( source_lang, target_lang, source_text ) @@ -175,14 +193,14 @@ def translator_sec( try: model_load(endpoint2, base2, model2, api_key2) except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + raise gr.Error(f"An unexpected error occurred: {e}") from e - progress((2,3), desc="Reflecton...") + progress((2, 3), desc="Reflection...") reflection = one_chunk_reflect_on_translation( source_lang, target_lang, source_text, init_translation, country ) - progress((3,3), desc="Second translation...") + progress((3, 3), desc="Second translation...") final_translation = one_chunk_improve_translation( source_lang, target_lang, source_text, init_translation, reflection ) @@ -206,7 +224,7 @@ def translator_sec( source_text_chunks = text_splitter.split_text(source_text) - progress((1,3), desc="First translation...") + progress((1, 3), desc="First translation...") translation_1_chunks = multichunk_initial_translation( source_lang, target_lang, source_text_chunks ) @@ -216,9 +234,9 @@ def translator_sec( try: model_load(endpoint2, base2, model2, api_key2) except Exception as e: - raise gr.Error(f"An unexpected error occurred: {e}") + raise gr.Error(f"An unexpected error occurred: {e}") from e - progress((2,3), desc="Reflection...") + progress((2, 3), desc="Reflection...") reflection_chunks = multichunk_reflect_on_translation( source_lang, target_lang, @@ -229,7 +247,7 @@ def translator_sec( reflection = "".join(reflection_chunks) - progress((3,3), desc="Second translation...") + progress((3, 3), desc="Second translation...") translation_2_chunks = multichunk_improve_translation( source_lang, target_lang, @@ -240,4 +258,4 @@ def translator_sec( final_translation = "".join(translation_2_chunks) - return init_translation, reflection, final_translation \ No newline at end of file + return init_translation, reflection, final_translation diff --git a/app/webui/__init__.py b/app/webui/__init__.py deleted file mode 100644 index 9cfe7b4..0000000 --- a/app/webui/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .app import * \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index db00826..097f570 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,9 @@ icecream = "^2.1.3" langchain-text-splitters = "^0.0.1" python-dotenv = "^1.0.1" +[tool.poetry.group.app] +optional = true + [tool.poetry.group.app.dependencies] simplemma = "^1.0.0" gradio = "4.37.2" From 67e939afd1b374d9fc1477735386b2321547d42f Mon Sep 17 00:00:00 2001 From: Joaquin Dominguez Date: Mon, 8 Jul 2024 11:12:38 -0400 Subject: [PATCH 19/21] formatting --- app/app.py | 16 +++++++++------- app/patch.py | 3 +-- app/process.py | 20 +++++++++++--------- pyproject.toml | 5 ++--- src/translation_agent/utils.py | 3 +-- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/app/app.py b/app/app.py index 06d3303..616e851 100644 --- a/app/app.py +++ b/app/app.py @@ -3,13 +3,15 @@ from glob import glob import gradio as gr -from process import diff_texts -from process import extract_docx -from process import extract_pdf -from process import extract_text -from process import model_load -from process import translator -from process import translator_sec +from process import ( + diff_texts, + extract_docx, + extract_pdf, + extract_text, + model_load, + translator, + translator_sec, +) def huanik( diff --git a/app/patch.py b/app/patch.py index 91cc56c..d6af9a7 100644 --- a/app/patch.py +++ b/app/patch.py @@ -2,8 +2,7 @@ import time from functools import wraps from threading import Lock -from typing import Optional -from typing import Union +from typing import Optional, Union import gradio as gr import openai diff --git a/app/process.py b/app/process.py index 9dc1b6e..531d4f0 100644 --- a/app/process.py +++ b/app/process.py @@ -5,15 +5,17 @@ import pymupdf from icecream import ic from langchain_text_splitters import RecursiveCharacterTextSplitter -from patch import calculate_chunk_size -from patch import model_load -from patch import multichunk_improve_translation -from patch import multichunk_initial_translation -from patch import multichunk_reflect_on_translation -from patch import num_tokens_in_string -from patch import one_chunk_improve_translation -from patch import one_chunk_initial_translation -from patch import one_chunk_reflect_on_translation +from patch import ( + calculate_chunk_size, + model_load, + multichunk_improve_translation, + multichunk_initial_translation, + multichunk_reflect_on_translation, + num_tokens_in_string, + one_chunk_improve_translation, + one_chunk_initial_translation, + one_chunk_reflect_on_translation, +) from simplemma import simple_tokenizer diff --git a/pyproject.toml b/pyproject.toml index 097f570..7629d40 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,6 @@ readme = "README.md" package-mode = true packages = [ { include = "translation_agent", from = "src" }, - { include = "webui", from = "app" }, ] repository = "https://github.com/andrewyng/translation-agent" keywords = ["translation", "agents", "LLM", "machine translation"] @@ -76,7 +75,7 @@ priority = "supplemental" # Set the maximum line length to 79. line-length = 79 indent-width = 4 -exclude = [".venv", ".env", ".git", "tests", "eval"] +exclude = [".venv", ".env", ".git", "tests", "eval", ".jj"] [tool.ruff.lint] # Add the `line-too-long` rule to the enforced rule set. By default, Ruff omits rules that @@ -101,7 +100,7 @@ fixable = ["ALL"] ignore = ["SIM117"] [tool.ruff.lint.isort] -force-single-line = true +force-single-line = false lines-after-imports = 2 known-first-party = ["translation-agent"] diff --git a/src/translation_agent/utils.py b/src/translation_agent/utils.py index 45442a2..e15cfae 100755 --- a/src/translation_agent/utils.py +++ b/src/translation_agent/utils.py @@ -1,6 +1,5 @@ import os -from typing import List -from typing import Union +from typing import List, Union import openai import tiktoken From 2f5e510da8c75119dc1b158922bbca75f944e1ed Mon Sep 17 00:00:00 2001 From: Vila <124278082+snekkenull@users.noreply.github.com> Date: Mon, 8 Jul 2024 23:54:39 +0800 Subject: [PATCH 20/21] Fix the components error --- app/app.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/app.py b/app/app.py index 616e851..3956de7 100644 --- a/app/app.py +++ b/app/app.py @@ -122,13 +122,15 @@ def update_menu(visible): def export_txt(strings): - os.makedirs("outputs", exist_ok=True) - base_count = len(glob(os.path.join("outputs", "*.txt"))) - file_path = os.path.join("outputs", f"{base_count:06d}.txt") - with open(file_path, "w", encoding="utf-8") as f: - f.write(strings) - return gr.update(value=file_path, visible=True) - + if strings: + os.makedirs("outputs", exist_ok=True) + base_count = len(glob(os.path.join("outputs", "*.txt"))) + file_path = os.path.join("outputs", f"{base_count:06d}.txt") + with open(file_path, "w", encoding="utf-8") as f: + f.write(strings) + return gr.update(value=file_path, visible=True) + else: + return gr.update(visible=False) def switch(source_lang, source_text, target_lang, output_final): if output_final: @@ -151,9 +153,11 @@ def close_btn_show(): return gr.update(visible=False), gr.update(visible=True) -def close_btn_hide(output_final): - if output_final: +def close_btn_hide(output_diff): + if output_diff: return gr.update(visible=True), gr.update(visible=False) + else: + return gr.update(visible=False), gr.update(visible=True) TITLE = """ @@ -377,11 +381,11 @@ def close_btn_hide(output_final): outputs=[output_init, output_reflect, output_final, output_diff], ) upload.upload(fn=read_doc, inputs=upload, outputs=source_text) - output_final.change(fn=export_txt, inputs=output_final, outputs=[export]) + output_diff.change(fn=export_txt, inputs=output_final, outputs=[export]) submit.click(fn=close_btn_show, outputs=[clear, close]) - output_final.change( - fn=close_btn_hide, inputs=output_final, outputs=[clear, close] + output_diff.change( + fn=close_btn_hide, inputs=output_diff, outputs=[clear, close] ) close.click(fn=None, cancels=start_ta) From daf14a6d7cf88816aa5be5385679051a747836b6 Mon Sep 17 00:00:00 2001 From: Joaquin Dominguez Date: Mon, 8 Jul 2024 13:40:06 -0400 Subject: [PATCH 21/21] changed default text and error still exists if OPENAI key not found at start, but traces back to ta source --- app/app.py | 5 ++--- app/patch.py | 44 +++++++++++++++++++++++--------------------- pyproject.toml | 4 +--- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/app/app.py b/app/app.py index 3956de7..0107536 100644 --- a/app/app.py +++ b/app/app.py @@ -132,6 +132,7 @@ def export_txt(strings): else: return gr.update(visible=False) + def switch(source_lang, source_text, target_lang, output_final): if output_final: return ( @@ -314,9 +315,7 @@ def close_btn_hide(output_diff): with gr.Column(scale=4): source_text = gr.Textbox( label="Source Text", - value="How we live is so different from how we ought to live that he who studies " - + "what ought to be done rather than what is done will learn the way to his downfall " - + "rather than to his preservation.", + value="If one advances confidently in the direction of his dreams, and endeavors to live the life which he has imagined, he will meet with a success unexpected in common hours.", lines=12, ) with gr.Tab("Final"): diff --git a/app/patch.py b/app/patch.py index d6af9a7..89fdd43 100644 --- a/app/patch.py +++ b/app/patch.py @@ -15,7 +15,6 @@ # Hide js_mode in UI now, update in plan. JS_MODE = False ENDPOINT = "" -client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) # Add your LLMs here @@ -35,26 +34,29 @@ def model_load( TEMPERATURE = temperature JS_MODE = js_mode - if endpoint == "Groq": - client = openai.OpenAI( - api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), - base_url="https://api.groq.com/openai/v1", - ) - elif endpoint == "TogetherAI": - client = openai.OpenAI( - api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), - base_url="https://api.together.xyz/v1", - ) - elif endpoint == "CUSTOM": - client = openai.OpenAI(api_key=api_key, base_url=base_url) - elif endpoint == "Ollama": - client = openai.OpenAI( - api_key="ollama", base_url="http://localhost:11434/v1" - ) - else: - client = openai.OpenAI( - api_key=api_key if api_key else os.getenv("OPENAI_API_KEY") - ) + match endpoint: + case "OpenAI": + client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY")) + case "Groq": + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("GROQ_API_KEY"), + base_url="https://api.groq.com/openai/v1", + ) + case "TogetherAI": + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("TOGETHER_API_KEY"), + base_url="https://api.together.xyz/v1", + ) + case "CUSTOM": + client = openai.OpenAI(api_key=api_key, base_url=base_url) + case "Ollama": + client = openai.OpenAI( + api_key="ollama", base_url="http://localhost:11434/v1" + ) + case _: + client = openai.OpenAI( + api_key=api_key if api_key else os.getenv("OPENAI_API_KEY") + ) def rate_limit(get_max_per_minute): diff --git a/pyproject.toml b/pyproject.toml index 7629d40..26fb0db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,9 +6,7 @@ authors = ["Andrew Ng "] license = "MIT" readme = "README.md" package-mode = true -packages = [ - { include = "translation_agent", from = "src" }, - ] +packages = [{ include = "translation_agent", from = "src" }] repository = "https://github.com/andrewyng/translation-agent" keywords = ["translation", "agents", "LLM", "machine translation"]