From ba8d0f8e173243c91b6c9efbd99f26ae094ad44f Mon Sep 17 00:00:00 2001 From: liunux4odoo <41217877+liunux4odoo@users.noreply.github.com> Date: Thu, 28 Sep 2023 23:30:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=89=88=EF=BC=9Av0.2.5=20(#1620)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 优化configs (#1474) * remove llm_model_dict * optimize configs * fix get_model_path * 更改一些默认参数,添加千帆的默认配置 * Update server_config.py.example * fix merge conflict for #1474 (#1494) * 修复ChatGPT api_base_url错误;用户可以在model_config在线模型配置中覆盖默认的api_base_url (#1496) * 优化LLM模型列表获取、切换的逻辑: (#1497) 1、更准确的获取未运行的可用模型 2、优化WEBUI模型列表显示与切换的控制逻辑 * 更新migrate.py和init_database.py,加强知识库迁移工具: (#1498) 1. 添加--update-in-db参数,按照数据库信息,从本地文件更新向量库 2. 添加--increament参数,根据本地文件增量更新向量库 3. 添加--prune-db参数,删除本地文件后,自动清理相关的向量库 4. 添加--prune-folder参数,根据数据库信息,清理无用的本地文件 5. 取消--update-info-only参数。数据库中存储了向量库信息,该操作意义不大 6. 添加--kb-name参数,所有操作支持指定操作的知识库,不指定则为所有本地知识库 7. 添加知识库迁移的测试用例 8. 删除milvus_kb_service的save_vector_store方法 * feat: support volc fangzhou * 使火山方舟正常工作,添加错误处理和测试用例 * feat: support volc fangzhou (#1501) * feat: support volc fangzhou --------- Co-authored-by: liunux4odoo <41217877+liunux4odoo@users.noreply.github.com> Co-authored-by: liqiankun.1111 * 第一版初步agent实现 (#1503) * 第一版初步agent实现 * 增加steaming参数 * 修改了weather.py --------- Co-authored-by: zR * 添加configs/prompt_config.py,允许用户自定义prompt模板: (#1504) 1、 默认包含2个模板,分别用于LLM对话,知识库和搜索引擎对话 2、 server/utils.py提供函数get_prompt_template,获取指定的prompt模板内容(支持热加载) 3、 api.py中chat/knowledge_base_chat/search_engine_chat接口支持prompt_name参数 * 增加其它模型的参数适配 * 增加传入矢量名称加载 * 1. 搜索引擎问答支持历史记录; 2. 修复知识库问答历史记录传参错误:用户输入被传入history,问题出在webui中重复获取历史消息,api知识库对话接口并无问题。 * langchain日志开关 * move wrap_done & get_ChatOpenAI from server.chat.utils to server.utils (#1506) * 修复faiss_pool知识库缓存key错误 (#1507) * fix ReadMe anchor link (#1500) * fix : Duplicate variable and function name (#1509) Co-authored-by: Jim * Update README.md * fix #1519: streamlit-chatbox旧版BUG,但新版有兼容问题,先在webui中作处理,并限定chatbox版本 (#1525) close #1519 * 【功能新增】在线 LLM 模型支持阿里云通义千问 (#1534) * feat: add qwen-api * 使Qwen API支持temperature参数;添加测试用例 * 将online-api的sdk列为可选依赖 --------- Co-authored-by: liunux4odoo * 处理序列化至磁盘的逻辑 * remove depends on volcengine * update kb_doc_api: use Form instead of Body when upload file * 将所有httpx请求改为使用Client,提高效率,方便以后设置代理等。 (#1554) 将所有httpx请求改为使用Client,提高效率,方便以后设置代理等。 将本项目相关服务加入无代理列表,避免fastchat的服务器请求错误。(windows下无效) * update QR code * update readme_en,readme,requirements_api,requirements,model_config.py.example:测试baichuan2-7b;更新相关文档 * 新增特性:1.支持vllm推理加速框架;2. 更新支持模型列表 * 更新文件:1. startup,model_config.py.example,serve_config.py.example,FAQ * 1. debug vllm加速框架完毕;2. 修改requirements,requirements_api对vllm的依赖;3.注释掉serve_config中baichuan-7b的device为cpu的配置 * 1. 更新congif中关于vllm后端相关说明;2. 更新requirements,requirements_api; * 增加了仅限GPT4的agent功能,陆续补充,中文版readme已写 (#1611) * Dev (#1613) * 增加了仅限GPT4的agent功能,陆续补充,中文版readme已写 * issue提到的一个bug * 温度最小改成0,但是不应该支持负数 * 修改了最小的温度 * fix: set vllm based on platform to avoid error on windows * fix: langchain warnings for import from root * 修复webui中重建知识库以及对话界面UI错误 (#1615) * 修复bug:webui点重建知识库时,如果存在不支持的文件会导致整个接口错误;migrate中没有导入CHUNK_SIZE * 修复:webui对话界面的expander一直为running状态;简化历史消息获取方法 * 根据官方文档,添加对英文版的bge embedding的指示模板 (#1585) Co-authored-by: zR <2448370773@qq.com> * Dev (#1618) * 增加了仅限GPT4的agent功能,陆续补充,中文版readme已写 * issue提到的一个bug * 温度最小改成0,但是不应该支持负数 * 修改了最小的温度 * 增加了部分Agent支持和修改了启动文件的部分bug * 修改了GPU数量配置文件 * 1 1 * 修复配置文件错误 * 更新readme,稳定测试 * 更改readme 0928 (#1619) * 增加了仅限GPT4的agent功能,陆续补充,中文版readme已写 * issue提到的一个bug * 温度最小改成0,但是不应该支持负数 * 修改了最小的温度 * 增加了部分Agent支持和修改了启动文件的部分bug * 修改了GPU数量配置文件 * 1 1 * 修复配置文件错误 * 更新readme,稳定测试 * 更新readme * fix readme * 处理序列化至磁盘的逻辑 * update version number to v0.2.5 --------- Co-authored-by: qiankunli Co-authored-by: liqiankun.1111 Co-authored-by: zR <2448370773@qq.com> Co-authored-by: glide-the <2533736852@qq.com> Co-authored-by: Water Zheng <1499383852@qq.com> Co-authored-by: Jim Zhang Co-authored-by: Jim Co-authored-by: imClumsyPanda Co-authored-by: Leego Co-authored-by: hzg0601 Co-authored-by: WilliamChen-luckbob <58684828+WilliamChen-luckbob@users.noreply.github.com> --- README.md | 73 +++- README_en.md | 75 +++- chains/llmchain_with_history.py | 15 +- configs/__init__.py | 6 +- configs/basic_config.py.example | 22 ++ configs/kb_config.py.exmaple | 99 +++++ configs/model_config.py.example | 348 ++++++++--------- configs/prompt_config.py.example | 23 ++ configs/server_config.py.example | 76 +++- docs/FAQ.md | 44 ++- ...0\207\252\345\256\232\344\271\211Agent.md" | 80 ++++ img/official_account.png | Bin 0 -> 4268298 bytes img/qr_code_61.jpg | Bin 266772 -> 0 bytes img/qr_code_62.jpg | Bin 224879 -> 0 bytes init_database.py | 94 +++-- requirements.txt | 24 +- requirements_api.txt | 21 +- requirements_webui.txt | 2 +- server/agent/callbacks.py | 109 ++++++ server/agent/custom_template.py | 64 +++ server/agent/google_search.py | 8 + server/agent/math.py | 70 ++++ server/agent/shell.py | 5 + server/agent/tools.py | 40 ++ server/agent/translator.py | 55 +++ server/agent/weather.py | 365 ++++++++++++++++++ server/api.py | 33 +- server/chat/__init__.py | 1 + server/chat/agent_chat.py | 126 ++++++ server/chat/chat.py | 30 +- server/chat/knowledge_base_chat.py | 35 +- server/chat/openai_chat.py | 8 +- server/chat/search_engine_chat.py | 35 +- server/chat/utils.py | 17 +- server/db/base.py | 2 +- server/knowledge_base/kb_api.py | 2 +- server/knowledge_base/kb_cache/base.py | 35 +- server/knowledge_base/kb_cache/faiss_cache.py | 33 +- server/knowledge_base/kb_doc_api.py | 23 +- server/knowledge_base/kb_service/base.py | 4 +- .../kb_service/faiss_kb_service.py | 9 +- .../kb_service/milvus_kb_service.py | 8 +- .../kb_service/pg_kb_service.py | 2 +- server/knowledge_base/migrate.py | 166 ++++---- server/knowledge_base/utils.py | 58 +-- server/llm_api.py | 42 +- server/model_workers/__init__.py | 2 + server/model_workers/base.py | 4 +- server/model_workers/fangzhou.py | 122 ++++++ server/model_workers/minimax.py | 39 +- server/model_workers/qianfan.py | 31 +- server/model_workers/qwen.py | 123 ++++++ server/model_workers/xinghuo.py | 4 +- server/model_workers/zhipu.py | 4 +- server/utils.py | 234 ++++++++++- startup.py | 279 ++++++++----- tests/agent/test_agent_function.py | 40 ++ tests/api/test_kb_api.py | 2 +- tests/api/test_kb_api_request.py | 2 +- tests/api/test_llm_api.py | 17 +- tests/api/test_stream_chat_api.py | 6 +- .../test_different_splitter.py | 2 +- tests/online_api/test_fangzhou.py | 22 ++ tests/online_api/test_qianfan.py | 2 +- tests/online_api/test_qwen.py | 19 + tests/test_migrate.py | 139 +++++++ webui_pages/dialogue/dialogue.py | 111 ++++-- webui_pages/knowledge_base/knowledge_base.py | 9 +- webui_pages/utils.py | 170 +++++--- 69 files changed, 2949 insertions(+), 821 deletions(-) create mode 100644 configs/basic_config.py.example create mode 100644 configs/kb_config.py.exmaple create mode 100644 configs/prompt_config.py.example create mode 100644 "docs/\350\207\252\345\256\232\344\271\211Agent.md" create mode 100644 img/official_account.png delete mode 100644 img/qr_code_61.jpg delete mode 100644 img/qr_code_62.jpg create mode 100644 server/agent/callbacks.py create mode 100644 server/agent/custom_template.py create mode 100644 server/agent/google_search.py create mode 100644 server/agent/math.py create mode 100644 server/agent/shell.py create mode 100644 server/agent/tools.py create mode 100644 server/agent/translator.py create mode 100644 server/agent/weather.py create mode 100644 server/chat/agent_chat.py create mode 100644 server/model_workers/fangzhou.py create mode 100644 server/model_workers/qwen.py create mode 100644 tests/agent/test_agent_function.py create mode 100644 tests/online_api/test_fangzhou.py create mode 100644 tests/online_api/test_qwen.py create mode 100644 tests/test_migrate.py diff --git a/README.md b/README.md index 56c5bc05c..c8e065e83 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,25 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch --- +## 环境最低要求 + +想顺利运行本代码,请按照以下的最低要求进行配置: ++ Python版本: >= 3.8.5, < 3.11 ++ Cuda版本: >= 11.7, 且能顺利安装Python + +如果想要顺利在GPU运行本地模型(int4版本),你至少需要以下的硬件配置: + ++ chatglm2-6b & LLaMA-7B 最低显存要求: 7GB 推荐显卡: RTX 3060, RTX 2060 ++ LLaMA-13B 最低显存要求: 11GB 推荐显卡: RTX 2060 12GB, RTX3060 12GB, RTX3080, RTXA2000 ++ Qwen-14B-Chat 最低显存要求: 13GB 推荐显卡: RTX 3090 ++ LLaMA-30B 最低显存要求: 22GB 推荐显卡:RTX A5000,RTX 3090,RTX 4090,RTX 6000,Tesla V100,RTX Tesla P40 ++ LLaMA-65B 最低显存要求: 40GB 推荐显卡:A100,A40,A6000 + +如果是int8 则显存x1.5 fp16 x2.5的要求 +如:使用fp16 推理Qwen-7B-Chat 模型 则需要使用16GB显存。 + +以上仅为估算,实际情况以nvidia-smi占用为准。 + ## 变更日志 参见 [版本更新日志](https://github.com/imClumsyPanda/langchain-ChatGLM/releases)。 @@ -112,27 +131,29 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch - [WizardLM/WizardCoder-15B-V1.0](https://huggingface.co/WizardLM/WizardCoder-15B-V1.0) - [baichuan-inc/baichuan-7B](https://huggingface.co/baichuan-inc/baichuan-7B) - [internlm/internlm-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) -- [Qwen/Qwen-7B-Chat](https://huggingface.co/Qwen/Qwen-7B-Chat) +- [Qwen/Qwen-7B-Chat/Qwen-14B-Chat](https://huggingface.co/Qwen/) - [HuggingFaceH4/starchat-beta](https://huggingface.co/HuggingFaceH4/starchat-beta) - [FlagAlpha/Llama2-Chinese-13b-Chat](https://huggingface.co/FlagAlpha/Llama2-Chinese-13b-Chat) and others - [BAAI/AquilaChat-7B](https://huggingface.co/BAAI/AquilaChat-7B) - [all models of OpenOrca](https://huggingface.co/Open-Orca) - [Spicyboros](https://huggingface.co/jondurbin/spicyboros-7b-2.2?not-for-all-audiences=true) + [airoboros 2.2](https://huggingface.co/jondurbin/airoboros-l2-13b-2.2) - [VMware's OpenLLaMa OpenInstruct](https://huggingface.co/VMware/open-llama-7b-open-instruct) +- [baichuan2-7b/baichuan2-13b](https://huggingface.co/baichuan-inc) - 任何 [EleutherAI](https://huggingface.co/EleutherAI) 的 pythia 模型,如 [pythia-6.9b](https://huggingface.co/EleutherAI/pythia-6.9b) - 在以上模型基础上训练的任何 [Peft](https://github.com/huggingface/peft) 适配器。为了激活,模型路径中必须有 `peft` 。注意:如果加载多个peft模型,你可以通过在任何模型工作器中设置环境变量 `PEFT_SHARE_BASE_WEIGHTS=true` 来使它们共享基础模型的权重。 以上模型支持列表可能随 [FastChat](https://github.com/lm-sys/FastChat) 更新而持续更新,可参考 [FastChat 已支持模型列表](https://github.com/lm-sys/FastChat/blob/main/docs/model_support.md)。 - 除本地模型外,本项目也支持直接接入 OpenAI API、智谱AI等在线模型,具体设置可参考 `configs/model_configs.py.example` 中的 `llm_model_dict` 的配置信息。 -在线 LLM 模型目前已支持: +在线 LLM 模型目前已支持: + - [ChatGPT](https://api.openai.com) - [智谱AI](http://open.bigmodel.cn) - [MiniMax](https://api.minimax.chat) - [讯飞星火](https://xinghuo.xfyun.cn) - [百度千帆](https://cloud.baidu.com/product/wenxinworkshop?track=dingbutonglan) +- [阿里云通义千问](https://dashscope.aliyun.com/) 项目中默认使用的 LLM 类型为 `THUDM/chatglm2-6b`,如需使用其他 LLM 类型,请在 [configs/model_config.py] 中对 `llm_model_dict` 和 `LLM_MODEL` 进行修改。 @@ -157,9 +178,11 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch - [GanymedeNil/text2vec-large-chinese](https://huggingface.co/GanymedeNil/text2vec-large-chinese) - [nghuyong/ernie-3.0-nano-zh](https://huggingface.co/nghuyong/ernie-3.0-nano-zh) - [nghuyong/ernie-3.0-base-zh](https://huggingface.co/nghuyong/ernie-3.0-base-zh) +- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-base-zh) +- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-large-zh) - [OpenAI/text-embedding-ada-002](https://platform.openai.com/docs/guides/embeddings) -项目中默认使用的 Embedding 类型为 `moka-ai/m3e-base`,如需使用其他 Embedding 类型,请在 [configs/model_config.py] 中对 `embedding_model_dict` 和 `EMBEDDING_MODEL` 进行修改。 +项目中默认使用的 Embedding 类型为 `sensenova/piccolo-base-zh`,如需使用其他 Embedding 类型,请在 [configs/model_config.py] 中对 `embedding_model_dict` 和 `EMBEDDING_MODEL` 进行修改。 --- @@ -187,15 +210,27 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch 关于如何使用自定义分词器和贡献自己的分词器,可以参考[Text Splitter 贡献说明](docs/splitter.md)。 +## Agent生态 +### 基础的Agent +在本版本中,我们实现了一个简单的基于OpenAI的React的Agent模型,目前,经过我们测试,仅有以下两个模型支持: ++ OpenAI GPT4 ++ ChatGLM2-130B + +目前版本的Agent仍然需要对提示词进行大量调试,调试位置 + +### 构建自己的Agent工具 + +详见 [自定义Agent说明](docs/自定义Agent.md) + ## Docker 部署 -🐳 Docker 镜像地址: `registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.3)` +🐳 Docker 镜像地址: `registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.5)` ```shell -docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.3 +docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.5 ``` -- 该版本镜像大小 `35.3GB`,使用 `v0.2.3`,以 `nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04` 为基础镜像 +- 该版本镜像大小 `35.3GB`,使用 `v0.2.5`,以 `nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04` 为基础镜像 - 该版本内置两个 `embedding` 模型:`m3e-large`,`text2vec-bge-large-chinese`,默认启用后者,内置 `chatglm2-6b-32k` - 该版本目标为方便一键部署使用,请确保您已经在Linux发行版上安装了NVIDIA驱动程序 - 请注意,您不需要在主机系统上安装CUDA工具包,但需要安装 `NVIDIA Driver` 以及 `NVIDIA Container Toolkit`,请参考[安装指南](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) @@ -391,8 +426,8 @@ CUDA_VISIBLE_DEVICES=0,1 python startup.py -a - [X] .csv - [ ] .xlsx - [ ] 分词及召回 - - [ ] 接入不同类型 TextSplitter - - [ ] 优化依据中文标点符号设计的 ChineseTextSplitter + - [X] 接入不同类型 TextSplitter + - [X] 优化依据中文标点符号设计的 ChineseTextSplitter - [ ] 重新实现上下文拼接召回 - [ ] 本地网页接入 - [ ] SQL 接入 @@ -400,13 +435,17 @@ CUDA_VISIBLE_DEVICES=0,1 python startup.py -a - [X] 搜索引擎接入 - [X] Bing 搜索 - [X] DuckDuckGo 搜索 - - [ ] Agent 实现 + - [X] Agent 实现 + - [X] 基础React形式的Agent实现,包括调用计算器等 + - [X] Langchain 自带的Agent实现和调用 + - [ ] 更多模型的Agent支持 + - [ ] 更多工具 - [X] LLM 模型接入 - [X] 支持通过调用 [FastChat](https://github.com/lm-sys/fastchat) api 调用 llm - - [ ] 支持 ChatGLM API 等 LLM API 的接入 + - [X] 支持 ChatGLM API 等 LLM API 的接入 - [X] Embedding 模型接入 - [X] 支持调用 HuggingFace 中各开源 Emebdding 模型 - - [ ] 支持 OpenAI Embedding API 等 Embedding API 的接入 + - [X] 支持 OpenAI Embedding API 等 Embedding API 的接入 - [X] 基于 FastAPI 的 API 方式调用 - [X] Web UI - [X] 基于 Streamlit 的 Web UI @@ -417,4 +456,12 @@ CUDA_VISIBLE_DEVICES=0,1 python startup.py -a 二维码 -🎉 langchain-ChatGLM 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。 +🎉 langchain-Chatchat 项目微信交流群,如果你也对本项目感兴趣,欢迎加入群聊参与讨论交流。 + + +## 关注我们 + +图片 +🎉 langchain-Chatchat 项目官方公众号,欢迎扫码关注。 + + diff --git a/README_en.md b/README_en.md index c64d7c95c..c7771ffc4 100644 --- a/README_en.md +++ b/README_en.md @@ -56,6 +56,25 @@ docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/ch --- +## Environment Minimum Requirements + +To run this code smoothly, please configure it according to the following minimum requirements: ++ Python version: >= 3.8.5, < 3.11 ++ Cuda version: >= 11.7, with Python installed. + +If you want to run the native model (int4 version) on the GPU without problems, you need at least the following hardware configuration. + ++ chatglm2-6b & LLaMA-7B Minimum RAM requirement: 7GB Recommended graphics cards: RTX 3060, RTX 2060 ++ LLaMA-13B Minimum graphics memory requirement: 11GB Recommended cards: RTX 2060 12GB, RTX3060 12GB, RTX3080, RTXA2000 ++ Qwen-14B-Chat Minimum memory requirement: 13GB Recommended graphics card: RTX 3090 ++ LLaMA-30B Minimum Memory Requirement: 22GB Recommended Cards: RTX A5000,RTX 3090,RTX 4090,RTX 6000,Tesla V100,RTX Tesla P40 ++ Minimum memory requirement for LLaMA-65B: 40GB Recommended cards: A100,A40,A6000 + +If int8 then memory x1.5 fp16 x2.5 requirement. +For example: using fp16 to reason about the Qwen-7B-Chat model requires 16GB of video memory. + +The above is only an estimate, the actual situation is based on nvidia-smi occupancy. + ## Change Log plese refer to [version change log](https://github.com/imClumsyPanda/langchain-ChatGLM/releases) @@ -105,18 +124,31 @@ The project use [FastChat](https://github.com/lm-sys/FastChat) to provide the AP - [WizardLM/WizardCoder-15B-V1.0](https://huggingface.co/WizardLM/WizardCoder-15B-V1.0) - [baichuan-inc/baichuan-7B](https://huggingface.co/baichuan-inc/baichuan-7B) - [internlm/internlm-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) -- [Qwen/Qwen-7B-Chat](https://huggingface.co/Qwen/Qwen-7B-Chat) +- [Qwen/Qwen-7B-Chat/Qwen-14B-Chat](https://huggingface.co/Qwen/) - [HuggingFaceH4/starchat-beta](https://huggingface.co/HuggingFaceH4/starchat-beta) - [FlagAlpha/Llama2-Chinese-13b-Chat](https://huggingface.co/FlagAlpha/Llama2-Chinese-13b-Chat) and other models of FlagAlpha - [BAAI/AquilaChat-7B](https://huggingface.co/BAAI/AquilaChat-7B) - [all models of OpenOrca](https://huggingface.co/Open-Orca) - [Spicyboros](https://huggingface.co/jondurbin/spicyboros-7b-2.2?not-for-all-audiences=true) + [airoboros 2.2](https://huggingface.co/jondurbin/airoboros-l2-13b-2.2) +- [baichuan2-7b/baichuan2-13b](https://huggingface.co/baichuan-inc) - [VMware's OpenLLaMa OpenInstruct](https://huggingface.co/VMware/open-llama-7b-open-instruct) * Any [EleutherAI](https://huggingface.co/EleutherAI) pythia model such as [pythia-6.9b](https://huggingface.co/EleutherAI/pythia-6.9b)(任何 [EleutherAI](https://huggingface.co/EleutherAI) 的 pythia 模型,如 [pythia-6.9b](https://huggingface.co/EleutherAI/pythia-6.9b)) * Any [Peft](https://github.com/huggingface/peft) adapter trained on top of a model above. To activate, must have `peft` in the model path. Note: If loading multiple peft models, you can have them share the base model weights by setting the environment variable `PEFT_SHARE_BASE_WEIGHTS=true` in any model worker. -Please refer to `llm_model_dict` in `configs.model_configs.py.example` to invoke OpenAI API. + +The above model support list may be updated continuously as [FastChat](https://github.com/lm-sys/FastChat) is updated, see [FastChat Supported Models List](https://github.com/lm-sys/FastChat/blob/main /docs/model_support.md). +In addition to local models, this project also supports direct access to online models such as OpenAI API, Wisdom Spectrum AI, etc. For specific settings, please refer to the configuration information of `llm_model_dict` in `configs/model_configs.py.example`. +Online LLM models are currently supported: + +- [ChatGPT](https://api.openai.com) +- [Smart Spectrum AI](http://open.bigmodel.cn) +- [MiniMax](https://api.minimax.chat) +- [Xunfei Starfire](https://xinghuo.xfyun.cn) +- [Baidu Qianfan](https://cloud.baidu.com/product/wenxinworkshop?track=dingbutonglan) +- [Aliyun Tongyi Qianqian](https://dashscope.aliyun.com/) + +The default LLM type used in the project is `THUDM/chatglm2-6b`, if you need to use other LLM types, please modify `llm_model_dict` and `LLM_MODEL` in [configs/model_config.py]. ### Supported Embedding models @@ -129,6 +161,8 @@ Following models are tested by developers with Embedding class of [HuggingFace]( - [BAAI/bge-base-zh](https://huggingface.co/BAAI/bge-base-zh) - [BAAI/bge-large-zh](https://huggingface.co/BAAI/bge-large-zh) - [BAAI/bge-large-zh-noinstruct](https://huggingface.co/BAAI/bge-large-zh-noinstruct) +- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-base-zh) +- [sensenova/piccolo-large-zh](https://huggingface.co/sensenova/piccolo-large-zh) - [shibing624/text2vec-base-chinese-sentence](https://huggingface.co/shibing624/text2vec-base-chinese-sentence) - [shibing624/text2vec-base-chinese-paraphrase](https://huggingface.co/shibing624/text2vec-base-chinese-paraphrase) - [shibing624/text2vec-base-multilingual](https://huggingface.co/shibing624/text2vec-base-multilingual) @@ -137,16 +171,24 @@ Following models are tested by developers with Embedding class of [HuggingFace]( - [GanymedeNil/text2vec-large-chinese](https://huggingface.co/GanymedeNil/text2vec-large-chinese) - [nghuyong/ernie-3.0-nano-zh](https://huggingface.co/nghuyong/ernie-3.0-nano-zh) - [nghuyong/ernie-3.0-base-zh](https://huggingface.co/nghuyong/ernie-3.0-base-zh) +- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-base-zh) +- [sensenova/piccolo-base-zh](https://huggingface.co/sensenova/piccolo-large-zh) - [OpenAI/text-embedding-ada-002](https://platform.openai.com/docs/guides/embeddings) +The default Embedding type used in the project is `sensenova/piccolo-base-zh`, if you want to use other Embedding types, please modify `embedding_model_dict` and `embedding_model_dict` and `embedding_model_dict` in [configs/model_config.py]. MODEL` in [configs/model_config.py]. + +### Build your own Agent tool! + +See [Custom Agent Instructions](docs/自定义Agent.md) for details. + --- ## Docker Deployment -🐳 Docker image path: `registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0)` +🐳 Docker image path: `registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.5)` ```shell -docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0 +docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.5 ``` - The image size of this version is `33.9GB`, using `v0.2.0`, with `nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04` as the base image @@ -328,9 +370,9 @@ Please refer to [FAQ](docs/FAQ.md) - [ ] Structured documents - [X] .csv - [ ] .xlsx - - [ ] TextSplitter and Retriever - - [x] multiple TextSplitter - - [x] ChineseTextSplitter + - [] TextSplitter and Retriever + - [X] multiple TextSplitter + - [X] ChineseTextSplitter - [ ] Reconstructed Context Retriever - [ ] Webpage - [ ] SQL @@ -338,7 +380,11 @@ Please refer to [FAQ](docs/FAQ.md) - [X] Search Engines - [X] Bing - [X] DuckDuckGo - - [ ] Agent + - [X] Agent + - [X] Agent implementation in the form of basic React, including calls to calculators, etc. + - [X] Langchain's own Agent implementation and calls + - [ ] More Agent support for models + - [ ] More tools - [X] LLM Models - [X] [FastChat](https://github.com/lm-sys/fastchat) -based LLM Models - [ ] Mutiply Remote LLM API @@ -348,3 +394,16 @@ Please refer to [FAQ](docs/FAQ.md) - [X] FastAPI-based API - [X] Web UI - [X] Streamlit -based Web UI + +--- + +## Wechat Group + +QR Code + +🎉 langchain-Chatchat project WeChat exchange group, if you are also interested in this project, welcome to join the group chat to participate in the discussion and exchange. + +## Follow us + +image +🎉 langchain-Chatchat project official public number, welcome to scan the code to follow. \ No newline at end of file diff --git a/chains/llmchain_with_history.py b/chains/llmchain_with_history.py index 3d360422f..9707c00c5 100644 --- a/chains/llmchain_with_history.py +++ b/chains/llmchain_with_history.py @@ -1,19 +1,12 @@ -from langchain.chat_models import ChatOpenAI -from configs.model_config import llm_model_dict, LLM_MODEL -from langchain import LLMChain +from server.utils import get_ChatOpenAI +from configs.model_config import LLM_MODEL, TEMPERATURE +from langchain.chains import LLMChain from langchain.prompts.chat import ( ChatPromptTemplate, HumanMessagePromptTemplate, ) -model = ChatOpenAI( - streaming=True, - verbose=True, - # callbacks=[callback], - openai_api_key=llm_model_dict[LLM_MODEL]["api_key"], - openai_api_base=llm_model_dict[LLM_MODEL]["api_base_url"], - model_name=LLM_MODEL -) +model = get_ChatOpenAI(model_name=LLM_MODEL, temperature=TEMPERATURE) human_prompt = "{input}" diff --git a/configs/__init__.py b/configs/__init__.py index 41169e8ba..412e33dd1 100644 --- a/configs/__init__.py +++ b/configs/__init__.py @@ -1,4 +1,8 @@ +from .basic_config import * from .model_config import * +from .kb_config import * from .server_config import * +from .prompt_config import * -VERSION = "v0.2.4" + +VERSION = "v0.2.5" diff --git a/configs/basic_config.py.example b/configs/basic_config.py.example new file mode 100644 index 000000000..6bd8c8d2e --- /dev/null +++ b/configs/basic_config.py.example @@ -0,0 +1,22 @@ +import logging +import os +import langchain + +# 是否显示详细日志 +log_verbose = False +langchain.verbose = False + + +# 通常情况下不需要更改以下内容 + +# 日志格式 +LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s" +logger = logging.getLogger() +logger.setLevel(logging.INFO) +logging.basicConfig(format=LOG_FORMAT) + + +# 日志存储路径 +LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs") +if not os.path.exists(LOG_PATH): + os.mkdir(LOG_PATH) diff --git a/configs/kb_config.py.exmaple b/configs/kb_config.py.exmaple new file mode 100644 index 000000000..af68a74d4 --- /dev/null +++ b/configs/kb_config.py.exmaple @@ -0,0 +1,99 @@ +import os + + +# 默认向量库类型。可选:faiss, milvus, pg. +DEFAULT_VS_TYPE = "faiss" + +# 缓存向量库数量(针对FAISS) +CACHED_VS_NUM = 1 + +# 知识库中单段文本长度(不适用MarkdownHeaderTextSplitter) +CHUNK_SIZE = 250 + +# 知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter) +OVERLAP_SIZE = 50 + +# 知识库匹配向量数量 +VECTOR_SEARCH_TOP_K = 3 + +# 知识库匹配相关度阈值,取值范围在0-1之间,SCORE越小,相关度越高,取到1相当于不筛选,建议设置在0.5左右 +SCORE_THRESHOLD = 1 + +# 搜索引擎匹配结题数量 +SEARCH_ENGINE_TOP_K = 3 + + +# Bing 搜索必备变量 +# 使用 Bing 搜索需要使用 Bing Subscription Key,需要在azure port中申请试用bing search +# 具体申请方式请见 +# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/create-bing-search-service-resource +# 使用python创建bing api 搜索实例详见: +# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/quickstarts/rest/python +BING_SEARCH_URL = "https://api.bing.microsoft.com/v7.0/search" +# 注意不是bing Webmaster Tools的api key, + +# 此外,如果是在服务器上,报Failed to establish a new connection: [Errno 110] Connection timed out +# 是因为服务器加了防火墙,需要联系管理员加白名单,如果公司的服务器的话,就别想了GG +BING_SUBSCRIPTION_KEY = "" + +# 是否开启中文标题加强,以及标题增强的相关配置 +# 通过增加标题判断,判断哪些文本为标题,并在metadata中进行标记; +# 然后将文本与往上一级的标题进行拼合,实现文本信息的增强。 +ZH_TITLE_ENHANCE = False + + +# 通常情况下不需要更改以下内容 + +# 知识库默认存储路径 +KB_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "knowledge_base") +if not os.path.exists(KB_ROOT_PATH): + os.mkdir(KB_ROOT_PATH) + +# 数据库默认存储路径。 +# 如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。 +DB_ROOT_PATH = os.path.join(KB_ROOT_PATH, "info.db") +SQLALCHEMY_DATABASE_URI = f"sqlite:///{DB_ROOT_PATH}" + +# 可选向量库类型及对应配置 +kbs_config = { + "faiss": { + }, + "milvus": { + "host": "127.0.0.1", + "port": "19530", + "user": "", + "password": "", + "secure": False, + }, + "pg": { + "connection_uri": "postgresql://postgres:postgres@127.0.0.1:5432/langchain_chatchat", + } +} + +# TextSplitter配置项,如果你不明白其中的含义,就不要修改。 +text_splitter_dict = { + "ChineseRecursiveTextSplitter": { + "source": "huggingface", ## 选择tiktoken则使用openai的方法 + "tokenizer_name_or_path": "gpt2", + }, + "SpacyTextSplitter": { + "source": "huggingface", + "tokenizer_name_or_path": "", + }, + "RecursiveCharacterTextSplitter": { + "source": "tiktoken", + "tokenizer_name_or_path": "cl100k_base", + }, + "MarkdownHeaderTextSplitter": { + "headers_to_split_on": + [ + ("#", "head1"), + ("##", "head2"), + ("###", "head3"), + ("####", "head4"), + ] + }, +} + +# TEXT_SPLITTER 名称 +TEXT_SPLITTER_NAME = "ChineseRecursiveTextSplitter" diff --git a/configs/model_config.py.example b/configs/model_config.py.example index ad94fca77..f5e846509 100644 --- a/configs/model_config.py.example +++ b/configs/model_config.py.example @@ -1,63 +1,115 @@ import os -import logging -# 日志格式 -LOG_FORMAT = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s" -logger = logging.getLogger() -logger.setLevel(logging.INFO) -logging.basicConfig(format=LOG_FORMAT) -# 是否显示详细日志 -log_verbose = False - - -# 在以下字典中修改属性值,以指定本地embedding模型存储位置 -# 如将 "text2vec": "GanymedeNil/text2vec-large-chinese" 修改为 "text2vec": "User/Downloads/text2vec-large-chinese" -# 此处请写绝对路径 -embedding_model_dict = { - "ernie-tiny": "nghuyong/ernie-3.0-nano-zh", - "ernie-base": "nghuyong/ernie-3.0-base-zh", - "text2vec-base": "shibing624/text2vec-base-chinese", - "text2vec": "GanymedeNil/text2vec-large-chinese", - "text2vec-paraphrase": "shibing624/text2vec-base-chinese-paraphrase", - "text2vec-sentence": "shibing624/text2vec-base-chinese-sentence", - "text2vec-multilingual": "shibing624/text2vec-base-multilingual", - "text2vec-bge-large-chinese": "shibing624/text2vec-bge-large-chinese", - "m3e-small": "moka-ai/m3e-small", - "m3e-base": "moka-ai/m3e-base", - "m3e-large": "moka-ai/m3e-large", - "bge-small-zh": "BAAI/bge-small-zh", - "bge-base-zh": "BAAI/bge-base-zh", - "bge-large-zh": "BAAI/bge-large-zh", - "bge-large-zh-noinstruct": "BAAI/bge-large-zh-noinstruct", - "piccolo-base-zh": "sensenova/piccolo-base-zh", - "piccolo-large-zh": "sensenova/piccolo-large-zh", - "text-embedding-ada-002": os.environ.get("OPENAI_API_KEY") + + +# 可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。 +# 每个模型可以是一个单独的目录,也可以是某个目录下的二级子目录 +MODEL_ROOT_PATH = "" + +# 在以下字典中修改属性值,以指定本地embedding模型存储位置。支持3种设置方法: +# 1、将对应的值修改为模型绝对路径 +# 2、不修改此处的值(以 text2vec 为例): +# 2.1 如果{MODEL_ROOT_PATH}下存在如下任一子目录: +# - text2vec +# - GanymedeNil/text2vec-large-chinese +# - text2vec-large-chinese +# 2.2 如果以上本地路径不存在,则使用huggingface模型 +MODEL_PATH = { + "embed_model": { + "ernie-tiny": "nghuyong/ernie-3.0-nano-zh", + "ernie-base": "nghuyong/ernie-3.0-base-zh", + "text2vec-base": "shibing624/text2vec-base-chinese", + "text2vec": "GanymedeNil/text2vec-large-chinese", + "text2vec-paraphrase": "shibing624/text2vec-base-chinese-paraphrase", + "text2vec-sentence": "shibing624/text2vec-base-chinese-sentence", + "text2vec-multilingual": "shibing624/text2vec-base-multilingual", + "text2vec-bge-large-chinese": "shibing624/text2vec-bge-large-chinese", + "m3e-small": "moka-ai/m3e-small", + "m3e-base": "moka-ai/m3e-base", + "m3e-large": "moka-ai/m3e-large", + "bge-small-zh": "BAAI/bge-small-zh", + "bge-base-zh": "BAAI/bge-base-zh", + "bge-large-zh": "BAAI/bge-large-zh", + "bge-large-zh-noinstruct": "BAAI/bge-large-zh-noinstruct", + "piccolo-base-zh": "sensenova/piccolo-base-zh", + "piccolo-large-zh": "sensenova/piccolo-large-zh", + "text-embedding-ada-002": "your OPENAI_API_KEY", + }, + # TODO: add all supported llm models + "llm_model": { + # 以下部分模型并未完全测试,仅根据fastchat和vllm模型的模型列表推定支持 + "chatglm-6b": "THUDM/chatglm-6b", + "chatglm2-6b": "THUDM/chatglm2-6b", + "chatglm2-6b-int4": "THUDM/chatglm2-6b-int4", + "chatglm2-6b-32k": "THUDM/chatglm2-6b-32k", + + "baichuan2-13b": "baichuan-inc/Baichuan-13B-Chat", + "baichuan2-7b":"baichuan-inc/Baichuan2-7B-Chat", + + "baichuan-7b": "baichuan-inc/Baichuan-7B", + "baichuan-13b": "baichuan-inc/Baichuan-13B", + 'baichuan-13b-chat':'baichuan-inc/Baichuan-13B-Chat', + + "aquila-7b":"BAAI/Aquila-7B", + "aquilachat-7b":"BAAI/AquilaChat-7B", + + "internlm-7b":"internlm/internlm-7b", + "internlm-chat-7b":"internlm/internlm-chat-7b", + + "falcon-7b":"tiiuae/falcon-7b", + "falcon-40b":"tiiuae/falcon-40b", + "falcon-rw-7b":"tiiuae/falcon-rw-7b", + + "gpt2":"gpt2", + "gpt2-xl":"gpt2-xl", + + "gpt-j-6b":"EleutherAI/gpt-j-6b", + "gpt4all-j":"nomic-ai/gpt4all-j", + "gpt-neox-20b":"EleutherAI/gpt-neox-20b", + "pythia-12b":"EleutherAI/pythia-12b", + "oasst-sft-4-pythia-12b-epoch-3.5":"OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5", + "dolly-v2-12b":"databricks/dolly-v2-12b", + "stablelm-tuned-alpha-7b":"stabilityai/stablelm-tuned-alpha-7b", + + "Llama-2-13b-hf":"meta-llama/Llama-2-13b-hf", + "Llama-2-70b-hf":"meta-llama/Llama-2-70b-hf", + "open_llama_13b":"openlm-research/open_llama_13b", + "vicuna-13b-v1.3":"lmsys/vicuna-13b-v1.3", + "koala":"young-geng/koala", + + "mpt-7b":"mosaicml/mpt-7b", + "mpt-7b-storywriter":"mosaicml/mpt-7b-storywriter", + "mpt-30b":"mosaicml/mpt-30b", + "opt-66b":"facebook/opt-66b", + "opt-iml-max-30b":"facebook/opt-iml-max-30b", + + "Qwen-7B":"Qwen/Qwen-7B", + "Qwen-14B":"Qwen/Qwen-14B", + "Qwen-7B-Chat":"Qwen/Qwen-7B-Chat", + "Qwen-14B-Chat":"Qwen/Qwen-14B-Chat", + }, } # 选用的 Embedding 名称 -EMBEDDING_MODEL = "m3e-base" +EMBEDDING_MODEL = "m3e-base" # 可以尝试最新的嵌入式sota模型:piccolo-large-zh # Embedding 模型运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。 EMBEDDING_DEVICE = "auto" -llm_model_dict = { - "chatglm-6b": { - "local_model_path": "THUDM/chatglm-6b", - "api_base_url": "http://localhost:8888/v1", # "name"修改为fastchat服务中的"api_base_url" - "api_key": "EMPTY" - }, +# LLM 名称 +LLM_MODEL = "chatglm2-6b" - "chatglm2-6b": { - "local_model_path": "THUDM/chatglm2-6b", - "api_base_url": "http://localhost:8888/v1", # URL需要与运行fastchat服务端的server_config.FSCHAT_OPENAI_API一致 - "api_key": "EMPTY" - }, +# LLM 运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。 +LLM_DEVICE = "auto" - "chatglm2-6b-32k": { - "local_model_path": "THUDM/chatglm2-6b-32k", # "THUDM/chatglm2-6b-32k", - "api_base_url": "http://localhost:8888/v1", # "URL需要与运行fastchat服务端的server_config.FSCHAT_OPENAI_API一致 - "api_key": "EMPTY" - }, +# 历史对话轮数 +HISTORY_LEN = 3 +# LLM通用对话参数 +TEMPERATURE = 0.7 +# TOP_P = 0.95 # ChatOpenAI暂不支持该参数 + + +ONLINE_LLM_MODEL = { # 调用chatgpt时如果报出: urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.openai.com', port=443): # Max retries exceeded with url: /v1/chat/completions # 则需要将urllib3版本修改为1.25.11 @@ -75,28 +127,25 @@ llm_model_dict = { # 比如: "openai_proxy": 'http://127.0.0.1:4780' "gpt-3.5-turbo": { "api_base_url": "https://api.openai.com/v1", - "api_key": "", - "openai_proxy": "" + "api_key": "your OPENAI_API_KEY", + "openai_proxy": "your OPENAI_PROXY", }, - # 线上模型。当前支持智谱AI。 - # 如果没有设置有效的local_model_path,则认为是在线模型API。 - # 请在server_config中为每个在线API设置不同的端口 + # 线上模型。请在server_config中为每个在线API设置不同的端口 # 具体注册及api key获取请前往 http://open.bigmodel.cn "zhipu-api": { - "api_base_url": "http://127.0.0.1:8888/v1", "api_key": "", - "provider": "ChatGLMWorker", "version": "chatglm_pro", # 可选包括 "chatglm_lite", "chatglm_std", "chatglm_pro" + "provider": "ChatGLMWorker", }, + # 具体注册及api key获取请前往 https://api.minimax.chat/ "minimax-api": { - "api_base_url": "http://127.0.0.1:8888/v1", "group_id": "", "api_key": "", "is_pro": False, "provider": "MiniMaxWorker", }, + # 具体注册及api key获取请前往 https://xinghuo.xfyun.cn/ "xinghuo-api": { - "api_base_url": "http://127.0.0.1:8888/v1", "APPID": "", "APISecret": "", "api_key": "", @@ -105,140 +154,77 @@ llm_model_dict = { }, # 百度千帆 API,申请方式请参考 https://cloud.baidu.com/doc/WENXINWORKSHOP/s/4lilb2lpf "qianfan-api": { - "version": "ernie-bot", # 当前支持 "ernie-bot" 或 "ernie-bot-turbo", 更多的见文档模型支持列表中千帆部分。 - "version_url": "", # 可以不填写version,直接填写在千帆申请模型发布的API地址 - "api_base_url": "http://127.0.0.1:8888/v1", + "version": "ernie-bot-turbo", # 当前支持 "ernie-bot" 或 "ernie-bot-turbo", 更多的见官方文档。 + "version_url": "", # 也可以不填写version,直接填写在千帆申请模型发布的API地址 "api_key": "", "secret_key": "", "provider": "QianFanWorker", - } -} - -# LLM 名称 -LLM_MODEL = "chatglm2-6b" - -# 历史对话轮数 -HISTORY_LEN = 3 - -# LLM通用对话参数 -TEMPERATURE = 0.7 -# TOP_P = 0.95 # ChatOpenAI暂不支持该参数 - - -# LLM 运行设备。设为"auto"会自动检测,也可手动设定为"cuda","mps","cpu"其中之一。 -LLM_DEVICE = "auto" - -# TextSplitter - -text_splitter_dict = { - "ChineseRecursiveTextSplitter": { - "source": "", - "tokenizer_name_or_path": "", - }, - "SpacyTextSplitter": { - "source": "huggingface", - "tokenizer_name_or_path": "gpt2", }, - "RecursiveCharacterTextSplitter": { - "source": "tiktoken", - "tokenizer_name_or_path": "cl100k_base", - }, - - "MarkdownHeaderTextSplitter": { - "headers_to_split_on": - [ - ("#", "head1"), - ("##", "head2"), - ("###", "head3"), - ("####", "head4"), - ] - }, -} - -# TEXT_SPLITTER 名称 -TEXT_SPLITTER = "ChineseRecursiveTextSplitter" - -# 知识库中单段文本长度(不适用MarkdownHeaderTextSplitter) -CHUNK_SIZE = 250 - -# 知识库中相邻文本重合长度(不适用MarkdownHeaderTextSplitter) -OVERLAP_SIZE = 0 - - -# 日志存储路径 -LOG_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logs") -if not os.path.exists(LOG_PATH): - os.mkdir(LOG_PATH) - -# 知识库默认存储路径 -KB_ROOT_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "knowledge_base") -if not os.path.exists(KB_ROOT_PATH): - os.mkdir(KB_ROOT_PATH) -# 数据库默认存储路径。 -# 如果使用sqlite,可以直接修改DB_ROOT_PATH;如果使用其它数据库,请直接修改SQLALCHEMY_DATABASE_URI。 -DB_ROOT_PATH = os.path.join(KB_ROOT_PATH, "info.db") -SQLALCHEMY_DATABASE_URI = f"sqlite:///{DB_ROOT_PATH}" - - -# 可选向量库类型及对应配置 -kbs_config = { - "faiss": { + # 火山方舟 API,文档参考 https://www.volcengine.com/docs/82379 + "fangzhou-api": { + "version": "chatglm-6b-model", # 当前支持 "chatglm-6b-model", 更多的见文档模型支持列表中方舟部分。 + "version_url": "", # 可以不填写version,直接填写在方舟申请模型发布的API地址 + "api_key": "", + "secret_key": "", + "provider": "FangZhouWorker", }, - "milvus": { - "host": "127.0.0.1", - "port": "19530", - "user": "", - "password": "", - "secure": False, + # 阿里云通义千问 API,文档参考 https://help.aliyun.com/zh/dashscope/developer-reference/api-details + "qwen-api": { + "version": "qwen-turbo", # 可选包括 "qwen-turbo", "qwen-plus" + "api_key": "", # 请在阿里云控制台模型服务灵积API-KEY管理页面创建 + "provider": "QwenWorker", }, - "pg": { - "connection_uri": "postgresql://postgres:postgres@127.0.0.1:5432/langchain_chatchat", - } } -# 默认向量库类型。可选:faiss, milvus, pg. -DEFAULT_VS_TYPE = "faiss" - -# 缓存向量库数量 -CACHED_VS_NUM = 1 -# 知识库匹配向量数量 -VECTOR_SEARCH_TOP_K = 3 - -# 知识库匹配相关度阈值,取值范围在0-1之间,SCORE越小,相关度越高,取到1相当于不筛选,建议设置在0.5左右 -SCORE_THRESHOLD = 1 - -# 搜索引擎匹配结题数量 -SEARCH_ENGINE_TOP_K = 3 +# 通常情况下不需要更改以下内容 # nltk 模型存储路径 NLTK_DATA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "nltk_data") -# 基于本地知识问答的提示词模版(使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号 -PROMPT_TEMPLATE = """<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,不允许在答案中添加编造成分,答案请使用中文。 - -<已知信息>{{ context }} - -<问题>{{ question }}""" - -# API 是否开启跨域,默认为False,如果需要开启,请设置为True -# is open cross domain -OPEN_CROSS_DOMAIN = False - -# Bing 搜索必备变量 -# 使用 Bing 搜索需要使用 Bing Subscription Key,需要在azure port中申请试用bing search -# 具体申请方式请见 -# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/create-bing-search-service-resource -# 使用python创建bing api 搜索实例详见: -# https://learn.microsoft.com/en-us/bing/search-apis/bing-web-search/quickstarts/rest/python -BING_SEARCH_URL = "https://api.bing.microsoft.com/v7.0/search" -# 注意不是bing Webmaster Tools的api key, - -# 此外,如果是在服务器上,报Failed to establish a new connection: [Errno 110] Connection timed out -# 是因为服务器加了防火墙,需要联系管理员加白名单,如果公司的服务器的话,就别想了GG -BING_SUBSCRIPTION_KEY = "" -# 是否开启中文标题加强,以及标题增强的相关配置 -# 通过增加标题判断,判断哪些文本为标题,并在metadata中进行标记; -# 然后将文本与往上一级的标题进行拼合,实现文本信息的增强。 -ZH_TITLE_ENHANCE = False +VLLM_MODEL_DICT = { + "aquila-7b":"BAAI/Aquila-7B", + "aquilachat-7b":"BAAI/AquilaChat-7B", + + "baichuan-7b": "baichuan-inc/Baichuan-7B", + "baichuan-13b": "baichuan-inc/Baichuan-13B", + 'baichuan-13b-chat':'baichuan-inc/Baichuan-13B-Chat', + # 注意:bloom系列的tokenizer与model是分离的,因此虽然vllm支持,但与fschat框架不兼容 + # "bloom":"bigscience/bloom", + # "bloomz":"bigscience/bloomz", + # "bloomz-560m":"bigscience/bloomz-560m", + # "bloomz-7b1":"bigscience/bloomz-7b1", + # "bloomz-1b7":"bigscience/bloomz-1b7", + + "internlm-7b":"internlm/internlm-7b", + "internlm-chat-7b":"internlm/internlm-chat-7b", + "falcon-7b":"tiiuae/falcon-7b", + "falcon-40b":"tiiuae/falcon-40b", + "falcon-rw-7b":"tiiuae/falcon-rw-7b", + "gpt2":"gpt2", + "gpt2-xl":"gpt2-xl", + "gpt-j-6b":"EleutherAI/gpt-j-6b", + "gpt4all-j":"nomic-ai/gpt4all-j", + "gpt-neox-20b":"EleutherAI/gpt-neox-20b", + "pythia-12b":"EleutherAI/pythia-12b", + "oasst-sft-4-pythia-12b-epoch-3.5":"OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5", + "dolly-v2-12b":"databricks/dolly-v2-12b", + "stablelm-tuned-alpha-7b":"stabilityai/stablelm-tuned-alpha-7b", + "Llama-2-13b-hf":"meta-llama/Llama-2-13b-hf", + "Llama-2-70b-hf":"meta-llama/Llama-2-70b-hf", + "open_llama_13b":"openlm-research/open_llama_13b", + "vicuna-13b-v1.3":"lmsys/vicuna-13b-v1.3", + "koala":"young-geng/koala", + "mpt-7b":"mosaicml/mpt-7b", + "mpt-7b-storywriter":"mosaicml/mpt-7b-storywriter", + "mpt-30b":"mosaicml/mpt-30b", + "opt-66b":"facebook/opt-66b", + "opt-iml-max-30b":"facebook/opt-iml-max-30b", + + "Qwen-7B":"Qwen/Qwen-7B", + "Qwen-14B":"Qwen/Qwen-14B", + "Qwen-7B-Chat":"Qwen/Qwen-7B-Chat", + "Qwen-14B-Chat":"Qwen/Qwen-14B-Chat", + +} \ No newline at end of file diff --git a/configs/prompt_config.py.example b/configs/prompt_config.py.example new file mode 100644 index 000000000..013f946f4 --- /dev/null +++ b/configs/prompt_config.py.example @@ -0,0 +1,23 @@ +# prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号 +# 本配置文件支持热加载,修改prompt模板后无需重启服务。 + + +# LLM对话支持的变量: +# - input: 用户输入内容 + +# 知识库和搜索引擎对话支持的变量: +# - context: 从检索结果拼接的知识文本 +# - question: 用户提出的问题 + + +PROMPT_TEMPLATES = { + # LLM对话模板 + "llm_chat": "{{ input }}", + + # 基于本地知识问答的提示词模 + "knowledge_base_chat": """<指令>根据已知信息,简洁和专业的来回答问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题”,不允许在答案中添加编造成分,答案请使用中文。 + +<已知信息>{{ context }} + +<问题>{{ question }}""", +} diff --git a/configs/server_config.py.example b/configs/server_config.py.example index 51f53dc34..12687878a 100644 --- a/configs/server_config.py.example +++ b/configs/server_config.py.example @@ -1,5 +1,5 @@ -from .model_config import LLM_MODEL, llm_model_dict, LLM_DEVICE -import httpx +import sys +from configs.model_config import LLM_DEVICE # httpx 请求默认超时时间(秒)。如果加载模型或对话较慢,出现超时错误,可以适当加大该值。 HTTPX_DEFAULT_TIMEOUT = 300.0 @@ -8,8 +8,8 @@ HTTPX_DEFAULT_TIMEOUT = 300.0 # is open cross domain OPEN_CROSS_DOMAIN = False -# 各服务器默认绑定host -DEFAULT_BIND_HOST = "127.0.0.1" +# 各服务器默认绑定host。如改为"0.0.0.0"需要修改下方所有XX_SERVER的host +DEFAULT_BIND_HOST = "0.0.0.0" # webui.py server WEBUI_SERVER = { @@ -26,25 +26,27 @@ API_SERVER = { # fastchat openai_api server FSCHAT_OPENAI_API = { "host": DEFAULT_BIND_HOST, - "port": 8888, # model_config.llm_model_dict中模型配置的api_base_url需要与这里一致。 + "port": 20000, } # fastchat model_worker server -# 这些模型必须是在model_config.llm_model_dict中正确配置的。 +# 这些模型必须是在model_config.MODEL_PATH或ONLINE_MODEL中正确配置的。 # 在启动startup.py时,可用通过`--model-worker --model-name xxxx`指定模型,不指定则为LLM_MODEL FSCHAT_MODEL_WORKERS = { - # 所有模型共用的默认配置,可在模型专项配置或llm_model_dict中进行覆盖。 + # 所有模型共用的默认配置,可在模型专项配置中进行覆盖。 "default": { "host": DEFAULT_BIND_HOST, "port": 20002, "device": LLM_DEVICE, + # False,'vllm',使用的推理加速框架,使用vllm如果出现HuggingFace通信问题,参见doc/FAQ + "infer_turbo": "vllm" if sys.platform.startswith("linux") else False, - # 多卡加载需要配置的参数 - # "gpus": None, # 使用的GPU,以str的格式指定,如"0,1" + # model_worker多卡加载需要配置的参数 + # "gpus": None, # 使用的GPU,以str的格式指定,如"0,1",如失效请使用CUDA_VISIBLE_DEVICES="0,1"等形式指定 # "num_gpus": 1, # 使用GPU的数量 # "max_gpu_memory": "20GiB", # 每个GPU占用的最大显存 - # 以下为非常用参数,可根据需要配置 + # 以下为model_worker非常用参数,可根据需要配置 # "load_8bit": False, # 开启8bit量化 # "cpu_offloading": None, # "gptq_ckpt": None, @@ -60,21 +62,55 @@ FSCHAT_MODEL_WORKERS = { # "stream_interval": 2, # "no_register": False, # "embed_in_truncate": False, + + # 以下为vllm_woker配置参数,注意使用vllm必须有gpu,仅在Linux测试通过 + + # tokenizer = model_path # 如果tokenizer与model_path不一致在此处添加 + # 'tokenizer_mode':'auto', + # 'trust_remote_code':True, + # 'download_dir':None, + # 'load_format':'auto', + # 'dtype':'auto', + # 'seed':0, + # 'worker_use_ray':False, + # 'pipeline_parallel_size':1, + # 'tensor_parallel_size':1, + # 'block_size':16, + # 'swap_space':4 , # GiB + # 'gpu_memory_utilization':0.90, + # 'max_num_batched_tokens':2560, + # 'max_num_seqs':256, + # 'disable_log_stats':False, + # 'conv_template':None, + # 'limit_worker_concurrency':5, + # 'no_register':False, + # 'num_gpus': 1 + # 'engine_use_ray': False, + # 'disable_log_requests': False + }, - "baichuan-7b": { # 使用default中的IP和端口 - "device": "cpu", - }, - "zhipu-api": { # 请为每个在线API设置不同的端口 - "port": 20003, + # 可以如下示例方式更改默认配置 + # "baichuan-7b": { # 使用default中的IP和端口 + # "device": "cpu", + # }, + + "zhipu-api": { # 请为每个要运行的在线API设置不同的端口 + "port": 21001, }, - "minimax-api": { # 请为每个在线API设置不同的端口 - "port": 20004, + "minimax-api": { + "port": 21002, }, - "xinghuo-api": { # 请为每个在线API设置不同的端口 - "port": 20005, + "xinghuo-api": { + "port": 21003, }, "qianfan-api": { - "port": 20006, + "port": 21004, + }, + "fangzhou-api": { + "port": 21005, + }, + "qwen-api": { + "port": 21006, }, } diff --git a/docs/FAQ.md b/docs/FAQ.md index 490eb25ca..ad6683b11 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -107,7 +107,7 @@ embedding_model_dict = { Q9: 执行 `python cli_demo.py`过程中,显卡内存爆了,提示 "OutOfMemoryError: CUDA out of memory" -A9: 将 `VECTOR_SEARCH_TOP_K` 和 `LLM_HISTORY_LEN` 的值调低,比如 `VECTOR_SEARCH_TOP_K = 5` 和 `LLM_HISTORY_LEN = 2`,这样由 `query` 和 `context` 拼接得到的 `prompt` 会变短,会减少内存的占用。或者打开量化,请在 [configs/model_config.py](../configs/model_config.py) 文件中,对`LOAD_IN_8BIT`参数进行修改 +A9: 将 `VECTOR_SEARCH_TOP_K` 和 `LLM_HISTORY_LEN` 的值调低,比如 `VECTOR_SEARCH_TOP_K = 5` 和 `LLM_HISTORY_LEN = 2`,这样由 `query` 和 `context` 拼接得到的 `prompt` 会变短,会减少内存的占用。或者打开量化,请在 [configs/model_config.py](../configs/model_config.py) 文件中,对 `LOAD_IN_8BIT`参数进行修改 --- @@ -171,7 +171,6 @@ Q14: 修改配置中路径后,加载 text2vec-large-chinese 依然提示 `WARN A14: 尝试更换 embedding,如 text2vec-base-chinese,请在 [configs/model_config.py](../configs/model_config.py) 文件中,修改 `text2vec-base`参数为本地路径,绝对路径或者相对路径均可 - --- Q15: 使用pg向量库建表报错 @@ -182,4 +181,43 @@ A15: 需要手动安装对应的vector扩展(连接pg执行 CREATE EXTENSION IF Q16: pymilvus 连接超时 -A16.pymilvus版本需要匹配和milvus对应否则会超时参考pymilvus==2.1.3 \ No newline at end of file +A16.pymilvus版本需要匹配和milvus对应否则会超时参考pymilvus==2.1.3 + +Q16: 使用vllm推理加速框架时,已经下载了模型但出现HuggingFace通信问题 + +A16: 参照如下代码修改python环境下/site-packages/vllm/model_executor/weight_utils.py文件的prepare_hf_model_weights函数如下对应代码: + +```python + + if not is_local: + # Use file lock to prevent multiple processes from + # downloading the same model weights at the same time. + model_path_temp = os.path.join( + os.getenv("HOME"), + ".cache/huggingface/hub", + "models--" + model_name_or_path.replace("/", "--"), + "snapshots/", + ) + downloaded = False + if os.path.exists(model_path_temp): + temp_last_dir = os.listdir(model_path_temp)[-1] + model_path_temp = os.path.join(model_path_temp, temp_last_dir) + base_pattern = os.path.join(model_path_temp, "pytorch_model*.bin") + files = glob.glob(base_pattern) + if len(files) > 0: + downloaded = True + + if downloaded: + hf_folder = model_path_temp + else: + with get_lock(model_name_or_path, cache_dir): + hf_folder = snapshot_download(model_name_or_path, + allow_patterns=allow_patterns, + cache_dir=cache_dir, + tqdm_class=Disabledtqdm) + else: + hf_folder = model_name_or_path + + + +``` diff --git "a/docs/\350\207\252\345\256\232\344\271\211Agent.md" "b/docs/\350\207\252\345\256\232\344\271\211Agent.md" new file mode 100644 index 000000000..940acf2f1 --- /dev/null +++ "b/docs/\350\207\252\345\256\232\344\271\211Agent.md" @@ -0,0 +1,80 @@ +## 自定义属于自己的Agent +### 1. 创建自己的Agent工具 ++ 开发者在```server/agent```文件中创建一个自己的文件,并将其添加到```tools.py```中。这样就完成了Tools的设定。 + ++ 当您创建了一个```custom_agent.py```文件,其中包含一个```work```函数,那么您需要在```tools.py```中添加如下代码: +```python +from custom_agent import work +Tool.from_function( + func=work, + name="该函数的名字", + description="" + ) +``` ++ 请注意,如果你确定在某一个工程中不会使用到某个工具,可以将其从Tools中移除,降低模型分类错误导致使用错误工具的风险。 + +### 2. 修改 custom_template.py文件 +开发者需要根据自己选择的大模型设定适合该模型的Agent Prompt和自自定义返回格式。 +在我们的代码中,提供了默认的两种方式,一种是适配于GPT和Qwen的提示词: +```python +""" + Answer the following questions as best you can. You have access to the following tools: + + {tools} + Use the following format: + + Question: the input question you must answer + Thought: you should always think about what to do + Action: the action to take, should be one of [{tool_names}] + Action Input: the input to the action + Observation: the result of the action + ... (this Thought/Action/Action Input/Observation can be repeated zero or more times) + Thought: I now know the final answer + Final Answer: the final answer to the original input question + + Begin! + + history: + {history} + + Question: {input} + Thought: {agent_scratchpad} +""" +``` + +另一种是适配于GLM-130B的提示词: +```python +""" +尽可能地回答以下问题。你可以使用以下工具:{tools} +请按照以下格式进行: +Question: 需要你回答的输入问题 +Thought: 你应该总是思考该做什么 +Action: 需要使用的工具,应该是[{tool_names}]中的一个 +Action Input: 传入工具的内容 +Observation: 行动的结果 + ... (这个Thought/Action/Action Input/Observation可以重复N次) +Thought: 我现在知道最后的答案 +Final Answer: 对原始输入问题的最终答案 + +现在开始! + +之前的对话: +{history} + +New question: {input} +Thought: {agent_scratchpad} +""" +``` + +### 3. 局限性 +1. 在我们的实验中,小于70B级别的模型,若不经过微调,很难达到较好的效果。因此,我们建议开发者使用大于70B级别的模型进行微调,以达到更好的效果。 +2. 由于Agent的脆弱性,temperture参数的设置对于模型的效果有很大的影响。我们建议开发者在使用自定义Agent时,对于不同的模型,将其设置成0.1以下,以达到更好的效果。 +3. 即使使用了大于70B级别的模型,开发者也应该在Prompt上进行深度优化,以让模型能成功的选择工具并完成任务。 + + +### 4. 我们已经支持的Agent +我们为开发者编写了三个运用大模型执行的Agent,分别是: +1. 翻译工具,实现对输入的任意语言翻译。 +2. 数学工具,使用LLMMathChain 实现数学计算。 +3. 天气工具,使用自定义的LLMWetherChain实现天气查询,调用和风天气API。 +4. 我们支持Langchain支持的Agent工具,在代码中,我们已经提供了Shell和Google Search两个工具的实现。 \ No newline at end of file diff --git a/img/official_account.png b/img/official_account.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0998b0860e133409565b963c6aac6bd32b897e GIT binary patch literal 4268298 zcmeF42izQ0z5clu5}Ki?U<3=+zXi~X2qMx2sS1e7rAQTs^Z+V&^&*If5`jnu1*Az) zS}usx6cSnjAps!}NHK3g^Gi#AiA0WXtUC?Cx8>^KsrY^_<`No@bWK?{Q|f z-EEamY_puE-xcQnDa?QGyWDce{pWJa{l{|aEw_AO{nYiA?k_AxQ&?`frT^2muz{}fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2=pET@{5+w!G5Z%ibC6;F3fzts`u!PomA_O1+0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*!l5qQ3EK)?E+z;-00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf)Js6$qH5@SSB3NS%`7GeKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2sBFI{EV*yT;{Ms!}~VcIOjtE0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009Uz{}fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tXhMfl2nQ3di=( za6E@V00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafK%iL!J}mF5P&w}iY!+ea zg#ZK~009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5XeFxc~@ZJzs{jg#ZK~009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P(3F2yES?dZ`uy5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0<{o0s+NN}76K4}00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmYZMu; zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2-HGgSS<&0ECe6`0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*!VL|{^r>ZMu;KmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2-HGgUM&Z6ECe6`0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ 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 z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs 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 C9=75D literal 0 HcmV?d00001 diff --git a/img/qr_code_61.jpg b/img/qr_code_61.jpg deleted file mode 100644 index 3d7d163b9972d597c170dd82a10ab2a13efa66ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266772 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

Q?OP=v3{hRAN(Q)hA(y!akxQRh z;1$Y@Xs6y4ij$|0m&+H~Ji(jEmOpKoSA-fH!Tr2M1^^J*4Dl$Dck4+C0q#FXTei*M zm;!Bg`yS73_)<7a`Z2G$vp(;J#fGm#K}HXN&_=v~u6;%uh4&nhhN?VY92s~p=-gMt z9U#kvQ5uP3NydA7!|;#5r4q~mV6q}%0WR2(3cb5jSn;l=E$nraL~kOXin4rDO4#2f<^X%%lJhNn;-iyt;ao>jsGBp8}N8i5|rD3K^1fngEnux4mMPyijq} z%NuQ^vaAX4E~j8T;}bDAfy|;_=pSjbp4)0Gnjrw{K%JchITtbR`K zY8y=GtZgF{9Y~P3ee?p*X0*F=-=}NM6(Zu`zKYWk92W0`7QHu@p;&F>Az%VO zG&NP(k@s{Uoh@5iB*M&DQ}f-@TU+Phi>?Yhnw!KPKSr|mTl>W&CY}j zc2%fck@No8fBDo~zz%l#L(|g9oa)%z_bYQnWPOiyn*sr ziKy%eqa82xnH01d8OCF+OJ0M-k@PiomD*|X!&Abu3_*3Ka8g{&vtN2wdV;% z2|rNn;F~f4i>|FfKAN=_cgvEvcLfbY_VVeBC0+1VdmacGqg(yVx)$(*hc}-+xBU0t z%>MN;R~$dx7xi<*!$U z1@S{_TdkwCe_z-q-jbKU@6e;>h9Mn&8;_G#te?Ox0gE2&L~0|m&QYSRi51iya0Aa@ zy|yRudHEBA(DZ;t&%Nbmg#D4*&NLS6)_)QHAjk*Hk>Wj|g7#w=@w3`=@*u9qVesYN z9M(Weze()QBwXY}} z0W(z@b{_B@07W`VhYb~ub>vfEMXRch7KDO?O9y9h6)N9j)9yaPouWpa{7|y}m!(Fx z%nMUL%Df8qAoV{ai8exvb~Sh}h529zg7@a(zZAvLM`mO_V5 z7dj8cb&Nj!>q%dJn1Wn3Pc0xwP*CVfh@2||3M!0N5A2i#k#!ln-Zeox_tXui)Ty$7 z37LbQehH_a{MHD5SCphm&_X{iVEz)H(_s#`nKO0-E zempkQ=C$ejaKSZQB`A%^vLyF$Id^$)0`{@-<)D)R_(!}2cqJN_r}W}~r#X0uM!#qE z+cav+Yd70}L_0`CbGOmBuR$0Bl{DY`oi^O5(sMtz7Zwn- z%_SSYS)SGC(Vd7E0ukzbnU#KS-9+C!Kc*eP3pPuJErMILK>p3LrNH~>%nG&$y55r= zRuRD#v1W0eFbG>FuSm2WWD2efpDqZeS(GG5Hty2cFxPOt=|y*P>zy@kEs2XA6t+3| z+D)*(bqkg80hf29?5nE^nBF+rHIp7aD0;fZ)8YdCpxXbjHCdFl~`-6X+ur-ThR?i zXZ9l0JUN|n-`a-byLS0~F>#4f5*55ty?=xcRrB`*TzMw|3?BlwFolwn|8ZY(tARNgEMUmXMev z*Ju^s%VFrz1uDSZ2Uhn(9KlkJD`TPOj9~5P-k2EsE8l)g!&rfFRFM8 z7yrnGM{%@KiWm!=W$+z92GKHrfRn^hTC8JWm|@>ZWq};5{X6=4!^JNH%)xQbM|52- z<7eveRKVP4oierl3`)3{MUnIMRjb4wODvtbmXYySAd7s#QVMwPXdSfk zaYV7Rv!$?v!`?j?7d(C*cwF)^CdU5}u@s2KRf3u)Ia@|un?5lrQYg5b?1;|7RoDO< zeztnW{&q;!0BxV&Su?Xsq_*=@fHiH2xx$)aU@o&Nr!Sd^P|Smn4Ze;qNJ zG1wc!e@;8aoXcbmOOs_=JO22MF0aNf+`Q&pnBNlm!k;WTw$SZ;@OAX>Glx}Sg{3?B z9Q8$K-HVAdKi}bW3lFSXPsWm}>eV<|oir14(7$~zPa?+&TZ~meh$L<(!LV-=xuGxn zd8}y%LJSM>-fLIwPPfrgOt_F%%{};z$Sh`ICe^Il3HkKA2&iTzU+@t8cA9? z{^oA%qln*Nj5!(>{gov{cS_~Pt?TM?#U-yrhm+IIC+x&R6jxE(|DuBM!%TsEbhMnn z`?|!*ELq_uIbCVz%f8=s*;iYkm^TuikJZ_p$)Vv-oa-?`PuqgkA`dlLgG$Z_Ye3mC zMTs7f!2f}E0REQJ*3e7%Yfr|nc=s$6j7a^;f|N}>a({fd-eK~3mxcj}8+a4Qm$0FV z==_g2+2mJ>O|Ca8^#*MG#8msx$~RSM*c;42@vbA1t>5xh?+BaMNoU+rP)Jp!Pi+D9 z)Y8a~j~rs8LF6cjZr!~j+@AC7=qVsCTlCw0L#ko8%A5Mm-NF6Q&$xWPEEM+~_T%T< zs_P*7j5S|%_A~`1%gF15eMQ!gGb{UYP1NUmJn!lgt4@ybo{e6vK7sA41-0TRkqUc; z5_r=Ty3_g3W04P=cgR%Okaja%7h&2`D#WQ|CDmnl|Z zIrTtss8A*+2^g7 zG)k=2g0j|dfnv{jYBKL9&#fehTSGE*4nmE}nX*D(WHa z11Do9Y9U`}Lv>sW#J04*AYYOr{&4^U^SHvsvlXJB#H8r^-Sbf!>*T~5DDLk)95?FH zS5#p0ntxQ(uC9jsImy-(`;)u;@yE!RD9kfZ-$60zlG=fNtFax%!$e7JR^BQV&N_f zT$|9YInZqY=e+N!R4ow@@OpOL;z@N?(%G{1gb!q;+A`&OEb!@cJM1WFVlY{|TQ2xK zAkRqN+g}lu@U}G1`8soQui}o6x-Hs7nfrCG^)rn$vB%)EbfkQOkdVi`Hz|GjCax5> z=vFW?ar#{IyaKPiS<^YKK3UcH)X}c135{8M?d597rYmlJ+{XP}$PBhjw~Z(s`3+M> zXtu>i8jH`r4W4NV-AO7IIH_q;tzSsk`lVUy(3ix96VV^&s=rGc{?Lnn#3CsB!T@JE z&LM;wO{yMSrJ0{$`A(?%lvwAC9C%uww(q-p(#c!fYma1l7$&i+q7GKRxOv;3@MNl} z`W^bY?bqxeq zuDo~SQgL-5SWxL>RRz|a&Ol?D7-X!LT zQm$3;pN2fNS_!8w*jjxmBo27tCK!HKE|?QT&u1=q4@Upi>;@mR8qm- z?&t*O;4EeIew#jREin*#zu<^&ZE|n-t+}^YGom7`_Qdpyl0C6Q``)V3a4cmY_;!N1 z%sRmK4L2IRW1HxRyw7W>E}C7d+Vksq&?|>AN9+|c&nra<;i@y}Tk&r`-y zg-j_j?)aaY*b7KYgWN#4Dcb`+*n3C78~2vbR;y*cwN}dAUv^>Vt;CGx7+Xn6P_VLQ z_Al!`h%{pRVX?_2VT6q4ulIjG*Vp~ROHQSB&%H4(M`@_aF@ZWh6{Q$BQqb_oe*OI* zI|CUpJrIw~f5{ol+}q(33`%=aol4{=Wag z&Zx*tx&3V@8M`(~;J*CLMO~B6a<$3WC25-QiTa!Uum3uKsOgMnAVR=}!w{cOGyXUBdN7~=o^#r^mD|BXu=EE>Mx#uug8 zjhUf*bb1zrIobg5m8QKAH4j^XPbN)V4Zi`>qEejwfwH%I20PS^98BD{l1AEnI!F^u z|58fmcJu#5QGiA)EwU-(4ru;nu>n&S2!vveK|Kw@wg?PXDj7sz@j&cMhBQktRQZeA zRBfHAWN)1Y7%|_}60E0+Yy&TAwmyMjGk_74eU8Y8fdzgWP`|5P5E=4 zXz=3R$QO$6P21P1;Ma5aZ4yekL z*2C698qvJhSu5-dtR&11R*3r3_xGv{2PJex9x3V!FkYp5Z;4Aw6U|JK?HGA6I7Nm} z#e$oi19Zi)!1+xWy#`7xM}ooGh0J}DVg96+MP1o?03=LXMK=Scy&gaVV(*PXn-E1i6( zx~_gfHD^qy)*GDCRKvpaOm0qDxUWPjVI*L}FMdikQrf-3`8ZQtWL+~$Ra*OIe&&fx z=i$BJoE_r9(mn1=0g)+4cwh2X4E?RfF)~E+Jp|ag=;XpsH;&GJZpMZNOCAI7{wyJ^ zu>fA@Cf-4jJpIdl?rSwMSZD&>GMWOl23?Ajqp!u^d{N;2;()KOr{~Q_)%0hlw%^iQ zzrZz^w3-Bi9T}T(&4ENsq{tRwG{yH|ZexBOD@uF(;*MeTw+Ou_LVNl#)OpZoJN_6_ zf2`6fYcsAgT%)aa`l;O0hHmV6q@6%_0S6e$p0sI3!6*~r6x82Zb2->hmG|p&w_RCX zpUrR;S7FjHabM!~+p=Iy)V?TwRzCI5 z>O^3jpNl{Zk85OPp*bi%m_|yBv0gLXvZOBC-OB?vWyPJ z9a2p9xWw9zE z69fd00)IUh6#js&^)7WyH<}}i?{~E?)M|^IvS(?*xY`G>598LuT&wxe=rM4(A;OIB zlxuwy08-T7^Ak9hz7MjkXObc^6nv?3QtZ!*k$Yo0)<;1{thcX7mwd9}n#l1qQ{lk0 zpB~%lmsOb<<^$G!wjS#|^A1C$6+L40FHCdKFV7ucViS4JN$TcLfLA_X$B&VTKquz@ z?cb)2R5#fgY1`9*pjw9yqP{791yY!_$ZoCTD=E5-_t#A2kH!j%rlqCVZ+zpS(1(Fk z2AU(%1r8bcBRoMz=HLPr-c4pEg8j)GZpo^d#0dfyap+Ddx}`wN*O-5a7MCAXNO8Wb zYJ7Uj`o$L(iM%+)2Tvz|^t-`ny2PSo5MXgY@E&{H`6al<_wcR%gp(LYNmruuA&+rS z8UM7o4nqK|ZrqC;2SOo$7|9;te|_gZcBHe7GPE}GYsJUS6Q}fN_@qq7H>bG3H(4>BvM+=5Hw=KOQ(~|O)HHg;s2UcxZr#80c(B{?#zqtum!4!3_goU< zCT=Oj*gRtbJT+m=H!LBxCoBdKWG{_jKxD{J`R7l+8ZJnPM}OD*6WTWMaTnCeCNj^R zRFGC(zsxDc_>frI?dTEfc5zCD#64}Bp!S~M!s_M4-W$r#BShES5~chO#hSqQ`plJh zcn^Nd6{u++#+yTxt<5UtHMeCIP0gBZ>!5Dn!K@kER%l){L*4tz%gY=3$c?xT`czim zgV@(+iKRUNjd(VJ_N~Et71*7uSxVc^_+qSAXiD;7m(}FTHmbwEn-6rYqnEJ#-83V% zb7VKREWYuF6El(X3^wJ93qSCzU9kE{O!r=u-6wE@SL=H%A{}~F1eCTWYSRt7)1Kr`6Ga10CWAo*kZ_015ZP)6`lJJf>H4Edox8>9_>MKqQEH= z*nHF^>?+0w4LWJDppzB^?EoQE^;}Q`n2|z;!+TCfy)&mg;>km{N6K`?NW@6{l^zX?Lq1zHN?%(*Br@-Zs zIM2cDz-@&Zv{<+nEd7G7f*Avy>iW+6(33q8124mTJrqz4&=7aX@k_tp8L$c>9-M@(TPhPTzi=!FhV$@0N6t%S0$QZGPSayZaGglYSs4&3yydTs!HnSHi8TDx;ru`X|s;r>IivO0ck*;1}|S+ZflT0vx!5m=^s zxP6u|BGTxcEX1<7(;yMu)_+2NXMC#v0I3qsGMXFco2eOh}?(>+c?bd(c+9RGXRl z`6{*@b?>CSl*oS=v*pB^v!01#_+GZPmqq$oe znf)~K%{z!3)!zg?xI_cCX)AzXW3WgwN!kzNNx~xr=|Z9oBP{_zJ}-x_+;APFNqIec z{HFI*>ZN4<@T!(=<2v$uVk^dA?)X6Upx7S+c7!n|LH~_eki*)iCpWAToY>?Js{MKn z82ZzJ{LsV{sY2Lo8Uq**!+y@#*Z;Ov8!Qnvcf$(hKl zx;Tt5=R-7ET=H!pgRpc$K8czHak+oux|6>kn2~%VJNM^L>c$;z6ju_b(f+ev8w#*z z>Hb>|auqkU*1i&M#mQ+9pLG!&EUfY|YbcAZpAZnco^pA(szhwPEGFWH&}cQX-Ipx` zHR&2EJZF)C5QE9Ly@QL2)qSN;;;cLCVz=>Lw+;&oG5l~l=CV%0x7sa~!$i`5Xgq7` z@vH;!Ep6QLuvQ;Seivpk;LYyjSiJwYXuvwQ0RpLnx8R9Mt7nhmVU<8EVon^w4zZaN zoO}!p9h(KBdXmS|F7l*?kd48J)u@~l?X8=_9SQN}{pnK2AB@Uy$6fKfMWnZb5cm;v z4|+m?B{!ZeH4`dc7f8^Ih0p3!MF)-?qkW?OJj?e7%jiV5(SQT!;=F87zJZa7GzgcW zuO-0eOT={Z9@1-Vj$IgfgE+m;B3~N)^y>qO8%!ivL(~jtr=dq7Y(mF2Qg%4}-Z=Fo z=x(-vAbz?_z%PZ_sqjjbA|E@4eRJXLR*f=^F9H1-lo&Iib76N@ODaIT8_BiFIpT$5 z?bB^Ba%wgPp=->mxeXUm$!C>(^YZlOsdFEz{&^thn&tE&^@xAPJL66)sS>fm(gXVo zHCSpItvr~+&KfNoOGC(`sd4dnfr-4x*ZtgU`G~X%BG?WBQwW$X-BSBM^Prl+l9L{} zH}X@YAjo#DjUPpdz0HX|i9chv<6~t-xVD-Euhg})%gUFlIx-GL(@lx=@f9rmi}WoY z*^x!jfOlb-uhNx=uJ(stXxy0}A9rXJaEwb7DWDI?T;*O7b!@bbm@? zZ6~U%X$$wEx51Np>*T(}U~9H`LVy5&^~{|mSUHeD2ayeR`4$sf1}zLQs;2im9@=h# z$m*kt4svyL`)Q4kx-nlf`Zwtp+Awr80v-c65fc$1#&r-S@(@6oplX=)kjKF4XxOoe z`R3)5hKU8zT^aR<@>_4#Bp>;d8oEKD)c{+wnWWtY?IsOMPT}&Lm-RkM_=K4%U7TBy z!;c&1oLY_NK8UAT>{aXMYa-vYr@H}v6!IAa*)ioVt({Tfd~eF#8q{w>a%0KVR84Fy zh@D3t6X*{3k?q=Nb%Ni!ecN@nML6{dgM8cqpe3vOH+}D>G59an3jx;~fk?rpSw4)V ziNajKNgh|^If>cMO6pO6vs8LnxvD0{L-0jlhdecgi|1+*xIf^mT~~p9I36TwpMBO6 zvaN+$om*b*JlOB4GVQcBa!gO!zg>?k`9!F${sb5eCGfQ7!6hz0o8%*1y19??TeyBr zcwLy7t5}-5^ZUd7-B(egBOjfZ;oujo!QRrxcwiE~g*$T|BfD8pbAd|Ly(jVK%A;Xc z`WczMX+!EJC>eMA*~NDN zXuWJ{SyJ4U!?NtbSKz1w579w^nL<2AdhH%a`+txD^bKGFKJc)cNo*uYV%Z-y5kNLS zDE%-3ivt7?)Kv5;ZX9eD=H&^q?M6 zFc#sAfs;o76F_uxp$*+70RV8+;SnS3yG{6>0_zDO+W=r_#+iWFYyJS;CT2t1l( zFte0;;H)DT0h}7yyooCO|M#IwhK>2bGw%gpEuoxn-#ir&0OV$0<4X=j0!GTBM;9Y5 zoN?#c#Cld^l2CCd@c)3A&_~OwaV~`HNWIlp zCF=l9h~3P~$_fsE@wN=#Lho8@CJMEbvSuc?woO;zb)MW??bHLMnS0+V*QDy2-{xT? zOgYyz;BtI_a&PSTw2EBZos;b0Pe7{Wa=Rso%i~~oe8y1UU{`rqVc?qgDTu@1Dp(@C zG^nWwvjq0@^wa;xL@qNm3PM#3Cg)IOHBy`fuc_a2(G>~(mg z#ebqU6aR_VL})%Q2@h3Tnrt<5-|o+X?uF;FZzF?plAJimeMtuSKCa&D7ubpB@oryV zW$RqXn;tn8Cz(mOM^Sy9)ikp6Zb2pzkT(d+*#U!Lm4Bfo;}m%JDBpz_S!OW@?$izE z?H^rKW<=&EL1A9qfVkn0a7gpx4>P|}G<-|7RT*{$tSlaoGRA(u+{A+|TxA=B?2H_U z6s0e|oIvlnvC9h}J>Ew%X)hO_`iou~JXTYe=@F+A@xE=@Raaed{TiAhg!G}G!o^$K zz)9_{kj`&+X$$()?Sf4f=c5a9jr<4E_n=2>G_aKU!jWNQ2d5ZzqS_9ln}N&=EH*Lv z>Q1NKq|*W7QK?_$nNRbsA9g-oEO%1ge1*nskP@Ex1gxHE5SN#zMK-UrHptRtkz7HB z(T^AUzSDKx+bwG*EgMEv9y%M_j7rOHGLLMe_F%OmJ1`ZLIKW3Re7^}@DG_^TzEs7E z(Vm7YaT=!FWS^@2T32N~on@QdFBidQwc!%AJ@)IWOjtnQ9L4bJg+FizxN9?p?k~~4 z#8M6-`wB2GZ*~V4UJ1^*Z2IO#Xm!F~-A(PCoexZX1dlY2u9jxGV}>jlzl7G+X7 zRy=+R%{$&!=#%2LeaP8b`?^D6rTumHvHMxc8P#mS!5rfCU$n{xNd+f-RlnWkt9GGe zIuIuSQ7njl`LsYa=DQ*qu^8zfyvN>KwHe|cFbw}b-(|5aO}pGO=giMBjCpm`D~iC z7;W&Qg)8{xCDO8?OH&JYirzV|vsUgE`tbpI7~oJhdk@H2U*gHY9XhWd7S3!5LFRP4+KTbZ02+D`B+$jb&X-byxa?rC8h7i5@R>!LY_D!Q=CoTaQ+FYYB6va zt;`vJJYdt9l7pK#kH{PYOFa(Q;!p;JYyoyq0y|3tFD?KzdBNUbH7BtSP&;j73uLPY z!Xp@a7MG2br_R}oIHxqEG0i`QB}`^2W|>RawF%znI2NSAewPl(V;E9cSgZ(%q6lH= zwh=%R=OBvn5bO%Dt*B|(s`v#bMhlr#=}9|3@ySpK_iFY?uuIFS{)dH652arjb@|x2 z|1){J+WTjZ9#41MFyB|z>uEZtnYgAm^!cOzR4U01_6^UEc4B~`>-ewTvNdUUkJsFuEx2}o z6t~96#D%aQG}cwt;jSFzsOJIB=jX+CGnLm!K0THQInL%p%_s~0bh5!M=)1~inX3i*w{IxilwNX^0|A{( z>P#id`j_0jGyZ)r!*cQ?c+-C_WayPtri&b ze&;=JST(o3MYPOd%vw>Mf9%;|QF!znCI`(*E(h5#VBEmOlUVyd0x2nw<-gjW<5_gZ z$VhXPvSGh2j*Ngo@}qzwu!$m?ST#3T)>Ag-xqjk)IyKePB(=QP=xWf%M?HP#34wW!d-U?~1Xod&hX^^|^Rt6fqG(0WX` z_5?HvI8(MW^2KF$JuCJ(3vX54J5$!XcSZe;(mVWB?+XvMTlVix`FM=@%M_yi1JNB$ z{YB-6Fz^U!Q!EhL_4LYW^#=iSHHpIGxXnN7?Dk?6?!DLsR3VVN@&mQRiVL%L+5inVJk3MyYWkd|N>b9>-9ryKgs9L^x^VzkU>BrHEJlF~D46+yp z6p6KiLLc;qE^`3Pyk9tm6~;c+CP$jI{U>8|+&Ftrnog0-C5&5O<;)h-wdMj+kU}YR z?)up7xS3++%xDpoP6TW$>T9qV;Uc(zHS%cyD_k!y@pG`=ZIV6EQ?d81R*{pfjE#X! zutH#v#S~A%^QH%kkLI9s(vw1;1jPv|9O>?4hz{cF_r$psWXD}_og<($s9cx!5(2Z- zH!f1cf}YPh8vRPcT`Mu49(U;sPh@xW%N(+My-YraQRj1nr$OBJ3B-M*)vf==eUDH4 zMP&tYc){u+L3ICkvMuX?IZdJj`Scf6iH%#WgLYlH+*#r^LWsYXKHlY8erkobcr9=8 zE}u&H?L#@Zx_5z3gxdaPz}w~t_JuGj4g9IVAkfs<#=(2mCN<&^#ZPiY0$%>>?}sdT z4v&1S>=iyt+4ue(b&*W}iO4`L2@v%iWfiyCx!S0Kd?uB4v(z?e;@D@9c5Kx^C0hxQ zCP?(`i*FqDtpu=~@Tm2jLHhv3^JM19s+!o&YK!5J>vtnK5}p`5g(0P}**pmPzXo^2^6}eP%32`M2(JA2LpEpw(MW1=#~yY-c$Mha%P^avF~j$i^+$vE0Vdl zEEJ4m#b6YGDYtC}Zv)ZEiAT{ppyvAwj<{0lj-8$7ssYJzX{eBL@3{1_OZI$x{%+Mb ziqR9;0SQew8E4xl18s2FkW(t3P>=wj*ES)y#llkv$7yI|e#pexLitj~No`B?YjH`-cr z*}O!?kBF?RUjzf1>Yt~Yayhs~^3C{xvQQo=aE&JH?_F~gdiVIDf4!Onx->Dw0!lexZzZb!lM;IlT7pAa2R9EtiEoFoJ3 zpG4ieYvc0txEwm=lQ&Xq6A*Cp(z_%N4lz78M0VN#c=^?fN#5JtS9t9k*y~50Q5xVolp1L5LpM4GW7fzi{3ohAbf< z(wtRqq?u+37hcIr%KF`vxqZ*vxkb(v3`{Ptz;8)6{-Q># zfo>jlfx>oS*_+mX3y*+&o(ww&y9|U`=Np-Ac%%+oKGoLW>=dxq;U~IosI>0aXaxe| zl%`e^9lLa&K)1%o1)pFBadKfz4+tnV*vRdz|6VyX?t4T{$2$MMc6H2tl{iav$FS>1 z7Wcn<_GF9g;q|NNCQw9Bf^6R`-!ogET!MM9h&rhr%Q|WRh=tf^HlZb+a4QCxW?G0B z`b`qi&~EX0YS}jZNMG+`^2f%nqMrvTo`WJ4qrOBYuC17+-z&?nXUxn_C}lU%%m6rH^}1y2Z~^)prW^ zIcRh=jea>8h5q)05cH#I1AY20$}S0OkUWK-P8|y(u3YATc#O(e8chhl!w@4ZR8D9J z&LX^3b%*C}1t;}RuAE!m%VpS^=)1HxS^JH^`c>K7(VALKJ)Zd1n80=lLXvqT9FAySX!2F^VNfOfD% zllYqW2nMe$tJSKr%Z0}}fmUhlusC6PQL4vdw}tM0SFWj}G{B9qJ_laJ=|Qde6))>wDrp_$5TA?verZQUTUm;vLUH^ zakBsj6~7D2!!>Aj+z`ZPQ5a4p^h5~WbsyokWt$)!|0+9S%W>qn(p8K^xCb)OAK84N zZg$GPckjCx={GXk9c3Zu&(hvK&YcQ`4gyD@0*mD%QQ#~LqT2)kPp};U=kaM6x`Q=_ zwO<7mal>*dj1L4~_m#fP@)hG0C6(Tx;(bE`UJffiHQczNwKy6em=ONTDrZ_vd`;lj zVZQY)_`+rsLZZH8D&?Yr5ufuf_ejke{j>)f1Km z)4tV*)xz*G0Z6gXKcRy$3xQ#kF*8mBR1jtCYx2xMu>2RR+=Bnj-~zVFjiBt{0&1Pa@m?!Klz5mvH*{=%Mu8V`k4sYSG{Y=^;V1=@;Qw z>3;x$BAN=$pnc@FIz2dAV#NFTcb}aO<%sUkuMZ7*8ahUu^5*9hN8i=*jy*y5pkWy> zV?2$3RRJe7l-;NgE%bR6>>V@~ceV-A$=C*JSV&1u!8FEAe(unPALR}HqetN#03(b8 zi+R&!Z@SV(Q_$3I&(`(YNZ!+);rrV3!>OR{7Wp4;>d!oK;}a_fRVQ>+5apJE$(6?V z0VOnM1w(}v#I|EOPBrRZ%!&@2V5{j~NG_$VR(JChdi7We2wICD332t0PWo43W(9nb zACz=N0uvdN7R+WwvvyFyB@+sySZQI(HNM7)5;+4Q7wxNRj++fj;5t*Kt5i99DbK)? zLa}EGsH-&ExkK9tLD7#G(S6mj#oVwnG|>uTagG0q#U(d6wK>Nz)O(nBGi_MVQ3Q(w zHId3a+dq~5VjQhl8_8U_8-M5S@(mH-T|9sEDw&eK_(9K-w1J z%MnFI2}f=0u?b^yogN0=zBq3jkJc%LukQC=W_BKI-7R{kz#D{0K)G591B+!K(HOA6 zZT}PM{6(F^YI{nOakiaFc_czNOLql`rA^{ls@R38N%XF8JNkmYP)hyQKwpnHmRGlX zSKkj#HxwCFEq^ca^F#U(r|W!Q0xbTMsmN5^opfSMVv-T{rHB_df+u6Gt=$m)vAk*&W2spu-<@m;6Wh{0+=o z$+Bf+ZTJe=(K(&YvyOkBB`Wv5$axVYX@2l+YOz?xE$$mK@P{Wt4BwFmj1^K%qIT^7 zqM}bH-yN=t-1D2PAakI9H6zAckKCWkMTYt*te8F~7N9@r{a_!T2O;#QK=x*c2JnHH zT}USgTR*zBQiS2Hllh=DOp5_dn*mbdH`XSD_ULOd*DR0Q@BZ+*rJL}X(S|^W_I~~> z6bCL5b9n=*m8)SHRRSwOgFF>QVc52PYC>@uhIVOvW00S2*t5p9Z_qN9Q}g}5T6BQ( zX3&HIJi7=pg5}9R3yU!%7TAoejvECM44ZsFdfS?*A#yc&cTeoStNx=eA?Z*8EVY}? zJ7r&6+uLC1Q&n}lQ{e=+S5>dJotB5l7q->ne!U+Rp5MUk2SE`JEkzxJgJN==8(HiY zfr_^i(XU6|3VjYfCV&r@nK_C~f=aPcND2E6D7YH14*-U&3SvCTizox4+ViXwK!aOx zKcvXpJ}+G7(mceEEgv&5*S-h8@#C+!ZbM9~=Gzz?sz7a0onV^7m~Vlew@Pb=vh&-5 z0|UY9W?Ub$Z_zrWsPxzpA9T^ zGd7-pLd0j$Jcy|G+{<8G%Oy=v9QDxiXVUoIdv*nNCf#B~P;&tF(G=U23MycpT#7C2RCF{NlW?)$@w4N- zZ`0`4FSMDco%~HxNw6$?`?)~g_xS3kYe{95;?#;>Z< zhbk6%cLuI!D)_wx<8K59(7|tSP-x`00M)q7xXM_@>g z)q~N)pDh%A@pwv3mO2C%o$Q}sE8XiC>A=JsuR`>8@wOnR>&GUQCQUBaj7yXIOP7NUfg$>mPP#GB-M3a$BjZ|bk z35YV$f7AJhj*|Cf{@kU?!H}qU0{ytq@F2p!1DzOdO)b5<(%x`{phH`q*;F2%!S`$hKq!Ov)~`s9Cq2+i}97kLLUA zW85!y9S0v^p;^I%>4|<@q*<2+B-ko}pR$gc@79{ago!UQ;!? zC)I4q$;9JYO;e~_7(ri%+DRC`huf!%uJC1(NjU(sDHY2Jg~-EgkSF^6%t9X^tkws- zWYBOq)i|G%If30a!pUl;-12Nq?d{Y~Y4Y~W9Jf4!I-=Pq%C(vz)~TCPzc1rx`Hj0V zCk?DZ7;$`k(yylp39Aw2i0RRugto~4P?c0pLTh{!65OSu7=qLhXYxcrNKJ?581l^1k0@a@{zyIC!>j|@5BhLN)yRItU(19R%QBw`<@Ax`5rDok3W~+7P^+C zE*=rqnr*NzojzKT=<6qM?vbP?Ya?k^EM58X6@tm02Jp+se<$t0WF*Pkk@xd~t*ABApYQ_nC(2|8dfM zi^WRX2VWyl)JvaP|ES8GM|Sjp2+|Q7)pL)}uO!lBA`W`L_;n$S>+5*bohiZ`V75L| z&2+~bki69_+y<@6(d-~BKz8X?Se6cjX$D^ZF7mCEZ8H?SxHL&f)GqOtOH}%@YxKm6 zPlw$LsE0(lYQ3K+*%7={?y&BziG2GqR13Jl znBm7K3BdbqU1X;;n6j9z@UWFo$ahr5z+Opv{z`#nfsm{gS&a4cCkc=nsB*4C;3S%U zlW(C0%+FrVGc+@=uimW~G{P&t+U0y_$WiHM=tBn0;jNT=9!C8_@=Zne!=sI(vFpzP zl?x^ugf$=yAOaaGVCK_{xwFA79X*k~Qmo(IYxY)*?i1ex{G-gzU}{?kcG#H;kfq2S zu{HfO8wr@Jp>hH&q5_Ue^D(Y&Z0=xtGbaj{%iPM)jc-?$H`40x9$(5IM6Ny#p2L1I zPXt2-;;3QrdB79&e1e#&kK`7PU9nWE%%2nQtE?Afr=xYdZKnA;Nv<<*L21U!I{TP1 zN2C+0DGYd60mh0$T8hnc`G64?%sUm)O`ZxV;s+A!t1WRBjA1`&qy z`%y~c+kJtWwKk$1Q;XKPedgM}$*Kn*>1blx^T9o`fN?7yv*?NJbxcYb7T{#NE#qxj zz=41cF>ow^_s<2LU8M3v(`w9aSa;UauDF%|>*282WcMlVB+hr>4SINd!Q|?&B3WlC z^f!0Dh5C`1;}xidyM%mMgGa06RSfWq1K<~(Fz!M_Ma;Y&l6RLAd5t6*h~}?#o@MG@ z>TxplE^d=wR;P3nU^PoWr%6tnGyRY?S`kqRE}a2pT?Y9ANIMx5-Lm1Q7>WQDfITN( zBHi(=;yrB#@@-surTL#_S!8Cqn58RxysV4i^9MB3;MJZY8oi`%3W#9nNUad<;HOT0 zc;EIXGSf$sxgY2UeA}2wwzmXJ?Mh@PWz~O;!a7h6+}vjb+>)9O(XBAUQwaYlI_50P zhaQSdweBG$ymk997&!kiQHg#0vhUfG#C@kk?K*m%#VO^KbH`D+;hW(uh9vRdHzKjC zuejFl`f{-hjwkyMPQ$8cUXS)84s)rMNG_%l@Q}V@D~ID)(?rmfYs1jE$O?QmAHXRz z+A?U9#1t?OC-eG*DpmMr^7mOl!`RiRm?T#*GQ@E5oX7%%tAE%Ul z5#%y}5Z|R)cEN7Uh|+Q=J{!s!LTD)H41sQS6`B~rl!vK$B5JsQG^0dOcdWIViJgEq z!&7WS=!$L2QhdQK)cK#Z+3s4||GmameEDW`XBDR15 zdaSJ4`3chfUa|82KmomdADpeWJyfdwB(rjo`x%$ytugvxpn8;PSdN^6Kz0gCD*}|+ zlUd@>*wnxe5inRI@zXD34bN0-F(6&`ZDv$1dHdF}j&{9nF_6FWcgJF8)jWVg?rw;2f$O`S!^ZWR!uj3&tHbBq^`;$mCwo@o z&a~dv`}K;#Dmm4sp1u zwZnPY_30>;Zv)FevR#X7$TD*4O&h4g=4C*|Z?h;P8-zdSte~cg^+r-?4Oq1loyvQc z^84||)Gvj>4M_2WBS0_!E&^7{EZ|eW4!~qtsh1oj>FcjtEqRr=SW8kTQ8U3#!bgMic#Wt&SdL}jZ%i!yy;3?*SNdarYJ^$v+P0i_ zsaCIq(c`=rm+u?aL6a%lo2et?&L>1l4jvA1JNGiq%=D@`w?e9^GHZI5ybQ|@pT6up~wIx;nphXq>^UK{vE31( z{QQgBQ&tpw-*RA|miPI#TP6MEefsz-4-fGkHt*j|^wyA_$*F+Et(qjcM+sFSCj%sT zaq)M)OEMeL2hc$UFl6L%`7df8X@G=m2Z00cU}P7Xeu0>(L#ha4)tzMpPR^C~4m#HM z(cJ27?9_T(D?=30Evl>qt*4iG7ENNgaTs7D8Qhdc%7)$!fIaYBqQIFZXi!+5`wrAh z#9R(;)HP$}zN)?nbts&YE?bu=cq9{$gw)N0Mn)Clf(Tt}vr$#u8~Ccm)xdXUxl4i4 z?6}sA)aS-+d5h=M#a=E?T|7OZaPiFDUkzXC7=(KZDmsIq_ulwPz8%OFdtW4Y*kW#O za3o4UPc^H8fsbEGD$Sg(Z_6p({Tcu0PWxE$RJsAm*3{YNf8a1tu(US6pugY#Ux-rP zrZbB)f?Zjc*;=qN%YeEga>j~2i2q~ch6t-l-`;&xsc)h@?81jzh6AZ8nM0@QPm*yt z_-S%A+k-gKhX`F|c{8}%Kt^i34K}5Z;{$@82IDRcWL#)S(c1CcrR93n^y;NFKLF)$WgMZ%LjDhE|CLVvJ)&cW$3CvV|z1X>&X&~G;= z{{C?N+|iGnZ5r7XRxz6L0ivfc_nC=!K*zF~>w!}^kM0&Bxhuf09}f>=r0!6jgVhRI z+gB`WzKe^q746qT3-S%cOLcVCdr$akNApIWRGbp!Lh_8AE&mgE{C5EIpCDu%T&RmA z+n|Yj#nLU7q*;B`?1Z9pNr5$VWG=Z6%>g4F)Rl3p zdj+h~zbK$ir5`jgh)4E=OUc%IzkrYRysfOum$kL%Uvw+C)qGlB@nJ>fany{f{HI2Y z6;Pk+`pAwH^RXK)yBS;}2UT$(k#6W)}A;GUALY17C(-X+HNUD%vy7C65di@kE z@_9Qugkt<$zgcq>A^k!0Np!#X7Bo6|4H4j`yIr80Wdyu-WcfJgzb#R#_sHt)+UxH9 zOW~hntzw=u0=TK`Yt(;pnIYguDxCnvR1yLHwn?WR-1nY7=WD#j)RI_H{GXo{qarTe zxNAX%StQeh82~eSn-+ah_Xy2R!%OxgTJ+Qp)SJas%8wrOw5I;Sxx8EojTnFH5({rp~ zco<-xa$3bEI*Mlm1U?D&JU)P_)acb>hG8p)E6&D8Ms>{me{8*ZJe2SIH>^~$PFn0t zp;We%>`WzFl6G5~Bq1T$8FQ7gWDOz2RJI}}`+<`-7bDzy!L&|zGGss~G&-33qn^0!``0iT zZAbT5$tP>#cHx3m?m^^v8l61O(@Kg%cEg@@G8pYvLA!FbEUx!++o6=ejITHM?R9>n zJ+BYya>E*5WG~P23&E|nL)1^|c~{&4PZo-CW{YBhE@TH|2;nPYd@@j;8`Pl$Shnd5 zMyR{w%XI*T{oF5iT9NzMMY-607ey$qI}W(sQI!)RGQEim5L!bixMT2RdiQ4g64E)o zBi=j5ybzwV8&FCa)8LO5G+wd;LK@x1QP%eM)-pUi+kk&pe4TC{c-WH`FXcqYaE z6jA7&L5NxPT&U#-HTAXi)xmW&5;iv$R9cbAjpXs)Au$AWja)O>F^kzz!6KqM z#)%Ts2I4;keis@A=ib|ht;n4$YB{b*mNk=1)KqbNE?*)x8K;T;(m}gZkvv+nLo+7X zN&ocCpTu4QEa%^hmS&rSPkx7V2SJb2>tby~PK=`>e1qT7k^;k<&-ahk)z>6R$zNyE z>r2%}j}p#tA;7XnS1l=fCJsiB0sFS>U{$2b1YMdOKG|9DC@q3Qmrb#L1EMEQ@Ym zoihil7gWx1DfBP;o`8YrdGodxJ&f@NHav(R96qt9w80YWa z8xXp9y{0NPd$6Go*{e7J{*~(uZG-$Lt#QhZs$$2ClVg#Y6739y|k!W6wD^&((0B2^8 zxabVWRRm92kDTc_pD}gUzCDoZ&F`Jwi_s}iLJP<-=4zWhea7I1)y6g8hO8lXOUe^Vu#Ap)QKTo`IeKB9?ZuEhOV0#l zvgoU!{2A{mqK~gNij7}Fy|PN;iisbSC4EIYjT(M!$zWz(G8yu*kQ=iSh?Y&Q{(6xy6+Ir9SQ*v1InMqXgflz;5rC_ILCGr;%xhB{T zW53R~c1l&<1nPyKvGj+Q%>*?27I;ckoD1FZ^RUDm_6IH&gr)hEOY5baj0*!wp2ayk zwPh7uZl2-My17Nq3SO?Q_i*$I{bT|HF&ZRyqF`p&F*XW($OoK68EjVkd)jYAjbV^H zHtZpGuH1^^PV0A7-_tVNQ$6%W?L2w^?zYQD*U|MDdXPVPF`AAaL$`L^o;qw-r zCq--%&NIoKH0;$HQvdytzt=A64cY~}^s1hC5HY2;eOZ2(%>>pXWFP@Ajsr#*VN{v; z$fq#YekESq)wW`~(w^#E^0C^ixcH7-Sd>_QnVS9%9(g{_EHJbm2I9C=m@3U?bj?yZJ7h6RD=-EB9zuk<^o4|QFf+p7DZ1U>r{{gF(L(RYnTC6xE9xDMudUkkBn zzo!h$g-rivBn6<+E3$#S{=%liQjLa2-v^N!Rd>Uov&&5gf3JFePkGAG%F0CS&sP2Z z$b^EFL>qLPyy|}JaD?y}&qns(x-sYiM+?+Lpdbn>lAbllxlxR|^1{X~B#m{PSjPD7 zhsqxggnO!7c$yRW#pEWB)OVhx^=cOW45_yp5iH~s0NyHbFIaVcyjnnEi-BTYzbYbZ zL7ZvWoz8Hq2|50y`AkJaMU`=~SjWEl(qoSgsg#gQ_v^izF#5-(4l)lzsHqGT!W4f( zO*;_1nN-{D^WL~qpBPGrRP6ZSjaOHuHJHNsrIngFsSi2?+}r-1;kgHnr7rOqdNnCfU%J%{#1~P27#Mz9YD|q|8KC{eF7@v^&7Or9qIfZ}F*~oufuZ zfooqyMc0Sv%hpa8#H9`Bax=CDTVS^dY}8H7UIR(CPG9~&MOV+pc%<4hg6aJeRyfAip5Ca1@HB`+*F`Xg?kj255dEGZap-Z>uPt9obhO^{uT(v+Km9 z^-)#tr4^9JD~}vtXjF~I-kWO4lCMbws)P;6#VQ^iVx8)J+P{}f7Zc~nN$D(Sgg1?K zhV8(41$hv{5Ca%Zv=8vU4(5dWrFxw#xvWsyP#ede5qR6zB{#~NuwCBd#-mf)ta@q2Mba2d;keU$FmtS_;6;|D6rCnLVh zrlnUad}K-d?(;BlUWp@0mRuKkm>?$byl4BtpT>?fppb7e=)nb=-kx!D3v;U1xcSbX>%qu_$Bp-pt$H*1mQ&af5?iK=-c6ZGRa^f zwlho$$+kBdi!R#TX&!MoAWb=INw;WmtLdrhz84+{LJCy+6)&#& zG4Skt=Y+J!x^nTj%WzRK@oshK9l_WR`STy1KJboHJB8lkvcW7I<6IuH|L&alWuw<9 zMKan?&1~19ivm8KK0C(gp#isTt2Fl zRR2)#X!qpP?Uk~jULAi)tx^2i#l?wVdd`=&e@S>NxG-6Lv7n|CZTXo*;YW6QfyS;j z01%NzlSteMnr+%!>|^g{K_6G{O70ExK6}$7!SMa0nemkk!9jmy7F&%|fx76W19%3EjMqzy0B zhh>}*#k>*7>$-uN#1!Y2`0$|2fhROVKoMKbAw`S-zqV>Xv|)-wJN1hYWF>nT0(@% z;-Ukm_i&VA+L)!b>`tNxY`Ku*wxS1OJ&2aEDu zt2F%*b#y8_4kYjR<@oDRZ~G0hd?dAVuoLmZ_Gz*ufQ}uRSnQ$T_q(@4ZnsVM`w0r^H#d_(Cp=?^uy)~`;K0!g@ss*)_H@`64u)N)EZu9?l< zCT_$PWZ7s*QJuid*D?H0!>cR|9J=^<@%zyub`PcJ5Ku^n}2;XBCgl{E%13A87Q{Pxo>(u!a14)sA zwY8w%QBCQJZo1*tIl>176~A0QjM(>XWh`)Xh@&h76_6f)m&AW#&iX6P-aM$_rEA=- zPB$S5oKi^mrgjPtGh0BBgYH4%NZbX5wWn53N$UorVA5zDsHw!mhalQ=c0ke?bzXmL z5_Tvvc(#@bhib71Ie zN3|TnmoXvs@m>B{*1O|ctn|F3nK(804>w>c)Iy%X_hjpG;e_F0IQeDlE*6QsGz-tq4F{V+v@Tak)_0 zRm3qO!td$@fXhLaq0|(j7<=Qv@vZAaCOmH%iC=0#N)Z74T4Tn+Cs|i<=C;#C z0Wp5lwX4i6qdq+Og9D_uvs{Wx1cc8Gc;_h2bIjwrcp6w25c<+p^DoKMpg*P6@JXhRg8%&~973TQJdj;^4E^m7E6wqf(Ay6S=s*9t~J! zE54xR!8lH}UK~aT>}8PWwgBqbS{pHf0>!g=Ai%>FfTOaf2Cy)DUkeicei zWy|oK0GG{spYuV{VyAIT^Mm$-S<_D5SwCg6UH(48O3?QOK0w2`Sh~Pdxv*{53n;Q-mSm+^vr%h?-nh==8e}^kI$qQ zlpLsef`hq{a)rf>?=4k)A$K|QskD&#`_p77BZi~Z%7u?(gLQa90yAo{+W}|=ZpG!F zAJOtRq{y-2z>Go*ZRV zyG%x1)oKzWpQCrfx6nT=kx1era4cT+Vb*2J|8Y4U6h=DG{37y8gUBwCV`D6vZ_8x!4qqXn% z;1rs@uM1SmQ=szTwxK&{0i1Q=uXy&kVjV|7=sAJiM;iST4{H|8jXOtru3~=uWwljZ z#@J~w(e;d4vc*V4A_P+B}iOYEW=;p;?x zo?4ss>dBvM{VY>l$m{j9q3OwmhqcKY{feI_RyaVzCl45R4u*b}^vfLKb){b)noyvf zfF3Ls{4UChf8(mSuZ>t>mb`4xxh=67ow`*sO{vse%2WgVnuaOJkX7N>D+q7$rUue@ z1j1kLiQKRP4W76?!j7zCiP=YSE=7rCG5bAoN$riZ#z8)R(4aohxOr#kCehEMK`D9O z5%|?xy}sSBbK0t)WQ&aSt+gyE2A>_}9?3DJP+D<1as7W> z!8miyON_H+Y*4+1ASCo25f5l$pvF zchCkYP89B370*t*ls#U4cH`p8^og06q&e(NRAIs?^g%Lf8}gZ6+bP-KChev zW_T7)jS+#iq$Y0PKpq3#6wd{Fe%1+VIW%IIDQQ;rF~u}m@#Qe>ZOqHgx7wFtN{{Go z4<1ate32)EeF`?DH;=bH(o<$wHrHaG`B2r*yPvev@)%v->tNTJX2ZQD?i5h~pbgtN z;h5>DO~xi~7YHE`A-&Lpq(j-q{^_QCZDoz2)b}q@j1Eba0b}EBdmWmtG!@w%=Kf;|-@^Q~Ln8D4@0tE& zI2JKKMn{dt45p&DBG5i!-MpJ6u{wcjJzaX=;2Yb9;?{Dvsh}Z-UPN z_H7CTWJr*89E^`z!2)bg0;*tJj(6QW@o+;S{B~t+U1`}+a%~;UsI}b7M8PyQ(0^8R z-}+fFbpZn(0ttV*HvF#fF%>KrxD^QCgQ7!AbYMUf;W57RvlG)d_H2^ZL_i%Bl_~UQ+M- z9n$1)nC&qWM`69J7{Ks%TvknE39+rkk6s}kDWBr=${UJP>-TS(&>JU}&;H-q)PL2e z{`=o_&v>c~f_Z>!nQRb43p~ln zuxkl=up&Rzr*{j~^<-_nX@S?C4FmtC7OeVT@baSIBP=O5heiqWgY;?KUWR{U5xz68 z`<+X=L9|TKejlg4iH!5<*ImUM18ygE?ymkN9=P)yl8PL}NyB!G4Ab~#NK8*VH=yub zxKp*c^6f8@bH2$}3)*F?txn5^-xAxhRI(2_j;0$w^MjheGdimto|hXJjR+5V;Q4k% zDv8h;1$v%pxz;tooFk?fAdjhyTCx??yAcy2M2~N#ZpZ1-zsm5#!8yNNY>i%fmi_!` zNA`3VVLFFAZz+`6argGnRp&!>I)}N}A98YlM_fR|2LVtz!zi-{nt%BLb>yzsH!`$+ zIoy}X59-0g znVkOXOS83cnRykt>1O*4_2yjP|Gx1u8=F@DQXVI86s)TnQF2%>OQk>QRY<`dIl^Mr z)L(_9(AGFD`Nuatr1rK4E*yilkOw_IR<d~bAA!1as4`OyERP2;w-oH*hWg4pn!Vs(ib9id*hGy%jyO-&kH%t}izj%&l2+ zW*;+|2QPXS+X%rI{*!MR1~`Adi3ZHK4|)n?idyQ!C(J{2?ab}0TP`*U9Nw+fBf90< zzBBKn_inLwHvv+}Uu9G{VA~w2krI>L&+3Ee`Aw9O?0~O89eP73(@TAU8aSC~D*h|J z_#U(!-wHTg*k;SUwgE$9Rn4k=0sht{$4`DjQnPJrhFhF2$Cn1&Ho15y&6MZOgcvbT zuQu_K0XGMvId1_m8_nKhGJ1_nj;CO+B#wO58JeNkhssk@a&<=6MK0>L6`$H)9>-`# z%Q)sj`c#HQ6?+c`c}8vlEECb`&6`IiFbQV+AR<07YIC=neO01S{&76K^5}6Nvc5uG zCfwRP{s{96Bt}nw`}oOu2B>pEc~xVmM~ejk{;fKqi+AY%xSn063|`FYe9Iw=gj;ph`5pd zeapq2k@u%&W>3t3)F~^9Yu)fN=PBm4`^^P=!)q{RG`cW4;<$zS2)Zxxk00w>*PlBj ztHp#dGAN^};G`Km?1QA84N^d1KfRJ1O-omab#%~*yC9Am3b@qh@aU(*E2|!Gw^vZWce0|ZuCQ6jK)O#Z;1_=Gh#g+cPZoG3&<_&})ZGu^qzCZ&`0o@BFn3JK zAuG`5FVHdf%?foS0^Y%{kBmEFScuqEo~PGl*cf;bFOsG8c0bop8E#lwZsjo z=b@uq@OQ8;vmj-e1YyFT0m3bpI)vC+0U1|I2-XfpcqhQt?}izkEKOL1+H#YZVVu1) z>0Es4b*A6PdzYo4Y&&yz|A&I)HOB{8&g?QkPizmK!4{$EhJop-0J)!E`?&6m>`~Sa z*)k<|z{CJ)=--08hUixeX9 z#0Pz@?&a#i(2Vyk;?7_cl>8AP4RBZD5Edqr(9>mJ>EgMy{3--$Du>*~gF} z2Hn;a-N<|95a_F#_*SdAOI=`o_d)Aag#$abEMmzRwm3??3bPaAa(IWZ+yG9i@!kI2 z?u(~+#O8TcyR{LT3-@F^AJRf90i-nC73YcgZR|tz>+wady}a(8^FD$)lvz=1Eu(8M zzwEKq>-*a9BTxl(zKOLP--#%|b1WOGq5CMTJo3d{+);GT?4YP{yQoEFCA7MHW53g{ z=Y?YaFUSHOGt3_l8lnd&C7uQgUQgdOoB{|o*?GcbBMFs?$MZoUURi43*r5hTm1JR;Wf)fo^3jAWz9l%_sRuWq>y+{4$-9{PoC#_{?RNA7U9M>SJjo!~v zUzuc!^neA4?@sBOUPs$(jUwCPIuKJC#~@TY(1SDvZS{W|JlP@>V|S@9BvHHW9O98P zte<;y?8HyUO7G1}(+vr5UC~DEfeV`vemZ9{nr#>2nLDF%U)kH=Kk%sCP}4R;Tw;e( znB&>A>uJ%qwtNG`Umh|V)>cIXSL4SUNJ2#VRv_rMW*(yFKCY#AU~K)(4{1A3%I!qt zFaLXC&fPFHCkn{{Eu8ZpsR|8X2Od4+I5rriHWxo%_?SX!?ppYHAc9+*XK9uD$vS9S zw?o>27=cw;7}3E%MEXH<=Vx5GAT_M;vQTFE|H}CKajb4{|7{EJr`_C z5^&dvSSiwI0j7-jWC3%Rl@W+@p#NQ3n(Z^G^?7_!tYTZZc7lriz~P+uj%_^ac6pPH z-76K>j0zqPR-SltL0`KY+)zxY3_gFb2gtLy3}6K^V0Sx`Ih*@i2AWtP3JKxuW{^N+ zs)(nBFfGAYxefI!(cTq)yO$?GzIy_#igOWSxzCvzJd^Y5J`<8BA z)s1~YW$Xo17hNR!Huy-*v2Nr#*y+vUlpM&ly8v?0#M&Al$~0o^C__h{^c2eNYF+K$ z>G*VbR`c@6*Mtb&DC4^n-lki1mBoI8GtOCGx5S3%Fkr{xkjQ=Pb+#<9tnPq9GM0Xt zMSvCkYDR~yF+`Hy-pt4pQH+qlQNm*9TytN%>X6!fUT;zHudn5BV7`nK#3M1tmR1Jq zRNL>X7~Q2fz9O>ALazM!_W%49<<;mf5|WO`QrIL`(B z2a4;5fSJ4mW)caNli7RcF3~|r;@5@0-Ip0WPd>=^9{jE{8Q$GpneIoR3EOucJ;Rq& z)frMFwLrsm`?L3;5FrRWI03*XRic1JO|1}(a!2G~!#14?LPW98FQ2Xx7A|*wsJyL; zV~Wo!y?t)B#j~1~9S}`^dQd)^qucOBXNuK8o?H`CU;qIO6F?ch1dUc9cb79>?mM)90)dfyE~4P&}8R3K8j{<>Y~2%Sq5gxC(iQ9D7e=D zcDJk+ecz4#k<$9E;ag2N$ouB-K<09pkJCUJ?FTobBhAPUM17EScUYpCoFz0^p_qBI z`)bmazLj5lXl3eoBi1Sl*H6m_SN^%HA+;c__$QMG5d;<=+C3{lOUWPx@Sp3wzi=o{ zd(mmI{JmVoGlJW>nSFhxU!J@&{$NU6Ezp?7ew_|-CQWg4g0C1=ir$@w?<8JH2u1aQ z@%8Ihm|~oClX-8}0k#g{h*w~$Fk{@`X+DIiK)lr}_f!wiPwMU7z2+|!G&oQp(>C>& z)@Fk4&3V0*6d4a|gIN^9EG(W%D$j~#-Nd(FqQG(ME7d;sSBz@wsy+t$lr76hzPnqK zqIFY)T3&o@Fb?HO8z~HVB^<8Z)NR>_C&Y3=2_UOG1J3jI3UE(w0w-q7XfrU{Ll3a@ zQ$X^Srxl3pt<7JVz=Z$fLRTCXZH4wa*?ls%EOScs`Cwa7^+Lf|txKV+dVYP!F|k#2 zuS_%TlA)WF@P~`+g4bL;+>hh98quf80Q-5--3HcN9U#^(QX3LFJcO>LxqClIIyN^H6%MTNArLe= zPK1vTTOs&h)x5SlLvB<#whr!VOaBaeoA(z(0qHjqZGT@FBsn{|EZi|2cM$N#)0~_V z2Ci8i0l^sqN0}r1zy%v+sj?5%Yyac=@&%m1n??zwREBGhzf_^V z;<-=oHX0?p^(ay{?sn%(Gml1 zI;WOFDJ<{Id~lAI{xaf0$qd*|5`8UdRd7#p7H_XFO=n;h!10P9o)+PX)s7F}>lk@? zNwt^08+m_J{t@m&)NiXQdh7s4Kl-kG>^~SM zrqNNV=w=>~@F%2h7p_2Z@i?&ydm?~}2)zdfZ~!iB4a%!~gR>~1FAyMKb-L?y19Z=w z%JL{P{@i*?Unl)e`BU@8Db6n*r}}xgQ80J9VI4BU_h}48;cu28(zcJ!VIoI_5?9?< zrTL~zdwo{ZkCezv7vER9oh~l-ZRLLH0;_#)={wIV2x&YZ5;yI~>wy1W16Ir50+reK z?+)l2%N)pM+KT`Qr}!(CKL);ENEkjhBXGQ#Y5Glm{f4KweYQX2F^EKO!7sXlNR&21 zf-iyUO)7TI%JsgcxQ>X}eXbL59Hci8|Dxf=7B-aa) zEH!>FfQiCdQo(WSWOOg7%LJSu@GgLV(R3aUN-IsL8su?;oEK~}XZqAiAK zZ9UQox*&~IAG&#nmqE6ZnpI{}zn zs1xWusccb!8%lj_$Ea)9hfC_U$7rMr>SNfE;&@;qSq$Gr_AW_8W*rkc-yNCVljHp+ zIzoi!a=exMp0CvSV|L=HG?@$jPdVM0gpuz&E3yjTj7QR#Z3Y$mSlRAB$J&ff%cD+d z=`C4`iLoCjvZEG2z?#9p%Cy$6Wp-?AC`I#j$8HetTIIT(sQGFWztcHlz*NqI7X`fS zD;RNvN)j>053(2=%C#+c1~PM><$adYjH(LdcUBO?L6<- z0wZSP3X$BLgC1sg;+FW(7#Ru2Q+Pk^g_Vz=r zy*44C`pLBx zQ-(vNL5`%Kv&c{r@0*!{+9IUV{llta>?ta_X8)3E(cP$>V*o2q>H0Q_O(eZS!%-#( zKZuS-B@jJ>PW{Jqbefw*``;P)C`j2wK-&fwT$8-^$Up~s8WW@ES@4g`bJjK_Tj}G> zefNnlWxW;0y}jGxkE=ub9V__XEu$9Uv@;%fO#VzOqzSSSDy+EHrV1ZcW$#IC!Hgh16bB=3J zaFbC2jn{lbO$IV`wF%`kkv_v7k2gRhxJHx^?4aKgW^Ca6eCoRo7kciPO8?4@xRyIl z+KjcP;w^LSh)dS6DzIJ~u${Nq+zi9B4F6WN3zYsTOV8biccI!nEV~8+De3@tPuV; zV6O@=ARcJ`S3LLx>#B8oT6RlayM&85)0UIyMIJYJB^!i*7nukG_=8-md`E5Itk~*&ocH#d+M^k{FADCg5p0px z6M$P24Ef6(=&1qc{0mSc!U71DR#*fzX#+(+tT5)jr@-`cINpk$Toh&fbJ(BaV#2NmCwC+uU7k|)=n)dl_IO8X7`Y&=_3;{4Qvx+ANaPL0@sSxP&FE+PQM za#%wb;ZvYTfN{GJ>ok5K-9GgZTaCVUwTiL(C2_vu2(kD>u2txOd})?_*vqZGW)+u? zTDXaAos0l=f(Z4A82-HFyVgY~Ch@y12_)&M)D>Bg6 z%jv(WQqT9PcYIJe$vYsnxIg1U*%Pm5|L(m79kO?DF=wBw0^17!w)Y1aB+)N;Mk70c z7?xvjohR>XZDq7*lrL&mMMdQs-R6U>!!NGyqEJukmtT5v|4z!8xWyON?94bPF66s^ z{=0%B_zwn7ln@k;#{;3A+wl9nX z5WZ+SnjD0p=?WH2MH`5Zxb~Qh^P9e{2)Qn8;}I3|ws&WCRTOXr?!!CJ`u<{-A3pyG z{Y8Oh2g(rOD%5mU?+An15`>vweq#+@qbZ!W;PdIuY%M-h>3i4mxSiY3%bcjQtT@u~ z1y*tAvQ-Q$hX`tc_w5WwZIf`0U|Wo4Dl~7n4}X0ye9vFvZ<^lq=VcC4E=9$6vW$$@ zE8D_`-afHkqgjBHw0VKF(enr2*RY>MsCNWXu1%%(Vm?J%sir-vsIt>25bFZH-&tF# zmy$;Oz8qStlThurX)+oQ>*OQ+R%4L3YnB`s3&pbB<2qoa*5#cuD}(-?UC|I`r@XD( zIe+N)(OP!yn{*BAm@E(~T4dgaH62;%_%136)DLv+)_%CNw~Q63HYZR`vo2M~pDzm^ z>>8@6+#$R}&U^c}?_U8X_!s5*jg$$bgq+zTqGW1m1Y5YUi9o*yJsFWG2e_7qI){gK zh`*zuM<@Xk=|k>M^y7Tt&nsVI79@ws<4mt^nIw#^A+msv89D`q;@!srLDWtEx5-tx zsTS}Ht-zCYJb)G>0LapLURHB#m^3;xzRaX9jx50$yA3Qe}KyxF}sSuRFzrL<7Up;wl20OTSShjtsgL3 zn9r?Ay@eccy1yZmoKKfSgg$|HuV?GSq}OoYgl6mq?|Huni_(l^mi1tpKO z?8BZ~9jlE`7Z+|YyCz|ja*UzH!vu!TBL&RlFkT&Mx`J_{3c8ZYhF9M){F^x!+%J>O zKRJaen|a8^@g6Ww6L$BnR3JeSLDkng_>GP zbSq0hf3mRrIn|V<#7U>{t^hSDCI5K5j_57npt9_vbJV zeHbux&Vh${NSZDuB75-Q!6u!!po<`@cL#u%Art7Hga#u$26CJt=>Fa^It}ifq%)J> zP;NB6`_!W8E>JdH&rIyt>qUGK`K+_dkuuS6yXVLBq99WEI0fJp`08^x&sXz z+8AoP(wW^oE~wceJY?rur4fCX$uM^rU>-BvR?_*mFxx>!L$JF2Lm_%?&#CRF4q}E^ zCWfee`}A?HEIht%Hv$s)62KUu6p+u^KeXg_N!9rf6x@E>Y*?+r=Ck&tBu?Kcw0-V| zspRd2A@Y~g;!?*Z2ruXlw=nZRt*GU{#4qs3;j@fvKTX}dOV(c1ye|zutmil9E%+ns#R;Y7slU0?gdaOmj`MLr?{fdERRWI% zOOAycl>HGt6V{dhD$|@^Stb)vFo(Tc-?uPz=6guN=fAqua;dHY@8wJ;7cUNZ*SP}z z{wZQ7v>9{<#|iMELH3?GGP;8Bc*V{gy77JB+n{A-{arhsYEo_ZH|^Y=nmUcW>shuh z*JwjEC#t!iR~YsgU@zMNwdAccm``K)9~`Y1Y63~+FVHTh(D;vQh}r~|$Aeq1!zdQT z)+1F76g|}mOUXCL_7eSF8KryV&l2aRnMMKesQe5z4m8Z}tzwHRf_M!9&;6fxz0nO4 z0$@Lzwb&ej1mwB64f%$yXdt;UB%3k9CwHn}wdz~p9G|$5b@%h|X_ZX39YD1u>Y9_& zx>YA=rOQLpAEvT*r7~;5)ou41m`657hydw-4oes3mntI!HofazX^R3k%yXZ*dO#` z0aJ4d{SD2Q1PS1_WEh-+ZN;2d^)@IPD$os-|DhH;mfPH?qa7*MD?jHin@+?o2**6^ z*#Ep_r^fzKT|Xq@-V2RFDF-<%zO9eHa_O zg2zv-ZI0h368aiWoI?KrAGIqNn2b9#o$g8i_fC+=Bx6Y!x~D2zlEiv|Z-uJ#^J!tM zTSGPh=Z2aF{QWkrXL$O%zw3H$_RhA;P3{Ec{EWbZXWlhS)-m@lwIfSa=yQ)K#eBrh zS1W6C3EvUfN3!N{nwb=>ZQhxGRh~;N&g9ZeZ_xy&0NH{W9Y@1jcFZ--bCPF>CG#XF z*4Nx}t91ZhZ)=6L>Ca#HQf)tMWF~)FN@B8H9V??ow4WYMP+{s0PwFPfviATGFb6YQ zLt3#N1Zzta1gKQ;Bg~IJW+-gq!~$YuBbu;qAdYhNrq=h9(%Tn$wh_19^DCvSzt!&~ zbqd+JI0^6w@SH?$V0J;HeQ0n1!r8us0iI2GR4>jv*XBltU|!*liabhd@a~X~?C{yY z+C5lS@uMhYi8M;x6j=heJ$w|!-m}yj)tG)mIOFH4+9|3Cb;8ZCpn2=eT*CQ3w$>NCoZi0~EZgL*^5 zCfC4m|3=XtGVId(R&q8!Huu-*_PtxEm#_j*GdPT+>7#*P6nJ?IrL<#*6TQMH(;bv=O6_*}>ot zn*MQ#!QowhQxvhgrV$xrP*|E6K&LhzNlt?QM2iD%Xd3Y=8h+r+mS6#IaFGf>s8>)cSsk9qQdu&kuO@sK?? z?W9Xv#rngNW7M?V{O?>%x9F5?7vf((Pw2~U#l%9q2HRm{Y$RF|XPFbAd;0Ofk(0_E zOlgBI`6Q05`kJ!TJ!_$-j8ihXMmTW)LK%Q>y$2GpX7<k5*;8scg1E7^`X}g`>sw zB;6Q$#zZ5_NqeV7>*{08P3l88dM`=E@~?Xjm9-7Y8yi!8fo| zSH<^Wwve1@B7-d?89mq6u%bl+VZL%Oh?(n_H`MiDi{~M2kDOQui-HS{-j70rxb)Mb zUB2aR?|8c2L(`Pu-J24&y%f`^8~PXOW!tFfN|=9_!fv4=M+ev8Yi`(xnai^9j|M(y{p(=GnM`y z#rJ%TH22h-k-uw-_zGkzwvQLWs?2{}oG=6Vfa1@lf6o6UXTS7w+{ZAWrq)0gKjzK|pUhfL8XcxIgKCoQuucf!T_AI-w^uxSlo0 zO2bpAAJ^s=LG;`K3l<{Zpz`7bPX3!&L!T>WKI;zgC!=d?%U%`+Y6{BaQUADX zHa3R~gnEFkGt#YY_+WQTh37MD87;5q15CIU>z-=OP-3nP`uR2Mj+Px8vLo|-v0Sus z@aNuMf&~;GG3cJ^FEZ2LP8{Q+Dg%2qzApel&cR^+j}I%<^5{$AgbvpEgoq_v>+;s5 z@?DmfPRXodUlHh5&X>T(6>@S6rRy5R19E)1a1@KradzB&pZu`&Wg>it%8^oN#f)x6nDV73W*kjAHjN%eLPcJ-3E;9aY|Kk)?nz~jrP{oi@uqx@%j z*58Epz|PWMLoq&D3Nd^O29iVT)LlMCT*;aPoSoA0JO(efJhVJLLh9!RqYa$n*}I># zj;QvtujS9;^}gTk_qda(&cR$S(@05Z9}4?KqLj0qJ-viV(O;^2{Dbnzk?91s@(LiU zqRSN8GWjR`GSN|b4*p{^_#XE>IEDFb@qA!Ee%7XFtmIMqZN0atOWllYfK65wi010l z0~JejD<%TkS${B?!98AClON#Rym7B>Fg>f#S1>uVI(gtQdnW&mX>;AtBe%EQ=DESW zjArYRL6s1=D{lG_pc{We|3}h`_63Xt03h2Yu(Ih4%kRg05k?LM-jR#rBT zc-zidHSGKvoiLHw)E$3QG^vfst!MKV?ly@Uqsjc^I@7PbDtR^QzE+nn zW;R(%Jyc|9GUvg2x`L0+pjIu?wm>X1wrRvodR63VnDSj$c(4wjgItdp8nS)aZZYkp1DwmT1P28ZD6Xy;(Ara@3~1a+G3OQ2{M5 z9q7W`Nw|~ILfU<3=+|m2X2bP1=`E1nMll`wNO!@_`1U8wrl30z|3q(iT!W-3sb~8e zfd_%qzoMM!SJf}NS=19<>(kt9l@=VWy?s{4ahW`Wg`g(I{SM#&X>c;PE)$-Opzf<; zmZi$L^SqKCorue(kjgDQk)8WCJ+VoMm-HY_Pl>OdG~GPT6MoG-8saM)(!LS=w}AuB z252l2BaJ?xZi8Ispctssq@~j`CQFn4>3w~9p9nxv6Pb*r*3YP|muls1*5}m)qboulc zOE<1xC15Y$!Fopk@U2M`njUSC1W1=v4zzTQE2PgTaH=^z8ZFpx4A$rzSNLr2e}Q2V zv5G!1Uz?TSD@c2VoF@uoU1iQsv*crYDtB`qk&X@ef8>mz7ba}!PJu)~#blp8B6$YJ zp7{pNJ(lv@@MjVyH%Nn1{~1fLtp>ca8S+afKDT298%~J1~}8r0H4A@_ra(r3o(F7)0>wH2|)J8YBIt zsFzT=FQ&TlIVz%WTTGnLG1QqLuP!L7#kHovo4n4!2q|*FcaIXlwJU$#m4(KC2|_n@ z|6J$=M&7s)_SPP9Rie)-++baW0I25eyK89yD4b~gX}O6NE-+adT=rsFLQUIAqeJU> z{Q$xxIEhi(HC6$R*r^K%7G#7xMNcGYjHdVN@9 z@9Rc*fjMlm;k?7Exk3^o4^Jr@wj9H+&|T@!k}`CT&Zc~}3v|d$)P-~Ho++0`f7*4+ zRIiI#$G@%ywrA_+_F$%Gt-#NsVVHHkN5?_`0)xapgJw{UW&ioeC=QgyJwFymTLgi@ z;77U7=lJ@-{oapf{iejo`$sp2POBGs9P2?H8eUe&2aLH@bD4OYhnOd&;C=DgoBH_?>Y9>&06tkP>6XXWbgJ+A# zu_R~lW5+6Q9=Q>!!|T&<%v4V(U($PNYX8K_6mtu(IdQ0|fr^4$X(%$43$JL4b7Wk9 zUKE@U13a|VR-|SJ+x5I8 zeQ@0Y`N9BM;V|+2ndg2B5xzd)n%c*T!i;|Pgb(fqpltTIB_ilUM6O!Rr?U5ex$Yd6 z1XwLawp=0X{lD0H^KdBJ@PBxO6iJdK%T$z}Y^ChWwAqphbzbN4InVQRG9C?4 z-K+V7Y<3c=OAYyF3Oo)V^dCFM91)Zs5*6$|x~f%Y586Ww-Zi^G4NS+Nuc%58`jEg> zC|r!BAniuEcD=2>J$}ht!?9=5Q0j7OzUr;66+SKZ*kd-~$rwpEJ&1)oCr@Ja3nYrO`RsFf zQqHQA311vONZ^2M_)+74bi%?xgD755uWLjxk8~xQ@IvW7K6y*%(D^#GloTajI%?Xg z#uaxS+aFiTfuFa4kAafF&|BNhPAqA(AY#MD$^^-b2gh#@?-}Bf1q*a!zmB?pC+Ilj z6}p=Pg^AtS=u^^$E!jgroPWFn-UhK?R=|3f3ie!i-*Vi-y`Li5XLtK8NKV-iN(IK8 zVEzx_1#Uqtvl5>Ggf|=EGeHHExdq2T$+wX8#7yf0^)o@Em_z1e98ZGn)WvJQuX5sg zZ9y>uH}Kc~bFYx#STQCaJBcB|evwovZRZJ$Ph`zGC z$)`a4)-O5rO`Ma3sbPX^bSV)!H`ie+%+4S2N4e1667j6{k@D7K#E{l5)R{j(ySJcd zk1f~|8sHz>X#`LkZn3ch_OXc_gL*(1%VRvOrA03Dc{r6oX!Pg6KUiZ-pj)v?@wbX9 zTi4l1vU+%(Ui9S;3EG8x4Sx3p=)QD0eq!Qu!wQYA^i&Tuffm3-5CR zxl$%$6Fyt({)^BWaqZCI146nBM;z}4{pVR|UU+~8QSM}zh08T+!CJJHmJykQbcY9J zp?pQPWs?=6htZ4=oWWo-7q$V2+xiJv@on4TbUEai8n@gZA%i?CI>B)qH$x`$OW6T2 zvS20zji4$-mR~Wi!QTMO&@}VPqoY_fe@PWP+kEWt{U7ftA{{KuQ-tr7yPjUNOZNGw zyGHDMf&Y~Oi-U{58+b`S1_fAZK_VbDu|&WwKt{&3lfkQ>=!|VUuXUjSiI^wQ zjHx?niV+0p&hP(ln48WMg&{$5euw$3^y>#HN;HtfTAF< zb>qhLo{l0)PCN~(^K*vbtiV#nP>eZEVvS$0e;*!P+^cYmkKJu=W3rq9b_?up*wc-~ z38S{7_%>Wz&FmqTzP-=Zgm1Vz%Rbj-U{TRcN3Fd}(>mieH~vbJ)N$08|#5^dAn3UdduAEE4!p zZnz5PZ2lp0&FY`o^Ze=?KDUGw?l-QYsvWkvvN3xD(c99ZEOx>t2Qej_Oe);yD>)&}}LF{J<0#@w;@Npm6 zu^TucmLXU|0F>QNzB7YYAEJT@i}?3TwJN`3fhm4?vNO(^zkb)9nG^2omm-!f$1VWn;lJP^ zMUEs~D-!j{w9%`9WG;}~3xwY!SQJOH0wAi*Gi?f<+fRfHs)RO? z2#9H1Gm6zLoqU$Q+BbJ~z2UP>7oojp^N9l)-0Y2lCPLy7kertAq2}>25VYas_2Qq0? zMU#nKjl_m+UO<)Hxsz&i~@Fy%Mr>NnXQ z(4y!9#*$aI9RST=s^n)R~LfBj`EdXPMxt#XX@nFlZ7hd&3EGo6Eg z_r-y=K!(8TSW{YL=%&Bh&lNfEX`l8R^{&27w_jfJP*M+%bN@(mlPd@a3l=CW-fjmn zUpyxd1jH12CCH5;+mn{XL%JEgxeMFDb!y89HMZR#fmnc~nMnBFsUFxs0pNN+RS{$J zptd%wQ$s7I7oY-py7h9afe6`AV3N=w=shTB^m7erD>||M%jM9(6uImt+W)A?Ys4U2;`0tIKBT<1YrX@eGQER3XLmO` z`_d>t8aw;BAhV9cyHx6iloJ7FqMG#SLxrA0ZMIjMYS-_jx(ders~wLa<)P}K!X@`4T8&ofzMqt;5|W`(Uiz*-wC4j43&b?hqe9>tVGD-KZnWyMGPjC zp;(8u$SP^{NDAn+&4r3hYMA0Xg%Jfc6HPfh?6HKo3m&c zxO=v|wnbpff_N&NsT$O0sqshh=#K+L@e5lS`_9RaOugLg`pRRy1~IYg^xY9b&qf>I zZ|q@*X>pL>TxprnfJTY(LY6<~&d!dZp;V)qy6WVhHIscA9OMVT7ppiJ{K9Ls?WoBN zKpXLcyo8Pfo6#%}DRu^IE*da)+!OJCYDb^u|1)p!qm_#)^-+Jl{LXQU)XryS{}%vw z_!pvn|%7Rt7WHpZsv`@#3!3yj#G43o62~?4}evdv8;bK z%lHK>7+2C4q7+%Wxl_W^+>AHgDt76jJm1EcDIex#w#DYj1R+9MHENqA!(RUvF`6r| zfnmRC)?hj1!29M#Ukoolo zy&#Us_g#OuJuAIXIJ4;2D!+<5^Dp8CDi~G9v*HZ!xz-Q$h0FJFMCJ#bQ;R#N3VboS z*KR7%{Yz?!_FaEYa$=s}*J6@c5%jAtYt3T&m8*^b-6Yc6s)P?cRQeeI*x^yB{6chI z%Hiwo2c-~S6Fn{>op7yZn@@leMk?!&88I=ck*{d_(bk~f?4>H_<#|7e+`6WS3G#^_ zX>Jv*(#bk|zBTNR6lQ}IT`Ta54rn>L(V4{lb^~wCf&p~Pm#7TKAA& zyiXWtyjI513{c}3O5q9;oWl`FpF{|4mTVYx-%u2Cwmmj%euPnwo$(%hNxOHX17CCc z-5riA=Yt&_qJroYJs2c^HfG0rC>Ak|9<*Xc?tm7`)0-GCr2lzfQ{u)kNm_UjFkhBD1vZ#UNY zlQO-de)(7E?=$Eh{&@QLZd7Rha?=&qkHB6>|CRwR#%;J4WG}P?-eYaq1zI+wr8lar z*^1ReUcDkWKcnRpOE3H>jqe{HW>Li*YeaV~&xmqN#UXgMiUAwUe`A}_bHIJ&iDq4< zmn?v}nC+xAxX?o-JRiDZTvu7)f25VG_SV#PiMRvFh|APtRI){26Nz63FkV;}&IuVe zfngouxxy|~ydd_Lh!*t27!S%-I~Wg$EvddKsP*j5IA+0plV%_e_~|t~(Z9cfB?q%^ zKp`MVYSn;s9@S=cPSs=!4P$$c@}$N2$g8}Os}S>ImQ$0jyvaQnIJ*54=iq`~2Wtd^ zW=Mc8G%)T#e`rJSUIN{|1J)RLIJn&W&$K8@ZB)}XC(o%%~&YQ>DVx-(LGvZ1NIA*~?Oe*vd-&%sB!p@Fq*rS9%=Z$}_T8JPJc z^B`$j=hTGH+rn>^lh%_4KaBQ$e2N!4&V9uGBf053rEr-_k7PJQwWTaRX!@;2NKmLMT2`t(!&JnIZ3MmM2EcDxZIiL}`qq}tL&q7>d$ zlvPv%;#8*>BvXW@uQnoAU`vGkqT01wror16Ntf%Bvva}& zOAw#}4NdbB=)j0UwJ@I<-RTnDyvX~*xSzwL9iL?Gj(%w$^T=ye^=GXjWP0MJOyoL6 z_~yU##-*Z{deFZrfs|Yi>P3nDSCMP0aEhhs&+i!vfAZa%$@C`!tD96&?Aqje^tG(vS7-IC`-32>lkg zGOz;RgA+H=>(X{+H)$KmeT=zdF0|EDgCw3xQTqD|{tP|19_XAz|=6q0b85hiAXhIe#|@I3ouE<`vt-OIF;4 zeyT{G9Y0VT3kSGG@Hk&{xU#laWjh)8WO|thS-L*FUz8ph3yXpy5QWtt0%^6-BhMx2 zkB_Oo@52?Y9^utuC(P5glrt?xhZ5pL)$GyLBirD+xd$Nux;^79usJ3yM@WpOs-J2@ zzkz>0p`G^ppb_VnZ@1-<)clA6N5Vo0(W0&pc7`YwD6*vhk7Q zHg`kMdZ2S^n-A0XXZb6wfv5SJUO6^Yim$r%CZg9~y2S-fhU+dB9)t!hL~R45S^{1)nvU za`fI|Ms+e>iB|^XZ8f@3Fab9ed|pvT670#>U_y zxQb1IZQ#Rhflb2UXbu7iT27ywK|V#X-A4aTLst956+chYiXlmJR|5q+p~|j4TkXb8 zhiuJ92lWt#?+*JMftjw*U7&^k0flh_!0!R!$RlxHeDM^kXLCx zlXjlHPAQKVo4)kwyYrS=uU7Lw?vBM;cj9^odKAf$U^11lj|Wi1{AlL2MHpG1*fJwO zP&LVa-s1KwM!qj+|2Xla=iIlZ%Q}PY$(^{9AjuucqT#*;qke!wmaEVk`oS%DFCX(_ z`>EQ%IY^Ir$3{?VtLsgJfmJ2rX43KR%MO}|lknqtLcd6-ts-3}UQ7Rj-%w{p<)X&> zf~TV*79t9cDb9CSosx4-enrjn7vShr?FVb8z_lzr~=lYZR}ivYIX9Sk)o*Q zIA`vC%`bRuA?7eS*Lk6s`99U95!ZCfzTIMb4Eqq;OZR2qpu`gFQK&O_`nTk%0fo#7 zrb&Ht%H3a=UL*8GJ-$fAJ=L*HMhjc+t2CJK)G5!ys5oipFR(y}o3^{F`WF!YhQ z(Z1yR`^EYvii?i4pOzAaSCP9m`L9?)GQ<_9JFg1s>VI6=o=>iOm}2DMWcTbVp7sTj zrE!vHSA^(hm!W@X_Lmz+S;l0|7nMWH@^((?hIg^!d~b@5Z0Gy5T-~1JL$8L>FjxPo z9$Z`Yk@g~rC%9R{f}t$9q5qmW;}#uX<1+x8C`^| zpNQ4=e()Bn+Yoz)wz7Wukzxr2l*Xoh^OEE1JhPI5Y7R+CQZ2=0WB$iS0p!X67vU;{ zHtFwsVE)Tc309(%z0@d|oDNT<-# zYTAyH2YnU~~t7Ypv%{4@@Sqt^?_}3pyUuqtP8MQ%0wDNQiZ8 zS)NMtpD^g!b5ZdvTAlEjYcI!wh#nt{KBlBxpZyjhCeB{ zva*)0=$FfRs&-REUg|(zjVrrdD*3yMqs^y4?@omAUxq#i;4=4`!K=w4tV5%e)oM!9 zwP%)~;BV%{5IJ+Mr`~dGw%^(HfP2I7(9@JSCk{cqv$E?=?zT!L9H+neI(US^eLTWD zAhW=o!_H{d2l;Pd`e5GCBkLqc`yCN*S3qNtd_Zm9Oyc#FI_W6(Or;1SS*hO-2fXe5X6PO&3*}t z-wWUg0y0py!JI2}z4*L-#?oE`MR#{h;pcdyIM3RgaSuyIc7kvhOt4wM22OfJ=NL2z zi;a?S?dsK^@5?F?6RD0q?MgOI`j23y47;YcVwX30oG9r)P#@Btm{189!2vI~r=z;}qP97GAAtrO+Y z@uyt`XSB}cyzUg5dgtGOtswolTlJI+?6r1(94KQ2{uYW{7{v;t%iO6S^=`5-YiMY0 zZccumJx{*pYbX~tzWs7jN>tn;YkWx~;*F=oe2#3Z+||bpb_G6fdaB|C!}_@_29ec? z%iZ(_#$EPX>^+(+r7Ogf1dQ2l-@$^B*GqllD1Y(f+UfLvq_!#P+CMa~UpoEq5;RmB zJ_>oT@j*TdMLV1rSiBUlIRQu%ReY!ywk(utzL26192`7M!GP+n-|;~1#-S0q3l-*% zh6E`MiGqs)A0etSP2Bc)z4KUaQ32!mmIa>|+fm5mXwNZ}|2BR-a9w{(e-8cUuh2HK zqX99^G!Eu(hKvE-qkUWD;*30`Tj-~RIpoYx6z-@=epD|tK3l)%RU?V3B7Vl4IvtVp zP*o~q*+p*!$)a93q2n^AV2b6L0Qy> zIvL>I%&rm|3}keVJ47oSi}2Rt+G}sVxLX@|N`p{1r6ln0P~Uzo*PZH-)nw9&m|miB zWu}Fn{E51}>b07@LBa)rFm2{>NE zP*wa)*U=eV2&U0YByy_%l-IEF?wL(pd~cM`RIgn7eWYe8df_}f6$cV5Xm}gH@fob# z4QCJ9P!wBcX;+Z3&4P4X#QVWb#W)OpF?RHdAx2UcatHn)g2P)9V#%{c}?H(WnZA1kg%KPq)AJ^nyisr$tJ{N(ybbL#``%0nzONQ!Pj%;_+8CFyq> z^R8c}^F)@$C%m=yMW!iNQ6Oovt)RM2R~8@pHGBacoIPBH49Vea)buAKh5ge1JYK%Q zyxU{2X772p8)PqK4W$#S4_Ev@T!8>fVv>1|e#*r}803o!iS0AUdjZRt@(?3{rrR0aK?SuT#o%+6 zxYoCz;*2fa{IN$dXAkO4qPY&r&P(80V0qg6xzLTb-xX~(^d9}kKK>MSz55EB=eX4)AQL0=c^m_N~ieRt&zt zx{zg72e-stEFU&ASr-`pxl+n{|5AU;H;tkLSQvk;!@MSRfv#B)Vq#|Fnq{Dnk2bDH zgX!s&7)ESe_C2jEtFLakiJmE)b`ffni-r?X#jiQgV~T*VkEz0Pp(Vz^XM%>BPYftL zZWJO*oEp^~QdS@R7PGiIvyLq~yzIWVb55MI%aBZX0Y-y~EH}{!41fZMhO^9RPF-k$ z>EE^W_^3_or#-!K+r9zrZv(YEn?|bgww`u;ZFPLSS2&OPr3De>D!){E`$c^Z~3Z5eFJoTRyNvKU)7mP1>HS8d8kUk5JU<3p!bwq{x3L7_q3Yyv@x{ zEyDHl0L&K&^G~o}!m6x?V28?CGJs?dCot`z;S}uMU=xUL*jq8v)wUmye|K=twnPVQ zM27DUMvd8llAnFg?40GRVxuW2jjJ8VEnQsbYyy1Tub=E2=Z%g+9oWLzCT9+9-x(O7dXlsay_8j_sYW+IrC^N$QwR{L=qmF#Lrd$hVld0 zUC<_piQf-Zwr%P4o0fmRar4WxkRIh%`agNHa_99d|FLuMdbqC+K`)W99`WM8HET6c zDqY!Fo%}Gu@9wAQGb(f5557oE3d3`#vf5~tA%!rON~FfKYywZcEq0aUp>1xieE%15 zzSje=?0uEP56Sfz38BeI+7fZJqdzuV<42Gv_QDTE?>D#()th5~YE)?FjlH#|^pX|n zLbGM~tzGOm77w}qIl4liE$8`+X3gPDY6Mo|?H`Tjyh|s#y&u?fH?>6zoo=-;;1U-H zh_lImW3Y7rUmDK}os1TQq!_}`4~hv7+UUK@gldSE?lVVUcb{JF&gNGha<{ssg@3f% z_W;Z~VK+xMTl%Ao zC{4>n71gsE#%@Z_e$QEB^Mh`4Boh^*U=_%UVysA3ZI3snULD=ge2K4O>wS9|F+Z`m z`=Gwut@om$;=6C1y(HnvrY^Bgpq$X-zLcDm2lTv4>}(j}=R@tVm8XOFy{w|vq)}hV zP&#t&p|dj7Q|Xt>JC7(Ve>{&~rT$;?IV1mHUm zi!&`|2M5(!ICGC2q2O&_itccjf5_$4`zqS5qI2t9%b(V6^+mlK=OzbV+>7r>cYmUh zJ+`^y(-k;h3WoPSR1Qm*J2^S@2*IB#*nLFp2vI05HAxRK1iEGukdsodfFS!d!AW33 zssqIpbO0;Y3?;vZo|29BR#%UVUW>8ndHU5u+|$-V4kZ!8b6me9fq0{P{)I`_!_EHd3Dv9+2=+J-L=bsDXSrLgU&_ORDgm17J)Zhz{EQMBw;3 z0N*_hLXh-zWTHGE_#t+tV!IVyi}* z&+!@j|TkmW&g{z)_K>K{7C>U1J6{!95O{54a5qNdIM2}B_zv; z!i)#D2k|sPugGssaA$O!kfknXJv(DaPOvh3IUm>kun?;_dqDyvmEuoLtVbT(2eK_d2+3+_ZrqPr7bJ9B24H-}J44{0 z1A=DIT)+(F<0@5RnI^2g&Xlr7-|FV7&( zX(J4;!~535rN9I9r`AA>)8<>^{y2`mh9QM1qvURY*0zxm(B5+>{FTgBKjC#;NXrHf z{(ew%SWE-Zq-M*xWe*=G4{U*UjxW40KyHY6NScrD@(NP`9@YRI>+Q5jQqxw)Bw?@7 zshkoQ!A1LPp|iJZQyqKrT^PRnr^8mYa!#+`$>Y5^i~iY!i(X&}{}zA(B3F-+3 z^-IsbUn)xb1I3^2)(p6_bDEQehWY*`8%H3prCiTr+v|Cvw6uLG{YRl!IwSkTFi+*A zVomn{c6Y3Q^l)$eRj-h%`rpU4A5?on>fpY2`XS-?X0V&Q07jWJ#)3!jd@_h+Y(W-6 z8KN}%irV`U^Ri;sa*sRzf?vla$||4 zbW!S&ShZW@GipOiw`AUNS11G;KaCW{+8j6aEJ3G?n`?%5yp*8|j=p{Z%<*jGb098T zIbl1AFy3dyKNrxE~HQQ zY$1rlhansV)y_9E%u*$1@jWxU-e~%*($c!CLif~>T}mad?Fg;@tFfnA&g$4|f?mhM zYFu>&ORxZxf)P_eEEN0s4{fQvaY6e66wLQ^LEN5m$CT&K^j}$T?s^**7K-4EyU#IT zFYZPBb!Xyq?tY_=9Yz|lUjXfg@9@1mYceFCy}D@L|8*Z{U=7c^IGpwf>lW)ih_{D> zIQ*o@=H(=l@EmS$MX*kj`gA_+yGyZ!?9y|9%s8k|?$l|+&E%$MOH5AohYH+7OjOT+ zz&@8no>Do-K2*ky5m*Q#h)&f84tUxZmdPN%)q(TGlFXthb`yjzAopO+A;k~S`S#4T zVbkd)!;;Pq&mvS%OK>kcXE!uL_!+dhCvpB}w(QOYaI-UTt)Qa92?w3RESER}-EcX^ z4eLr3w-p;)j*hXpMfPjlxG9zAf7(ve$!lAmHVV~5@3VKoHavY|AW=R*dHqD64uX}- z0+6PqBjBL|*ShO>3$CM$GxU-vuKcXNdY{JrM*2m5P&Z80;s6;b$_E_D7zpo~B?hR! zWdbP{`I{M|nF~Zs5LyLEVuVOr)rt`OC$FBY)(_p!91obumG`C7+`Oj0>k3FPEw;r$ z$e@N_1e^xK69n4bXXjoMbN0GopVaAC+eS7&X*$ih^A&vBM_lUwvJ&Lmg?t%F84Nob zz(#^jxz=krdNXQ<&92oBtvXK7tyTkFBht;p4re?cU%UUN8<`2 z1Yq7BRtK&J7ETm#NuKZ4`P>JNeM{|M#O7a|)FWq1l|h1l z_T>g88&${&SK{?`o%l}?F@dgW9Y1}`KW4?MUm|78Pu}=mw5YOyuQcycmR?X-Uyz^m zr8~W4=DlMGvs!Si@4kU|b9oPvP+U=>Qfk==>Qm!a7fYGO_>2-gT+3aB(iUnEC0T zhPCAtv56ale78bXl2&vcdGS35#R*6Mc}A?_UYKz{dyW?zpPHYzdlQ(p0y8w zKr}i77*bbIl_D!rv|2_TBuK(f7!kw&3}a=)suP@p^4Uf?xN2wm zr6&Ef`Sw?;Ul0ai=gg%Xak2!uI4YR%dlHYMeFTw3nl}dKOIZV>Q4$&V?)%_!vFc_G z9&!Q^549Fb)%tmOWM>Hd`YQ)_a=s7n?9|{|rGc88$Blzv--)SPyIf1o;hbSzpg$~l z?5?F&Ig4{?{dnPKAcTgL6*56H#|z#x222mA@)w2Qlc^_1>Y zxy(7SZbFN?a%Q23T51dhNk~$=V8@`=_<_z zKJWUb+T`S2-;>+g4Bp41{DqEBlwLQ2&%h5hkV*IrupwcNT17a}fK_ey2b^XnugoxK) zmBx(coQ8TaC68G^FNXC8abOL=ps-nP78*hoL11K4+Uz)Wlm4muLuq!LPd?s7&Q9@Q z-JPt1p~)$~^Mhqsl;cw+O#uoz_tiv;l`1$JJ|p&rg)PN-ZWBE~=D3Q7C9DYZHZV~@ zC7l6RR1=ecJ6Ljx&d+E%9^1a7n-`T(@Z^9IOmK)6e}KSTC{FGY8QKP}VHA-C9Ckg* zv%i~%W_`$m1;qPV=OUN;5t^opBHa)5IQezPWWMR#Y=4H(mSr*4w1N8z05xJl4($n; z$ppz_;<1-#3A1ggxcw~e{EksZ{hi*iVM^mrlK!De-KRCQZOp#7!*?^!BF>dPoM{bm z0hc!y*E)nm0HO(0RnyjTE3rRviy-7}gNWLk{NOD;B)^Q|m}WT4x~gaEep%;P9SQWp z&-1|h*6sr|vZwL>ZklB2xve0_&*fbzuf-Yt{9ggB0FGvB2&^UdbM{-#Q&#Z7o?yg8 ztD!;6&U$w*sQ4(xk=0B%a6jr?P>>k_H^0@xtvEY@NhFc5LT9Q#I7Tic;32)Un;^-1 zqroYZEGNep3QL~93d&cPhQiRKSDm;|-K?WNOCl`6u+|9WDG}?@E;TCd_%Zv@8qYsq zXwr+Hy|)*%hzV+>1QSk99jI5Iaq!8#ZR`6KEsk#MjYX6I_BY6lM4@SSO(1!h791q4 z7`(x+->sqCACG-NE%`3YNbmspumkUTp zy9q_!#&Vk_c*%Rzb@A*NfB3UihCrFGpxb^v;$(xQ5iwzwW`zny(=0H&e$OFQ-Fli+ z982YDeMaQ!yw$s!l%z82P7m?3pUPD^=c9!Ge8GRCPUgY;SO0Q`Ipj>(cl@1=E`(Jg zKp7a)*NJcIcWunI&j@{JyJmf9pNZqs)uf8&>vzNE_li8adJA_7Mf`fvictVfi5$@p z9$JsHN4hU0h!tLcqAk09jot7I4Y|$6eewY==-&P)#!C0GMKgyjy9OPqw)*l@4tDh; z0xhtx{mm8g$|^d~^2!IxyM}Ux-X0>+d2dLO-&>PUXjtyOw%=#Y$ZJZLc@4n+n%J}K zBAq>;cPSK7#40Q9^ZVGTSjCKwP(4fFxQCj{Qcy{g=mvtfCp}5^2!#b_kHDa@4l~pW zN~AIDoDMB8AELp&dU&Z%GtORTn1iW!ySLE$@qx42P3K;3u$nFbd-1nQj$7Y5MkVvc zuA;BN9Nz%*l4<@_P(Rd8k%`jcq3M$(3n)~6XI0e0vQa{f{m}7YAKa%*Sxnhfh2CJX z+;uC35QmPyn8Xz$8&7t$F95ma94ItAO(RV|JwHt^(tDf*e6g_c zpgn%63y4vv` z?mjy7U=fEvJC$FltX(KxVe(`EJ@{Pr+(o1-n2*T80_MEc8bzE(j#J^i9`t#E@f-u1 z@oY!`k$YC19{5SiS$-7>*%i}IjIvj@KZ!;c$|}CyKJz@9;?_}qhn4YHdK-bur$_p$ zY%b&0J`%DCkcJ`;%oj#av%Hj)Ehc8jgJGFXIDO+df`~6w^5YSuaBeR@RU)|iadJA0w-1=3IJ}la$EB&)VWuTrGdtQjE|*H@>c&?UcA|Ft$HI* z%WD^*G!v1>INw$kKALpp{x8YdV9K9Snan2LLkO@P|L0#E|Ni{n(ASx|I$fkH()Qdo z1&mm+SOXu;a}U>Q0Fs&nNQSyROIvS4R=}TT#D<%t7cJvdGe?RWfm7=Im8-$c;g-sU zc#j^>YKtT4M9v+;)S2?SZB|($MNKQfhvnBT@flACRxuLnNUIg$HyIlUL?tT+K129K zg)VHty#36_@W^b{LOjlXcEY!FG+XP3exwZDCL!!}F zqeQMNJquaSLxR^vpYb5wqpSm z;o6r7#FCs14_lDiXq}t=7a@Y4#IufC0R?`E{Ryzit{};n7W70|hY-}t;+IG-EL_Tb zQDN=ks4V)>P`)5j?CKu#H|44K&Uv_U=TQ$WyUW*~?l!;gF?UKS=++MuvBw1Z$6;qPzBV@K7)!Nm zNYX(hLuItS`uo7-Dq5KwzVYFpp`g-bt#YXYBHu;7K%fBv1nk^PKn~x6smK-BXMulV zEBH7~GBJN~t6n!Dp459eP*&|&`74s%UNQbbovDVLmm5d$i5I}wB+yiwcX9Mn<0a$@ z2gS8cPT@qI0bV)q70FXfb~*jjvx=*oyX_y;iXH(Y#)b(072Bz^E~F4k-&Rxv-)Mrego7x|ycu8YsGH|ErPl+hiv861>uO*1lmm; zNHn!xWAV^<<@;m9;S^y`Dz5{EUA}aK*CL6sDVK*+8&E#V4x6UiBU_>Q?%}9I`_)v`wwog`R)3cp&NCPeX*YUO^)p= zvo%`FqB(nkkWwcH(a`~Cus+~dngV;CeLP>>pJ(f$8W1^to0??Vsq@BF=-TWPOy=39 zrvVleo^BIJv7aT3p(u9tdXjB(=ouZ&!nGr-mUq44`EF+So0P`}mswqo4>$eDA#*ZO zdr5|5!V0O_-E;uFb()00`=Pwz zc8R9Z=qh8BMdstbOg>M&Mt2xhS;BZba;f;N-8Hs%@^4mmBkz^ImH+Uc6H_VIPM$!nbP;+* z;QbfDISt}kFX@22Z@rE+W6ERq&>2NEY8zo+%C`wF+FZ|AFHRw^Z~|@Y;V=J(ElZ;fu*fV&8EdgzlsIGT~bSl(53hF(1^ zH6pocV{bXUi#)w4RuzBJ=<2ZwE3WW^+Oy}0F2cfcJJM+YFBfCBhV z5Pe=zgie~Ugu@t75YUEPB7hhskY!g>Hj4G2WnHJA)=$#V|5zJYHPTd@vgO?W>bP6Q zp~;*^ggZbugP7NxFrr7a^{=$Bc6j4UUm5IDnm(T}PHEkhJ~fSd0t;Ky!F)TPknV~TE3p|jD2lQ`17+@!{*{o=<>==f&CVM6lYn&SBRr4 z5+p@&*V)6YE0hv-fIcr01*mvk33o2qm`u- z#>1mCR;<}nyv+x0O$De9B~&Aq1!*QEOdE9^W1Z2Kff6cJju=*M5b>*)_4C4&H9ncV zUbtoF)c74AKW9I-N8l6{3`#{>fRzL9EiV=VE>qYf9zGL{ny7XUF*}Yt<&iuoF22FZ z0}|zVFfSgMflPRiP_?j9Nl~28XXwxuB1Nu(J_BpliSUfrRlI!ZCvVxWnMP47nQdJw zj@A2_Bssx6{k5oPS(8=Z>DO_@Vss69#h2bq=2>?LZp|3aZS00y_iCvksyW@)#b6>h1sylJg= z^3~JI+7D_HZ3^|Q*=qO=BoH1yxYPD9_N5uRLVD=tP^L+nm?(@1gz`sa>D?|6*D5^r0EsNtdLoNavF^$&ag;9}3nytBjgd0R|Ufu?XTf zun2B7_D7t1fB5X7W`1}$bE;XP9&*(ITjM$rR#pF^Z0V_ORn3-C&Sno+dPA;H&%3(B zlfuA4JvcROMSUt@`c#kS#`%zo$a#4Z0a6-;c@4eE@hUx?vj<@DyT8`~B3-Luky$eR z{qWrIHQJ=kEB90*afkX2r#Kyz?bu;Z2Dto{hHN8L5SG`8Ipc&DUlEH;na~Ta+K0OW zNA=&VtVrF>bG|3cVJ8y$Q73J6=w5Nr*QJD(1b~>oS6>OEq9Z}@ow(9X2dwLJKv|5A z2C1_+A04CXy)7F5ZC;yFWbeq%oA=K+w~zQO1m&A8@;9b=+mMiUd&bQ})HYxf>1Ch1 z@uk0TE{ARo0GPj<^4MQBaYDAceUkZ<3LIkm3<^@Ug89(kk9g_*tV0d0vz7YYCdfsC zpq3(CuD5WilPp_@x9u|0G+d?BRXHDd`3ocK5VrdHSn}Fw1oBUz?x8`S7zCx!o5(&- z76{$M?OKvQVd-jqer!rh#x<%`>d~ydkD8VTdVvFc$-X*vgFTd2qDzw{i-b_IlI}16 zSR7rMDR3?lv)E2{Cr94+9PW7K#dlA&`<&Ri3Dl1a@>VP+ND_ORu9~MMx^f&C<{U&>3KTW}|l&I;?QElo?TBa%WkIvKjm=^;N{o1UJ~clS*9 z!OOyk>G|4eWSc5W2TZ>Jp~?So?Y-H0I6%Nav!G7m84>JiWktZV6h{YZNZgR{)NdRi zHHjSV%`rTRC4z<9Th$Gn_-SRD_gk8R6_&g4;7!Mh!c;5ks0hM{%@z z<9i)A0qMPN{vc?P9JCS>Yn4{&2tM-WX42a;gVYnKFQ7~&Odinn>BCOwaA0Vaf1y!-LCXAO)UV`0!i^<5n9;&uf7Ss!xmR$+%$cKLy7@)r zD)@BGFviO@tHJ9W`@>zgXa#9evW3}ta;r81KiR4I;wZxV|BKX+3!C7MDuXZ8BRGS~ zO&-Poy}O$_&e@$UDtVYbpQjk5Am4b;!{05?`NQJ*ugbp!v-tR4&R5?rlM4~$i7V_Tav9B5mO;sND`v?gzQ^V zL}e6FiIIKFWG5l}ZpI#(%vi=SGoSCdeV^ZR&Uw!BoY(8TUgwYV&-p`1gU{Uebzk@U zdSBP|zV?V5THZq32tdAN3xOD1*w#rQRye`gVi(*l#oLcpi$ieQs=c3_6kf}H?w&dA zZgO__$yD^}FW1`#((gL6QmnQ@Zu+i&I>836vYiihCJ_X3^fR)wns0RSv<`7ZsTCHe zqU;|SPZPs1kD&twM~jV5DBgN|cYQf7i1+e7ZsGpQT^T2~5yvUU%tJdj8BZlOHQk4* zGmUDT&}r=SN7CL7z7F^_F>%hbW)sg@I_jTu|3_S#QKpP{=Isr92Wqqg<^vpd*yj*W zI%^siU9HsI%^xV$MWYUmU7-BU_I1r2Y2+S}xYtlHa<&7P-es1OLG9)Qd;X9>D%9tu zdZ$k_pd_qPe@^e;_to|eW>%?xdz}P*Ru>`-%57to#X~A*0L%Xh*q;?dmrep`<}Q(b zEH4U}(OdmJR0Ucnvau6o64&r3VKMRcnw$FZhBl92Cj%KD9?iG!uDB@7%il%+KsB#0 z&w-uhv;dHlxC2Smb|C4-F7PFP@cjAkFOaa@WFCl{>LwE?55>)SS_mQ!x_M<%?EjAC zR797i^(#s>m74^<3i3TO8?mtRWB?9AQMPeF>YXLwngpINC;+(2UtBaC@Me0zv~Jbu zLiPI4-7$+X5n2^BH|C>5p#JDoh{lJ&i=O$>e-&4t^8?^pdeBg(6CQEV5i)eodh1L{W~ zM=ap7Zs@%oSRYNu3E=Z~xukrBSY~;k*7Z;pA`P160cAK*ECiAVqId#YV)Z$pxSKAM z2h=*wfj1Kb)oZKahx=OL?zl9NG) zE|Ge z#Uf1Cm*WHPdsQpTxq*u#@tN%d(Arwh**(86~SEl=;+zHY8JYOkn z)%y#~rfR+!EniWek!kjn98C8*@Z9>K-iqRI{W!SF4^1frktrWd-Cgb$Y#yzM(6{Z;zUfaZd`&WDN`N4M^Cn%6>UW-==MM%8Ix2)4 zS0!FAef((KzEgjD*URUV^9MCg{r;I1FWMz}dMSqudcV0dCSfmNRw!4xN2JfuZ76F^ zR&>v1P(CuN;V6N#c4EE0*DX-5@NM~g!YR3Cu~3!lyVCmhuEIE+%JbQn9Ky#jqFrY+h5<>PNQYLDo0S{M6>kz9h)~h!eX|6p_@S zFt3qbj!Gnuz9PX$1u{S5Hg*(LUw=k9TZsQYNSoA3H8-;@qIz`>l%`h9T~QhRmhiGW zowu^>+7;#X4)o@w@;R*6h;**;Wwx0*&5gV*h2*MA$tR@5kuK;18}tgnJm&(I(h{8g zv46wSB-jSM2>>>bZhBIy0sii1#n&n^jtBbLshf?HK>zpPMmwGRR4`gIgdI7j9lgc=;*yjU!H!A0`e);H@=H&_3ujYIrg^po%0v2 z*?&}6NDTr&doJr-#OQ=46#?%9o4F?(+fO`1@JteA-eM(V4+lEb%1w`LZA3*i_Yp^y z)HjEEYt!z9-^!h6l;2}C!5i`ZW>Qh}Qvp*rd}p%dbn91k4(FRB8h-UEIK=OudT`y5 z@?aHKjlRqxmYtqoNas0EX{q=a7+}$>s}-#9GUws8OMiL8`Q+rf>#=D8cPoyZ8~)73 zHMDKPJhZbLswr10lA4eQu!qKm)3eQDyvp`F23a2^*1AnUJ}wks*uJ;7MU-0Uk6$+h zsa=&;-s&cNI( zphWPF9^>WXT1f9ONZj6*J6FC-^SQ}*3!wpd$9HUJ8Z`7Db*^fO1D$MlmXu@UWi3{W z8j&me{$bOAz+ejAMpjXG3xS{T2S??puK+0%^C`H+M{trj=0P3%%69HSs-4$BjoGd{ zah+(Xn--^=c{E-S7WYFMBX+u`z`iS1Us=*rHPHigq7PC-PUOTZX3EWRoN>LES0VtcI8oMPHr8JXf z@Ns2+ITMC{GzFV0m9-^rZ{OXrF*u`L>-8(L6BI)J%Tt~5Axkn&1A7*%lf(`X*v-qs zXAlX z85@4I-c2viU>*c<^Dtq}7rVobPY`$5@g6)={0OkLWL90BD)_3gDt<(k7EYb~K;>zG z^^5u)4W@b0mAvI;d;hrB#@d_8$Yeos9nVpfel>@#e&<@mF-6eu{w(?;_#uL0n$SKn)yS zNieqoL%xtXyXnBv&)&&@Q%Pc|vLvOWa~o$lNprV?dul3fwwq{#lm;G(rUbP}@b zY#9%!-40kz7dQNsDr<5OfPA>a>Kb1oo^bhVC+=|Ta(D#2iS zC7S8wp50x&e4ctRTaWhoqdlQRMugv_v+>9g38ad2WI~!S{6qEsoM+nkeAhoi|2@|v zM+aaeoFsXNev6@VWXskAE2B9B2f9yIk_2{1hhio+LYf(9xD``^2YAq%K@uUOrYd!9 zro7JE{*@ZN_WY!Dro@(Cy{`Q8`cvLIj>oOpPycQKGt*v!EEtY{M%)=ixr#Y>^Dl^W zTt3h8Ws4O)Lm}@z#4q>3M=)T0kU;rvr|Y314g6~^0-J(uLQ*cR3|GM19a9Q^^|-IZ z@WYgs6)}q0HU0Bzd9~G5f#|!ZHZ|^>DJLGl{D>x`MvO;vl%LgK`!@h6E>pPOYW(%} zl>uindwXa1JE`a^CfS$GYNUkEaxCa^VzoU8lzT%={_OMpc|99Yl9&Wqy;#)QFx)bQ zulA-W*+hEWl8ej8B7U;ZAq#Hs}DcI#!xyn%9tK`Gb0X&y2|E;b@b4=k`4baRC5F`((us4+;4_xEGrh95xz0Wm3nvh!44kqe4VONxrWwi{o1ItEX4at!9B=CxSwsKWt-A~kdCQ=5S z4UdDWdT2NR-ly@w%??ctB}MC6hN!Hnr$0y;x1AXK@~PNlaK6jLWfhliQ1e4xxZK7hj7`;Gcmi#V_R~D&ycXu4{SA_NZWMIqB_Z~@!>sg*au$M;^}Nma zZ87^V=LfT{T+Es9#62FUBkz61oj~2yqjeGlW*C9_(Ev`?SK%loh*9M9JONPRQ4MZ+ zR76Z+C;aYMV%}%>^3@wvKT~)-#Ve1P9!IJEjQucPf_pVzj0GwB`f?-~k`PAVf8Z1A z2&DdTqt%?flOsHUM(UX5M~7jyjEWRQl$j0 zuhSMJec@a}u`yG~k0!^e6-4`th_r48B)mSa9QT{d(bK;7MM%6;=7}-yK$+c~L9*m_ za6df+Cnpf9H)39YAGk@Ypg$IgF6%~&wC9a_sBfla_z#UZFzb1r+gj|(&>SymDqi6i zdDbHMGvoS;^rIZpA@hRjG~?8I68 zI*Q&$(SdmfE#m5A%c-(i*6w1nqo%kSAfdmFCH+ zfq5rF*jV|xXMCo+c^qyS2GQK@Y-J+n*%_b6e-8)Fhh61N3Gx1r9gt8WUX5&9p+`XQ zUcjqfNCcR3pTz-awc!cs1w>c*=3EYTFOGRJ%{w4Ov+4$Tji>utJ!45@(S=1gLygk? z#}sT2k(CJT@G}E265E=&zk>2I@!P#LyZFqzn`vkz(WA-=o#QE&s7;5MuR6AT)9&Y| zg|Iq7gVeR-c>E$(s!vg^;8Eb0KV)fl*Gx3Ggwi`=k=$Geo~#a_qJs%?>-gO>sp`r^H2 zB_#Nt1hrDb!Epk2N(2R{Gh$kZyVpU*0H?dx@u7y)G%_pMAJnLS=ylMBHx!Qb{g_Dj z5$$|oOWebo@t*J+PqzXF>72&m)rMfc5a6>~-Pk(_q}CjD_%Q2($yR7o{Y;`Sqw~fC zP?(#@Hv3E&w=Rb7SfL+7hY?6`u=`la>&pl*q?mRI$LpiFlzTo+DM(?; zvr5)FI%~q^DYro0-=`)hOSfG)&bJAvD7wzVCiu<9V-ZR85T|#UQR2QREp|}}SBZUa zUVcZNBJ&X4le#=r_>~eqvnSbW8nK@qHt?qmbmKNX>*R?SKD_-<&yWoY8&t+r;wav# zyntX{d6LBfF_Qs%9<#y6c#dVHjQM>MR8JH^_54!it06}!x0RxqXHlEd7%#YqNHN0E zWi^cP~Z18}@&0;-n);(eC~VMWkQd{Nwvy1&nHQY{gm z?@pT!V05Jpruo`8<4k6(K%6(zPBW?enVlyq;rdbHQQ}*zCAN9OuPB&r@Yy&pE(O$` zW9QyhzkEjuk9Tuk3enhnnJqAYDRz9G2=86~aJ<)d z`kUX!QRO=6XC^Isbsq?`&bMy*E;_nW@<48ilW6{EM;?`J2@C<<_dk4~zOS`d9-$iLAFV)n;O3;cR#LY4>Z0PEGG<3d z`XeNs-`m4?UlYh@Ei%ADaMQu1zvlxH9t4v~Ag?hp!j%3_uPv?V8ZBUZBRaUsQb(;x z+u#EMC%fJL2BAEw^Fe+DkJH~1!VL^XLs4Hj&;t=!of`hQurALd!@n@^6FqjiVS44K z)P(?L557UX_yKlfUq)uL?^!7jC~^+TfYcD7xU)9g^KtmpFUOIwsTjhy(nJwW>3|9@ zg5+8-&jSVn9 ze(3U5U;4KlQ-SLF2*00A{4YbX(h;|_&H!eB5N>_Nl z*>(jOowU560&L7(H~3@&xO-nWZaMq_m3uMH5(l{JY3ucj9I+jxjbSj#1306dQLACT zfp`b%!k-w*wi2IbrgXWP_{90?)is-H^^fxwM^EDCD+7-PjP~Xja^!0Md|g{QMqL50 zbgCQJMY9cE2YBAFD$^YIA*w=?o$${-;xMsvS6yJoqP^_%5sPutxC`7eiqj(i(;|O> zVi60vx>~Oi{csfdQsP;sk90hdjc)gImfX%x$qE5U`f!;fW^3sb$a)h*f%z@L1TfD; z0YSS+N&EAXq$f)ggFB<9B(!f>Om+WBsU9f6sOT0*3rb(?J)`zB1*w;(QaamZ3owJ% z^e+L-`WC&w8Lm1L_Rv;M-CacF;xWeM5FYSb^>XQ~8FuQ7 zb&u+b2;^?!ANLq#LlrK|3BaxP+>X1P>?Qbyx|iDl|HqW#3GbKdBX}Y>mY`xUT6lhl zNs^VRuHK&PkIS3MkE^b{nm97x@F&Bii)EdTBV#_wAYNG5#C#g!bSt*_L9O^GIqLl zqT>K8Bm!7y!Q9i2+Byhe;R$>q%9#jmUmA*4{XoyA2`a`Ut`o(t|E}0Qxbjs9WWGY=y(sxJ4Ot@khQvda^0Ztf97Hp}XWmW5|dh6KImzxaH?pj@+?$rkGR&E7# zoL#8#2Eq#h=b4|2-RWuuNE>$7NDPlI>mnc>DJ$RZhf`<2U$bdPuV+>RiIxkX0LPBy#kW7BV zPZVa-0+mQWZOBI{R<*Jgl@EjodL4`u-c=9kqGc?OczsNg?06-nzV6@Z0T0M;5F!Z( zEEw9->wvmI$xLxsP-yZJ{uWV|BUf|EX-w?A^j1AmQ3q6fS-&R;fjPMVjD{&1*95e_ z6`A{oEzb*ZB*~sjN+TBVz7lXAwpbOlE&-Gknl1h92YQXe*9wjM!}edOmkwVWb-tQ; zVlxzOS^2<*jp&nMMAltkeL?x4Mx<#Xl=8G0)F`o4EFiR$>^=8qeNibsen{ng&{Ja} z<=UsG5b5Qd)>mBTZ!ixNDZUm=ewQ>Ph428y{Vm2`jq%L|eiax9Q5l5!_LsKn4okz(B+kOS+>AbnT}cYyv9?#WF2FqZW+N z``Q{AUv_QtqUS|g0ig;CA%HradB~k1tUlA0ZY42!oT}F0=;7zSo%<>GoL=Lae9LIV z-@VtaC)&AQ*@IS)o;PwmjGW1$b-m#&S8kJFd-NDlF2~vnT+7S@aCPk=VSgM@9_@fg zSi}!#)}}vL9pU||yCUyzYa^H`3Yy>=Dfz9B&`mx(Oc{YCZMEKsv14$-XUynU%#W?q z3bggPQ(^jlq8kW~urAz%;X=6+!?(e>8l@yV;ffg0p6qGm`q4eW^OZ}2iCddo+01j< zE6)!}y9ByiNIm-ega>dWT=SN}v2ZL9)BL~yl;h0Qjh`J!UjySLL%Sk^zt4PJ89Su4 zi2K_LA8`cREeZ7;sor6Dnvl#QJaDbIR_HQmf7rox&kmJ!AH=pvv4uB^5u(X6rFH$s zs;c|FM<U!Z*I>7O0)l@Ax^R!xUo33@jsd zZ*ge7ORGg2(zAcu43&cl7x2@;RT}mf1XvrLh-OULN+UhQET8_6tF)L9`FGR2+TIm9 zZQri;l(wR3RplCUO!4cPHYe_R{gp6iTDY5jWC*Y+IOa*<^Jnh6rW52GclDJ zHlv)!YKhUv?U)h15j|?yF3?5CTpt{+)W6Op+MUHURM~3KqPNTa}CFoYu@I3mFZV)DmiJI^SE0+v1>L}ZHs4Sg{}@5i7KjGOLbmS zh$$uLcHO|=J2h|R)e>$u44a~ep!t2Wnd9W5gh@2$sbONTwdqPd@J2Xtc~$Ce`_iSt zb!S-H`BcDM0LL1HA|)eBL|T*(%wW0!B|{Dp3bdQ^c~Fzjvbi!KFgdS(JN+i1CKIX7 z9vMozBYQPjy)AZzR`_3C)XtFbe}4UU{_w>6Ece*L>Aa+KxY;w?mK^Ig0f^O82P-e= zV0bo2h*cd+&VL7tgK<XQX8;Z z*m-epeaApR0^cT#A>n;QAP;$w_4QvCrhggKMU-l9O3T%0Gk1Dt;IabEznIvTL2>ijh1(QcNzxb&lB3lZ#+MV#0^@L+}nQWAz@)g2C%2PB24 zVg=~0n;&i`ehv6M;(-7aUeC(-n&S6~wjTjI2r8{FJhr!_axn$W zXwbk$%xqO<6~!y`x#^9XD!H)hub+EvT&n|!F3cJ3uG43w5N;x$5=zj`f_EonDCj8p z^$FuY)`z^9^j7^F5$O9+S?D^xHl)7`)$rul`}YFAeR-8ER9mk6(zqf*auyE zDcJDBaT)JX-*_-|i|~QX!tmTe_~tpS#U$$DMVHnIj+yXbM7PA_6YTUEVD!CZ3HHX| z34%hjz7|!bo=`(ZA28H)`}66jVmfxIu&OciX!a8$;pB^?_@S+|AUy1cSy};p?FwL@ zOHpJHAaShs9%a2&h3F<_sHi&Wq^64M8yscif!OQgW2Q9GD}uUht^#|Fq)d94MXPrc z{$cC1fF%J`;sg-t{eG$-=uq;q|97Go%?IAEFsK9&RT!xLzZ8Zx3;xFLur|YczI|@E zq>yr2R8H{o#0nibLez+VYMF@J`(=NgPx*Jq>;CJCPoJDT_k>MqSg-PX8!7Sa@;ACczK1$W zs8+-GL-(;a)TMGSiC-StAk&rTB1I+zsN^HP15j z|7ajz9TmNvKOud&G;(C{`iIKOs)+OQzVYN;Z@c-kGr(2l`bDF_?&H<_r#${`XO^QZ z!+hHPWf%llUZFZ24?Dx3seK7Lm*PU?opg>5{JEWcpYLID&F(Y5rU|~DtKBe<0Yf?D zDhqIeq*p}Xf>2=x#yY3F1s4Zf%_INX@Y2b3=iIP)JDlgH2{eRhz z)AjS2-yhWLQ88IWis{M$k7^C3upI3{{{yYeA9v_!Qzm9-I}fcc43KZ9t3+HLak^tF zk}WOV(ic0kVL?BRV+w&$q^S*?B;zK2839pypU5(G@u8xl#1B{y%GMtOGRVLWLD4u0 zp!c7OZES*o<3OO9Aq5pv3W<7*=EbacbRO+e&@t*iT=UFm^Yo{TASU7X-uHahhn2_n znaSTo=3*$1y72jckEGa zZhH^^zS=Oy10BRr{wmQ=1h5YHMC0gYOGIYeS>y;8Q^%OTSb5`TmCxrQnDC z%5mXTqk-fJ%k|qI7wL|9lG1qNvYY6}6b3Bc?21kwXQx7y_-FyHmcE?U9=|N8%r*JqXZ1m%qw z?w%&ZW>J(Hy5sbDsfrc;aJEG+*k0Pw4d}k8Yyj%zV=Y=lw?zDmbn^CpfR`O&1XV9G z&G+@=60AGuui)rfU7fK#^&#ULQTpq%=gr+eF9$#Oj1$>cwYQSvCJb3DWUy>OM-wR# zMX|<=EYl*Xm<9{}5NWC+!S}Pl-m(tLS zz)cWgkX|Aw);`gW%6%bRz{Elwb&@Ox6mOMAPtqaFuN9_>;&-wBo&CxNyx3xsr6&Q+ zY*3LaQ&7;l-@luFy!+2a!P2I{go9&g8`j~6A022mTwx(fou>mTujLJBFRsd)cf_g{9GZauv6FuwM}JLOMuVP_XHRzcM5 zq@R`?1F#uHc_@|txf@(~@2FkrLHAb2Y=4jL9=l*VvadXyy~t4OD(~!9z(|%TPjK@I z2mX1K_~`NYHdYw+z)>CmC@qMfjZ=r1LSZ0q{z$)0+K&O6NYs|sdG;gbQ#Eo0)}Fx$ z+MS0p#4EktyGBs?UtShF!#}kdnQ#^r{~`10Zy@&i8=S8_ZS=S%pjE|5aIYyNR9@>@ zVOq-*9?_pDMJc#S*-kuV&6G^-4*PjM)F}g&Moo=lD3&YRhl%_sO4mZ>A1@9+= z1M7qBN0uxw`CX@t>+uOXFhaq;?`lt0rU_Y*$@Mw? zHt$2N#QCr%W-r z`EsyF%W#(nwcox4ySI)M$VOkJ8c0ZYJ$sVX7OKHypn8n{YxMFD+kOQ71mCw$o~Q~8 zVDPS?tKKrb@ZmCDz3PINZ-u;_o(rG7%60ezdl^*q7)nC#h$8HW$#4n)1>uko^RMM} z^fXGueVbPGF)#{bvXnnKF3~g&+Pxg_YmOJaK>e<+e7F2u#smrd@~#ua zhPj;>wt=tV{kgp$T9Ohj?JGmXVx@XiKjjo9F7sQczx|~6LG8;Kq2W8um{WSq((YJ? zDeO)(FDJi^UM4UPWZU;YAkgI&{(uqTFQx5S+0BDirbVP$Yl&K~_>jC@HullFE1=@W z7pgxGDDf3j&P~&`ir9kc~^V}S&cqjh3sx$`P5V*;=!VH=-b+y zApiXrOxn^L(hsVlrBnB1)6vMbiVV1nMS|+b!KguKOm4=4>_=J|1r0G_WeD-WYio_E znFmvq5Mve}F{7B#&fowz*_GGmYOHN8Ydl(Vmyy7$5|MOfG}KrQk=~=$&($3THR}rC zEvzcALH95e=ZE>9F(G{Pja&;~IeR-#ZRvA@Ix0pk71iTcxktH&s}A!{6RO2vP;}o5 z4V%$2S#h8o53qxdx~!a94UGtkrUYY)>fQ$(>#0O5GcRqe?4ZJexdiOb;&kYKvGBvu z`=3u+Y|Mc~-&II+VV7U)S))fJ-^H^BPkbZ@ZrKP-IkRQ8>Fu4xrf2a8SsAkZ-+e&; z^!)dbT#f>&rXgUvv0$viGu*BRDA8ehAU(T9>P+TR-}$06IoH=RF<^jAvi?26&UjAD zx6Eu|Mgll#Oexm9Mx)ZmoE6_df9*vCSNQB=li%iLqx)xYjM-mYEl8?(5*a|R3+Q?R zT^Rh1=Am_d5U&8DIQ;1`U;?Ggb5x)2s5pH@1qDhhH9I~ezvrb)?_!161tlL(-;|RR z5yB&D=9=tTr{gGjmK21r3pG}VYpda6AC*CP)*3#qr-3lcMdY$^cUR z3J+)3@dcVObT48%7sfGLb+%gOQ!+fsM2~m|dSmBhyoZ5Jp9u*u+KQqHN$2S# zu(B-kzAj>B!a=c$hH-?<40{;Y3=qcp^&e=DD~P^8i(}!Lk`y_h{Nb4s7~BXeeoHbe zCs3Ga*5mdb8ojNYpPp-_KWkXkZ;^|1s1I!b4O=Lt2vB_b<^~6ldp3HUv>1`@m7PPUFoOiUq5WE^49clx}48!c%p4MqslBPc$! zw^WM;!pQ5X#N-0HO=DV$dlsq0MT{an07f{lJ|@;U zPadahOhJDJGR_3i%xb7wPfio(O4<{~?u*=W;Yz)>h-o8|ui3z2QPUSUWSg~H?yKYI ztXCf!Zzfv&+$*U))a|0e_lNyWX1G+AtE8SXD61P{03DWkhq~P%dw_vrhQU89|4aOa^dsO5qiKWst-gcpVv2ewk@Z@vE0Mt-`37+lDL$)E%bY%&#L88w ztk2Z$!4QU*RXZxxa~&wqgQ8n-BcpBPC^$;Q?>6=aT>gC$58JxE(?z?5c5N*D4+i1| z#>qmYqDc@VhvmZUc0;XR7H1(|dU(CcYYhJ)1?Xks+BNnL-dzaJzi=jUR!R#`t;4UM z0A4`MMVY3vCj{&drE+vIQo!D$(_9X7uu!3;fJknOJ@R zW+|7>XuJC@TTd!5DYB-nCONi4sB!iryAHZJSd1?r4{GTt?;EKVQ-~<9+Ebg#xt|nM z^cKe6m-^Jvrj1<2!{12N4KOuD$J`o1LlZT-^jF_x))CW$FD!tAjnD*Quw_8EP>Csw zg7>Xa8e#4k2D>||Tq+H;v-s%xNq*5k&^NzFrn07A!JJ&kY1&nLoj)dwFDAFv;7~U7aFrI{eBBeqQE>lRMrGtHrzeU94Q`$X!CEq9< z>qkrZ%Ew37ybSk3jdRW8mtzU-IC#Hyf(XoGOnMINqA3ZZB}tgZ$lkc8?^p#$qh>bY zD`S%N$>lTp-^B6Qs>Q`?K-|{Mwd8O4>F{3nPEGt`}>OhxF?zCH&~?;Qu*xOJ;k#;d>O^?{&B70P>L6_^!k( z3ZidqzM$tUvJ=4+c@6W7xC3wYY(Q6z(lOQj^e`2Z6k_hqdLQ#i_u25+V!oWwN}X=a z&t9YRA5ZMEw8yd`yNsDeLkzH{J>o#Xl4A+Qd|1^@*Rzy^Cvf{Nd0d62I5h8Y__6T8 zxY;1d=vJT%#|1b?fF94|=nB`8!9@`apqQzyA!wjA40%ktenf2GL+)nZY#AXa;YE4x zMZ5FYZ@#>4|E%XPFZ&b($uYM;X-P7IDT6D0Ern^LJZEOjhKyD&Z*moN1?t`={JQgG z-xfq`WEJWkz%~*~7NSw^N{MMA5fsK$t&ndjZ?ZWIU-Wjoi17EL95(15dH>o|U)!iLKC>C2>k z_UB8Rg6*3*FVn|a*JEUIVQ540(hu?jYkJ^&&M-`dMF`KQ6%D=p3>Vn+- z;%y&Nv!*@<2_KMADZH; zI&8}ESy@H^PiYswd3q*n|KoF*c|YJ@A7dvc)xoTjn;xj5mT&$FtxvJi_7?swyz#m< z3f4bF-e{-%>K3S0iTA#Vn`nk|)&9juHtJuTl+*WeEX>W+nJ^zcf^~nTdPLoSbMt`a zZ|?3x3yF=Iv>pAvIiRAF5AQ>f2=rsPKhQ_G4?f-NI;1$cq$h1$lyp?9Ozy>V6Ki*_ zpUGY^>CqCOy~G2YAz=(v+?AYY@4*zK0K2bv3mE3ap}%ORl*$JX9i?cSCIl!kK+Nqa zb*%hl?HS*9-nwn^x6&n@vKvt!?=%G8;z~ zk0OKDUGS`j==}fQgzyjWmJ`8Xpp|`~!W}3+@c4|1nDinWxBn&uvtp+8bbU^r%Rk3! z)25K)lTHd;NEkw?EOgvvn4+eaF^gZp9^3u^gNn5DrMKdRP)%_qL^xE;HN>lx>z%HD z%L#Ud2t!3eu%DMb@iCtsiucN%@5;AtFk4X{bssCY=H2y8*mq(#VWefEY9WkF@a!u%No+T+3=<3UU_nxmcf9~= zoD}+&Vv=Gt!lGn?M z7CyIfI0C8O*Gp(oj{3okRHA(C_8x~Kpm!o<6Hva?LDLlR?M2bB196T=ua(xL+o~EY0;VR@h z%f;sP7cuoO@BX6Lw(Dw4Hy+iUS0u{b`(^7t_vdcUo3AUs*;vL{)VbIypofK?Lop8u z!uwoEpu|t(k8d#JA{eNgX5YWEGIZ{jDs{Ed@AG)QE~TL9iNLcj*LtfC`;{skYGc{r zXSra60R%F6ex!(a2}G=zB^F`v=kZ;2p75FmN;lr00h7}A68>SE zdATEY$YBIrc!nB*elmcp1GYb%ah@*K(V%~HNMXK;Lhg$0>+rgF_we)izjC2E$~O!I zRf;q<$12|8*Eon|Ob>=B_B|c!*#z@AG<6Vrw7#ATJ{vIHrOB@Anv1#d7S%%P;?O zFguu$dVj2?q~*u&cOQ;D(Io*9EH38R4JsN=lr{ko{X+=0z!O0?!3tA+js$?LPaM;N zn%0a}0$B!7thr6jcN-j{oE=nuXlJH+#>~6CQ@$oIBha8-T8HiH`Jl< z&NwF{c?|R>C7DAhY&SEr-)}H$`YS#DVLOVWD-oDNNLt;F zybI@LdI@QaAhA^Km_kx`w9+`Lm-;fm7pVNCS_gSNG&sD+cv%|x4HJi<^b<P$J`n9dh&X9563=jx{~HlkMli(~(%LYI!6%QbXT9ewyI=u)^vMt`H^vi;D_? z1_uMI-}w*?h5|gGe~^_$aKpq}1+JMaM_C)AsLvrpX}P6kCyhm{)Fs^y&xd^ zOObYk^XaV_Xb?eHXk{KKnHpjWFPx(+#1!b-D23GqO{sZ$?zfuJxK@1qhWggwjIp25 zZ@bsz*_W34EFT2P_YhE`Qy-0Qkp&soP2u?ES5rh z1&(mkv=6Ak__r!;6Kq{4G-g11MqkchqQN**C3?nk6IPPqZ1?a}_FE(4%IdN->r}Eg zzqicodG*zB4n5JYlD=ofFy(p7Lp4*FL{w=&jJ^Wgg*$kgA{(V^=y&`BEAFHFeGhXl zKOK=*#`nCZ{CKp+KQ1*t^46=nPa!f7A!fv(1GXTAFuJ>U;bP*H{*W*}YBqK%3q8Ip zln{J0yNIM^G&bZef!^kkKW21>ykbgoYdy^N`0OE&$KG;foC9Wa9B4-PB%vsm<$zAM zf5VcPMVP9CN^gg8ruZkj`5z9b*QTS!vYpP*o1Awu`fug7fSE>1VNXIm&F)D0?npPJAoJ_E&cz(qs%1NBCQL&vDJ3WCH(CUkTz;OT_3x1Cnx8DU!%N)UutK z4>+Faw1W4`*R%_o(tdUL%ynps4nFibbs^cWYH!;#VenG(%dr$DAr+KNP=S^l7cK@k z8DDKzSP;EaUbIvLa~}bRCYZkCZD9>ub%YOld*Uc~kL)qy@g>sn*pbkY7F*Vh!Z9VtWXb zOx!FGvk4Wjql(w>jECj(ho&<*(xZrJXsQw^3uB z87<34u8yPY1<4+{d#(a3)m2vf^PzhUp+l@DfCI8EYP&yY=%yZ{@8BGFtCFF=t z6RboS3Xz=AleMZQln&f^zUkHS)}zlrRpE?s0_+eaAq4Ujub0&0E!jVRt-7jn!>jw! z_B~X3^L2b87+KXF?|7Q^26YSUTB%4Q{%~M;z0|&;vWe5<#`71HRLT0Daehag_ZU97 zk$0%ogKe91qpeNC=-&C{{(FzVCWj7(E}pG1uSsM()Gf`EWUcLsnev_S8N<+u=utD0 z7Ok)XJ#N~p0CT-2W1BX^uwFu`Og|(_lVf_&3cpUU@v-3_vXTg-98@{s50PO^M@1r(QUS|Oy*5U$)J@3O*gT}4&X{R-r0Cj1)JI{ za@FkXP^$`15r%o7hL%PrFm6Hhr}PiNzi?7zoC8dB!SyBeq0M)@)mmwe`9XPx@=xx$ z1QsOc+Q^D2-_Q?5B{v~m`aM)R*JL#j@6~qN}I=BNgcs^ z<@MFJ-#NHC7W9nS(=JzPArV*Mw;MS-!lXh?fb#;D^?UjOfq5LVVqsG(W)zvk~Dd zuJ0qJ&bI8~0zkzRKy5(+UA}_(0Y^*n+5VUbd{pn&3HCKbz;EyVfB1puSE3&!&kdw8 zh0|#M>MFX&EuzKtskca<8tTbc65YBuXQI_6gJ#&H=|Cp?5MfT9SdzwifkOPlwix0M z53T>(25jO`ezDl^*&Z#4b#iiOSm5{WN4}N*94};e*Jr7Vt$B1bJrO9tQmlw$8noxE ztdOhJ*VD#L`@Qw-ZR=i`O1*xpm+-~v!r1Ld(OWk^Nq7if3BGS0xDp0BjJij=r#9nN z@lt^{(1U@q`ij&btxC*Py3zU)2;%&J4#cQq{09KJgOnodaiDK4g9{!{={n4NZU z5Ct+QvFHjhKi!_C4E4ObSkL{|9LWlWx<%*BMFn)d#3@$o9Gb?M84nCyg?&1g)y^<* zmm>pd=DF5?*ksY03Jl&5G!<%H8O|mFoC-yI@hrpY6pN@0vT4E0>U#~l)Ym@#sMK_? zm^y<9uGsCIT!?l42`U9amyTkJb51GIj}yp-NU|%{bNVnnVp?JMplz+1aK!7yRGQ61 zqe4OF&yRgwt`EyzzKgk^+;Zr(r|F!o1BQ7J6r|@;G zOlBY`8d+yKrUSIFmJ3M`y_<0<|40!&6aH28OA=~Gb z&FtOI8&6l%q<>Xs-V6hhT(f+81H0f48^0i)$KK zw99}Vqa1uTGhxyPlmGy;-55X14-DBkA{A4<3L@X|Zk1NehtLk439<)?PtLYC#4sor z^Hg`}aJ~3A(rZ}o)papHwM&?)`}pmHXI{DJxt336CJy!3b?WqGygPKLYpb!rKhyz} z56eb=zbMV-lVti7+mUk}j(o?t$ZT(cwpqUOsM5B#m)4P?PagP(8jIa~^&8ssf-QxI zLVH22^q!w!27^_TBg%yw>mRUXjD4%Al*;HEvu!XNQc4%d&LjMafAVun$R|P*V8I== zuow2NUVo%TUumy2yiyp8=u>F(3qTOZaYHMU?gW%~{ zz3s$76PKeM_oBY)eSw})I67$hK9Fk_YN5iqb-;~$%!B-;dhk}Z9U6JP?lY3eZ7(?e z0sm_WELJEoN~u7{VLcbNBcDu;Fg+0p?aSTfs%z|#TdAi482CZs!fjn!Qp$FW$$38V z^Nb;kbg!TI4^Q|8SNMPa;9Kx?V4?Aaz?WE0xUYc=*3I&ROLDgK)LppaFPANKsn6y6 zXW7WEj#W>IkE0*QPZkHh)$@ISsF+^e&I0KxU?KA2z=?__4uVD;6k0BJM}@ZpylPW% zmcQj%dRW1=*{amR5nCJgjMQU-<|4H(A|l6aA_*G#`%^FLW6%5jG#A4Xk`%0_R%`)J~iOFS-S40e}6}oHtP%p0!@TA75&x zMXAi`z2M{Ns~i%Y?8TpXrOAw4>w}-_%R>gC3hRh>BXgPfmZTk~cRhAn%0V9E@`qj3 zNaKsfwFB&(P}6R#8}=cl0>{~IOIxK2FvBM_jVvd#`3$p<``L$|N;##ZkvKF&0(1k3 zR&dzNWC2&+3>@MIV;k~dU{;qS-i3%5F(~s|Y-=}sg>Kuz!>%cI($-D|R)llGph?z_ zdk<7r1Gkrrp1H9tsaAR`&!4l9v*NWr>z&yG)2qt=PzI><4cYwW{+o8bL(d-Zd!gT; z{Mrm%!`cs5RYA^WnR8wX`(#S{49$RcUt%8xU~`J6=CJLQB!$^EiElCXW_z>@Xx#Np z*By{dFBQHWE3Gl%pQx7`zjgAw$rXiD8|PE4d;W4bpA}|$`@GuHAw=*4FkE|J5L4s5 zz)jY{4CPH4&##}QR}6a?@V)a~E$3bz*MAWn5VvdZ!`>jLOci!dN5JDW=QM2lz{CK( zlWiBWm)W1n#57^IaZY)^bF0!C8|qk3YbnitGquKT z`C(wjzi$u(zc~?mG}xEG1^x|3OwzT7ZN1S#YUX`Kw~2ki>8lqz<-Ta;*z8JsVfVf* z_HTfcDzM$Jz^}G8%9+C(%N+JM4aC>u@9`wrEz^AOQv@rL@jrnPz<&XuVk+V(fQ?B4 z`7&%CzoH=31X5bJmtXtEiR_*9*zxt{%fUao+M_`S8g3V<*Pf6^#l-USV?VEQbTD)+ zaADCcppLK>Tv!l({X6Sl_j=IG+^P>y^K0)PgAP*}wJTcRZ2fvd*P=bn`fs&JP!aE)NsbYn6fzc zxDf!ynlyy7W&)NJ6Jx{k4BjbqbUxJ|xMHHU5l@ChUt2dI6M*$|_o~tHl+)$|L ziHQ_b2<*=pj`tL(vVZFL4ig>NpP}m^#LbcUyP}{&pGNQAV`m}wWGoT}v{M450<^3(XGOrllV3I?0ykc{=SY_J>L^$D``H@nvUktE z%G}zk)?V4R=Hz0fYT?`9a(k;hpt1#*vB@t)YZ47CkS2Sq+n#~>SEafQ+CMaRN^L85 zxKUmv8S65Na+}8ZMDtPhXyN~?fm45*`+-8E;-j$TdkTP-}Z&~YbhWQ*k37d>bk$59_q~&AN;qA&tk#*o3IKdJhuRDVj+ph z$K3mfDr$Q=5$V2Kk*>PjQ=snn9Jgiv?wu0>33=0PrbINrvjqT7+IF)ae-FC@@g#tB zE19!m4%9<0cF{J~bxD<$iW^Of6f0kNS)kKjPABMAViRLA7Hl-;a4WBB_bi|r} zdOAeBkrW^4<%`0;g)rEgnnN3SI)(-8&9)$%IL$16u-7*1#yi_REypiUTvZF_Y3B!d zSSW%E1px_CENdn{wYZIQDO%3wlHm-42y&BHtVJ_Km9V5F1 zg|>f7ZbbQQ3N`+?f#moFh!X1<12G|&!0bGkX{4z6R}I1T9;P)<9gqLg(05q{Zh~iZ3rmbTj?QJyci~Sb=jafF}xfeibc6zcMLMNUl5H%`y}@GDh~| zydKav)beB>#<4vDfLpB8z7RER$Nu02065B~rT6UJ{BcuRP379gCi7n&Yk<2UrUn$u zV3!XPfCSzGmW+9Y?afvsj!?>?=@X38?W_oHW{9b1)x=zP%5fig)_d}J)UWMJraO_@ zsm*{<8}^?Ym-)fbEV3hbv{?5I{;~Fz_R?^Dn3pLdmX^FHp`@e3?4bEi8|!N(d2jxR z%^KKg+u4m;l$r{=ok?8y_%?SswGV|`w?~FBj0+@K=luvPhxq_g4u$%8%M$v9SP{4% zMI3D%X)muA9~G)B(~?8a3vJ?2()omZ#smB+th1*93!e{>hJEs2Z0pUH-MuS89QE5% z71gtH<%2hpNK^aWHh;#_ev^3#Um-wFGXFDs_X@5#lN6o!*0enT>ddj6!Taw7*zsRG zw=NxtP}?$xpK(e@=ukbn1rtRQZqVfz{4h}rG3~uwXFfp^zh+!P&;INID6=a*Ii*FL z%bunkAslCq1bL`L_`IgMooxTIxfpph)ig0jmpUNh+3Rf zefpwG+@{>(=A9#LGGBj;#joSmDFdG&|4hLJ% z&-~J?tYFRUW)X&pjUI z@YA_H?bpKRql-=QEEyEnpWNLI?@tdS!|jMbHv0s@{9~n*L3+U(jy_YPD7z^C>|xN> zJHto*g1Pvn`T1#8R3N#73da?IYEICVU|~BD*s&0@pK`BZGqDe}-=VlCg=M6zpRf7=s5in%Fo&Bax;3uktIWGtuIB~Z?}ZRV(4{L;Z^^%+{qijyqak))?=Xv@!^;QYte7DF-dp3J^Dl19H1$)@#^`$|>0fVy$f=^n0X z&cSd~jnFS(srH%(ora`$b_9RF{8KNjG&>V#Ll=KO^64hVgJyiIFB;Uj)mUK9mVrxI zOPk`{;l9!N*;AhCqwunP8;{P<(XY6Do?csngl`3QCQ9(#=ivaPMoi6yCc`gdnC8e< zR}eXTy?H%=%mitm@XxSS3nB}CDM5OUG${8K`^^?N>>`B!k^Xy~kZBp5HS1cHCK0Nh z@^M!AHlLtD)d~C@7FlDBWBvSSb_=#H~Kp4m8ZnCeWy3fmDhNvlbho3@IGCR%#y3Noo$GG--Rjt<3@_3(9{oZ1xJoT=F7lYP=HN{I-ohv0;}OEZ{Og!?dKPABZd!* z_OzDnnOah6DShUYx0B(^KkA3V!P!vL4d|yjsXUtd*h*|8#F2&!Rv;>Ph7EqrQiTp8 zEH}2dVAt_`P{f=6-FN5Wnw^UxmIpDtFTplIIx*$ubdRYRq8#$2Vf*(G=fbY)HQC!D zds|Oxi!XdMUsNg??|M`~*}=2)^o;OK!P@LaX$#Njh{mQ#N)>f*3K4FD=~HqZ&~^Zh z5G$&aPALp4|H5lJ_D7qMFw+^6xNx>EcwpIsVTFiTgJ~ZR*%f!Lw%|`t7G%C z-(TpV=ig`0j`Y|`OydT0Ot~m-j`MoZz?E!eg;YT0GygBeYlm$?Z}2Q20=!Ig^CIZE zO>>PZ&rdB}zfv_=%-?Hq8ZdIAnYp&t2LIV1Nl`wBzZ}f1bzC3YaH8 zI_zeUT8yEO$o}`$eLBY23$;plBkgrI1g{j(>0{>o#7mLw?^% z8}TX4510^y5O=WppotQQJh)L~a1==s1CAV{AU5RG>v^ebiO*j(YqX5p5ibTM;tpK7 zC)p{{P5=mSFv2ZW@ZCweZu>YdjHcCV+VuQ&u6tiw)jMIcGe?pt*LHO6bd}K^PdRP*u@h=}Z!UtH`Qgv& z%B@*SSi9+&M1yC{m3Nm>xHTQH_Cty?1M?8=eS_9Og`s}YZGU5_<3}>Y&AN6>Y8=@* z+A_`iNGZIi3qnNi@!}v zn{5;2cRGrhxMfs|{|y8P-zS1v>l-juF>b!6Q}2Qd$NV+?ru;c82-_FNpjVU}8RY+p zH#rim6{UFVy>K$V7st^Dw!ajx0GTw>h6VVXibkXeQWNH3<)kRA$l+Rhq2^)U{38Z8 zvu}t+30V@PuA7VRJ@VRtPk-(iaCDo9OQ#x2t33@6mGDVPw{ex@GByO4{bnc7$9Zjg zjMR$Z)N5sondl;w2Fmvvmcf=DgiM>_y=mbm0P)cQy3(Uq)XzkIBOKdi19=_}0>e!Q z8`R;Ei*Pbilja(+QXhzWGV0(k=ALX+cA6SQjTgTkT7-W9iti}!-ql7ZM%J|z9|7@l z_DoQ=xfL&7#ShMwv>MlTywY_WJG%ec5!LZ`ttd#H!U)1ghMWyzZ%4W_9~*e~RQ9Y` z#*kl$Vbg9e4mQbq7(E%<=6W$#|59=zd8xFK%mT+XJTb(Z`w((n7;?5_YSI}sHwKzV zUiZos9YD7JHAVV)cgFUV&L}=8II6Y=lt*+L)RaR34hxmDI~oR%Bo&TKJ+NN@FVAKF zq#Z-EtB2h0d57z$9#~L%IJ|YwhaB+Y6rNI9ryWr`*M%N<=F)YL{44Mku!Wx7LJI8> z1_L}TNEqZ!4%cfoO`WTYox=4LEl>9zxN-BCe4vK+qdukmJ8+|o5^GV%XI8C2iA3?; z7DSyf6VAZ~O?FF;H@yPMWV7I`cNyDEg-`3d-fTRtx;gI!B~t_tHGKn9G$26uItClg zz}FtR)X7s_(NnA(#;F=q)SdD@I4$o-&V^i(V7(#e_;E=f~KM=VJCpqEs(@L-8F{-L$d+ z2$5LJ0vb;ktZEg~3Mel{l#YGJ-l7wO)yU#j%130qvb_eXdX@K|DSILoUZV0z=$Y>y zl+o1U2(lZ*yugQq2v371+Fcl0lWXijG7 zFOONB%CWWWGJKM$78f)D?YFq`FqAND&MR|Or0`%6d6l0V2YDq8)gppCjB9;U-SeHr z?M1%>Z(mPWX$iD`Uwka;m*^Q^Ctn^tC5prh1#lWZrZCQVCy}* zc+LSp(a%IrEHsk%++}|y7>o{5ZQZSB4~rL!`8n2`*AwH+-C|Dtu}%HH1g8$3=dIbO z;_Cp_zj+LDj2{)&h;H=^#J$h?+IOXbL2rHB*D@>dSs-_oML#TRHsrkBRN3at#8k3{ zoZ8xF^2#)LXWIsH^CT4Rpv53>#3lA25&47xylrq+(UDL0mDo3Dtg14+Sa(d^B&Xc8 z;ukO7*(`*ANC8B)@S#2=ral_k){PwIS*_y8e8>f{PVki%=TPB+3Q+XX}5ev`Pn>AkyO1Z;OzG&A!+V-gCRE&(L+9wq@f#0LL6&uYK4fFiS(-s z!Pz)B@!^4U6_v-3ct%9!P|;&vKgU|F0k5r`aQNW{ybp*<#RfTe<_be%HO@c5%yai2 zTm1v&+`U0`M9fF;ecRSlcx+YJi{xI zZ_EeMR`P$kBG=4#oBi6o^yDWg8omwDOXT^@h>$0E4;y^?w2?QE0+MhXh(HD~j0ajE zA&%*f;t*4B|NJ#oPm$^P1$Tq9+LIO!+m1Dh-Z8*UdxK6|;1Lk*$|Eu{GwvX1^Lz99 zbMCXf>E5t*LCewyOl>dcSSa6k!@kFfPuc`J+U1?4Cn??f#fL_|3$yrpDg6{0nX|2X zN+leGMSv87_n>1!Obf_~6`ttxHk#KHay|*M>BlOp%J@cwUKrjdeO12Svd?K3vBKIXj$*b$O@@Dsx?xpxl1 zOQb9;Q>RjY=8^BA_PzoMWZECO0=l1pMnNYK!DxRrfuqZGZTp8p*>m(5RS^{Gm-6L*34WVUn${)b|o)^WynZ#>mo+9uspb zt21}|IFq637tXKcX1_~1A)|0W6nyY zMq|QDc5Q=W{hfQbwI=|YZ$xEWL$B{t-1!gH08ZoD?$G_ID{8l>0W7X|tqG7PxMB0ZL?L)~wnTt78aHg8R0a?{O z62WTV7WrX^K~&HRDDK7X%RQdua$k10y9B0R94s$P-L4)d|LF6cxwL&%d9I=8rJvlH z)dc7{utxs6kPv}?DE1jO(&Jk`%l8vvGS6>dg@Lwt*0FnRJ>-(t9u7WPNrrLy1R^3=MHa|?gZ%K zpQpV>vh%#R_=J6TTt*Qecb8+VtO`CI#BRgaljO0qVJxgx^)V?<7C;IY_&6F3%!cHb z_D0tCSShT@UWCdsnW>Y0BRTLL>U>1S>fUps{pKGj@Db2l3&hKWCi&uMR56ay_Ye)| zxAyJcCPlBiTv?WSBMV)c8F#uLU_MHbZUK>jqYgINAstvjmw-+a(H?>2J%u}!pH0u0 ztSqkt;hNCVWg*J2)&wRJr@MQFqxE8NR^!gQ5=)jEfwr{iM&-g#c5ULJ_?(JA<-j#v z0qfr-mBi1H9GNNnjg$M4eO#usL1)xrCpIrVJ7* zkSGenbjZaD))8W5e~70mS;BFBsHKT%1vCAbE$gD~nFvq-lZxK3`T|!>Qw*X8K%8X! zZ+>vRK_WB!BretR2h5T5VkSV^g zMWt7^%qpgM}!TWFYo@a^q6bTFOQp}f{+Jov>R3r zjI6VNOSsrYD=sQ*e`Qx+LMaIjDElzT4jBnjPCr73nLg6ferwfxNDdKs0|rqVa-RFV zPIDsZAx30@sPG%(85=wnY;#b~_7 zdsU^VXt(FbN@W#Gd8sJ>=C*~f`2nqlu}&qEpNlLCqZ=5Q%TN;N%(4MvRD8ZR)Cjf|?hP-kMM1F`DSJ8HOApxZ=wM1n!XA?~M46)6C<{ zcFb@U|6Ehk=1OBdG9A>PdvC5?RjWoAaQaR{S%( zXxpZB$m~(UP@0m=Ui*0>UK0%i!<9D`1kixmqP>y@1HnxOwqZgY_&>nO6Zn{ho!^Zv z-GK6gPHTYl|ACj;g@47}cNCT!+R@Q*N1~**@-_dWN$X<($ZEtgZhL`+3|9z2XNA=$ zgwTQs5f>G>Q3nsAXehvjJ_0q>0jmBeeNe9=L7y z-^Dpisr+GdY{JrzLKm2C4%#$zzTv}nS=G+3)6sMj{L?miR%J0gck}Ys*yu0F@9s&1 zi-m8S)#4RNpj6}w20`0sdV`YdeRk>Hp^sOLp$hM$Z_Y-Jezci*NSd9&&RZcbKLS&J z1A#{JmAdp9re-6if`2|MZ=)J{Z$uti)Zw?}OYs%+;eu-0a(4wKx1_A{_;9Tp7}J5{ zoah8gmIJV)ypw45-wmbzjeq$e(8h+fc7!BWTHGF}Cq$)MG+Nt3;hrKtY9^@zy}aYn zhhyYvfbsy?xA2R|cRb@9If^8Xs1tt#oSOLJI_Xm5Sy2#;K?k{e=GD`rq%`FYd$7_! zcpuQ}Q4+PC8Kw;EPk76VGN81~Awp{ZQ2SiC`Plgvgy?@L%V{#JmCW3@dY?cOH5;ru znyvcZ@F4AtfLnoBl0y!)i}6~G6^LvFgWd9u>CKVAvD(UDN9bFf(8MuG^5oo_cI|Cz z`-koVm_=s5KUB>zQrgLsyFckWG3P)58c3-D4t_l2GWQxjjwJTC*hq$P_iXa>tgG81 z?!Ni@OsDc$QM0=1!(!}@HlkJL(GJQV5%zAR8DFM5ugNGLnc$!AoQSg$nZ45vsAE)3 ze)xTReL>?h$Ea6K+tR1Hv`tiP)I>Jq07J8hy2%|QOq6j?A6AK87Sg+Ym}~NNPt^GE zRz3-(lbbio-wXEd&i}^i8LCO}#O(AV2f_Q8BNJG<1cQ1Ou4P!-moastb^L5JG?&*- zmUI+_^O*^jTol@eDni}c@VBPIPbPZP9ysvFNWX2(6SK#uPK2e1|(m^O~@5H(tNG~Zf0w?-e6ECQ%nzq2@|bT z-*shwH0+qdd~h`qaK>n^ia<}S+OeUK1Ta6yal@;P-iZbp-BBEyiLCUp?|ySFL+aXO zC2o4+$(Bc-^4rzVr0h~{9ALLU!Ri0K$NFmE*9vJ+7`}kMf_$1wp}5LW+({AX+f-V~ zQR&-9_a$ml=M2sS=cl)R3hh=tdN}=qNJZ7|w+}^8*iXdRdjEn^8+%J*Aw&a zw^nOF8n@!yE_I^K8v^1@=?Q9{x-ikuK8fT_%V1>NV zO)p|Yojt*q<2gIxfZdZuo$nOBRuE$%4;mgn?U55O$rJgm)zWplB~skHY?qu|Sv-LB z9|9tNLvi2ykBpB-*ku6b5R2lffbTQ-<&LEl;Yt&Q2IYY=67I43jJyA4=Os#~>nL0; zRXjB7v z8o57@9PhWQV++*IrCi5iz0{Vi@L*Q{V3pp>Vq(aC(hdA`IOdR*@}@uimS*8j+nQ3u zm!7*QrRm9#-$S%#p!J6eN8(TmzA`Y>+eDLNQU{n+7tkJ(faavMP}*VadSCHwQm1Lv z)1j9cUOyaAb2*^)`VZICdg-gE*+HLyL_X-i58bDj)ku^Hko(K>0mk(;m%jsd(e&3n z;iR8O#d|I+u#n4Ct$ppcIHOu)Ygw>VrUFX2h2Djr*z&!?s5{?`XS~)`4lue z$@e6cSMSm7{59jquD$ncUeyfJ88Wi#HyCI))Pvfv)xmmhxQxJqj0irNhlr$e-yU%G zEG*+3_2Qa8D7-^Z>f_{ia8^?6BYw&=yI+Z#QBMQVAO=@k>)GFoxj8cWDKX6 zl=Bt6Ax=yp6<_yMLio)KO3dLHzYh9LGmm;DVwH99IO=QTIbF=e=1D-D31lK~3_~|b zCyCD;;#;v28*vZxz1I5Ho$S>g=q^X!-sqC1?DoW0wDJDy%?yV9PREa0$vJnsu?32a z!8rEHz}jY{8yG4Jpn7vkv(0n!1Uace79V2rZN-wjpWSlpLs-#aSc&)L)2UczrHLJD zZm1>9Eib!ih}`=B$fN%%2!#Iq_@9x9{WT+R8G6!Y8d|owB;p~>|_f(R;ZeYSn z)E*kfe?8w`8Ibf6@}n~DJOYjEx|p*T7tNx11YxD0l*+l=)uUr$1l0KNq)ms9)RXe6YsROPFsS6it27bX^0ODGIEuTmm<- zkD~Zx&7+&zw319#-J};tK8*6S;iWCXmN|J&NS@yllSP@vac|E@7N=0$S zbxrU5;8U{td(%=b5B-v0M;JnN9@AvdVPOKpur^d6f-P=IhRrXOgcEXp{WzS*lf!$z zTkO$k#KwOuFj8+>hr=NDC!*<=%tO8t=-7&9Vp`9r7I*IO-7!g9YR|}#dKMs0>f4Ax zJ82Gsuz*H>2pU{W{aFm-GD!e7`9-h0ls{YMZlKW|x#+dxokFDxqqUTL1Nc-5BsfOk z?T%E&RqPtfaQzP!M;SK{;4b?lAX+!}fn2B)H)}%J)txnJCu` z%&Pg%^Y@YKX&j~Tx}^l?a24%py9KXx$o2WWP>U@g+CLdm)ncAzFd0| zDlH`s?Y|FzulSF6j+84RYRfHzt}l#07rBqH&Rn@Oy?u>7ClssRc=UgSsbk|!B9r$s zwUj+}XxUa@wEgAk&L_4TU_#V5z#5_bOaQ$XZX*UAvD^KT#7${DmXMQs<6n;1M2_gO zl`Wh9bi?udh!D>|6jl+0-#)tCHERG~<$-mJ)f#yVUrQ=J^2B zbin51L_h$s;=8l4Z7P+@;Xk%^J+r?t#f;BqB*)A^gks7*}K&tC? z0Y@$s?B^s5d_Ue}%++{`D}Ff1{Jo+kgOwR_>_*{l#{KkuONmS&8;zG$2U_n0C}Bj$Q++DztAPDz zVqWGy)LDxtsU4`C^DA6_7}pGn47^7$mfTS6bwH{?9FXmQw7y6<@<}H3+{2celfmy| z3Ukd={7rk=%oU_dpy4SGE@iU=15EA^hB;@@zQ= zMpe>^t(8dIutLh9-LS)-K(XNwhnuHlT%u&8gWfD|lRFe1z>EDz$_N#`BkDuCwL!`q zez~O?5p-u8s=1(H8$@(0ts66P#L-{6c}8di1YmN}tZ6sx+Pg{3uMC_^+IvYq$!nYP zUxe=C#+rb;|Lz;JFSl_jtaqbMUE+TOFF=(V(8B?aBo4XQ$+m!oPJ&LB8J$NlPalIP zuulBmcK2}WlVCaCLnUdXd7#|4v@mAk{O2S~nbEDc2_#(5WdYOjI(G)&mR~xRyD!g1 z82bN#I?E=IXz$4+dAA1XTEpFxhVY>ng)Q&*yE3`~ZO_=;1g^OrJ%Mcot@tz;xmvS1 zGJWdHSw}}ps!AgrV_do4@t;DCrMlj1WL4VZ0Iz!m_xTi9j#>^rnicM@xWvWpO#jMuVsbjsIA`u+oQI;ki?>(O*AZvWXzkh9?m0;W!tORrw;v+ zmH-W_KAxc4X|-|T#(d`LSe z`MJLE+eYmax!v^{6ICCrqDXvoyWD~GJRuoYK)@d_ofI)VRhjs;-)Ln-m`7~;Tr6t& z+Q#5pln_Cmf)JZNiZ}3&86lq0=PQ^3OzZsK;#b8Pdx!pF=JWr~bR7&Lbj&7&K+mH& zGRyx^(v*pTdkF(Auj&od$JOf;CD}(!@GReE!Bec8N+M$QwrRUg4SvEURB(AXzT9v? ziQzr$+-mJ$!hKHM4qLU|`x$5E^j+uv{{BBR+ZL`)q}wRDridv!O@DCvz|PkCNvgom z=h&c?`XQq1)mf5!9WIZs{cP`T$I2cK)>)cuQ5kh4u~+D*y4b`^G-zr-p~ex%oS4MG`c%+I{f$mgoe(%H&$#Jz zR?MB_^vV(@U&H&>0`q{eV#lfzg1IZHm!b;MF?dGcD&4GfWY$CqzRTF-csAv5*N$=T z58Ew^rWinkC}0_PT<0}i*`iR>={gS@h2Q;40pUc;Ih`?)i+d9XkNL%^H47+5iD|j5 zy8cpI#pQBz$bSLd|Hj+F1&WBFc-vc9!f)8u;F(5@SOrC7$b?j|C$h2p*@)3A-{gE* z<9wB0UIp?#_-;%)1n-;y<{!(q2RpGBPGVTu-#7Zg@=HA>cB}Zyh}cz2qrugoSQIDb zMP-Eu|HWRNedYJB$!K`dv-2_q&bRM3U|dLMl{gZHj~e+EcB_03HNF?N2GYXe|3NkZ zgleA^tfb3%nac9PuAHyK{zJWF;@H;#+z4DT8Gtv!Zg^Tnki0Di(mr62Ye&u`^Rmlnt7!Wc&z*vke5s(826r z@ITrirtIq>HjMdnhn=uX6^pnhwnZiR_2}%qdw8RMwOUn`sFU2$CqoB*H)|I!A;&=Q z(+Ib|4X~X2(xcG8U8}Hr?>tRmp5QxQt;ZM-Hk^j^9iUuSt>KRIS&Jnue5~pT0BbVE&~~e?{SRl9L7T z&MB7qp`3S}`km`JW56$-iw0-q4>&6y2_t~Jf~^EQPii(5iE3B@D`cBW@L9=8=E-zx z#mib>4)>WI{CYHG|KBF#R!9oZl%jGZ`4M8B9C#Xw{3Z{9;brQLu(Y|Emqog`&jTwG zL4@|9e+kODO5Z4eywu;lHW`ZTQ$s|Cz+H==xMARZ=yt3)u?tg?o>b5^DZM=F&(*~B zJZJAIsi->G>cjh)m--96zxvS;(O>ovZYu0O7s{_wx4A#&iVV#q69g?ekNl+_%p;dencB6i%b7d z-=}gzEj}?{A8X>2!Pmjs86u*3V7bRR;DUx1O_RAz{b9TAfBtLz9}I{k#;1OE3h&j>PT3=Ym*cu!kimYVM{Tl1KR| zc;ez+G=3C((i3SWKAXuzWXd)y_7yOW2p?eSe87Xst+&<=IUQY)expePlg{yaWz+gmN=_IBP28gfxKPTso&5FJ?YcmUQkZ zAk3ij{0$Z4(7;3rkTDjCadu%axQ$ei_uH2c3!&S$SO=)i$#w=pJ_1k*Fz_Iq@q>AF*Yc^q_oq+2W)r_UrOExopwTSG$~puyf$lfZGH#1kwv?kbQ*Y3Zrk0ffv!q! zWYPQdr+u2})^*h&@Qnq&1dl+>vuRd)rAhXoOaJBZZ?I@yVykr5>F#v&ne8)q9xPb; zU)GqK-0kW+Esittj_X8+!F?l`-)oCtqI;x*<^X}jkL#nstJcuazm++D99Pl zs5b%H^V<|qF|>~(pnx8Sn*eow1n1UtAcQ|wv4+#$Qy%vYe@e-{|D5^ZoXPB#P+wy; zj;O2|9?%6+$~0kc;HU7dw$MmbJGHF7@`G=K;146IyORRTDJN_JPnQjTHk~>8TFKA% z@b**kIX1^shko%d<_Yp385^K20;N4EoCN#;w}l75v~TQ=uep7%J(6Q}t6!IO$wj&J zV7K(N<7<6-ETX7J#XBbyPp*0-dFS6j09;N(6`E67evx1v}(MR ziE;=q@xw2Kc)_KNIO{CX<#U{D^iyrgY~bga@;Df=)u8j`Ww3r>iVbN&%eZp|_`GxAOMpArR6+&GnxPEVi*F73!<*D$!_1(RbcX7xu> zc337DUaXHA{@d>&e@ebof6I|O$KOvRTY#!*b=@KqBn~mRK=Us_y;^N673Ot9B-krJ zX1oBi&_%vb7^m=2!|jnKqGR@edqPn;i%6bSID6iH%v27udsFh{;aCYhL4M^j7q3RH zAFygutww;zm*hUA+#(MPIlv1OSeZEzTB_w@R&9~W>8i@~@AkEaPN@@b3P!8^b>2LX zxi-}dF>avegI{{A6Z6O+c;?LlCvPKPyP+&g)yS4x>>T6Y+F9*g&*V2cKYf3li;ieG z3^nP3sJ~Srrqlyz1l>L6k5ELF`tthbZ)^CHoFq3)o;|g$s!YXW$Q2H7%38z##Z(ek zazPTJ@g_iCAZ)f|3Z@An3lUBfXRzohQgi_+`abl-3Ve*iu3q3$Jk(^h*4JHd?<={H z@=GUf;q-;dH+n*|Um&xboy??YqkXqC##I_B`ZUHW1rE$4N~mk!5t0{|xJtWs-{aS|{}!#-IC9csOCi^ErSR3K+NjK$XXrzLwEL-O;}t z3gv^SyXHa|e%Zhc3u^&@##GwxYhLv)=K{q3)a+o4504&zUxu6dC0n8L4qS<@)YnnK<_WggEjH*D|$5kKCw{G{ZQe)Cw8yWo#Rt?E}k3z z&cl7O(VF|=>$&uMXVcoAzt(Q%eQWgI;_vG?S>ZCN+p2;*V=0?fKQ7r}IGUQ_(6YW8 z1Rwm*fH<|_bWcKZCh8mAm&3gY-pyEHe|EiibGxEOoaw;z3Mb5n-$KdQXhmT>--KM3 zpp+nvz-y}-Ft8R7^aVMUi(YO2X5=%0mTcB(e^6m*e9ODHHKbC)Z_77+{yY<;>nSC8NC1n`4 zfgW8slZ&1_f$U7!s4e|nMF9E+Rfzpac|#twW$lG!z(HYhpOsq;k!X7|hWtDgPOeIc zJ9pRCKK9I9oG2@=tL5|Q+Z@Y2ll`J$Cs>lykaNuLCM>K%X-CHaj;|H|UQi>1=OHBF zddYd0T`TL$`dm{4(p;>MUpy+u>(d5oGxJ+`xdyS{tG(`-pnpbIaLk#9%DxWA3&}#a zlPxrw;=|`(!&+47jQ7X&%1a~>#9cai9y|?qj&mcMVpPi$p$e!F(qCV#uHwSX_ z76`cp%M_2o_?AqEJfUk;n>5j^p$p&N?K3yO6m5R7Xco}gg2mvy0OoiG`3g)We0Yub z$Atv)-Ml}UB26E@tbgeG z0U);3&&%&l8XbhIZLK6dj>tOK5pN0AK5g zYP_Sot9!c#2zGUlnP5A@e}?$M^-K~XSj7AuVm`r+FNa#zeB=u8< zFo*~X?qpiAqQJmRLbk(I%q+VPO#YaK+d687aqL%P>OJo3_4KsTM=S2)<6FOV5N|5o zb@|3W0oIozvxlub>hQ%lsST1CF;z-Qj#Jw^7!CX0o0`SD5gW0LTjuk&Y&5a=o(f%~ z2qs^JlV20;Bl{Da3P(m-J=}?jWRYKkL{7=J8g<5d&qpC0YU@v4gz9shTTL*GpINsY zcGpE%Rag(r*jXgElg`c`k7z&c0e}FJbjArJS^*8bvLjTEF9qb1(3jx>=FN6i3T)3d zY9iZ_!}l;s23&e~M24+w55DWkdU$ZN;nuvPo5lIG`E@u3K~bStD*hx>F=^6xzer&7 z>OrcF9qM{@<)gDgiBHYXywj|nO8ilaZ|dgA=rC(12NF0k%r2Vw!8y!!( zm+}@u&#i&#w2yd(7es$qKm=usme}akfs1X(PKL1Bga`-$UA4x}|L(c{6c>ERtlw-* zm*$n`BE1Hr^c1<&ExfKvq70&B4zqZjNW}kJkv9poF7Uy@Ew!;nGG5OG z92u~{y(Z+R*`ROhU0eTXSh`#7Etgw89mv&_XSNyK3{^hpYM6KzA(9?F*T_rQ;*;?F zo+A%DRWNI<_KTWG0%BsmnSHRBq(YaOT0j$I{O|58k^S}3(`EHIh%5-6{?i+@*Hqkd z%U&Gl$s7{K_6O@L3ptWtRb2FqGMG;5a$BM9dR{fK+{#wW;|uwyrA!bFd+A)-ESi&s zc;gu$p{ZNN0)}h2i`_WqGUIt_J67PLMZYm|{9wwEdcm#s*C(+*5(ck4zIg=HnHR2x zn(PU|!bKCdR`Q&K1BZdD{ySr~Vc>l4-xqb|*+IYd<+_@0#(car5XTXi(8R#b=Nb5f z@;OhO#gC$&<#lB>4{wAA2ZvQ&%}-b?Ostbo;s@?-ld#RrLwjil1=>SIv7&bl-U*VH zeyhX9fZ4R-8RoX2zz$2-ZZLpPIB9bBkugS9vT_;X#c71XGwWv(5~wveT%~6Ekr_vK zVQphbZ^wTqe%3dlz&HM(9+wio;#ueGjQ_tzv6z8?i-n)FVSvXFzg+8{Z)L83dDW}4 zSL#UBL7J7*eQ76&Y5v?~-71HzHx=gAT!1c7qPUROH5~q1mAnU3X}%O%I>hh{oKFS= zX@qC|*`~i8c73l4o_s<-Tbz6sh`qMM&jDd=*GM6LvDYnsaTQaO6>SL5Vrg#y*Z|si zkoPS7+=Gf-I8}I1q z6WUsbQAx!A#o2pCHMy;AqXASpNbf`iM5PJRq{T)P5i3Xyiim&^krrwYq=*y&fu$%Q zML>i|uM(-Di1gk>L@2_u-!P23o%=yfD*XzEn7g5per*Ntc#r3*A4hCS5X@c%`o}3RVO0*BWzlVp1k>!!x*J_$Mpy1%&A+B0jQzC& z9cKiO2nA@gfBr%4PRAc8G4vsce!FcO(HZQ(xx>Q&Nk%<$vF);zY|PFCHOQrZh?es$ zqJRAS@wi*r9v9X?BI$wro%%b&Y!OtXdcXqxz*|Z}Ex9+iVO});!jh=jgnx8 z6lS>Bd|p?mwgp91-C|%<0Qv^d1sQF)SMYMcWg`ai>DXYEl`6YqL#otnGoy(0wW=Pn z343M4v_{f~aj6=6&8{+25iHmeB%8#CyQ^XOE2-}y!a?7~-|fvnhqPd5f9Fk(C)7mU z?ye`|PE5K0z~6@`!O%p{Q~9Benevm7q?J}Z<>BDt@!Up=MXDdnho|L`6(5hBMt1%R zJ$p#$+VgJAy*<^JTQ`{J0pza-Vue#rVH$4-3onxqaBm@EO3`cq)AF=z1ywV>Uqr@C zo!L3~GUs)zhG?WTCI!lt zMC#pC!V#=e%uWVhiK$7;t|_~z$05|4N~H9j9KX|hj-+9n6-}Rn0NeON$sl8{$feoz z?VGc4zkh4K5Bshy9D!$M7XGf6Ok)Mc?hRZNlKX=@3OpnOZbb1UAl1koTT!pIUVD81 zTgqZ*;=N6c(~rO3I#&gn{cn^gXY%lvXwWpo5I!P=bSy~$)-@v)5{OpOhIo{27vqDH zfeojs%22f%pG)vZnPC3uIe_E!N;7GLP}DtWt{$w=_vxL}y?)J&Oy5VC+RyoT>3uc= z#^o<;EP#MtD_nzt!=DpJ2*;|4P%qmOOxAJcCh4RaGm66Hefh$17bxIFVAhXaay?rw7i>%G&fnH zz87)wPPw3q8U=UYwykLYF<_Z+;&s4cGC&4dc4%O5FBwt(k)&5b zVz%vV>dHQe<*dIkYKt|=ALiM*3P_2N1CIO*U9OM{aWT9oWw*t*ay*b@PFZ2FuUT@F z{m^6!=cvfUl%LI9jS|HUcNn+i)`ub9cLi`DIU2BVge`0wMoirOt@nHY~twG3k?s`aIqL|dcr=qC@@SzThg3_l-6G`4FyGho!b|>q}^-UZYG_%AeFDVTdZwOX(l!|`^UUPMCn}oG&+6dhVHl4!JD0R zCBrH}xjCXk%;)vkL^nnhLwsZbk~TXndSZhLO_LN{=b68xcX&{BHgn9zEkRy?=i6W^ zE8kgpo^<}>tY@kTp2)>I5_UeL)olFSTuK!wW8SC2bIy#PlDLNTmN3}a?UFB6e*XPV ztdNU7Z%D$4&us!1tYDz^Z+mVY)5Pg;E7G8!W|lKKHK~$wL*I|Rb9Khs{Om**d_BCF zylYi5P~?dF<`pr{GHooAFm#hwXZ_LnSqr%G5<&+Pni{I(JIdrKQ0@sB=4OOT}HXu)oPIv?)H1o zZG(2+7vsxU?xL>H+QRepkhR7!WlZ6tTMTpn=xriXjspSrlt_?Sv!kH%wu)i%JuH;s z^YEs3$?3Vjp3IP)=aa-b*mqgm*7Dpv-aC}wDUy32)5k7TAx! z`Ot`FNwvOD#F-dXs++~N8sT?8H~G`2FTS49d3MCSQAFJ10-Rv~J;UsW1sMc3N9+Q{ zDM`N60QAQEuj2S;(_90A+tA(?c~Wh&6ug8a;Csx z%rG;P3p(Jh>A+AFQB5G~fs2B-NdmP3k-#(kc_V6T7MCtMJGj(+O6#nvN)AP|upyHRaV6pEmp3=B9=;KiiofuOjJyF_A{ zD|h8_$HeLLin3AdH;OefPX%ZQY>h-B2-`S{>^gRiT|xF9#clq>nf~AC?01_F2hz3C z)28uqIlfPR-3T1L(6T)jf+*>f>j@U3-6k@(#Yb9cv}T0Y<~CH#_8hgs2jn3q)R)|k zy>XP_VrE{p3%_s}lZvGQObTkw{U9(r)(2_0yi@oAMqFufdCnn=|fB< z23%S`D?O&ml#-0mk=IX>x*OteOpaE%-k~o{-@kF<#PvJB0U+e^y21zJottsTZ1jsn2%p$m{khTU@5o89;Jlc z9$d?=C@G7nkMk`++2=F=Fos#|Hj-{bT<^i&C>xT5?4oDL!Gk(Bu|dx;ppaXldP5C9 zBW@dCVN@mKepY-hAO2n?n#?^q0&zV8FVUjxk|T+`&&%UqYz2zf4%-&llhnv>bH>Lf z&T$;7P9N%O<&TWGzxfvy2-*mar>J#zk`I!x)uCt@2tR<8s>ZMcOVdt(_bLuVhs|A& z^~`R-&D)}^2WZ>J-M#3S$kwl%=TNnONLuOK%yC0dU-H8AISLQaVb0*AB$fnk^4Ew` z%!=W1@Pvg$(9Q|1{%Cim659;5jwI-lc&T2ZfTZzqTy^_ zYmnsp#SsNB`qfQWxz^3aXwJ(PxcW+GzR!LsTLuJ4gQpj;{c7~rpow5KWrv86@L zfSaZ%8d6i^rsyKcOyza&rblKm@rt)J5_pEZ`l@9whxxT(uI^LGpl24AkF&=BU9Q)C zxJQq-5k~`chGsdbw1wxHcs&!6jnlJSFr2h%`lxzFKK%;|my@F&3 zmNBDVr=6j!NX9-3JQgTNe@V|TsGUO1H`IJ6TDZRp?@Cn3BzlfSLz3ix5$X)3XLjUy zgOsyeX5gj1Rkex3_m5Q$x@Ff!`Y*`&c^)GA z0yD&i8I2p!cD%$Ye0;3vdbqdqY&@Uw?3#wjpsbmqSY7P-ij(#C%t(HWbH`dZP(ipR zD(2gndD>|Lk{!)=DXgi1WnfJ;=uGd~s?yTu3Ttzdtv}o6*|I&)0hfYKM0XT7g@Ae* zUj{|K0K{;m!F>?0^*Wb9yR>@h1B?D2mL1>!u}4GEJ(0ZtJXis&v3=43 z34>#9UQ1dLjy?D|i`NWa{;y?&Z-Rz4rQhV_G4Jwrv|XCtTPei2v|Kt{jlUjL zGe3i?0=Aa|iI6Z6G^b2UbY4^H>pxoV*@t}9tIXFWPv8INk%oaC+t=mz{#p>4E21bG zV1WPF2*Td&>Hzr;y;yPG8}mZr7N(_P@AI>X!phaduWV1{W=lzrCA%KmNvJrq5Z?rx;HrALVU2S}9t(=b}nz??mG3CR2x4dkz2|UV?dx!~ygHnuW%#6;io_d6_ zv`)#Rfy^GgY}u_$?p0b7x5#{dn!F;h+@rETco~1SL?4EU;$EvF-X^C2$FzoYonOquwif9b7rQuIp~MXO)`hs8*i_o#A?oTszmwLt?g9 z15QcTg-PhtjB!L8mIzGdR!%;QJJ;)g-CG>o_sV3y3*7<|GO116~5@n(m?s#JF-;$zhPljG6~DV2W~ zn@j#^H&v!9D9oWwp5|VkrCv3S{rs_Z8@nP}T0SLqz3&U3N&oS<@o@oGe&tg}^LK^W z^3MvOmz1r*IX-Bj)Y7Btb*bK4qwm6;boFlixm?h(9nsKIk>*_kgF^;;jR( zb=7%RIfq^lH!A#kLl(MaX?xoEKA4w!#zr(;Y{lT@Q|sVLmZ4<8>YN^80O~jrU+RbhtX>}z-t^3ym zVFVBcq^ho}uAm-Oo}?IZEZaQKEaXtSzxeef1rqFQv^8 z?*OV7YqA13U-tqH`XNr5VcC$5;~aGq>hsN^1WweCdvP#Cn`EmdWcg)=i89`c1H9k# zr7T>G5+yc?%n61tZ_fA7z(w11#28^pG-&*3WJ@||6FX|7#&-z~b^O7iaje#sar;KI z)qRQzCwQl=W{QpCOwiD?i^}!ZjZoEX@A^mS5v^~Z#(RKS1G}gnD`;&PYWfRTEHzyr9e$3R}IPU_1TEN_y9tv>ZbkU#LV6)A* zFr+^)+E3uf)F8ev?3QA1&_$a?j8%@WpjNF!8Yr9Y348S~HtO>}m1W4k|@*PFq{vGxK|Lmj|0^qJFkBYDOA| z=NYTMK??y#(#v9kQ>iMJhTt2l)(Gx8Kl9xid^V+!zaRhIbn_J&+$hp8XD(%bj@q3C|;8k0-5Gie^NGXN~I4mwr(%1>wUd+1Hg!XL&-E z>k=-&(MlOTG~IN!XIiQo)*O^e+MWq zmin@_z39KNfWI(73U}kQZtqO9okstcoez4KVuq{8q{;7B9o!w>s1S~F`kB#GWLGnQ zIvcJDNs;~vzzX~fG&xLT5-4)($v7kUgOzD+gI?D8fwK9JQ>^Y5=XbpF!#=2;BuYsZ zXMYvm#V%|?Y%htvbI8Vcz+l=2XQSQeb1zr8w9@*nEssO!=Bl%T63VeU^bW#1Vb0P1 zBHldz*#yt8h$XTL#ex z7lN$Nt01EANcNd|$(q>~6A2TW0ad!n=CoMUy~q+vtgXm6<1gv4H@t8;pI>g7@ZUTR zKxI3%#JTpNnTLn=7Z1=N^YzibD`0WnVbp?Zh-u`7gehBq%Y-+T;M5G{zaH)@e#@bF z@NRbg@-b!7No*GwDH&hEf5WKR34)UkP#uIsusp#tXr z>%flx)(0)Y_u$+nfJ)loBSc@k+&9rbO00j<*}wL!Ra_RKs-_P6T9kD&Rzu1XEe{!w z1V0IC!;=Pn!M6?`F;a}CK=CG>Gc$$H8HDFiB7UB}LYnyFQ)1ha_&J&DrOMaa<*z;B z@&*^X4{}YMqtgE;*AxLMBtT|%QZz`2?=z*SHe6Kj=|06TUI-BvQD3smLdUOMVo6nP z-0a7x(3_$U#j2Tgys%q?lrm!EoYHq()IPom^~&G$=kqxP_hg4-zVmLvKcA|qqh_=1 z4RnQ%8lAe##fhm$L;}vV9@fXb6wjs<^?kb!PwI}Bm%lt7s@5Sb{g^RddMiZk2ViDX z4epuN0g7X%Nh6_NoUS)(*-q9r3@EtECfT#p<)o-PP`~n}`-Et-fyx`385`QLr9q1% z5&uF*#6i8_v&-$GilU-&H|esgv@-_L?7U#gEDlHXNL~F!!rcWA5DgusXqyqICdc!d zP2yQ>De2>C7C|cPa4y^Bkz3b}R&^a7>}&bu85(rNb$^_=yIMq5Lz`Jukd(q9I0bcW z@XK4f@jnAs%Of6J>a7@_Fc7)tA74R2+2h$mXFBY-7IDuKg|LnG!e5vs4!fFc&+`f$!Lst@7$NJ+J@ z@Uc$Y5=W9&7Q+bE&KAg|z`}N7~ZkWHV00sEU!JyD;)|%%`>?x zdh2R5e;S)Hj=N*2kg}7Pa;o1tYSid;gi2Jj(GB^M6j~LiSB)d=ar@HKdbDyJ1YkC6 zN1}nQfB{%ROmG*nGIBMIc`c2Y)^b#z&|b8dWRbFeZ#GEKRkNPj6=dXoV%p>}Njk0J zCZBZXKmVvJGmwcc2h>OG4M@feua`}Z6i zqOdCcllph5H^z-@*5;Y8zZ#e0lrt{&hbZ*jJ>1*2`t*odl?dEU_sp<9OhLe=r;6h5 zpf|QW>antHehLQigM%L?nl#XHIb8(}B6yE5u+GKWUR-Nkt^T7G0AsF{TimIC=;$SU zdLU_Jq}X%&I~lv`OD2OSW&$=UYdmu8?!1y9^aC@dca|9Ot-!{m(syM1g{XH6=E>Vn z=-fD`zpxbTl6t;6k?+e$na2p?<6WAd(9PjBd9@yHN`Pr;3VJ@BR8ePaE<8roj+%eA z@zt}OA^km27v=)H$zcttu~K!bbudjLd7*dgVN&xbTEF+dV~0T~fT&el0*dd^XdaI>t9p$BR#;iI;hv0tat~=B2FeWBWKTVL8*e>%C-Q9Jg(A z5$3Cu&0$*#!D%9IglVf4a|m1)yBUi5Jh`7<0;VYxT*H%W3- z)LZW8-s-v)cBA@UQFL`QJDQ7}c;RehIK1UR{wtr~H6-Ydi%V=a{~u8D&CmU_AYWLX z@Sf}Gx#y4}(}=JtgFlWHs8xrDV+b!X61ivc1VxS6nyKTzo{Rf09txO0-x|E?E>W{@ z(F7;nQX2iEG_gU3QzEIyj0^w5?BOD#t>Qux>`{sefGPF))U%?m-E2pgGMCfeFhIv8 z19(Eu?I=)ou{Z=Fg@c>MKSTC>{Tb9A!ZT($>(H8_-I+g+FvFhub^PH%(;ps`qKyF& z>d~n#t`D;r+_qQZE*Ys!s7_{6DpLTs>LVOX%TUw+ZwM1Ho4i5^Aa#+yK%K@vcP01owEW_tq7z2eyUx;4xgUBMuJbR3aBpJ(uS?$TJ8m~lA21Q{1DMkP zQtzmM#=u}6f@tZ8KhRx@h40)9{8xeG2J>&Xf44#;HbMd=@@ZE{zat5{A}Mm+?)zfG zX1jKNhg^&Z-nvKR=)IUnJugUsM<`4LT$oGAabj_Jp0i@#LxXNdH}NMO={||vvI39{ zyd)Jr#SOBcd>S|PA|3!H6 z1c=fne*fP1u6MW|6Oj%JG^jO?muvNYnwegdJbB>$SB$beBH z(j}!A>2f3xzPzfq_}mBLtBk)@Q7$j_a7*!8$%Q?OLwiamC+%ZK24)x#gz6dMRn++P zo$ZWpfHJQ~klXFI79#H?Zx@A8b2k!M#z5!P0Ngbp>$(Bo)9>_um6}~I>NpSM>$$eb z6gR~1;Vb`B=8F&-4#4ZxLM=Vxu4GQiEbush>8Jwvs)4O~K*ucC?(uG@0>%`z9WW|7 zeeo|0&O{O4x7Y+J&XGrf_lOa(v#9u)(xDXckSdN>v09wxS5QK)*G^^%M1_8+H zsGZFO<1wFWJL4^wGxP%lBj}i1@K&P8a<7pH8}YlmAc$gFNW?gyPZ+g=RF}ZK>dRjd<0aKo&Y78KtG3XI8^uQPQO~(J?xWWw<){xZoh5&s-1pRR58j-!iJNn0EhJ7n4}1Rm6Q-Y37A1xWkX-Jj-p4B}lxN$P<7tND`|OO)vlo zM*#OVd(jbKHEuA+fDx{r{g}q5(2?xGw`q3Nu=BTP=_VtZ5{%p9XAN~m@-dCWRiIb_ zNaDjq>__|S^&~G5zyT)cpvNu~NgIcFNBq@IW)|04RuC10sUKqgbk4aJ#Q) zaE-^DiJYsg#kC>Dxv%OGO)P|$vx(*m%_q21A5W}YfG-;VuEH%Mmn^^;?WwK?JH`YJ z{=U5R>Em3<7EfQG+`}kc(x^I26UL={AnJ4U4e-}ah^5=a4TyUcNBIoR0*wa%^}_K( zO<GF9-(X;iBF8OgYwjgEt}fP4}$OPD^Yuo??>}%r$s(BV&jBi5?p?q z(7ZD~rKyPrdEd(7vbkxO0b_`|+o=GipXhN0&F@mW_*vv2rWH<61&oH@W`TlWUxp|ueEU&F4vm=t-_>TBKabt>kC<>#4Cm7aV89zEtcJUUGy@?Z%wvS(>27Q0+ z8MDm<0|Z6s#ip2IFmVXtl0z5@aHxkh=&$Rg2=Sq!^~#j0*@~9bcaBBBM?Ve*cA*Ig z(n&cFUrcgwf0Cns)HVt@fwGzH(-dEjH?RZW9HNVYI96?Eh~@!AUq4FUj6{5XJgR3O&ebmLMBE0YnC+ueL-HPPF~D4#wv z)y-}`e!KhncgR22o2iDGj5yG)|HcHVlBgGdu-pVDBWE$8k-lJSsQ1q@5?iqeU+beP zk3-|gQlS?37zi_Nxd|e~mwA^lZu-*?oSNkbJe%t_|Kc=jzP%=f8$O2G>gchdqsiDj zgu{8vydorsg25@*R1Xngm(nQD2~W{GfHZjB{GbYw0FH=#`IP^zNuL*-+r_+cgx8R> zb49(+uQyx3l2*g=&{BD`VDDQs_ABVqB8e`*ks4m47tuuK;o}%82m`o@KR=?r*xHW% zIqIUp`|VBiGK&9(`sKRfsUMf}C!cwQf*Brx2l?{F7M_aQ_7CZrZJ4u&Gc|SNA#mhu z0Tq4SfnL>ct|^}(9xr+PE;DoTkSxTj+;d6jv0lhS`0jCyGuf}vJq{DS4zff62qeD5 zn>`dYFiOoghn&jZBTKaKnLfawJUT8#}0fbTIan89u2_9ZA25_s_Iq_Pz1jKTk1s z3+SWnrlQ3?<8Q}bID%d>P+@61vwn~z*l9mM5plB-wj;6cApYRXf3@3~_jti~>)mWc zffL?F=`~k-9Tlk2AyfH$c1nXf={ae?;5m#-_jv$l8)t|}F!7=x1~@t^5$?8^$sP2B zPXjv?nuqIy+P1eCU%~Wo@3s$4Zh6@)TkV2Ii=l_5U@Em|9e>?}cr|FEx4}nzKx~~x zV?a_>nK6F>UJD)sN*&lged_I!MP4+`tzF)bcESe+({^H})*ql`%KQ08M`0P)X^U9O zg2nzircoA0h}&OWwFMXR1IcMs1PFMzsaKKAIUl$M|L!=7|1|0P?xFv~*H+>XapLl! zhc()EH(G;{?{LxaQ8?mbEKQ)Ud0Ks_9L}%=!AV>%oxP>awG#i3$urL3)~shE9`PF1 z_>DG8<*72za1r-TG^I>TGG1C7_)w1(7S@68LNo!$8d-*?iAsS5DUp2Jf|#3e<+hda zgqcI#&oaixzoi$r1?g7QD*nEw(D$mm|0_$q8^^O2S-^l^{+|i#|NP4Ex9|T<3gz}d zB`quiLnwp;QZPOx@-w1dB=u~$73yWM%=FASXRv9aX>MblOnp2VEgd`W_h>7G`{bp= z2q||lO#W2}I4J@Jkui&1U1j|a4Upiv7k-FhkQbL%dc*;A3q>Pr6bsNUyy>j_;eDmj;T)ce z@`~=ajI3RBWF(B=7^R!-wYy1X;fis9#rSYM#Fjm`=l_D@P$-W1R`_@cwl)&yu>@da z*_cMqJ0#45v0jU29H`#4D23q4WTWxTD2_m_A@@LCfp5tbA690Jo#o_HlfF%r&Hi%i z%sLZ=?@C!gCLu|@W;DSr=vC1!#O7rNS&V=|bk{66aTiSYDvvYA?S#eAY&1|G=ZA6f zDnRCdo{u5KW>hJ~A_zH1;`JUF=&$o^2iS5WM{bdaq3PDKqVajtx|Am4Ij(b}*Y9s# zG4xHXb6;%xL%)e#ybW>Qi!B1*HwxJCt@q7_FyU|88XixqEAEs7g4MF z;`v_~|Mi#O7ZVf+Otc_`e8@qN&jYZQ?iwJv4&MOl#u@@fI8kT~L6}ma$ieY50BgRg zHjfm8`kyuzQ1WISJ1R2nhQClMl$ucM)G3jEpy_DyRT;7h#fRLqQ*61>K#cJ z>uqzFt8SWlXCs|!Z3K7wj_=K;SX*o6-I%Y{#D82y_I!+da=%AJMEt4YWlC7v=|Y}| z^4}tYly{)?at7!tj%bUc$fdSzjA9^GCjw^tHaTEGVS7U;(B4g}?dRs48G_1AH8f46 zFUE?VO}*6;Bzt z(%RhbxsyIU{&T}L>3WrO=drTTQ@^5ZtH)Q8SE{$M8<`VeHlsuO(KXEgl+jqRZdnC%jS!?}u^B7&Do(SW`lM z;&f|}q#(^nyv}W?vR9u5zO6L=wU=%;H6iBiSq{jWbAvrGjW!t=8ZVCg+D-_; zK{G$%IYK=-8^E!%j8|oV9MToQXMeyE%JpQyXyu%n_T0ide$nv3U7qEApVZu-l)jVC zruA{-Pu5TJT*-S9@XMEJL))SfYM&u`0adZc@3?YA_zpHESQ8w_gxOCGpZN?r2)&KGnjL*q{pM**-FjSdej! zA^n9Z42WzCOO$PcIl!`mA{TZ`5?qB=us7`p;%zvH0UIwtCj@Qds*jGTi@Rt35YG^{!FY=G#?f-q$RHFc zeKiNCDpe=GWAzj!_Qw`!^54?i~Y}$-L z&kW9G3{+}aEN!d`07vUguL55p4U*Qvu6E5)UvZxCQSkjZHMe3?Bl}pMTp9*{TfxYB zVM{>ou062(rI#1q+Xvs3!Ehlsg5QqJJLxpmk!* z_~nre&)2daciK|z7kFX&g%pcV7Tg>BV zR}OLm5KCr1C*tWlo}fl9w^esAkrxJJ@KWI{7I*p~k;*C(vw6uT)Fb)9ZNYMCW98SB z@q4%3xDZ6aJIDvDs0K;2Q+fetRKWD839;+@gBeg`5CyT~{`Kg4<)U7;xr_S-c4Y6aJa>F zi<7h;)Q4Nk{_utffr%t;t%-Da|Tw}2Z>bSW%I|GY-{dC)w}L=Ew2Up0n>c>+_+2IhnRZA7mGbM%=0r@u3bsT*)b!K zP~{oZtPlFIiwlhECDIO{78z;Qp9ijh+#Kj58m{RU2Dc(gG+J=uX_x!wM^J&>S!M;+ z_qvo4#7hk_Pn3Pu;}`6i(tGbiwZk395bARgvpu--qq2~r94@nM5|G9Ig{dD%do^|e zYW-NGP3_RC-Z`^RmpxPy@y>3!&L>#}MoaNRX--nB@tUUVKa_V1S1}Y>3z|46M;*S^ zk9iW$urwo456%?3ToZI+$W2vl3Vx%qw9Gbj3(wfYPxdLP?czJ@QRn})b4{!ik-~bv z*{$cgZs9UwbXXc#o(9V8iW=a2@t34xxIsB25}PL#r{x(p$N;?pv9^~XO^}Za+*zpG z5{^6gFx0Vo6pgVZ4O)oi_Po6I)TY}F<)G@3W*uPik7J04$!u=WXq4Z572o)IBy4-SH60mPIw;C{48)e?Np%mrNW^~U7RiVR<|n3OeKYSZiw0FBFWvt%Y0PeGs{89p+`zSt zx?iJFX}6u5&(T2yeZ;6vY3&@TkN;r?yK^Ly1Xk>m#|pBOd2P|Xo9YqhG~J0KSyMuG z*9xxZW&Sk0rQ8c5#%+{7SX2tQnH5^si(CtA0$u7FqQ@WpGd}73&M--Fc=9IMQfkdT z()Bd{GIGXu4S4;-Zzvy$^AHQqC$LzHK($#31jHv1VEENFNX2<-wFp%q*E-O$@WMPr z^F#fH?7~!R8h#qPsdJRkBjY2U`Mob5o{afuvG$Y-KDKLvvE@Aors|qAe0yC#&kQ7t zdR~D409)PIF+;RINySO*fC#?YCmxI@3+yigBLw2D14h0aBrk&S(e4mE9rO|4z-TtL z67el26fY)$p>H4Fr||w9jsDFH@HTo#^rXZ*B?TA5@z4YL1wp)g_aaz@Km7xFVZLqO zS6HMC((G9TG0iA~CULO9CVCm>K5ks830bnc`uwwO=p#`X+{+4Gf6dIgnp&Y-wpPuK z;u=r84&7+6cb2HEYwwoicyR7FMjl7v&7%n}La)Aoh#k~)EJl_rXp&b4Ou?JlgYH4v zi#rtGoI{!`v6t^`?6hz9*gU``hVlmuyaTt%0(4U3fFcT2AJcdp^9Uz077Rq18b}(= zZkIZ{ciQis2)dGn`G=OK0~6$5o4i8oBG$?EjiJ4=v+vm~snG~k=TFuV0c zk=49;Nhtl@O+S?U(^j_YC3tbyx@YCF$0rNmTi^-s$bzQ>;_juoKXA&KKHMJTHxr2K zO?(fyGV_5Ba%~Fr+UZXz|n)IV0bEziEFyfEh1D*ycP-X&ZUt_6^! z4M6Nl^FY9*L7^9tgL7KWOm?VMCg(Z(->)cn+0%t$s4jnpQV{xec)>}NIz$%%-}hV0 zad2)N!CA@Ah@YlV)0N{XS5}|-Zv*l}Zi#cC2KM?g%?3c5<33=HUx4?aR>4Y{uYp%u zLq};3djkVV4)|D-Y_q!1neo&}H8E>;BUDk`uN1YKigL@$RM#Z_46W>N1^%c8%fB!i zHX!b4RP@nftD{O}4bK$gMGIm+CYcP;|C>eqH=Fv~|G(tKTS$n_k9r1bMpk63Hs+%( zfc}$AN<1O<#FaWX|IJMWweo^jhqkgB{&^C1?0HXTvslP?Y=1N)gdps~1u2F46d5AC zNy|LX*Dc3oyrD*I?Zs^^tH~}`&V(wzS>~?fk6RBny9!SKHm(xuhIwWX7f}?|Iw;Np zL{-g^Ss*bGpdZFGis9}fDKfIFxdd)7b`P zJz+HDMOoIrW{{_*X#xz{+`1YaR) z#UYC(Leamvi0kF1ubUa;Ynf{nk~+>yZ`oxZG@0UQND7^ZB>NM!Y1b&b zbFp%bc9PL|p6^JwZ;FXIrreHlP`TcoWsC^dBk3@t%Ze&Yyai~!{`d|Zxz55bkM zPk`j~#k1WTqQ38&dTlEvt~ecKJbKkZ%;b4>+_@?cVD@2ViJ)bJ+y~i0LHyOP zk{pONey;mjPqU;jJu_J1k7(RS9iPg|N=Rlv(lRf(zIrZJFt9vklr1|25+9+=L6eed zB*R$56J)gBF;a21@0UO4D24aZTz9D8Kh&|ue0A@c+?W*j4<`9O z#Fr~G#;Njb02m5flWE%#wlfo6@acKVg+Ct`Q`omIipn#T*BjP|=!98~~n z#FRO$9wwgYA^X$Qw)F>8<(_i3l)gw@hwQfOy1)AM!)-q+e-|M8rW&SRfOlK8f$A#| z)ICq?n)_Kp3a}Um)X%g*Bx9+3!s-F91&x7wkq&($)1v^HmdoytFC?du2LZjcIxU-(f-{(Q(lSr9weTM+#d(G3leHCJbrsr&k zK1@#vef9LLdhPFUtYw%OtV*z|GWB$bXJ}%xv|Cb4!8OSj78Du3^yW=4{r(3FzIHgJ zuC?JDuv!KNIyXPt&U}iUH?=k^F?pGOx2pV}n}mJTc|DtpzkGQ<@hi(8F>XJS2l81$ zA5cGcim68ypo{xQTHlFVg%4KAM>OJ)4 zwt9wD5KMqp4g_+*=cddMFDS(z%R2)t=ry!}9GV;`Q@ngKmmYwo8RspjxLhsOIl1ZT zJoL`+r25NG!Z!G@Ek?5)soxsAuCzM{LK&n%!o(m5g)`;)i?QC?-yY44;A_brII5C# zx+QXxw=0J$muymwPBe;pG)wwqoyZr40eWV-1MmV*!1*+r-c*Yu#|?Z+{V}ITg5pCl zb+O6xV%jmvP2vcE7)tQXayQZ?CoT~)B3Ju+Ouv@is3cmS+PlmA@sII&>BJycny7x` zA@OHi7loM-HWvF@Xy19E)&#IWz+pFa0-K$B2bz+Us2MntsrXyyQmc;LzKa!mEQA_s zjiM^0)=3(!Q_NCA5T9ZJL+U{!TGfY@9@tSDmzr(4eaT11sb%~TVfr7w`5mkkMSvOz zwF2#%=;C@#ss_!17#~-WCU!eWHzM+j<%~_MOH4`m1_$rCFD~oR-7$<^e-2|JJd)e( z@#nQ`8W&fh>7w9Z7*aM`)0x3Q;wp)L4u6!Ut-M3kSvC1i2+)_ zYhvJN2>n}(+3`Ow{CAG~-zeqm+X&@0u8ZREo+3$)pT8IO-@|{O5k18)5nr`%dgY|h zBTZe8nSssx{7kOYW=SQIQfS2lk{_+NKYw*_^&#(s?O1znH+x*T^feWt5h0rDM8<)2 zy$v3osltTnfWH2CBofJIND!6|yH@v3M#%Bu-P?;-&j<4aa3s8=9Ql6>KXg^_Iu($R z-NQL4QBT={x>!G@kY4gX1)&(+W{T2S7t|>fiQ8^Cb5IZZZ}__yXflW6MxSf0f)q&J z3!;xwb0<1{{d_%7v>vWMdUDV4oq3Z%LcaWumNWSs$GG$kft0cd(|8)Ow4f)7nZ20{ zbftpTF^z$s$< zW@q$Ym|W4?1^9X+k&oO)PsX@}eO6lSBMCJJBcSF@L^)y>KDg%1XJnM5B=K-%&L-YTDN0Q&=)9sNO!Uf&NiDya=gHB< zM&`GBNA^H{q_GInBq1Ylgvtz-Z3MTAkh);{u~*2igR@o1b0&3n`%uNhtW7+>TdD+! zKX`VP()dv^nON|`Fi;Aa```dH@#b(GEB?t-duN89Q`u&^4D%k zCutj>$b$X+floArVX~cQdh8G@a3qEj#0k(ma04zReq<_`g|zWPPnu$Om9!C}CT8n& zc|_p^ZUDRb$#`wO$Vor({A{91JE^oZ*-`o^dR_oxv5v2zZvs-WJ_m?1fs#xT1%QFn zH9jrZ@lZq5BgjCws278%zEJ%D18%Tr?Em8F6 z6-;JlTH$fQOhodx?CZl-`ygM5Ql%)aIhlPEC+alLNzuPn0DvcrzYJm}k?{CoI9mf} zpexZZI?(jU$iw1d;A1Ge(H%QW?iFO}J@VSVJ`#`^CnMZYGJTCib%J6Vs0j$2X zh9x>D_JfV(?u0uphc&Tt<`*yNU=;ID!?C)iTTyNU%L$zwx` z(t~T}eup&TIX~2Yt!R0eoSgOSst|_-05o}}+iye2S#U5nh#KS^`Ui}259cJMnf#2@ z5I+CyOy|N_k6$LTG5@0YpI5SP`X|b=D)F~N4OE!@cY(PC6JO_2@sdg<2li&6W%;AW zNcx>|q$vAOub69>_8Z>Is-{D>+&68*0ZhJf1#~bqXuR4sBPg|;_}1ameyU0A*0z?s zESDQd{8!!5o?O+tQ6nqS8pJ@A2KW>l@f!E&#C${o^+KRtzxM}Uo8BtjnBe2}ar?s} z6T;Q^t|-T=pGA1J%yMh0(OGXBkDp@NybZApQH3#$=P|CxF;D~Lw}S9ZkSKAjMP-8W zZXM!0Y0Y{v!Qqa{SlgiWOBRDmdOqJ*DsgW?7YKB>L_ufPP$>^Qh2~!HCsXJVn&i+t zLJ&;dQ22%oIVzz9T5VT?-6$=;T3!T#M}|*%OGrc0491+ zItn#9fPxZDGsa{Irh_xY>!!D_liZ&d+aV?bOeyWg>q(OO@$|y8 z&mJR)ZWK*KVQxdfj5I%w3~9^tsuiUKH*Nnv;F~cOJ`$p^FPw$QXR-4J@3R3ePQQ*VQr=ENa&ng#% zcsanUo_E{nDlVhYzEHf1Q(WsBMrGZOjZaLRDF2Y2{QdFy2s&+%>c-4#wx;XOMD#&g z|W4&1c9@< zgiu`PquJcjUfLL2R$&OjA+9Lk6l7`2l;y3ttyNBFJlhC>W+%dHYGX9lbX7wim- zdosDr+~sEM)@$#_ZcsYjxyYWB*a!zgAu2SvGs}=ReCrS>ccm%rl)bx10%|PQt193V zfFUDbbc9zZj>EKrbTzj{i(&Sd(9))?gNWPxfe|~)zV8<GVFS#D1UElyO25+Ay#JihV#w@hpM=rKE$_iix9vjaQGt#s5#W3AT-ucZbaXm=w-5KGa3;39*st?yLcv+=9b3q|1_XEB)D;L zt-pWOOsO*;+y}K|PmqLna6pfeAgwmsD#g$Sj9H$ek6xAJ#|~jW=MPx5410qCQ8`cd*?^#*Pgk9t>1Ad0Cpt#JvOYkL zTi+aOwxtV%Nm5J`&}&)-meg@P z43NXNIqwdwlTF|_%kCLLS{2wRS<2;H@|Z*Z%-k33&1@iX&%ouKn&mmSG4CK4%I zDFFxxW^9+P%yPCmc$0hXA!WW3c0OK{%0uSva_6L2)DLZ-Xc`%v`SO%Nh9J^zIL!3D z{mi5rioeE_*YNmHcab50z3Z#;@_tK7IH9gbGM|6dkXtnzbrB5>R4In$lGLP5vh(H(8bQc5gZwT&x zzQg_w|1Y&J8YuKc^?)E0oq~}@y7EP1L?L0fgDbk)9WBP!GaNkc>(>r0tKm$2hZs=?WZP!EJODUk32^v!z;WRa{8Zk8ClCTT3r~-RhNoVWP`mD*0R_WU8Rg_Qq zWS?hj`YKk}u4_-Pgqm8x0KIVj+lE66Y{Xo_Vta~x?|ULQp3(LDYsWZ=G+Hh zLxYvT2SjIsDejdmA820 zwA}Dnv$r3|0=WJlS8bGQ_FbOvdX4xvqu(yO(Uc}O-FX-L6_JmiNG>vOtwXo*Ou}ov z^^JsWS?Y0SjUg9=M^srygPJI2V#o7kv)bGXsX4px)`0*oO?6FCkud?6$5~v3Zn=H; zlH>X<<(yCN%sl3XSTSI{WCBiH@3fR)oMe`S9h~hew`yzLo9tJxY+d_)A=mD`H|_$X zXZWPRli9~zNTe1G7%RtXumba8QsCOpcU+G<^G+Bc&Pzu7?+FpqrL#Y zpu_bFAMlT~5=?#0OMd6v7SV1`jmJVR(_nX4kAjIyPdYfuQ7T9m%Tx^aLv$jhx~>z( zJMAtlNXe{yRpd5i?K!VCwR3+9;jU(aS4&Z!<$01k`}{%80)`@4TM9JAdqp7;WspK# zgiA57a@HM@O`{?N=*Go>~gC>CFm33|(Iy+3YA zHSMCNot!VOo1E{~gm8J=}J&yVQ^=7@W#ET+%RIA^I2 zK6ml^7W5mP$j~555aCJ9#w9eQ#(F|H&9{)+9$VG{bg19r4ko(ayGw@MU}eA#Cru@hdSjYZU$75p-nylOXb zzIASm>OVheXTri=e3KZOdF~Gh(VdHI+qe~XUw*a!Z3xJbUH-DnoM3?fF9tsyE37SD z!*~Ilsxp$WjE;tpub^?ReN+b;irkKj-oeJ5N$l7%E9LdT?N9CYf*tGvXY$|Cj{-!D~KnYNy}PG1XPdKySM`A8n|EAQYWH_ z2oi8`>@$N}_(+`O&K5&)K*)4X%5i2etS|2O&&sAq+w`N`d1r?TFN!`-(m-WeAi-&8 zoUn`s9ET^Dku(lJ&>&x7F1dWPwW+-Cz4BS#iNzm#*}$OcCZm$HeT8!u^VU`buUsSv zfWL7l)-j7DI<#wN4v;TryuY;^xTU7aU3Vxt_q@-3$1_Dg9fMi!u#PsXKnGHosYo~U zZiHkT286$@$z4BNg=x9MDQ{jci&WNhYGCh{*p5#tYTj8*KkhWY?;AEb_JAVO!J;5@ z{IZFEk7URlC&@>1n9Kp7+|7{OB6~tyx%7*$39DIb$9qTtv<{;0Q3S#-{Tj`&|I{T} zJ4)`Qnh*Oao`IZS%U$hEN^GiFV^B5P-F( zm}W&Rjz9V2eNc9%^^9y)b$$B)m1kU;qp25W)3<%;QSCl4Vh%$MK{LEaLw@}T4pKA- zdxBPWzJSk2_<*RAC;8DiEWq+`4wf{Kx1xUQN%Wx)V#D{Rn-vZe+bMVbR-P}}ITHzg zd29ND-$u0H!ci9HS?iliCi7CBw38G(Lwb9bsom9>8QTFyAV$N@jbj$hRkk!!F4|5F z+=ub^Dt~gz1Z3ZoJ z(g7N$AN=y@+=gwk`q!Bw@_mZ3S;-MDK;(y&*|NA~Vp+0*?&hN@Spx+9tSCc}lTZ;) zL`(b<1vL?$#EOy{@>ZOl|3TZs;FAkR5Pgaf!>!TF+kgvh6E)+ie&i! zQ(_Nt))l#Z{tOIH9b7^XGr>wsFcXpPmXQeZb#xLA1;{hPd4b~XjZzxwd}Ceon(|up z*K0dw<@08;?9NX?*_@2tsf{A#Zb}eyDvy+&b zBMn2ib5W#ITai4Mnyqx-es4ZrZ6VdviV0ABNCBuHwigna3bRDD zS$!>DxmD9$#f%jSDQa4+udPk4rq{hZ>^Bc?^CsRCy4~f1Z_`7b5 z*wmd-0_oD6B2z;X%qVJ;e0Hzfe9(1b$3*{x2_t7=S?lzDja*yib2mp@`^I4IBIR|x zD+|!dx*sAJw5rKrE*%&1k*ipK|C`0i1M zA(tXQT`nH3DdZvFB;d5->;AIj&;1V1UT32E7yCC1LqPT|rU$&gh~`RzCVgQ4a;5#b zN6lXM42?s4Gk4YF*sn5^z>25B$k$vZX+2kK)K+_=49}j?Zkz_y1)x|Ps z08X|>Cmo6?)tIuQRoP^BiHz-4Ppb~87j?1Dn*OPoeDLGC_-82vHuATBi!SZ?|L~n} z*oP)7v$*@4PlM`2LG&z0R!#yk$VqMt7SwVEn0bHD0HwuEBBxpmm4w=a$$!Ak<-W|) zkcsgS*0$@ihpB;I|bcn(!M7G(O0x z^XBcNtu?h0CD1@+O|yBtY|?{y{SmLyUI#2p8TlN~IKh_)`>o^w^cnzWO#ngKP0PTY zANe#)7<_e&_|jNHf>S=stWig2W|cI{)dx*c@0J4 z?Ez=9Z9_YO?!LjX^~0g`F@CDOW;+Y1Hu2qRGQ3U391z>ioAi0 zj!+tXt!*gb@&jH&syXddkRDnZTtt_8S@+yXEFG3c%w(&e{j^EHT?O$R1SeYIpHR#u z%&VH2rw=12rpD*1C*bs6d9b}hI^o>Y?9Y9|b>BM`81b;`+~kB)@(rtd>s$mDWL7NW z_CyMd!A~WS2!c6>Ue1NM2Ek@IF>^440(j+h z@B~!MD6yS-`;hrlitDSea@k*XkDe+2_-QWZhVhI$FZZBJ=_<5+NWV*RayAJdgj*G$ zFNkW(HcVUyKn%ng9{91U_4UAPxsP(rm+&62eJnr26$?O(UKkoiR-?Ms4=@hU3)KIo~4^HL788euT510;;K5)GI1~1rZ5B&e&Qf;s~a<}J&OR{ z{a@-Uzyt1AIhu<|>DwA=6Yk2pQdTOqov*qS`Ppv?vB>&QI)i5N{MWTi?_H|GdEUCw zTIdG3)Qp6VMfE%r43di)du+s33}gse`%Cgg`H<|nOxu)-~8lx<@#YSF;iKBxWJ^hX-_Ci7}$Nz zJm?Et8d6Aoil|0{$l$=#G9*N4T`7)y%T?Q&;)-- z2n@oZc7*>R8LTK!O-BEj0*>Sx0HL??Bijz^^Sm)D3-Ts*L#HSfZC>&nl&SDY&Z@eH z=DDSbZM@hFA-h@yfeY&=_x?!ofqg?TOr>^1*A9@1z?sC?yaO~17}Wwa@yEL0!bo?7 zBrRmojGTojp7_-m@O5rm#V=q#bU)u-C0@Tq(g(+Z49{&TC8q-UVQ^OZY4YG}1bHA% zb6U2;p9aGk3U_rEzA^I+0My!wt1$~RD_hGv931!6lF%id9R8V&R|G!mi;csepVL) zYa&4JrL7ZIW!i0t1N~}kiacTLvxBrnXlJ*D#Sm}op_bu}DrAjo#Y~F+}6h6nY zj`&s)3$~yG=de6Fy0f*4qh?tudFp?pHCvuA>1V6K8H~J159Z9C^YAf`ZoI;(|y~0WJM7E=7m48{zc9#R1 zacdYT()hv&Gl=m%>NDDVutGOzSBXB{K{pxh((I$88j{D_vPfOb%(uPY0(@uLh8Vl!dN;CeJhbB*|puk<0Q z(3KgE6u!@?Ns!=(=72zuX$|}w$4y}LoVSIqtGgi62 zyUdpl$>-MiG8z$T1p>|S2OAPp`3SkQNWjK#6y`#UdJ72tya*(_>ti)d(Y0082}2GW zdVa$`Y%2)TF#QO_fMVLNGNCsc*p57O?%9g8I5{Q$E&i=ni{M;$x7ab(kLql1Shmn} zE3+jGY2vI8e-Qn`V5?HZfR$T>WJ5!=mej?L&e$srRdx89#f0xmS?#Vy-`X^Tff&ut z2&o{DB7zA?eXasf4C5G>thN-evGceUKH7age`rBPmvbN8;Xz8tB6q}d)?d2{smRQA zhLk^DGGg$y1UO3Nv?^+R1G$TYeQGFcyQKarC%R1C{=BSvqrC-_ zW!VN`{XUEnDhZh1${v`1-|*{KsS4SCsoXZK-_0IU;+r-`g;qYeuO04 z#fNsZ)EzIaDb6qmB_c#-XsAoo4HEaf)R#LfYwNNu45)3FgNAJI#uqqiG}0mPKlA{ik@DS6`U?fqLXcgQ3MNKu_L zf8qVqulY4RQ~bb(MCc?B-(!C!z{hiq0kT*Kk>WEja#_u#r}M!hza#kIXN}ej z>en!H+w6PoFkVVNdfx>`}{P?-Fvp(D$7h4kQ)0~|KSC{UlIu3ybc=N_gT$S%7YMd zn6min^@c9rbEl_Lrx!2^icAn|5y0(2b|348PjXVfQLIVEbfvJf->Y+BQd4H79$C`I zLW|OQ&-%Y?{X%_I75ij-jWzS)!`>A{4uZnI#Sk)v5@I{hbRfqIu>Q3GNe-%!VK2dB zX|wlgmZiwf$|saJYZEd1&fy*!-`vbKuOBYS z=y!p;rq~Kzk1)P}XIixxWc_MmTTWoR&a0!6;jlYCnZxG?bszm@xzISBwiQD35hvxb zC@zAqDiWZTz`LI}pIu}!e;~IJh>kk%9+S)WR^YxIrI`e_YOw-;v-)?$DNoQq>4c>?tY4RUVN}_C2o*6vQDeiq}^{Uw) zBusp_SqvIOz?jK`Cv;%+9?(}cO?bhV3kj<5tx4nWud&h_ejPBaL1rw&o|hwQw-~}a z)IDS*L#T)NP0pN7O z=4lzv;+fD7AU|k#29}H>p9urZmZ_^u?&J?)7n&(Or#|iM5T&EOKit)T*85`%CzLNt zRbm-OaugN*99?@t97(z-Hl11w4}cQ@XO{=MOJzKkiUnDeCm*g9+j#P0K2Jc)_p&h6 zF}UIDFIEAQ({^^GgrmwECtgh~*P}nc2`xyncWe@n%>qLQnkqOSY5*lOHdY_Oo2P4n z_C$+!qm(m0rjh2KknX-3y?*kG_1*n2y_hL}zKy9(2^?l{7}}q$2c*{GYSt!xZL=MQ&~F9<>0ZBQSqs0NTk!GX$-ucbjRR<(^A( z2r=3xl9mepZ98ufMg5C|9a057ALeC~YhQ|+tcL%1%{Q6w--#UzNjshL06fPIof7N< zcwsehCTd`uhF9;|-o4uXOZgX0qpADQb9E38sL}0h4KoAh@=3(_7^JR zjvYyUwges1Hs_wQHR330u2peoU%gsRyb&}ZBwIiVROf#TTc|?(at9W6H+>4(_6}9u zdsyMnz0UgwYtG!ArA0nAQMY9AeJ~RxybX+${|c~vV*mp#3Df_}g2ABy%wdJD3YdNg z&yd_0XCK-z5pWl?k5f!4L(xl+#&CeSkFdw7pJ!d_M@bRAVfT3yU;L2eKBB}m)kJAh zcnu@^Ep%gj*_dT_0tkSX#;ML@tyQdVKI|fyPVk0?s_y>=Og!%+xei0;q_@$lJlzPg z3!GFgnh>C%&jt9?wGYWm>kKc9>@DFKp7fdI%26m=NI5Ne=f$Ws&#>Rh?Y@78mtSD2 zRiX{yK|Y=M8kJ5AuLa@NNs@{Rf!v>+{K4WU|I&VwwQmX;{jwZerv`hhh8`QhAih{b zdw3N$!OMqsX>;n~_s56XQcQd;b$)|P$BtRb3xM?f1 zq#q-Vnqw1Ce-7S?|L9NcvzqE}CVYe{8)fe+^j5D=VS4clBVbY-Tp(>OB5y*_GM-WK znj6Udx1lBKy~9BjCL5tkYECBX}Oa4FgpsC7@JtGZ$TX3A2%y7I*{ZF z_16ybc8XrcFR7iE%NFeO5oJ`}IDd(EvK7&fqMh(z9I~ZkQ_Gp3n(xvrfiMQYCa?Sj z3W?O+@O}w88rqf5dwI<@ef8{U?bx0R&d*+ou4PWoKR#Qk%DMeB9&VJPgZ`~fZcL>` z@{$|i6WK|o^%O>Oem!yh-f8rJ4V>@=MpIDiDIm^ecZ{61mNP4LK2G%l{ujNvbrF~` zJnSGS0z?`E(GLNJ@p~BX&rY>DJKvn>wymMW_cdeLsVa9dKH95v%nxVr>eJu^0FtPxw0g${=IY)_&0U9DJa<$5Smj>$p{w6AhP$fnvX*FsF*p5PLvzkcFb1&V}}E0(Z~BL1T5Np9|xw3PmNr z50wAh@G1lw>+b%fxmUS|sD5rjEr9TG9s5W5%C?T=!AaoE$;ZdSw99EuHVtHusCc?NosJZPhCI zmj%y6{AI~}&dRv||FhSxKd8_5`Q}3GYzv~Zv8Ce4>@T^Nmgcm(F=C>jJ?rfs6t?3H zfg%y^Ui$z|-JjZm>K2Kol*}zY)x`7tW$EkOkqe3bGly(or;f&fKFqe~P9fN1a22&R zfm!No#z9A_O5CCIZ(HFMT3k1DWUL^$->!9QLb=tsj#EJBgK0jpheHyXmk-c4R{tiT zyFoX0($gbiDs-LTm(_k3l4L(o1`L;dO=%(DIXA#*;!IXQ4}MGDP}oONIKO6!#z=VT z)x(bu3}?0J#md&6k!93|)nNNZF*tvSXV-a5kb$PX237S3(ly!qR&K}6bM3U1Lk7!E zJ%EuZ;Q~S1V=vMBnziY~rh?Zj!h4u;z874<;J~yQ=U6NOg`FXKFmBh_+}JkZ5N~Gs z?xAR>2^O*|kln%=n7`yfM|1bH2Iq}hj3s!Be&F`*MSy~Bn;FLa7sk_a0^Pmi`UJgl zYLu$`Cp(_EeZsMQ%E-r{6leF%$SqAc?YY8<%NtlX;C|Er7UOIx?UX|l`0sl`3%O81 zPRh8;F7^R@R-{_#0{erIK&;V7&Mq~3oC1 z{4igbZeE*(!%~y9K^PYiIeVlkODjMs%VeP3g8|+pN(ngDTx4P^tbtkBDo?x0;Let@ za8zbpe>*Z?o2ukkcM#XXuiiS|m%YvA!`=Y!U7kRp00yciSP<+KCUT^LGCR<^JSkh`yW#VJxzmr|TK#(=|SElAOV*v~CRq z`p;%I$%U>Nq(c47%x(6htA`oa*Vha-`xIFeIaqj{{VM5yQu~O$Gyeg-T~A*ux?lK4 zEKgd>t00|~Z#vSMzp<+b`Iq!N422WEoJpFeh##UcPg15H7(@~?5};x&3{5?kx(-b? zr-Ec%h{1X6MK&MxRAczH<2eFbhipc>I=!dA>pfu-5jUVV6!~5Wb|4B~gLrDF1pPn> zFtmebRd{Y2mui*7IJaomX+OHAG)i7r9-R=>I6URt=lf#f+ZoP0WZT*i&hGWcaW9WP zH1OAF4pI}(v*e{>F$R8J$o*PSErN_d(~fk5_>d!j9Q!oPnq1n&ALN6b;okJR4-(~$ zB6}OWF0<(9hD^H6&ufV?^(ISoZ0{fkJz5OIe_R;CX8x7sShgM)F0RIM1dcKu5Wn6 z5%UdQ_)}>Lr{$nUtd$A?w-m=K^WcQ!^0mQk^cZ+7Q&4Kd4r&Pz#7K?f-RfO8S^UjYhLn+u}C|m%lO;% z=vlVevE8L`OqFt%1$xf#y&bcu)yB+sJC@YvTYa8@Ji%~4a@4o`o2iowphg*#AZ)dx z4ulENEM}2WxA}unX5^GKmxA${4xilBQIRDtz85rBl;i%q{ogr@{|oA(RdHx!Ve7;gA3PLT>$Plf$0bolSjhvA1-@yl-~9D@-+sMpPARqF)M5jJ z_mItdh1cvm*9OnC2yHCbM@!VFiV8T$+z!gP)>IdK#B2G}rtQl9xIuyL zDeG_W8t7G^C*3;ia$R%s>ok4a(ik(L_u@^NF%NWlBoCAfwfcHqO3IpS`)mM8X#?yJ z4FJglJrevDZNR;A2pYwF1UP$~-JH_RQQUg6zP8f`gsE$}RDHg4U$C1E$&%`i@Ci1D z{1I6&@;SZGQa+ko?CO?#=)vDTRbV%j*3FIQ?w~V8!jmgP1t99BNb{A6p4sT{D{OC=QyVMyk z+p`Yk20(@gvcEE@cXX^pXn%{aS*Ra;DMsFR=;&iZhI;1Gh%~_N#9?OF;AGI)+Bpr2 z2j!ld!0s6th^1L@UlAfEQBrWiYZ%!=N_GxU5)G9Ggd}{nP2`_B=`ptGHy>jTN^a@g zDOa<7RHbm`;+m`6fo7VF+oPTyGxQhWVE^Us}HEZ0zHbb=I{1 z_1YCvj%P`fGq4|LaqMDNNqhF{ut*?OdHdJx-jBx8W)^88O zEpO8pRomAmkN>{Hp;?tI@qpl$!g)8(e@y?+SLAcVEQ8E?Rv%sK_7TcoHyYAw`@`mGq*`Z|S`z~a;aeh!2Sk?)Olr&LHVismQP zI}%+XRTZXH_Gzi!nNZS>DFYCJ<^wEB)IIp@(kE;YETQzZnK)_{|0`zAAh;S<8=m`U zK(&Bb*oVznV6-AK>EMSIkV-$Jx)qrMzj?K!>nsF*=mD)I!kV@`6O-qktSPM`st8 zaetm(3FN6_865_aZxe?(3*cUjEPEBwUQJISwNJMml%H|(E9S=Tsr2Cyhh1C00F^3<@B5Nn1GDNe{ z8Z+m{A34gd=G63=g|(aa>QhAP`u92vooGn)OLn{fI9qUkSq$+swJpnr>QSUS&q~~c zY$%e8!<9w$ez<+@sQkibtkILH6b&fy`ah2L`W|Vcfy*z5n^;(p<@x`$K)+k0|9}3u z8S3(kBTQ9Fy-;>(@^`7`e}h$FL{s_=;G7-;5Hnud(12DlXO9rqwC(ny!Iad8C-OW*-QDoZz+KI)Eb+M%g?IDaC0ybm6WPSCv z>E5C_-m}n<_0#!lbEC`dNAeHOh+i#$PooD?CEe>DNo$VY_mK%Yny@pcZF(&!+T}!B z6l?W+LezJPeTU731o5W#vMC*{x+HKTJp!yi7nn({s-Bo?>(wZ7DK(1XQqz)OO2lvi zDc`2L>ixB3%lG5P0diONy52pcS!CreGMSWtxEyRu$8MrQ;-Bs7V2fbY zBE)D$x3#aOlxc=uxsmqxgvkLTmXsIhR)sz36DCRAWVNKw122AK?>h-YzDV-JdkkR= zb(3Ze3~hfSGp&`KVKize9c0~hC_H+~Yc_P{)v=8o;aEJj`Q-b<_ak0n zCI7`QxXXLazL&#k;II?RlgFmU!{r*QuML0e1!1Kpu(f+b9Luks5rTT^dGa|Wlk!3Y zCrDkl+CXcOUuj>7FPninr;Zc{G7UH|MTo}_tgR+3l^(<}uObh0;e~<@nviEO?*QNU zAOqas?jrm+_w4jG2{A9%By;^Hb91Gpi8?QK85#7>x;4!m!iP9?m5}h10=>_7TqyXs zc)|Df_pa67;cK1oTS{`KoRO}1i)?cQZY<=~d(YA~`ZxPTXc@WoRlmt!w^z=4 zutbk-_1je5J*iTLsmL%qh^W7xz-QbmE4GE5MXa`g$8gj%?$-2l!dNR?liy_OtG_ON zf4feDH2YY8*SN=ZK_IHMJArt^xmFY99k!1w5yGwsEM>}1?9F1fWQX7U9+Z;*C)XgPJYdzLsSj6@Z!O!E)DG1!jV-I5_D`ry-okyAJVi-K zNRxSjSOM7rhe&Pn4>$n@m)4vHqjjOFvH1!Knn@x~vhLd4LM-ZL`Yfzpk+J@E!mdfr zxT!i)R3`lOYrZj+i7|)=R75y#FkeBcZZOfqv>$WpVkhGto|GF5yIQ`iTbvOp!J9rg zh5PDzwJ=ScRV@7&^QWccV=ZJ=Ir52cab_SgC?`B!v+Clctj$R6=64RB^anv=;`(>| zvGlcn*Fb>&7cj(sk?@cH&*)Qe5rwm(mNHQwM?gQ_!brm1(Fbj5#_c$NQ^~Qhr^K)d z*$c!J)uAt|mRyH4?i_r~5zdQfmuEFMNI`c`|27T)= zYO<3$^EqSE+)Lw~i=a`Ukor?!%gkc~C$E*sx+(w_s;I!a4fM(Yw7+dcMHJ%BBr2ae z?r?0!ht};1=9*lp<1(`ee~z~CYVgm^}4%=lgLhUJlPmTWGATz+OaV>Xt^zfgRN@% zp;7@lQK)LY+ZTp~Dcv7Xr{(9(5)MoEh|WuKUSz!8#D9-C`xp+elo5JlbP7Y`E)l`u zA%d$-{V-`9=n{VK#8)4G_T_TPk6&Jzn%wv4Kam zi6Z1#pM^^-pLzWHU^HvQ6@CSl1ByHHulKZ?1F{rv4hK1qUZ8uV^Z8sI>iLpiMeb#S@hh%uJwS}m8WH<;}7VmK`UU7dxG;<=CIfmYuAn0 zAx*)=`dM>}hhkuwySA&h+xG*|_F*D{fxN_mVE2<5{gwy74IW`efu~rnQh2Rbv7N0x zmebq#aj{yu<<=&BecieX+5^IwC`I_}onLTrT=GG>9o=MXwGilH(dBVrgFl&Q5_a{r z$vTFLo+8nwtjV7AJ097Ah#F+)wvR)F98$!SBmbtW@~4f5;){6)V&DBize*lgtbQ$< zcTZgW_u&I9zjW^b0w?;c+wsEUG>?3kfO0~YSe*!6|BVR#+4*@!li#qUQ;Aqb4CXkJ z5L-9aSONwUsbQEAm*9o$wh+I-M@rwqTFo__GZ3ZMS*$w{wWbWA4C)E+Ns(^2%XOd{ zwb9pBxl*NhO29&@tAA5$%s-9et<@JH*2nW_4?bzip=V*f5Fx&OEiEwe&GFS^nLlIr zINZJp-8VajR~|faeUT-tM~wXr@QB4-4amPGC)gap)6p5(Sl{rO( zFwN5L+Gt30J^`KDoGh7;-X+6_5qg)d0;ck1!Ui_6H0vEO{fM%fwnw(X;qG1=t>ZqQ zlg)aJm@gGiP5qvV*s4%q+tH$dl$-+;@gvUxe2TCZIub7oX)M(m%8*IDRU?OMKaH#t zBLf`13gmzJ<_1RQZ1+@h$*;YLXT3GBi_Pcc2ChI7(hNI06d}yeqfM4Lc;@_E@pR(t zih1uMlmX|CnOplN5!Ac1*;9b&p7FZunH5~&FPHx6+gewm1J~IOtnkq+m0{g zW7Vpig%ut>Go5aer2GMdG0pN=IF6G5S{Z$0ls%0|*>tESW1{s>dwcu*;b}kT_ISUN z2WxQAgR|%NUjzz7PVtA%3Swm7bH@PDC7vnj2{4tOpz($V2x(pIYb~+Rz5u$KPFins zD|z{AmVCd}>|{K5rT)j6599J5-jfiEX-(r17{KaF`a_r4195Hj*JJj zTJiIUVU!1 z5KeT_a`Q?Aoz5Q5i+R<2i}`MK07doL4$@+P_C;IKPBb`QZLVQ3=k&(&$DW|~UUz&G zIo_n;_12r)l=V~LP&2@VI*wEngU3!Wd=p4XGZx*+g5KTV3ynV#PO9#;Nt?P?5&W8O zNdrc9!WU<6)7BZDbVX*yB-PhvVzFHyqNlv5uES@w2Qv$Ux+kf!E>EhyOh)D1sa?2Y$f|+{&x1S5b``c^sd`mq3!4Ec8R~ z`5`VaX1lN}D$vM8!JXhyTS#f7hl(IB2#5n}n0g(ZAA5Oh$;B%TD|AIJ{i`hhg%r7a z<7M+_OeeQ}0CZOa*~SO|)d+F|Lh9{*I_d_X6CQSBdcFchSGTP$^Lm@z?fo4skZn{D z_aZ9)iW=;!U!4|&oSbAVGThjhJ%3r80RjfL8ch$SouJQ&uBH;rEyb5^IrLVwga)lC z&(~#(8!5MpTCK=1oP=dwHVf=P)^VntA~hL`aeGVHO`voTDMhsh+`@Bj(4-i{I&p ziAzknFTZ}KJ4OK6p~kgFa5+YnL4yVJ{V9MyBt>TRLD#{nuY~=_PdtA85XUJFG^AE_ z+c1QlxO)jaSKr2R@-)*{{>TwG(IoTs9m{rvFyq*8nD(r>fyx!KVNs!x&pme^Nx`Lz zC5_KAF$%LcHVzHhJt#fIv4Jz(Lq(H4l~FCUG5Q|x(LN1LdmzZh=qG{J51KF;Xa(1! zaa?m!W=ChD%_;@ZL@7LzMF^)wR!-c>|D0B{fUvqcQW1|AQk+hSwGs4Lwho0nXN8*U*5G5dX6ckpLgp|+`d5KtlLAXA+AK8}ZrpwgkLA^wcF(>xacLCys62o*i*w_r>XeZq z*;33vF2Tf9@{Pw1AH<^-99ROVy}@jWgGswdOi&n4S);C+$^NXbHBrZ}?ZY}MGHw)O z+))y$s+`ySlLF*3p6U8>-T??lIvn~2C)=ZeMhMA;;%NbdfMw^_P^Gjwn<=G-OZWfq zh}1s>APK+TP)~LfD~6i4V16&c5&8kIMXdgy3x*xbAZC-y=lbBBv|D;{${h3G(~ade z^W;?9_LymI@blb{mW=!H_OMA(2g4NU+H!HDgPKT|nnB6hebF~A_6qvejrjfcHaD?y zQOc8U56;F+N%{a5QB}tJGTn~vU?n@H!Fl*%o@7)qHc~C>Ns1~fQx?P-yAYUl5NH5_ zED&heA>P72!AL~Ik-=BM|cWiw4(*ncKLLafm9>;G4_ zk351WUlD^7hHIG>VXk;E$3f)@yGp->Y(G~EBc}^%M_3OmB=em@xvdA*F=hJ~h&kkc z#y!X`bBsIWrZ5e}0p2i=+F0{l0MpZIn{af0|K3HqHIuU!1ioYRB;O$PW)>FUgRcw>YZ}8 z)dy6zq?35r zQd$)CG=-F%eCNCO&EYE-?lxBE&zM~Ka*Lt8*h{ClAK}x5%#&F<56D|?@N})XY(IZQub*edLB+P1OD_JaQpTV zIJnr!2m@#c&UIgFU1X+BxMuVX?=+M*CeVJW+Z!lg)TRUr`?lVHH+28{*-57)mE|rW zR+>Wrc;^}v`5c~aU|P@jxUpIJOdOrh>;Cq`gaIXXQV-4P(T&D0RK6+b;{^>ZxS;R4Qdt7aXV-#NS`7B zF$pLY`tZRV!jzfMAq5*+VdqT%ar6i`C|6mPcZ=nCV@LP&GsF}5vlXYTX$8S0^-#bL zNI2L}jG!IC6I!8x$WiOZUx_?oZ`CRtdXL~f@5DfdAMjlQ{?GV7yhPUNVIH(aatYO+ z=1{@#pyA7LK|bv>hibJ$vI>Lfj&*U8&XjbUOq(>LbZZ%%A9){8c4#2S$af}x6ZF0# z?ShWYj0Ve^r^e?vUn@|%kp};y^$54DbGKfRccSe|$l_txTNvdaAA|od3!q0wL0mNh zfX{OhQHfy)^HD{>BOc>Db*)$9DSNS9WBJm_@*~Pmt#4ZMxBvX`73X)KZ*soNOIi#1%$N%<2*_i+f5z2E(fzOBe_4s*N zkVWgHTo78(z+K6|%7BH>vAf?_z6GY1<}RewirOc)b1i_lMMW zg0HrScXQRj;d%68HnIkU)0lQtB1p*KZm{S^SU2C(TV3e5X2m&km-^v#l8wFwu-~Tj z@9(E2)9UwEa0~BOLtrr^Ht_5A0?^sR`7#ouBGA`C4SI#tF0} zg4e^oeOqnHw`}e=bM${Tv4Xli19*P(kRJmu0HDSPf`<&cD2fl+K1>fuonW!3p`u8W?GSt`nw18Cb>4E;ZZwk;kr%6p#G& zWKR#j<{56L{Ko8lxs!=!+Cd}wFJk|P3hwUDhWM5Icj3|8pK8Ul*#**4USN%|Vv+$m z3y7%hxMYZAMuF3{De@UGd8k^KJaj`W*?66 z`pmC-T1qV?h>&l@c*n*l195gEhHPRMTQ6GJ?VvpNG zL+e_eL4?MaxjhZ1J~r76i1_x(R6v#Dq6_G5JnbPEzt(_~F>`^CU`X9x7FlcROYl*4 zV`(&W0>UC|wc|mwhMq8=rN)+x(*);#w}8vNGcj<%@V)nVy~vWM-#!~hxXjPmwPuxG zL@tUV0b>XqgyIn$1N1*1K+G4;g1m<(pGA#t5k*(IfWdbIki9x1G+`7bykz!n#^V$< zgKKEi;o^?xtcSDFeDgDQ!br7B0FQ=f-Af}v zTq>X*m}0zN#x<2^YFp!m&sm|YWAmnB24{YS5~V7q`2MooK=Q%J zf!d6Nic~BUU@^&fYCbb342C3@>$UGZ#O-}ku{G^ zHn$=cLwJQG2aaJ?QeidtD2M|Zg&$~!m(V=BwJY5|&ICE?wFPo88I&%!)w)1!9yw{J zU>BCNY%$YMari128G)p!8~|RNJ+YDugh-+d57tmjQ}vyA@Ey!DIjFC0xFD?{Ezd~F zNABxkoRB(){*r~pfU7NCf; z!}I_wPZwB=lIKnua9p4V>x+gH&@Yz!MdI5lzkf z4_uHNL@l9j+3K7U{l__XfSX=(b;?8g>VTJ@y{c=&!xKnRPL~(ttR?VzY z6S>;r?<~wrwNM-43XW-O9#qKYUpFxZk`0qMeC%=KtZvaUDvYw zo^6Y-vtc=L;5a}gam4+UaRf>Cb(gvl1V%nW2yEXJ{Ru$4J) z5czfw??PC<(f^_2d&Sf@s%+SXU;gI)mxiIW3wgnXPv6Fk{EJ#Ex_ogPZWe4e4@k}& z#(G*3h~>3mEPFt(&-K$#4tBQdzE>(PNAE~$`2e~2-Mal!GS%F6>}rI|%MBmY%^iE% z+Rl4{8Jkt_nY&i5eSQ$sHdP4e1NU=wJ5Vs0h_n#6m4Ni%|57kWD3N{-VhaT@GdZ!q z`Va+5mxr~D426FpN3K6EvFs%cn0kGp)wT_MUoW55ZxfI5T(RAKIqO*>=MMF%QSqrL zafOdm=O=x+|2T_HiOB#ptxlAJs1Zc^RWR6H#1FJMixRomu9KSY9lm*1T}TELX08`9)}`Q0_rTK{v_O8*P!rn zyiWD|j_Oh%o2u%{CkMhszc}M)8cai*S=MVxotXSw?8xK8mc@nBH}T6GQ#y5*l?Hx?J}`t6nrY8S9CHGcrKzb`$`8|6U&?d$|z~30&7( z&`?-iiZ%Hod}-Y4Ss7aJah4G?s!i@oc|^0SQplpIf_1#H&)2k5=QO74u;E5q>xb$u z5!jT-re(GQfC?LvR{w%81>bcOO~8CcgKPBdP&S1ND@#ErA1N2@dVI9q9Rbb0q#kO(Lbwt2;JLZ#MVh;eqcc zgcry|PZz8>PW!-84fX-!UG4F`W4rrnw!I$@eBi}vJ2%Y9ZjQ+J^Hv;?C#Ap<&sdci-dUAP8s_y1hDl0JK*{Zte1`U>i7@3WYn$GiHIS4JTMJED}BjTAn8l zsMdCTbm-7Mt7li&!u#xj^_^+nXsUVLHo|DD@ENs;}s2T*Ek9SP9|p zflGj_{E|`Uq(HX-S>doqQ5G!1oH|SH2NTZ9TXT zqaZORcrnv)_^?Y;r~>D$q0)AHSN4mC<=X%-&NF=tDF#f=m?7+B@}dS1syg^G>j>Lj zq_G(iB9A#uPs{%dTit30K5#$7MZ z?7FAG$mzrRsP}PacU<)E<{2&pc?KIdCL=_%Pl?MQvJl#ns?a{-J<{PF`fEBihf zobmB$(EP;$>4pvGQ<%BniWg>LEj;qFaeY#1ZY@*d4R4jZaxL??)=0C1U>E}s><<8K z0`@PpIf}v6XcY*oB`W==-?LKA_|Rp_{OyTPS!I83#b0qTw}~|!N_D%)A_tXW(@7LA z1g!=y00vg2ru1E$#9E0!&*l1us#DkOMgpI!TfDzdH*H%frd+R=;Gs0!pdpNR=v5h( z_0CDMvbfS`nJ*`$bvLh8fd((2Num0AVtGbj^*@kI@FBYSpPNfN0T(&BG^6^F_2WL? zfTR`MUTe!lhs^uAX<6R5KQ1g?_9MCtO`9%R4?0;a8_UvsF_L$fc4O%kX49Rjq>O7$ zf=Y7sd~IF(x6%5+cAuX0UdLy~Dvw~l;@Z~PqBaP>IfKX+;+;Z>tRwhN$Gw1Gd-BmE z^GBT9vp6A6teEHE;~MLBcm2ITzJ2q*A)3>N3xgOEWcGeZ4G8NS9@y|*M2*@ z7-q{%?=OeyU&|iNx1Qz)-NRqw9vwB3+2Bz;6I`1Ug6+wt$r`qRn1Ub6pDTU$C-l|?BzO!onVC?O#9mOJ zZp7?S554fiJs)yvg=8|N^W|(F`JDJs#EvOrzMAzMiT({`c!dSq=fYDBy0{qM8~EmY zyR(mWE=hh**Erz45OzxXDqv+3Zkm4xh7xG@X8)B(=%h&k!m9*c)tr5a6H30PYQwbP zB(ryCxjzWh=Op94G7ev#H2>lpaqC5ghf>&Gg-cvBnp!k?SM{;+gmH$X6765qf6Ui9 zXA^WQ8irtNmtkdG9jMp-gg&=66Nd69R+(GiKDNe(KTJVKO$A~# zZ_TTfCGQ6V2LK)c5oB1rp8($A(D78rb;qXKl0cA^3wlKhq@z5|pFO>F!bIRFliF%xU2NCIAlS~V^5PtQydCWoC^`fEa z%-@8no75XRTfjNv9FQ{HmLZ z(-#`eA?8Amr?|B!ub-d3mzdH{+2_QGTcp)}t5F{!ahGtV3ZYFaNjI z$pe-8^5BcW?3izvox4Z}dCR;U#L^O2%E4yvbJk^~H=UnMKbT1R1Gu#O-xN|hoIj43 z3IEVOHo~hD=VI=+QohsA;rH~m?c}O1RS;-vUTIE}(tbSxS|0=r@ss{_BQn7&SL4oZ&VHrZ^W-Gc(ddUR7 zs6Vk#F`(a*OPPCc!N-k%$EVM2>p~r#?2Q*ipCG?=_B%|!ztQR0Dfpq^;!f=5SSY#U zpe1Y&iR?k88HxlOVwqi6z}C+rB@i_XAjp7Jgpz}K7&2cbiJ&wBNd@kl?;XEhQL=aV zUff+7A3O6qy&5k)?Sn3zyXo)2&34s`7S2OsiEn_`umAJzVQ!>~j zsh4(hUeYwTpRJeY#=KucnvVEVT@|77DDY?P-|zDub#9h%4Do$HI|hxnewCc6cz)b+ z2%3N*a_J{xekTpz8j}}Y&g&Ac+PEFmJ20>O(san>*`Zx0kNnUcOn^aCr46Tef>HPe z+vF84!~3OsNAKfWRc+RJ$=q`8pwO{vq=V<;UOCw|ea}sb0e$@I43-F6YLE;}#R?zgSK~OT{(vU@}_7mH@ls=lhyVS^wDKNgR?mKXqQq=^@|P9C099#VZom7k<-41 zK5slpV5zc>{%Q3`wLB(catuJsZVFBGU;!_{rdHQ~LiTwOhsNOM&I%2}gPQ zt4gP#QsCb+unqmM1DrbPtj=_eJkBbxUTmm!PJLuLc5OTVv3i?nsT-3a2D?44w*0Ac zialyB8 z_AeDIImOB|RRVjWSBy$j_aF@NbV|7j`!CqVar#yCrq=ii3~YAyKbuGk&v10BRp|M& z)_(4XcDIS{PHC&3*BeirzL%++z7EEA{bBN@7I00mkSZeuX4I7y* z(RW;u#DCUf(q1n{-Rf&ib}y)T_xAyME6=i$?71HkH{JG_PydU0f8oj_qx(C( z!{P|e$mumov>^Z~j7(mwjwsbs+RlG*_62C@l7jBOE@yzp}B z|@7sa%gn9>B<%2zg zlU?lnXatRdDS#rqh!Iea8^TU>KFNb^8bpiTcCwn>1J#zmFz<}&1eb#5DwBP$?p>8D z7V^LU3xyefXz}UGq8@Xq(2#hZ?E{{>f^WqE-_8pI$hw=bL)BENqu1d=)}n4qOhMxY z&doz>Nw4u6SV0jz%es74HL*&D21Y5v1lj@PRVsOAm zN?_RKe*J6NV}BU>_sgw^2Wc1IS5_uuWStHL?Vx88k-Q%vKtKKy@tym+ax2b)P3$6* z9-_YfH!N`*t`p0aVzGFUZd}D6=nhriiSKxLa{+&VZt}c9-~M2HK~(C3xw+ngnNx{l z{Pickil)W-%`x%ER$fm*e(l#6gXjSn5aOss~XBsL_P2 zut|iRIS!uy5ETs;K3Eeh@|7E=ET9F?ns|rhf6{MhAitjutOm&MPXa6Djit^IpJ4!n_V9q$5Es*pt`;|`ifc?7NC=E& zHGzuma}sT`rY!V_T?em=Q=&q=jdOhc)r&3H$l};ZEp=EK%@HI=j<2_DB{^2NarnWP zZncWO#+IQMH^8f_!*MJHwr6Q6y(5yT(hk9ND1b2qZ&mg)n82JX$#xnC{^aJhlURhI}R)j z>{eYmV34llvQAn9d96?nsNNATgCE7wFQnm^2*db!(8M@w!`w^>EU~PRxnus7zr$;( z<9UEhyi%y?=+$TUDqeN6%(Yhx7@%TzmGhYpvxbAO0$({;5*>jIX)|y1lS^}|Meh3W zq$$|kSNTS$Id>5R-vQoCNq@m(Zx9ItMgxCl4q|f?-Be&{!{Y*LUrB!|Ew1M&+uA6B8P)jFM&Rb zpRBV@_sI;01>Vj;jN3`--{ro!6m}754Xh&+v{B|^fz9(AA0`1X7$U&7Or0p0eKET1 zH>&$sc0puabmd>vr!N&wkM7Vn(r#OhZO2cXZpM3qQVO44D@W=F4mQCc4&6K-kj@M< zaQy8Uq58K_Q;CDsUv)9YKVi|X;s5O2o3IYR3*7=ql7lY|FFtbp3?pHGut9`xc()%q)iL!L7^6f}hfMUa9)3Wb{MsB00+TRbXK)%>ld|t@j z$Dx0(e5vdKyqP6-HO0p@Iws`x^CdBHw_dsnMBc(Q3HWdT{-?!@Ez~S%Nm-!2Ac-;7 zBmTw)N@UmG7gc&ch1y&d=3Id47kWy^%UbL2y+y<4ytb`^u_Eg{$c}kY!v->Nm~Q}H z^W_QA#eCMqKrdz_Jj%H1^<2wPFkRK$qDR%&zx(36e{rkor*+ZYd1Lx7o91SMb`>qX zJcw(zd12X)fsX)FzOQ5g0PdFow!Q$G%qMIQTxh`kVcL!OlZUldY%OL?N-B$lC?XeU zkG2&XGybMcz2n)~KDb5gveUS^Vv47A1Fhy8gW48yU!V20GCi@WW`U1Uf-Xa0j^vlMOT zZ}Vr-5A-jem6M$EDVltx@PVC7Vv9|GqO~J^`$(K`v;U%!eYe5j*Ut9@b%a-wntRIh z0uN5LP+gwmqAE@>T-0PyP)X(?D(b-6X>owBIi@zhu}_Lp6dG(oa*m1oZd z=mD5gjE1#xCopWmk}1RYEF+jS$vrN}c4Gz<_Y@jMGA|Uq@$wdbu^=*jx90D3qDA+z z>^Vp7TkN0U`E=_pUK4%!lvgA(TbSJd`w-Nvo9FhsK2P zth6Jt-aogd(MP02ftLP3095=5-5}C0biqnp^+fm}Ve#u02^n{8Wlc$O9BEDZ%;Hk& z#eOyC7*Dk~##SPhhqhQ;^(PUq37kyQ_&Tq|IAF zpdETfjb8QKC5F$8wqe~GWPr!*I0QD)1QA4riDh2Tuy-+`xc%AionTiVwfsUiZC$GY zxyN=h#z`~tW4H=CeT^=8aYrGtV96`r=q#%c=r!Haaz%xM2TEedU;)U&~*jAwz$N?wq)CT?L2q_Ph>rNen)4_SnCufB@zoCK0-aD^_1D zpocMKIjL-UK=rk!JcZIQCQyDy)$r$`lu0wCH%n@2iud;)uh2gB?f4U6`H@A?ZmiXS;i&6uVZ@6su*Fi?lFn)!6ASreRAA!9$>tum z3V@0`T$xe$OC|vozKI&Or{#@uNjZc)uT?}R@q z`t((WW59w!@GnZd=F%xC;8I57qI-Ve)!>3X(2tvcqxV5mlNKEj+{{bcTAgqUAfL(Y z3@*`8HYjt38U!l>PL_#Le@HxVu;o~*TJ@yPdoAygv$t=t_`Vh-r`>;P#O>Kk4mv_m zF`aJ0|6_$H;s?g*x3wFvfGe!Vh+)rs1UGuqXB(^58po6(mwd6bA~*dZ&0U`3mr8wh z`@HVyNjFS)_CsN2_l0#l&frX;Rwge2bTD40e>t zY2~vKD-=n0)^qp--DYCF4*eALeG1WwyMG1Z8th!kPoER~pD z5EvOJvN}F2)aYoCIzf(^C^P4~#3)^+**lyW+u!{8=;M!l-;?B8;NP;bA8=9N3hvap zOY38%JcUNyj;ITYy&^F$j(C`X=l0n`bZ!V5xf$Q6TX{F ztn{#(pV?87_*A29azJj^3T-m>(j`L)6KD)GGdRV=7FVRIiv*hu=%1xOn(7}DqIZlo zw&&hiPnSmeQ@)F^KBv}ywA*OM(20utx&ZpoW%K>^2A339^h4JS>I2QN*3-D936{PV z*0pPUP^NhI@uDu$&`tR`N*N?Z1damr8xa+#HyIH&iHj!7j6I6 zRh9L3qLEjs_I-M~0`R_Sw2wGwkhKBA3phY`bqw zE#++x?xGg{WVLm%{Ndzu#eOM^{3->D`@z^Eb{~Gz)=w7a1|v^5I1!yA$qJA;&74Y15~dTu?!!_O%-q7eL=ld z+2p%7LSWl=j`$-qDE-TGE~i~nVFb^2QgP7%92L$-=r(X)Y!<(=j)PM(1RXqYQ(OuL zil~oWFH{u`0IsIP9eK5xGVR}@u!HIxKc0)dVkTzUm1Ly@i5Tby4#l{ zWBw*4tzbOdXoOy;aBzRhjDasB;nScTG`1a-orbuOy+iO>I)?d_zTQkG5XENTsCR)6sgBay`;0tCMove|cE-@xI6#69%tqlW~&n^1L z`br(p;}lT$cxs1l$EgrJ@PeAgHm*z=?BbHv9OUgK`>4!pwKloHHY`!3%Tbu~x_0;J z6QuAOIX9-HoVU^&mD^_(;x8QB7IZsq=uJq=jO;d?xhEzOrAz+dgP_j{0yVuu2M!kE z@@nMex8*nexmH-?N2S#*^pg7=mKvlhySxUu^29n%($ZD7)O_e5Xulu>PJB`dDFUx- z7g#$rG25ihPvKK63oq48`#Scr_`?09_#w&Ei^WFXnr8dI9i}f8XOXLphCnZ;p?6(u zF(g4L66NsyaZBIlA|c>-I2 zNF8Jg@>0`FsL+lD8yQtbK$NFkB}4R?ryNVUh9zlwG%qt>H8O_AlVPYqXh0ls0TZIWUTnsztqVWapf&PX`ROXA+x}K z)F*EJ0nqjI&sbRsKa~D_GsuHv6>^rx`z|He|DL zE&%Fv*vngM{pd=I|);i+g#TABUoT^U&wZ_+0T84>MmLY zc6!4$18XgT3w4HKZ~`^WexfUyh74salwWomWK!O653CEk&OXz2wdJ?s12OMY7;1Fo zcz^oaO_|ZEtKsEtY0lBH54l!n#TLST`Sfw=+idRLYWoS3s}Y|>Ka;2}qgOD)QX6Xl z5pUcoO^wwE4cmw$(bnbS>37RB9uUV@cEaR$f#j)*R-GE}301A> z+x?}ySda#AZqIAR{3xGcu`VsvOIBKGm~Uz}bU3L<;P?2A1WL`}^iU z$kji7ahY>TRn}?ziMLW!X;ZeDmP;9V7qN17s{qq{c82lRcXgFHMQjK;NNNM%vRxp4 z;D%sC_7XH1UoC$}sV`?NY?U;4y&`vmo!^MPLkz*8v3D(>AWEEcyt>`j*$90HC$%>p z8u!QWmI}t6(Y^6O`m@et2)1E=Oh>ybd2kMAg>Ml66GP!k@*Am$5Z^A3t9ygUQU2Sv zH$~sNA%oq9qnJF$Qd>t2Sq@*T=&dw`0g2!e(*e5Wgk@=m)Dc#^j*>*v8ROF-*Ns!F zXwoWk(62~j?{CCo-JONiq2P%Z_nEbf>8AU%{^Nsd1Qi01CUzph zN7mW>hO8Hd*3+tL^1Z#lb=tE+KPQD zb8ccmcI?zpKGf6E2!z}RTA2^gcLmI&gm%scytW?K!C;M?kLmXK6(gxqtY~J zsKe-b@%r=!cajHlm&kW}*M+JC; zt~3ckIKEH%mo;&?JK7Jmnf>?2M`~hxj)-E0wH_#3{^wj2uR^NJUk$nFtUKF~yOWAs z3R9To=)F@XyYl9G$wOc)*7jN)TYya6s~!hqsU{JSt9qCS z$!WriXGo2hQ-7pDGwXc7Z8L>${bem;ZONk1iK1pV{<#1H}_`W4W(Ll0Q z`3p)D|8X)c)#37DQR|MZ+S6Z4v{stAZyr>hmKM=0a&Y*~1~8mw5?BW5{Y$fxJCDyS^MqqMb0e z(v#f?uIIjnfbOlos}VzmO146w7W?<1y(}yp8+60 zX?%{j03hjs3fo2p9Sb?@hRAtY_VMXQ@Gc_Ir@#mAuSe*nolAxS_8)N!$U| z@5k?RlTqnYD_w|+81SOT&WlzAd8qrjw@0}@y>`{?MWDm2@D^*+q3gjpzx@PKR;oL5$5$=r1HDRb*D(nzoVmV zHhw_$G($m#K`Tw1Zr_R>8Z^rw^5L%W{^foAY9xCi@tq(cxx<#?O<3MBD;e|-JvoJl zqQOK3i4z1iKk;8w6lr-Dbop}%@CLy)J+-R%j&XsqjWr@~prN$pHJm%-3E5fvV} zLv0>ENy{+}=EnMvPB$}` zfFs8gzqZ@8-!J)etoW(VZoj`;#FxUI+Ivt4sH06hU^@a~$p>Ll-Q1S2fY2KQYf_k> z;ANHx(v0ZQ(Jg5Yz4l!T)*C4Br3soh+^P)iogZoI7B?Gd`$SeY(8SFM%Acfdya4p! zpyw27a8&8W-tvk<4*e``ulCTiXBfQfTbg+?RZ*oi5Sl1$`yWcM91p|F&C7sijfT2m^ShNTieZMpB-SCI7Y^Z%1qZ>>AGHXR1(N2a zu`L@{H0!*|B;9qSHS7Fd1gubCNuDx%>ENU#Tk66DNhoj@*+pjbHP-U=d6wDF^xpHt zce(J6T=;!$zT8GsD9Ag)S!!R)%8$C6pjC;T5rSX8}`jx3@#n)75?G zZ}ng#*DC2J1Ro#(q6Uj#(47>T&KAc-j;WF((4v7PBYHW>!&`Ht-Y*+0v#jjLF_S~G z6ZXL#KNZe-fBy@Y(~k%7v6b9tVRJ7ya^TZvVD)AhE$~MszDvR@6d)9CE@7UfOMXon zYuT-)7(38@DRgGZ-?abpi?K1$6q}Z|$xAE84yT}y4-oaQ7vR!-LRW7Y4<83n`%`^$ zzwAKWzrb&yCtSZaq&@Uwm_Si0cuF{or-wgB8I6`bXq95H^`Qpp*7()4#s&YPo`63X zegJA-zbGTbFyj>A_rXhGB7*_H*N(4G?Vg05c2n%P3;$7Emyjq>TGR>{X2L2}KC}S7 z^RV^=R_+RbBi;gHdlV4CV+i9Ch&1~a;8#%&jCkzcD6{>sAb3v1vY@&9!H?^}FEdJw zTp2BhKlSvbg4$Fv5OijR&7$Rw zd+D)Jxp#H_!rvBnW-M(=_gTstU#VttJ0e}-K~JKto$Rca={l2Qx9|hG5&rtNJ4tb#KX{aKJI~(HLED?qc2o8;o|$&B2~W!Qg;A7^F$eBCz+| z>+m+LpMlXFyp$tef-nR`^H94lzJ5T4k^~qfN}f%6j3~|!nWVf zk~i{pb+TR|hR7Xjg?tEKvUnja=SDNB81 zt|yj06Ey99yUDwGm#eGJ#F;@j>qJ!Hsact~u_xzG>eDsq-=Vw7Fz`QUUs#s-4suy* z2y!6!00aL%cV6D6wAe|ZOJC65!J?>r?@QBv?mgA!lCoh!z)ejByynsfKdeawR2nq; zEUvPLtv&_OJj`t)I%+<6y7cB0vyPR%^IYlgT)OD2CS0Ya0-xX{1j|oCl1Se;I`|Ov ztL}o$PcMC=9L2K4SL)tAn!K+(ikc;ooS$^>-Q>az18y4H1bRPi9N&f8C)c-R@!TE# z%y+}<=`qPWOG^?BcM8T%RbRR$A7LFMxnn>{)(Nyj@&ehez#jpfd_DOP)uZ)alqhbb zf-N4$azwff_2I7!O{NVa`I)DmKgkU=0f-_g6^kJ#bApx#bMwy5;jqs~M5WtcgQ9TJ)MFdjB7_`wP;QfZYeZn4$a zbN}Q?6fm@P8b+$11sAycJ2p7kwHo-=ak?2U3dDlj??xIi98*1Vt__W6geiXRU$a*= zbUUzEd_nST(cA|U*=R9(OGl!0W00g-J53VzapJKA~zjdo`)ORl?dfJ-^~W_kt@WcRhObU!rBfKkG{25ic;k%e)t6JJVs zmxbZ@)<&Ck>v7fkK9Wb_?=LTOu+wjnznwdhDW|R6vV{Fk*zyL)Hzmsc#~WM)mM^SM zUt`h|5Y#BpNHrR{Bl9Ag*qG9oGl;uwbkXn-CuLK;)S|uV;v1QhO)=r)3T|&dlUAx$ zQYn9dlVb+ef5Mcz(iA7WU=^=W!)@2#LIl)z1!-k^ssR^j(#>DrcF;Rt+wY-pT3#9u zO~|UCsX?NdppImH_+QikG<+HY?0*&{*nor;S4g^NOxb~d{s`bDH^tu=HKjb zO?!zstW}x5>ul}Mzb-MFNy13=R$^p7YBVE6V=V2zXa|K6BOKkEK+9yEXPbeI`NXz@ z{U))(<2g}OY3mE3=SoW7(B4;+8CkR91gg&1CmSXrRb|KtEd71}u&NUT_=riX8QU_~ zVJ`D3g9|srDddUlDos%w(l@FTJV&u;{U_7kAdhQ>goxr=)WI%7Y`*`JuMV(_-efmI z47RL`E$CAR0YO|)FN7l`znYxa{)-+r-${HhK!0NoXRQqGDEc--ZY8#Z^o2bEKH=Pm zSE9SJ1yUyv;$+&fWec!1mj={n@$;fjJKTH%dr#{-)s61W8!{99?bO}Pvl>u(*OXx1l*qS3C!Xsoz*0&iw)Peam|~rD*Kumbj;zpZO2|~){NCmkXuds zlaLc^5UMuJ!e4;NHr#Rz2C?i178P@~Ij}J{?g(&PGcxZ~exRBI?j{I~4D&@Yw zbn;gV?kd^H+VS@sq~X|@{&sLB9B2?3y6bbcIKU>|rq4!y0w{vh`YwedlJ0E^6|aqa z9v`Rc#9lS#J#tK;s7UP2o9p+DP{HdN!H?mgi4Mm;#~ywAPxfQBKa%&IuPE^}ySQX6 ze(%!1-{cYZctc`f zwc?c(02JJicyuZ~jL{60jI;M8G~f@>wb_D_VCtH_YtG1=Zengkaz|;+b85Q5-yd@` z#?<|a;uh!v6#ff{B(@9UpTc}+Q#Vo_uF(S~PJ3q;EEeKH~f9!(w+w0R+K(aVAJS}lmoEssAqO&+!_SA}9YKy7LAuEm zqBL`s75nC3?Mb#XBRw}SFsvyVa{n5y_eSnnaba7WT=cWvlLwkEek>GJydt#+0m(LM zyVuUZ5>rkxVgM5_^{ExCe)Y2Mllxo~zgv(uxxB3U+JLzD8PlGisF}l>``bo%gpo&% zigf6OzVM_wh#lK4s(SrA4$qjYP$b(N$7Y6Scr?tpKeq|@+WxjSHb&(i;@-}WGI%sW zqFrE}4VGgt6B*cv+32-2ZHFE;>y^$Wm7&JgV}MjPUYm*rkM`QIULg&-78MiFFNiuAQFGZv>rI~9*e*IP?Ppo6fvv?07wq z0EA#S08A3Mxk3Ab-7~M<^T9+O=lDAu(@OZk(l6<(pE&qW(K8Ly+qe{VA&6n?fnS$3 zzUslmz+S6cA>=m`w#dL-BwHBFmb3mQ-2_XvX*>}vW9&ZUzVQ>NHERk`Y@zb(Lx~~Z zY8Yq>w8SVpTLD;sP$=pA&BO1ulVyQm6k^IF*+TYUsH3ne;QKLMWuf=O(Dj-an!dJQ z?&(jK0moIt)Ae+aGqNKaJ%yar*6y^sSbDFY$ z+Zw2!81f)|z_ZKr_zYAf&-s5*Q;D1tVAYBsY6sNmSei3S_dA(x!7GhzOc&`^n~j)i zv@Sn7cg(G~UFCa+Vl<}ug(DnFj<@SN_(jBi+h|4k?BqY+nV- zpbA;W%9;$k+KhrS{Qg7a<@cXtn($vh_%noMdU5jfPqhp}~=qOq$K-h?0zcaqz{ z@KXVci!Cmug#tZN`A3gDvHWr0_`+j8BNYCgI$NL>*=?L(frz(Hv?4-wUjL%RNL6?# zwmSTn9##JkY9xejsuChg`3?$rIp@qJF^26ZXUP61ot_>xjv^*rL4D1y{Xh7c02?i} z2nUMH@B!CF1_KLVon&gJAzvR}3Cr#;3mae4%1CP;+&w()3-@+y3YRqXrVx=uq%~=dpiA zKs}kQT?K5LFz(m*;u}UaGl-K-cJJNS9{cG`)C;cM3@hr6K18kE;Gk9GCe&X=n!PMy+S?V7}}jWHk) zdAiCVBfI569p~fLl?a;(38gTd#{b43np5vURX{{D_Se*4cdQQ^^?~Q}J2bNn$g(d~ zZ%=kc!-usa%F=w8b_26Xe;Zexl6(D58s%i}y|?q*4@shi&i8y3nJa(}f72B=145{s zHW)0j$ABRXxS~ClcPqpP4jliqtxfuKppICJPS@t$?rn}v4D(5B2%Zn-wT819mbPWx z!3OW@2Eo7>%C3os9n(<>E39pymZ!gwEJ3aj*3nzXfi4JuOVOI!wApiim&6#ceodN? z*Y*xw-v!bg^*A!M4@b*?t_F~vG_}o}8%cNAJF>N3kL6M7I4Y}vX2=Gd<{7YZJYE^! zUlgp)iO}Dc1#b8g(l3MTw8dJ9zE$xPyP`}~Y|jRG{#eluw`x+__S9j>n*9Ce?>f|P z>J6W|P5z(jTh+?)2W0wX%b_3J1}D9qmVl^JF3Qm4eV5MWUgywl$VW2W2224!c1N-f zvoSrZfOLN+AqVdIXV6Q;1KSv&d$s(FkEVV8+>*b6?M ziNsV}fG&ifOo(w63__O4<{d)Du)M-wxx#dl5~;%IV#l7SDA8a#H^i% zmyt^|0^WcDR1X3vkTHoF?y7^t=Qn4*e)z-pdu$ZOx9BbGTH1NGes+T~bB+?aJ#HBn zLZmxaA0Go8%kt5S+bIp_V&5TuZR=Vs^a6NlkEy`H@T~6&`!?f2rMSev`>ugW%fFp~ zbI+va5O|aiI4-#w%gGq+Mok=?d)~o#M#VYkarOZ_%5I!%nqGF}tLM63_Lu^t=|Eq9 zzKRvOBZ60^H}~sCq~)EJVpdo$DMZ}KzSvXa`DJhPu6ki)=Y{*9d@6EJx9B-XJ69N% zAp=CZ@z%II?ljI@hbutsh6ha`JE7SYp%K2U_vo;+hxi+vTK8-o*Ql`4%MHp z(aB+-sriy*KB|2t!MJ2FxA@di&lKLU@=*m`^8Ln>Q<8zChGjTdohSqy8Z)8|t1W zcrCUE6LNDj!UhdgSXTiDEbxp&pW*v3MO^^zsumapV&Dq>Bu#kF3{P=Y?=o$w7Wt`} zkNMo{s%1Tq&D-R<=b@Bx^W$k;Q!87ha|Zp3MQx#q+qZ~1RlAA^3U}Re&1*F%Iwb={ z0v!n!1@;hVH!@IeSa@)$i!IQ_M8G4@;``$QbHO}VA)CfcuMjm_cI^74?x`Nyah25f zp&|@b8Ulb#Pi6!v1B4O7>S1yo7CvsU4%IvPwuNB8pzAvHI^NV$W(o|=xX82l<+5p8 zvu=t-&nYR=bGF$#SgElh{RqQlQ39WwUH5lnbfhv?%qdzVZj`bVZZ&v2-|ZnmBcgH$sx#z-1UDyp`CjzdM}- zX5Nu#`{#pXPy_#>)QdrW?I5{11efQKFDCYFD#sMXi1ucmY*FUooB|9!pjC9K%z46!wS3;y)qbWSd?!PQW z{Er79rC)F4aj(XR3fP_;D0U_jsrh1M*G`yar0Bd-d^%qJ+J67FalEjW>#~P1auQT6 z6FULL()Plhuu18o(C>b8cH})7ca|MEj&YYeHIG<&t?HdQjZM=g7sy|GS9toJ4X65E zpg;>_FwcJp<|ycCn)tdUnMgEnIbIUW!L%(EW-+Ys@eatDTu3|ETED3k9;AYUJt-Dp z#wlah=oi|D>tAwLqP}OvpW>#MA;&0@+0b1K{T4+W@>q^4LdT(>Og_#uu(@2(y0HrC z@cB3j4&gTj=WrX}fRkPZiWm37uC}N!Fw!K(0^EgNw6_7>cGoq6ht1_uj;hID;ZwK~ z{G?kb{tP=GaI8~tbkj8Ri=p+YE!GVIyJs(CwiF$FR3v&X`mqXo8lvW|I|i`#KVpVB zJP9U0H$1{6<;^L20KEZW$te_O*BhU2Qj9K;=NNs#Vy1A2$H_yR0K|KdaXS^=`0V&N zEpo7i!8}oPm2YN=)^ao?=qdYsaAP?+MiNBLU~HcUI;98cta2xN!S8%u7QjnWD|xkt z&ff&Pd|-7UoC`TUe7f~L$X?Iv6hppz14`xL`(H=#C;w=)PM^ZeHv;970oD%wqn;ao z6zLHRR^x>0^JW85q|OTG-wN^Y!`9P}jr7|Hzo?Z@qQ0AF9BVQaKXs~2cry)HA_?%> z8a$X)X&%FSwjXli*vxZ!^g$_kbn83rMFU{#4r zqz85iYpt(VaYWEH5)|n%v3BnP&OetV(%x8d6ZRmsG z8paYLDC_14Yt)r@5X+_h6p_yTa(8Kkjpw=EfUUni7u~BWDjv*bc{?cjwF`BY zeVRTUl^%A@?zy2^1cBiXG$HOV+$s$iMdalU(9vuBF9QGefF9+R)kKIIWX}{aoyN4d zxK00TdrNi+EXU@T>u#Gom+eYv)}T3e_=<*wQ^abix`@CBa4csdLg3nIaBDRtM6xW; zYD@6x?g@r-e_mNhqCFXH0+pjPKpb~4=Z)`DR2P)qeD-9!Te`)m$IF^glyl<8Xf;Mt z$Bh2=oEwjfw2%n|yCKMlb4RDeg@hKGl`qcrEo^t0n&pq!708wrbBR47p z$OdhiIo7#EWcYvM85{B5t0;OuGTPzUnEH+DUlrLY7*qUL64f7!1T4`z;OV#co(Z=wK)MRSIoYOukjk$7hb~z`y_IFE5n`NBlt&ZkA!}seCw`IzYw+KoGSP z?5y|N8u5fmT=TdRIW29&(BZbmUkRpG!BX4+clwpm@WSVo=^|ZEF@J58E?T>7e_dN* z9*1y}Eto2$wkyA+JyV#c_5Won0mfy1!Ef=N;0mS@1Vy&6wsKGF$Yn$h=6$;`^vLz} zHIfNO-%D%#U_Z^L&UZP!7(Q`JtHq3>ff1An(IV@{fc!_6sW;&B*M;{=l=^L=8Y)8c zw7GDev1Z#b6{aY@@0>2*)U_}H|KuclUuukjArFvg&k%1R5{?3A`G~wr>|h z)=c}HnZZ3H@tL$`5(5m9=ZaTSEhzF+^@8m+#yK6Xr#y&@^zGQXVBtLT(hv4~7GxAk zzDmqa31ENs!2Xk9v=&6q(*=mg2nhHUh88IMcFjTjCPK^;u*OulM%?7y6Kd#Y6S;l` zO~=I=mvXy|pauW6b`Ir)_u=>0X6~tM9b;7hr&&Bnz19MfO+X!1)Wllhb zQ&mE7-J$#?;c*+BNQ;o`_r?N-NlWFd7+;jVvKD5jC($*ePCs1j^XS2*R!h1V!tHbC z&Fo>lc6fd}Ec^%e_9;Bj1qT2k=l9P*u|3V`7z6t#rWxzip8mhXOz8rL!`WzR_t1q} zBOb!U)gk(Wx0qkpEO)1mX{y2dGyOhLyLf*evf6jT_v7cW57mv_5`e#1XT82!*0`SA z_~Zt0Qx51yxbI^+7c8&&yJ>Rh=K);{>mQU1`rP0otoYgXxTa7hcPGd1drA^*kRC)n1}0r}H;w$jb)bEI zOPQ2B2^-jjssZCkkoWYvX6wox=#nEtD6}!ZYLIG&(H8ODn9G!(o7pQ?QZ!w&Z zo-9x(prTuJMhG#1Dt4cBQIH9H!LE%W{C_-afWh>HZasH+7y0sb0KPDvlx(_y- zENfyYYjl=rAybz0Kt~d_iGA9(@IN>%t};c>-Jdml^V^Vn&UvMS6RG+B)VtFE&6 zU1fmr#rJ?_P2%D_!Vk1LdK2FV0oumo2~Ac8K;N;>)-1@T_cu)^vv`qe;VnL_Hdk4m z)#s%k9US-BYX8a5ttaokD6-Q$5nkXMxPF6|^`8cL@b`2bMBAjhQwdDfG`6nXpVFl5D+d2kc4_$HR#Y#f z5BqAXd|sW9uwFlS+H>uGwF@KI=PU(PSmC_9WmF|c`0k%;{Jx7#jCmW}Yadv?-7_+T z@Em#{!c9+LrBklabc&~W^#crh_(LC#jD6!6;_|4Cp8MnQ(ob<3DroFU~iHark}y zq_LphXs&-MtPcOVt?y;qao7!}rjGvNt((H)KO+*e4az-s%{}K4LF8FfVanUM{DI$pUw{Gh^kC zqf~)~;^PhCtW5N6;rx)tmNaI&P5;M$(LJ}7`d5uA1N?vUSxHkyf&+-42W|!h>xt6e zf*%RS|ESSe&SWT#4tpCkEtV{W<$rqDC`-+deo1TP)3jMT%;y{I|AW8o2RA*hb|mGG z)(gL(5z@DI4xgRQGlXX1AGZw(FDMekC^bz#2nLF;Vb-TMPcm zF;QhI_Z=KC!jN;WMCj+)_;uB%v<$9|Wk1MkoKQ&IFTYDV0d-2s=zCxdVRz9Cz z!tHA1GiZ4A-myJWJufs8hYLnMmdSJ1Y}^-hO7eJU@;RNCY^W~O|1t(Z8DI0i1Lys} zt$~Ft47SmWPLct?BpTVfn2+z7l+vKA8rc@!8Zwb5#q~mgZihDP7U`!B&&)l$k2(=` zAz0+)^}A3s2~LUuGo+w0s0%_XswoyT7R(e)LU;uO85hA59x%EBboK!JYC815K!fz+ z_Us6q;Gz7kfzVuedfT%~uf-(5!B8?NUWuI>L?6plewyv<>`Ikd{R;19hW5>~j{>zs2pTPzBIbaZ41Ja(w!K(JHApSfg*ofKfMJSsi z_~@n}hh1*%?!4S^%FpMzPhMp5xR&#yO2FwMYaoLQjBhR_Vb z@)a)y7upeiU!a};=>pYuH3`vU0V{~@GST23TQb+TZI?|~s ze5Tm>@Nq?<9(MKLLE{V&eWlHLy;$34B5mWTks35FPq=49*{~=(G}Q8K?hn~4quRc@P+b+9|o%)y0)crDtDAtR40^lca2t7>JZi= zfm@5IBu$mx*=J8viW?S(p%T?L2xL8$tMFlNN&#ReM$`Afk&J8k$pMl^ZdiYM(gDVx zbP?~ja>grB!R!uiO3q`W*f#%xdr+nvz)ZM)LXEdStjqyUn5zB+31YTfVcxS}0)Oyh zdznQW*#8iGu1RpnHYYSj0mzftiW@O)LQy|3Rj3S?{<xTh9RfHW&!noY{qER9V4<@ngLWNA4NDE(*kHb|%L@Cdlkr6%SO4p*n{m|gT{P%L z1)4s!05nCxf)WMJV-FlVr7_}3w=9is&8*={1JKUj)p*lZ@4E-Fg&*DO6Uo4VhO|Gk zb61TsI?CC69RiL5jw2yE`|8f1E`Zz31s8q$iGYORdfNMRfnayh$Nhy%zk(@tMo%`t z)E0D@K*eI1BGz4BfI(g87D!nn-N$tpwL$_X%%xmd0Q z_q^N|c)lH$ENT}~!rd7K`(?4E@5Jm=j}ZZYBu4Wi*8nN1BY2lGCm;(0WQ`b-nDaqih0WOItUwAmG=<3KW z*$P%iQzpOPzDR}RXa02O{pQ183`f52 zDjr?vzoGTM=;RM89DhrSjNd<6HE6Bb#}Z>X*zHsA?>fFoDgkU$Oaqx9j%xsdhQZOa zXoCgG(6+o37y{aWkaNUEH-tYIJgzW)9Q7%l5)0mA{16zE+dpd2=NphME9LD&)X*4V zT{dbgR?0Z?Iv#h|rRKI1vPOk!(8`{}pN*!3e+USEw6LA^+WqrHax$oa3#OBNF~e=^ zV2^tm{t&)%JLr9l%!DzOf+S?cG}B`%vDL}=>q!ye^!b(5tJ{hHvMHkh17aCOb+YA$ zGZ@X4liW9dDwKWBoiH3VzVr`6t?$cn?rkn?^@}%A!ELg_^t&DPpz9ia8$F_6%SuOk z5ED@4-39p#MDBa#D&u#p_hh?uSAHtbX1^9y>#LP&titTvagyA3phlNK%)UPcJ#l{_ zfkmgtpR;|V4q!CwlwM`*tY_*jMS|9ce2J)&s?V`AwY%h^p!tisjEe)^1c))Ou!w>P(9tAxs1k|AZp~=|HCDJ3Px5ZFfZ& z!JimM&A95xsCblbWoGlC^a(ODY8QTOePpbg*4Qvk$=p=8|89QMVk}99a1Zqf&6EYv z2j_kQJ&T$e#W)MyfXkYs8eVbbM7nttn7Q383O?9AXQpZ@|9bq1YkVFTanTwP07g0b zJM$*^>lmR<)s2BXebj%2^ph1cwMK7k(vp(Gd41HagPy6C6FZARw5=xL^7=LgWD0V`v#1x-lho* zhxp~HB)yUe*1TFjP}Zo@^l~fQEroYww(RgYU=alwMFlifhS|^wfdF`EN0`R^Brv5N z!IL$!UZST8!rD_!IFJFIpenoywIUt6fBX0Sqh61PpJ#|wrB56aGV*A&yXx+FM}LZa z3&gI`L}+LI$7R_|^iB9VXne#`gPE$Ud*F5F0i!FPg^QaycIIP$hVG7ay7_Vb9`G$2 zwLBYYv#1!Z*r9de0ur(~N%cW7_cv`L(npa!<0EfAzVpbu(p%XkL78aOcwU)y1$HzNYm;8t5kF{k{)$tc0ArqV@Lg7ic0_gb@=HRQqGh z7f+@s2FS1)#F)a7z&*QwfZ}lxONi+V{x>VF8KRo*gq}pZ3Ep(;q7;!q$_aKIamMMH z3u#urk*x~ns&&2QY`+1~b}DE!6ZVA~fzB*=Q$eS`j~Dx&9#|omDV+koOOp!t__U_0 z+BHV(n=sU3=27aBLpe=#Gq`GhCN5j`rX+bQToBN}a(U8PM)r5LpxTFz)Jl zV|U?{@)Iueicnc(EhVw`Zp%GL8cpNRWbPkA63kx#vD)m2b%_Cx!x$GJ&c~DGfNWP~ z3e_SgfgdR1$|T!9*vtyZYo_hXa5>JeKzXDwqOS1hwYR74p}Oj|cZu=eZw6U{nM4gZ z3Ho30J31asHT6csSed{xRe@OE0hI)-3o)uew-o-DEx%bXr9pb^mqp}z#{8un#K%t~QH3t5PH73+(iDR~{03vY-JcgP zugvD&Y5~Uv75UI0L_pcU`#-l`}mxt0IHH{0^>de8MTVTffb(zaroY^Dorc3~Hv(gGuT?lf#djYgQZ8)Om># zA@uD?Lz~)K>8VnNk+)*Hk@Fp<3ENn8yAvW0z^+MHwSdL<-k|pfe@hYA^s+D7_rl|1Az1 zI-S6wbUaT5kq+sCyq>Vxw*cL_fEvzrV3k8RG#(I2tKzlwHn9J)$t(mLc+}7KZhdN2 z5IW_~_Z+2eLM2uzqf~y6<{F^Fb|OZU5cp|eE}eXMUFv$(8hBm)SYx%mWZGqAWLzV3 zM&`Pkt@JWq>+>zt1ra|%Q#lywZLl82)R9$E$6p)~NWBzsf=Z09z}np0bQtheU1=LP z37Ho%!+GCbS?jpu)jc5Dy>bltDSO}-o1Gqe!PflxiOJHBr+M2% z?~6*+pMM6VDGQCeKklp#UK{#+1}uE2fC@28QBS(l5D?=p`{{z^0&>ndHO~uFyYviu z-4gQ~iH>siPnIwCG;L*vttW4OVZg}H2~TQB2(0VCO($rfg3*9(Rq%>+4fXC z;jfGT`KnZkRNvx!Mf9L_u=J@(_OE@j8!5a0Ds8>S!G`__uPSL>3l0VjSqEa;ut7!R z6w>I2H)V>ul#kD|rbicH`>lic9{~6Ry@Ny3N^Q2n5hgH(O1A~GQGF}VPfUtU)Ua^s2f*!Y_t9ap}ji%7f0T@DqFXl4OV-B^dB+7m!_u;WXI^IF5I+E~iGkT}z* zrlOS8P`2AJ((-D%O8Y^Jv~j}tG3C9)SwlL==VR)Cp?!lKg}aDwJUu*8ys<$biEt?js11;)k6XMcJBcE%Rwdzj7NGRIVo{LAJ54R=nTCG7^8^zI0O+>KkfsU8p! z^1AL}KDrYy>Oe_;ZQN4^W!C!6jlOUPLj!IYK5%m@fTO=B-Y7C}33yIi9hxl5HMpi9 z$gdWVmPUu-MavB$1!(3BcrD`w(KpcWAq;p#U)%c=vfhEK50>6I zhTx@#PG|YFRTbD2s%GB$JV_7n8P_S8e8SmLIDQiKgNt^)xZ~I%^OLgXduBdr_Mkw7 zrv$-C_6V;AfP*aJA*uxq(Ps1j=iu}665v=0`?4X=os{eRCcepC|v0Gx%hSX zs`p^}ct_d6XjzX$@pc7oHvcR(ss^mLg#1ULzl-&bH1%?X1X8X;aHNU6*MxCd|4eO3 zMb=2)lI7=q)oUe3HAV_j4kx73MTDVIKcGOYC!P+_luYd$b~fXT(*|v}p^TC1H?s8-f+95+NKR z*+kY0khIusx0uLRee!VldvwG2xbZowVlH%m?~SZu=b43IeqMb)DRDJ{L=DblieEaIEt#S(`eNQ-`tdIz-0f5>{eEJ&clj3Iws}RteP@==&C&Xo!FHUAJg+T(?ei&W?*LP7)^y#s zkSm&cQ}Zz*mpvo73$=E(;`jwy#S~{twwe6M@V{iz9f-Ua_sbMX97;p00abgrMECsf zggB1wP)1KZ7J*}0NZf}SXu3%erb(ejro|rw!v%6VJeSXhUU=hoX6^9SS+C-w!*l!B z@|1Tm?9D;n-0wF>>hUMo_L0Ue%_uQN*XbAGc?RkmLm;HNDZ_2LX0dmXZs1erE#+Xw z%?vj#Y`dP$cT?x;4bpQW9PLRL1X)ShOi!mZ0A&r>5Rm3f-Fx&HX!JvvO~96Uxi?)r zcmITIt^bz;e*ewk#*kitYdCQiXZa_1de^S*iWPNvfA8d%Z?49MGY?6>KwB4t@V{Wi zk)~b{Wb;_B>x|!HO^j%V2_hdKDJ9^$-TDtnjvJRcn~AUTq`z#Syrj8;c$O0YLD8H@ zJBfOQB(&g)h6}QYSKy6tN&OT zBqph0wdT+ify5guV39V{7QzeoSc(wMf!VYtQ>pbT%wD51#0;tixtJ)jcZmUl_eM*S zr|~6vFze;UTy|$nyNy}o(syX z=^cHPJb$|6%e>6Bsg3r}WYUi`WG}$lxHj-@Xi)b_s3Ep##Ou}+B-gn_iVst?BcZRM z8?XfauiAahcB$ur6Oq{^I`d-F1gbp>mIu8{X!;yHlaKGkl%rBcr%_3Nc|9xZ8_MeY zmr0dKw}MdJQp5*2XNNCoT_;hUnr+>7deQfw$2$F(1uO7cT#o?ku$b~GiCrHW4)C$D z_0ah^*xS3>m57qu5=9sqPbO0shooj-1ag{;N5fr^6Q;ChnUkS}@0|S9TCnUvjcLxX zM+<)3SoEpbqn>`Wt-R*G$(6B@BxUmA#~H(`xl%@FG$nWe$(T^(3d~MAX-M0Ga-WWd zaLI&hnq5{t{bzs6{5`>}m%GFGWU~}uKv7(@{JQUG5uR+!RN!|3a7{>;DW*$L_m%{4UsET|T%7IN$D+H2^!9>@8OeFn zA9iql;N^)vjWlAYHXs^UYEWZ6t@t#{uba2EtU0UL8`6&(|+?8O5 zmYbK#y2gK-RZU~yqiIa(cJL(yfa&g*+9i4nTu9pw#Y`NeorSyyK5UFq)SD(R*78jR z(&DytaXL2H1zz+I>G+M6r#T7STh}>y*!xIBI|1V}Fmi!#n-_h?PAZ>|04?o8FTUwm@@)bmZyT*EPq;hC@lpY3KF^)z^Qa6`ZsT!v7 zr>OC<#hj@*ZrtORYc9__McmWvRoA|@N2Hf&c?Nm0Pb?4#>S!!_*tajZq6U66?e#YK zX+Y$SZ~q)yZtf!2q;Y^=I4zpW<;Q2>U~-o@rZ!Gqt2zJH{>{4weR)5pbKfZJm`;;f zPh|UB^Z!}djs6Dqv?LFmC~a6+gBFMRW&-o(J>waKFV9wmE(MqB$_UExQQ9T~YE2hMUo9?ZVMaXg zfnXsn`Wj&v;Mf1MF*HH3g$wNwl2_CF@${t2Qg&YMykqsXz4bM@+ItmB(s;``AK)FD z5?Nv|cPFawy3pj3rX%HMTI3FWj<+o-OL?0+H{Eil<-z9j@sjs>1LS+UUc_8z`Xk!I zcKc}VK5$e&x?QQnin#4bPv&hVevtLkWe{e%P z+`zwwnEP|kGZ&%q^IzFQxSjQk1T%hi>n%QRQ(-!q)tyG25czfBMSx_RzKj6tPRJr= z)sQAVJrr%C0dqS5UPq0ypwVD6L3Os2^r_l~de!;+TlbXsI~}1!aweEbks<*-#XfG| z{tCJ#69yu5r6$gCJsBBHut`01+nN1tiitcUWexzv>eirlaSBZjIgK|7K|RzYE_(8R zX&=dx{KF}?6ULEuzMT3O$$RTETK-AQJ=Z$?jG$6R=jORt^!Swhaxha2 zEN}~FfXM(0Jom@~x*}%;z6{@;_Ut!u;TRkYb~>MR#M7Dz6-}xM zAKB1t_G+vVqz|Z4$B{~8bW&XLA`dZYW?}DvoO7dc!y|%cX_z~p;&2pDr$gHYJ|H0A zmXifjTiUF>P@^0)l};!jF-5Uowg)R1%2*8b#h+aH%x?h6_4C69`zfkar1#48+DVYl z7XHdpDg>Yp5om9AApjMJC~TBAydwO8PfqXW%H<=9Yy0^4?r?F167S#F_j$STWhR#d ztf2#Hv=-raWJN)~U{=eS^)~J^K;Xj&4?g)7Il#9^4y6pfbQy7;5o-}y&hq)vp`e_0 z;5cPn&K&pf18J%Q^NVL>Te^slC}&iisLMyK^-fIX#-)D)1a_Jc_UU@0sc$xF3Wk39 z-ZoXyr$84qnU6LUvmO?-*b3$LNYaU$;)CdG(6EIAEBOs83Kt>iKDl@DEb`T5kH$(1 z4|2nxVO5JFcSkfSg^bbNeA_}Wh7Ja!skaDB;hYu8$MiR(WL-1l7j+)BwdXwd+99A$ zxGiYv1620Nv>Iw^rovnH%KnkU?HwfL+0?w>lHHn^&mfu*0mJaPsr_zWVUKGk=Vg|p zs=pfVYSVh*Be9eScGFHhgQz$qrbrLnmQ}C}flbGgLYNux2S%ExkrSigOB4gTn)>|R zJ*)TaFClIL^H1E`s=R4OJ z-R+Ro#@{h;SHFDE;sApfT%i94YvD(3>*{Lvl3RC|weRy16DoVCrI>vWZMU#9i}|76!mhke z_3%$^UF-1h0PjQT<~#`r$G?9MIls?SX?LA2A~iz?e(Uw~X0ds}d})@S@v(>&Yqb>`uEWw4~=J$WivLXsUl zjhL}Hysp!7W#t25*zzoio1kdAX-0+x7)LD&Kb-%2Co|P^gitx%hkDl+D+$xYkxO)l zR*>MsJUTTg?IqRrHb|z?+pW-Ptmp6-2TI~m$+WM$wC*40^j-?i*dv0spZ;bMOgNPb z6M(NZ{opRLPsryb9*rh498 z0b{DV7g_57?$r5!zv?dR=Wa0bLM|^lESX05Yf7AFAbU1}s$K)vM*_2KsErbixX5}I z0n&C}RIAj7xHel6*Q>*mHXc3|j>`wI+H0?@_KfRTJY()|zu`u&ZO4Gs2h3x+6GLR% z#DFwG>!1(R!v&EzufF$@GZN2#l*r`)H)x|Yb9p506%MPBF&pcXUL#xJJwI~KI4p5%t({)NdZw*X zefz{}LW6j9Zm>gMqS}pb=p428>ie3|D7&?BkyP-_xHL+s}gnancnL75 zev?2A-2-OdN*1hh2?85&^U{u*d^sl|9+MjL z!|w$xCby2(M;ciI8|Q)k)UvWjQ<)gH(J8_gYww%k!!~V2A6!*!phBDVJ-O4pVwMl2 zZ{HHXl?piM@Fqaf2pFoZMhYasG^Jf?ay>%Ry{8&DnqOob*(#p8XV zhvzMWLoaZxkuRs5{=vN!xKF;VKblK#>BS6qmaH@faw(^KPDH5{YhF9v}SbA4b-KQ~InmV|q=+m~> zrnv6-2M|b}9k*R0E}-Zj4v6+gzN4y?mLEkjB$%#04%qH(#_~BSJGROk_sZPwcS1)u z%zGr_ftnjmjg2*W##PBK(MlL>EJnG7*>8XfHdlpDJZM*?zIDdf?(2l(W8Z1Hg~pLJE;eKjdTOEd5-|7m@YmMpn}Py- z*O*^IAe-B6AG!4x?;SgCuCg`L2?ddcK#M{wxWi?9E1G&4lT?XD8HIK$MEDVCVO)_!&ab41aj(o6!=F}Z^sNPyRlI78|Ip~9>(8+8@d zUDN{K*oFKQE@@jdIUxMyD~g)jDx z1(OzW63FNnX^H@*^12Ji5MRVe8X^8fXXk^%6@5Or9oTTavDs6iV<*?jvB;<>$j0W* zf8th9->n`t@1?iczWFJtXI7uM`I|V~PY(j$1#}YBJUAMT!4Nq!rOtwEn_y?a`L$L` z;4@vTz@-j4fen;7CZB%j@toJ)gHIyTRpbwnKGgir9_yd~6NmeM2?f|BK?^3a4fTK| zMgsH!(l6oo;;VmpVQkCLh= zlLRY(U0d-a$rCC>L2L@Es8BnFoG_O8J~}0ZI&vn_|+e~{UoMPjQh|m8s zlA7|)`Oo&*K4+H^%hKi(XD?cg3;g!*Xy&@~Ri9W2j^;JQX>x?g!>U4#fci%L>oG5> zCOGp_&Hf?jyKh+UZ2_8`no{C2q&hYn65eU z?p@uAQZn$3Belq0PMR*6yA1~)w)g_(q4sH81?E7m)TgmODa*{x6Zxw9?`o!pZ4moL zm>`mhwun%MW56ub-fXJwG^$li-38TxM}d#$zjD)=JifO@{|JM3S85J+BLjpL|7Z4J zD7>%Nj7|x(4uptKjDqcA6Y4rZBCzcnsBn0AdK?I{()$-dWsfZvEP7?B}1N{UUML zw=~H`RnlWnQ4|Qk z$(l}&o7=A|mDuQ7I2WPS2u6)s`_qE_`bb?GyGeauAi0Wh1m8OdQEvyg*+$#v3f0H7 zqD2DIq`pn(82CKwdUu%kM(ynbvqz6TbBw{~$Eh75UD! zQ*l#V>vOu}+lMROib0)*S|Sdg49i@9GLAAm;7qCtJ%I|f3f`CM8j1&ujJGO_ap5-^ zvbr7bn)7*{=#88bn`uy_W+oU(6J6m;t#toIr;pi28C5~{kF@Js>u9oRe7%-p zfq^b>>?`o!Q0#~b{s*btGp1o5Q|QM^oi*9m`cmcoL7fMgkouM28|Q?Dg*?VP-lrCT zPFEo3MhYa3R}9gehQ6Th<7EcbZ!>ktqeS6xtW<`{<#WJmss; zoebqn$~{FMpr~OxUM+D_2rm-B3-?bO?_ODNmfKrPIOy0QLLqUKF8 z_W0i2Px!K}z!qO52u9BXTHceWQC+6wC0acBEU6OJsu2Z^iesn=T~qTz&i{DxIzwKj z?|zNG{c8VkoW!ou`x1b^FRa>xb9s#I8qaEI`lcwcVGnn0s=nQVC8BzrP8TB3s z+!&;1^eT-zkROPhWX~;79NGZs0M})v2wcET!O%?UNk}VbPPwm)=B~V_ZMW-MAdKtI0YRpA)oQ8Fi)x|!kb4mBoi8mu<}s5Uc(WuAt@!MV#D#lI@7lm9s5$( z&kYbgsw=9aXcfJ$1G`O@;?h=+f-$@UeOA8yyl!j6jnCA1(A;OK!IYca#j(AMh@zRUag9*+{J#Eq|1K=u~N060_& zia_neP-AbIl9iYWnNkT<+GR#)3?dRY$h`uJDj#%I53Om&h_ zvGH1K#bn3f2dXXGxqr8Dz|(rcT{JB~cQ2+irCvlOIo9+Z9;^$TW(mNfCX?mf+xdAu z*ihV&+2hu{rH|51A3I6>o-}&2Slwx4HuSE-K6hW9r^^<%SRkK_R%i0S6|{bYCzGmR z30u6nx>O27Z6n+X6{fcVbB&7CfZ9i*@4SC(s-BzaP{!Ry=2BJ)=D<+j3j4pz#g6Gf zcWMD{JGhZ%colr_>niooG#EBh*R&ikx*l*VR|wXfmr)6fA?xj&iD zD5zO5?+#$`#w^(}TlK*53OleEPFWS<7GC zXY|BavGz0;&?H=hC|p1VxCCRyRyxA$$I3>eRvU5@>HjfTliW`4v@Djd^3J=o9(wb# z$LW&-T$c`#N~G9S;91~wzvDF`&cZ$n9;OL3J~}WvMc0}Z|6umhpburNttz9}>BQo` zx0Z)E5+$ONQ&kw!#F;8Y@F;wg=0+wgD@~y!m?l4bD1l3WVeBZ5 zv-QvG(bj6#Tx3D);$-DX^gz%~b8HV92H9K-PC5ciK1F*o1A&P8FJxK{Z3uE=#cLv$ zWvn?{>^}5-;{xr6Pu!+)2$T!Kj#dWe*fN*p?c0A zLn#AsojvS1)00A=+K^H)dm1DbOK(lc)5N3yCdnFf9DHrHa;U;1ReS8R$Ag^_Fp)^l z=Ix&Nz-*$x(qQTE9 za@^cphYfmp?H{(zP}keByY%dC&m6#RFdjlvbWAjAf1Sw`|}nzDOkwFxh7(4Ad$>%7u){-@pf zbgplQN7t2dW-Z^3266GkRvGNxg+w%9w}&=C*@Wv-#C143oMFy%fQ9{w$4U2ZP;0Q7 zi)Xj0Qkj#^r|9=Dn%IL?RjC4D_SDgG2L37QJ5c_o7*4#hH=$g&6+N$(dAmo9tr&}jIJEHHLPgaI7~a~vp6rx%SX)e&dTw3A1sNqe*H@o z$VEdbHdZK5F;ON49AXl}(@s6Y)E@j80Kt}Z*WWCJJ*$dP8_bCemeIBAEBxy98&Hc5 zxa}qd0culJGD;+qJ`Q84@_&oUrj{V~k)>X5-ov9F0|f&WhTguFQQwRCgbyfApQf7J z?3vDF3dK(mS~ZeEYZNM~m`XDHJQyEmDQ>d-a@L_H_%M!h6!r_e$L^GJ4#bilbALX!a)10aSND7eJF}5D z6j#m;zg_2tUe7Zn^>?J3g78K7!`5V%8{s|tu=!?l>EeDZosDuIt3ZXIgNqd&UJ8a` zeBnb|y<46;6%}(Ld^~$9zBMf#!;a`ixY6Qbg0D{#q$Xgzng9~8)(0HqBmgc*t z^16RY7VXhnA1>6z^&}YYHdY6vjvma8mPwh~PC{SiK}pDyIOFht)^QTfDveC&Inl)6hvi@GrVU$){vHnDXA1xvOG z|1w!hYFU+m%@;oe`kipDz?-y*9(u4;;OS~^9Oi}9CTA-r?!xREtMR(Se|hxX@< z(B)Uk=KPmvz=p^~9Hr$JQkTf*GW}mI)u>Xikp&ZN*Q=v1GdgIMf~fh#A=r%SOvbd6 z9)u}1PR4|pwI@ValU1shLDylgMYhq}#)azl?=ECK`js$q-tpNHz})aElPM=iBaz!< zpzDIsxkA*r`e4tu@XQ4QBW!|uErWT=lcVHK>&Zi6-Tx%}64#;iH-FJN&>LN*oG4X% zMkxh-T_eUsjam@@k+{*rHrWwz%7}N4m$SM&T4LnuXa88XuuFS!cJ{g0F}C6gdc)G z(Nt#anZke^9j^%&7Q0|;Qr^;w-ZuM%%vojhwNYMIC56u3H*2#6_xCk^H))87@Tb5U zv`bR}<`(?ox(BX*H68+8uBrbSc&5D0RvjwExRej}No>Ch`K2Sx0fr+sByE(u3U)Yp z*dPLtDOV4yggKaGizab=&<-V2a|;UogcZ+aq*P9jS0=pdBt0+Y&{4eP~BJC1RsPIfD|ej;?M{zDvVGnSQvDwugqAjnUEg#t*gq_M#KZA zsdpk(whVwA^CH~9xfLNiyfg@0B^Fpz?0>$D=KCqX*|>j2bHvfL3&)|EDkgmJ%6T?Q z?q8M%)c6GAY*6vS2%8*ZM*cium|!GZxVYa*E&tt=q87$1u))%8JkCvuwIUP(mw5(5VLJeQOe6>#tzl5h_u*ppZiuHz&jM7+pSTRgyj#3>2m1b7j2Ps-Ie>s<*A$F z7s7;TzW_ggqR%Iq%R!ynR(!CRSEAdH)oMP!$!m`nQM=cxeTyUFORa2vRid8R25fRi z9z491+P4>U)Yx&`|2FbE=}Ug5^XI?7p-mv@Z~uP-M5@aw$o53=V&^z{7|LVv7Fweg z`}XBk)$b0JA&(*PBqg$!HmS1XH~*pMN+$#tLY!V98W@`r*aR$V^s!0{aquU*7}@8t z2UX)V*;3>t7NSVJF@&A6kNuL<5V+@#RD4kwKlM@3+D>`gVgb!ZnY?XT*NzCD+5 z_V%%-;t2{-av~=|NzOeHItIBrDgxHtPh|Ukbh(dW*rr0VIKbTwI5l+_Q_0dnmMeaO z@Qv?_tFp5pmee!R(WBK@P)Gl$u1oiWD@+*NdAiU2L$9eYT)y#rZ~E>U$NK%>5(s5z zH>xkAQybtIo@`Z>QO{p&U-{-QZA6dXs)Ss(^Bs$3PlOW<^V#B zd|V3#(BsTou&yE9*_!i<6C(U`kZ>_Wne*t>&#J`I$;vFdJ7;`uwC{Wzo=i*5GyeXX zZ8k77%@zlJzGqlEQ1jjfl^3HC7eKeD{(a+rtUbr%d!={$aSZe!+;*`YeS6Zv=kT+g3QR^uPsHdy+&=#YC8RwR;LT0vqXBhAP^0qM7oE*G9o(M z5Sz-?n0}kj1(#cA$2UV}pP;h#LESqU!3gg!C$!~MIZ0?+5X>o!4?r@NsPztHCv`e z)KR|bA?**uAET5)wyrpo z{Tx%8g9qWo&~fV2OAdaVCM@doBJSaYTe_gwtKm9}_APYPbxTm_G6G%m+fd3o1dL0) z2y(Cy1fa1WZeu7Zxc$FI@H;%vslH{^(X%TX1M5cDHl^?f*bQA!0|EW&LbhwN%t$QV zVK~?x3>z>xiGd$!RIAswz3P0HZS66%k>ok1SPAiAT<3lc5pp$5NLSC zGnLeIKYecbgr@0bLN^&UVtfK+H}dCzxbHfhYWW4>kX7~wzQdjJAC|M@TOhGdOtX}s zZgB>L@PcI41&$JU{UaF4YfJ@}y{n!Xh-b#Zhi`2}7#^1j8r6fN0}4+|LRqHWl_{~e zT${HLTfdYy;vW!J_Je&f6(@l*s?&TZsCf4%Nw)H-Ehd_+WrlW%0MUMI2joh;hnLVL z$Ah|_2CfNBIZqk$FCVH0-ukNVu59FQvDxxDqD5jsJmHHR<)XzWTiEz7in)g|-Rh&< zJZ21gPxx)~bV&I+JmR%xuNTmA19-pc*HRBR;z@w#wN( zX7-iw<4UkXtUOT$fF2P9;Sjtz0~hT!K@fDZh%EYJXA$J%FZR`%=S!o$%MrnCZGqxT zUGvufxtPefll2;3Y@i_O5bw?1+;Z1$V>(s;c%f9+GdA55sQDB6y)Anum0FcGKg^J9 z>S14CTztw^_w!1*^}e(d-p_Zvw@@C58&+>Uwf9!OXuXJ09C`K)kp!B*Tpn8k%~J#a zIsYi>qgdFaJ4?7l5q~D7F;+IT-Gh7MIFPvpA|)HY;$4@+ zRG+cM9@=AJokix8?c!#=jl1284h8OKL;M;BUjl|64A@2v_L9OX4f*C-uR`KF zjXI)v-}G;sw+R7BBY5feai!3adbOP8wF;LnEJdjKCy{;%j3&ZXTErs?a}fVRqvX4f zTIETt!Tz&k_o~o=tD#+6_$((e$~on!H8kv0uI{(gww$HWNK#`cCM6gWx;Dz-K7M4d z+OBe1(QWNZdMdAWz>kS2%pf1gI)F_&%6WpJfE*R7w84{Q{;T@FZ-nh_W|&3X?(^X( zXYxH#I<`JNbyf9R(8G(Wm4_9%)v@0-+2%BGfqnrRV3(iJ;#eAhLwr0WgCRbyRw2{$Ia05>fnQ5*J8dQfUe@aIsn^u!dstPQAEUG z4}lVb;HY}tss7VvHLEQqCsfQP_v8+&g;!rUgR#i=%itT-pk^b;ZE*-X!^veIr!P?_ z8mq?BR@AR$Y zjqhj&jUthS=7d4UR4BD$Fi(|jsvo{t7I0id1hD*TZ@2Gax4bL+jM_;ZWqnwe(>}oT{<&}=(G4@Wa;0bIX!JSu+yVyPM`FtX?aH&rDaCl@sxm`< zAhKQbXO0ZNtm0Y2+=*Xml3A&LGMQUx=~5;n0bb76o~@@2C=RR#tk?eGlQ$3t6$0!X z-y4YV0n+>wJy`_444Ckuzx4ZTPu|f0a>1+eQJCSLf7^Q=Vuz{`VK!%T!d+_JS~GEL zh`uwN=$?N{y`X<3l=iYBGw5@=^0MVsvG&nXk@5S;hZ43FPFKq>8K;H`m+4#QJE9o* ze4WY$#AXuz(zCur+6=qy>x?S561PV{ME>X zr}EycZLmM%a5GxcRAGiF-YEM=^bexI5PEEwiidmy1ew)hiAou=$tAl%EK7MN-h1q5 zTFjx_2FBs5+yKQNz|bv@aDnqZgLDeEqTy;&IcebZMk!nH&{MXL<7)X4L=T^kd%BCs8L3+U3c`az^)eLz9x+^_xlf+qSc zbth6>c{5%*lH9$0WLkC|QcP4%;T01*$92JC6m{iJn=fb<6i+GfFm$PR)5|D5DnDA- z>a*+p*XW*qaMI4UU%y&hRlNaRBm!&)aYHjFLF11jaBkX5s_2U`4ayXjN^isNB8OQ! z%i$p-OSeR8=FNlA>BG7MHy!-4%yw)N!c38OHtq?Lr3|!u_Xg>~(TnP`EqU^lnSW7d z8grt>KQ?SXl^SBOeJdo6+w?B$f$Nn0VeCjBwHM<~vu(ZjVk1DIh~eqscdpZ*_S#dy z=LOuj9-PZlP$>qiPP3OYuvszIxNcK~Yd|tb5O8#S88BF!QDtBHHXc1zYf3zI<=S$x zAmEGwxpwj|JR%H==wm!0f;lfLMec1>f2u{qyGpH?s#sCywqj1+kwPvBm5^OlGFG3a z4WvoBETBNP0t*)N3gma_r|>Z{eju*(G&#a{geDT(8Z*W(T|M#4?ozJ8_~4BbDa!Y@ zS4i{rs$`-rDiYSWAYI2afsWYP4vy#3(Zb1Tzb#W5PnFm0nFOFUK5heuK}GhWw6js` z{HVdVp-Vim%Wle2G%#kGX$vQ{Ap9=@ywv>aFN&NC(kKap8OeX^XST+1QUK(R6CE%% zVHtT4D9*txHq0clz=)dI$;{*nxIw9EPIJmA^RPy5PPjchH5q2l1lEh!PCIQlX<}%x zJ!1PIE*huUGd4LjewgTmLSi95P1umdRNLfj@XYmNy7w5Xyp1rgr+3KOoIBg?tNyTG z=!8mOP5C(ufiHfQYIm>j^V^PpkBD{!E2+YfvLt^DlOtpqk(Fl+;~$J(l23q=xN1p- zkRaf#e~X3>sL-}WWeG4;+ujiM79{QKRE)w>C)X%xCt(vTw=b`-k#H=az*^fRrKRK( z%k`32Vw=`dxG%!d7bk83pgnJmclS?Edg3}C9NfZRuP^KK&v9WD&adWK_M>XH{5ViK zU+$=pD-?>XgTBdN;0xHKbKtBfUn12hS1w)hR5q5cZ*Uh=?Tx}MjQF5vtcHR0d0!@S zo(n0)(oX@FZB>N7k98IIQzm$xHtrWcfZi-N*#+#0r+xMNOMv<9^dGl!vKP17BZ;rP zU(2YA@_igj_)&A7JOh`hgWYx6(M#`5hvNM|+osaK+19m5`Fv(_gAq3x;G!SMCL`Oc zSVwAXhzx&Y)7rDVQ1A1Rx58T0CgFk8$xu}rD%6&}KP?8mqT&I;8XrJ4WYFLYPNKU( zx5(l-j2n{`*e`igkJ-IPtKBd+A?o1dk{MTI-So@;DP=;W5JtszIQW4F!f8QSB2 zKgE%Jb}6`LCK zt+vI3oScI(6!;- z=jwMp3t0XY-1Bv4!DFKTdD3Z10_nJ60ofGI$@gD$#8kwy<-@_Leq@kH7@-hH7g#rv z-qVBpF6~MzO0!uCB&Q>bUtnukF)Rl zMZ20%9(Th01o@#}l!Z8(2(`KZF#$c9dP2t$&Mca34&;;X@g6s(J}0}I0Z7mV`s5Ui zJ(u7@hvsmcba=BjnNgI`3JkZJhYcy*Mqx3RwIAux{hqBXQ?8|uA_CN+0gTh(X1 zmYU`T$V# z65&xRM!*EQg%E`m)FmWCyMl}&C0k78E4?|#m^kIQvAw@*m?)H1|Hm6dB_gH%p6w>Y z#*A7%L}XZvM0~GChl)ry&5}-{*lG+(wgQ1A=V{p1mzhRSYs=2aIoBa4X%*lu(;;Kp z`pEl%eaN&Nwa6xNCkvRj<`L}sMVc$vuj8=Tgde{*B!U^={n+91pX>%^j|1oRuRUih zud<@Qp!CgdX<>iA?R|=lh&6Wm$>@CtWkjM`vQgx!u1^I4OK2$%r)yg=vp)zCK_m(= z;C>hiflR-M83ctB@pOVs9p~lB4Mx$+iA23$Ar9N}GaWxa4-~cY&Jb7;Om@oa4v@$8kVz3_{_E}-a!vM&0 zg_^a9l-GdAyqGPHp*a0TNjGklp4ZTMnmORmO`vP63{H-?UEZFOT&|Rv(%j6Q4< zLUj_6uHC}+UbRQ~HzO-)}Zj_>#*)Z4brCIy={_4y}{{F?}Pm)~~HSz^%Vd;bE>9F9|$TI9_ z0$Vye7Lj+JSa|A}m|b-G5SO#+i3{?fwjyV*uPI5IRipy={g&HYasCRSHcCk_;#o_yUVmJw6U5R4ds{;A@+ z%QRRceK1%7%@zefWttHw?}^LPlts4uU(}ijWKE{~s<1^RnbAOIu1B~s(r6ggMQ@2i z@UwG0*cJ!hl!8;$7vnyKmikWBQJvUt18?lb~{3*_-drTc|!dLy;dw#V7Ce|C6o1jV)TP1TJE# zwkmtL3J>duAlrxi-q;Ff8p{XWEVq3BEeNmnIkEdgsETjo;Wp?^t(m7@Kn@dRb8_6- zJI^6PW}G@xN!$>Q7jQAz|JgvtvsEeIPYk!pRywv3>uVZ%_r*>0|5Qsq*#6K`GMr6T z$`Dxg#g2fX*aOHmEQ5e-$NN(VDcFh|W!{p>5xYHxY?-G^l!gbpJpENqUSE#MOg$ek z(-i%~e)Zz+Gfk8*lorYMYnrNwEfK~6_wyW?u?>vV<3=KlcY`B(1Ux9!4d6P(0<19+ zD?y|@9ur`YQZXL6USn7}cx|3pEpsDle_m&QPxJ33xl?Bxten0srdRIYeak-^$v3Vl zSOQSx=UFph^P%UF2Y!Ni>seU3eHyF+9!ful`Gsx6lz&XE8$HZFDgwu@Ap%>$zs7`t3IxEyWY}NSh2KfOr$Y^<0jo#xvX4r z;#|)3t#%Qn)BAZYJKC8hJCszR*5nmALATjW!OR2GV*m*r6Z#z=i=l^L;5Nt;q90uZ zrKKQXdJ2^lCzZl$9sG~>{kxQp3>TK zC=}%8xYb&JaEpL&oBpkuD@c~*Y)yM~)NiCsBtv1DR_o0%XXk|; z;d|9I4Fo*zXNiOni(~qjYYNZbz*iixA9foj#tmKTaT5)ky_PpS zok%YWE!m}|D0}PM$Jd6^1kA}DAAJ4~RhA^e+h;>{{f2AChO0E92* zW`qUfpMe2LOy~Ozw5XRupcm1th9Q(tUgv0g$n|BM)?Ih>5k!0zI}O|bF%fVNJTWuG zIiU2WNPxkqgtHezA>)UaC&=twN#OB?>^m^k$44@;vh?a=OIEesU>l=%;$G(LPtF(g z_w~ouKz(`>A47l&e0CC;kX{r*IMW*;9y~7ZZc$zPP*rtZSFbAki8zy_Rjp<9TN3;1 z26MP~-^XgE4cHQ}qWs$tIQj^=a;h{x#JyRsI?4Yv)?;mgx$0J}bX2~!BE}m3gDU0*_$PfX_3x45slQ#-0M#4w%Ony@<2m@3IIjd&M>|-Lsmso@s8T6Dn^nD8?f~!1IgwsM8_esvw-Ovl35xOPw)J^=3Wp1@f63ww1sZ<3r>Y8V}bf&XhYs zpN=Uzll>l@^KtvOWElCxMZOV>RsKyTu4N$pqF~2bvGmI|do66!WQMnO9;>|QPRGow zBGHC`eNL9DJHVDL1vwI*TKd$Jhycz#6}I(-TmVg1Ta@a>GLzk)$IiIENq6L_-(OVb zV=lJe9}L|?gf0G6=ybTvLCtNWjs?kOwj9Fm#9eZ}!;`th)Bf1!V9W{z*2RG8D_z#D z5N>KQ&Hc?xBbrWX;kfj+z6T_SV?xI!mX=S}#!dAPdnR7oUl1gus(1Ot3A0@fTIiB? zK=KlZlnTj#04D+|<&OB{oD=DTTkTHY;sfWueY4&><|x$Mx@ldWf!YthPvm=$0^2`; zarhHawBcwWd~(^Q@2*y4j<@8kq0-+Cne?K4(W6-5xANTPON(Rq=s#AQ_59eWAeI~0 zqUUJ39X}CFlK6wK5PqExAQp$*m8_x2DFW_;ev?ye`grzk=?;r}*=Vk^?lAj}s{`x% zkzq9bwmVzgZ30chP=(Ho2e(=i<8kQfpEur@ck5(SKisBNmHzVBwLIS7fa<-C*g{k| zACL)3R~oF!TL>nLTQkl#iuMF{Bqh9T_~>j;;~nC?zT@QkgvVdqk{7lW__mL>ltM*( z^QCk?3r+@fgRlknJx`X1KU+rM7wejTG&E5BMxK$>j;*132UAGCC&*5qNbFz;a5J^Q z{(KHO*X9tM=-a646;?O9cF0NAXhvOOh;mfv^X{i-dE5kihCZi0<&!1=HsS5+KvqNH zF1iY`%^Glb>|gv8xueUL5#O4kdW>bfZ481FUTG;!}Q1(4b_6W zx}1$LcLpHx2fQzAyX*~<@jW|U zDw#`BukZysrDm}E^x1OeV6iW->x8;B4h*i;`VJ6QOIWAG-uu#Q&}j(e`SaSR#r=7o~a(Wuc;^b zXq!>y^be5IMbw+F?s79maui0>cKup7PHISL;Ep9>m)rfZlR{v&w6OiAc8Jh~3txn= z+8}YwhU-P1S!ccnz3@sOPO|>>*e9gG1Cf{Cl=YHiq&G3#*f91FXxq!MZdsckMz*3OlrTF3hCA z)cXx~ThCIvjmh~ZFGbtaE6*;l3XeLutGwr1`?2PcDoT~=ylt>TB^Vfx3LOc{K)c6A zV<<#mgEjAhzp#?H4swM`QV}r3U2zZh<;b2E?JzAgX=~W|#sAjQr#sONYX14Mhe-b9 zdu(9)6A~awC3XcHL}oF7YF|=EL8a5QVAhctaus2|4V3obTMd(kY_d{yWNE_Q!xv8E zjcU4jRJY5CWpv&Oqe_b-UX3c?B|w6JQZnS1SS2g6-DX_=oE5MgMn(gDLiHoVZ|}K1 zY5tALbVfx!8}{{ogdN4OMeUiZFdm$?0yv?75N~EY{KehRd%}{SQRz77llCQWBlH66 z#E6LIx2}=(4}Vc11M^vfpN|MN&owbgGoYyiP;)`Bju8{?0gxeq9|nEbeU)gT5KW7Q z_%jXl-GqCq)T)9crQ^H&c5Gd~Lxqf>I`0jz=GbKLu1Q#c9aG+71S7;J7NcbPK4zsL z@+R|l!dwb2s>;sUSW#G~eZ{QqUt<~HK5_a&9Oc-~bdGN2?lhIgFk!7;ads-y+=r%L z#13U4`~&pmaZ)p2Ogp`5tY5;mc!(@bw`z^QdrRqY7+90&u6xp)yMPNt-x0gRvtEr7 z`Mrqj<^k(&gMJu&Lc_*blFHqRSz91&dOfUdV38Mrdqw;pLZeYN z6EGF_G`A9v=5W=I3#=NL*PVNi7`DSYfi~82A#sPkE&lcgE+;p>S12|EycKW}nqQ-< z(QV{m2s}>~j7GLKXNZ8YHgB9m9)Ql|F%5i>C-lZv_j}*FUlZ3e4GP_UV><3$KPLR? z`}(>o@ULT_W*3!@_hnhoHpiwenJ@eMW9Lu&X^u$GZG0+CSiPjB5zua;wcfLiF_Pc)hk? z`m;Uv1}oif0SNAR;Fd|Z)LH}DaCLDN^aRW(4?u)>f)~t!pMioD`Tzw_G`e{ps0sO*@{^r*{a^Bak3K63u%%!_x7v&LQu{QeEz{V(e9@Cs(!E-B;S zb}Al+(dq@xybJ^ejY**N30=g$t)tdQXOr^(9C$uP@bJaYUyJ^0bq-c5za7RPX z#BKttw#Jbpi$Y`xJo_r~2MZA*fIUx%04`cg2GXRjV9a@uDGNwyWkG?q)1UWj!kYq# zi`8PIT?#1clq?0Od%|)>Yz{TS-fhd6z+dxAtiW0I`(Xpx!EhQp+J5 zV}UgXOXJtZFQEF5WzOg(?7v}z?mPCCA3B5~G-%6?Hx}F51Ksp8^v&1Qbge=GOYa{2 z!mQ^omy}VX^YDAKgHZ2GOHQiR3KH0RQ%W#LYy_p%TMWkfb?LJuNeH;w)HL`YdOm3! zibro;vWl ziI&JZ4<|8?aY}WUsU_B>JLXy?WZGs@jfV9q!b2R$Ygz@j%@2Mx7%DvZsB^&-yjBcQ zUCj{q_)D}9hVsHxkCOx40K=MX>C_gC@Vm+Gmuc3bU-qs%yHHS5<2ep}#Al$^F%2Hv z9Q8H4?ee<)SL}!4`R+p8AhA3v^)KprY4AC`c@?Amk;c=#zw6>2q7NMy;okC6O3u9) z04;md-~`)$*@4X$UH<2~%*eA;z#LKBVYUr;A)Yxb{k({rhlHf54!tPtjZVM6Ww*na zvu74>Zzo1os`Xj$e2WjO*2IGwh8bWyCKouUYrU&;A2BVoaiJ6K2XcKDQVEk!T?PNS zU3o&u&M>9z_HbB0@<2aCw*`eHIxm?^bUe+SLRP^29Ll>lPTmH4+r``0;w_1etS{Fp z({IG=f3fsqfAG<#!gv0nZVgZ+fxV|{!fLpW1hO|H!lxhP0zP!@ne*`$&mL~tqq26Z zWVrs|euFa&6OBMLV*nS>CdOOJ$NWr}c*=+;4PeD0bSH$a4*c`6do`#!RaxPszZ_s= z8*Y|MRC8QAFe&H8ZH$7Ph;)CT(sxq%0F---j%_6m4m(uFwm0%w&Aavl>5E==zC89m zbkA~>`mS#6*PZg01YN@hmQIrC9-3?kU>iH|z@51btt$}wlD?8g4W@M(PeKnivpOJG z4rZPr+x!{N5PnB@DmDpI8CT`0pJMDT=-}TI_*x>|$lJ)?-6~?~c|qpIBNRnDt=N7d zaOWs5$#hQwZIrQ-*~TEY*$!G<>^8O@$4LCKHyr9Hbtz4m)DKJUadH}dY&m+#Lb*(2 zY4VWli4put(2_xWBuiV+lCvJRlt5TF{>CNQy#cW%)^eQ+v|AsyvpP&Nzy^Ml~ z?G>l%Y9F`l)RX@ds#=pj?Rz5991u{-g5pF6bZZ){)J9E3wSOO_sPq*07hMD#ATxB9UHp`4rFUK;ioxXN^#8@}<)uJNpv z+;O;(8Ck;F((w2%N)fuJd-ZzP_a&ws3T4N~mdyWo*#)fbr{#m+jz82nk`GMzx!s!{XnY?+KW{nQo2AWoEgt3ZZ$;D&%O=` zXl>kv zG>vAW?G3cSr@4Bgp#Coc{;$o$#ala=cQ1&Qv`zYq#7^<$lQ3;rG=Ng@X+zCUxI^q~ z43Sm{6>+KohF*9L+;BvTcxnw>c^41A;uk!yw^c;B`~~3&82q6~*CQ190v-%X5ooLS%7i6=b=a!B8f~UUrvim~8_3H#)cgTcWkKs@-5kUHg33+H zioAA&v=8;0_}TO?Y<+Rrx_GeJRlw2k<)YQ@dm>qtKDWLz+db*; zZyBbWp^IN1tocf%Pp_X_id1FSn}SHKc>+s63(3LbtA5d8wsGv8&qYRC+;xkY&;Fts zdTo9qj;f#laYADeOe5y-8f${R0L1=vU{CBL@F%swV_snX>!<(yKmY&l|L@)VzwXb) z)tb@Ddlb$It$|nQo>F@T0KIr}fS!4e$Ra<9J9Myv1I%AP)FZeFb9>cq8Xxu33oLmS zmEK-9@)UK*q&3g=^eOMk-4XA_IZqMhSW@t$vXWZ9+RR(C`r#ZWXpfFEzK-d#P$F*}}gw-Zi>CjLI!{ zhlZW?1FHviE=B{_49a;@{4O!D^Y!B$Pjo-}Ts%-^a`89e9W@&IeOKF(FH3p>%nEwv z_V3JhIiv|qKZ{KWb8kxRdT8f-LZ}}NJ!7vacHH9 z5B|FDgZ;A^ss=k9-mF3383s|&LS@Lj>36qzKAhHoLf;ILu?^&cfyCX4Q$EJF#KN5}$*8SwtZ zoPfGpLqLGYCqZUkK;d55!%slbF%|p|mSzqtv@-XHTmI|0tefD0 z0B^QI4^LD7`HMm$M?zdS$gOMd3-qfEb?0U$7F|`o<+{nbTe6;n7Z} zMz@FCZ^(oM1hbEBu}kJE9AS^vFeaa@vHermhriLVp9PXc7Xig>F;tN=VODRd67o+>h@7`x1O%KgV_^$s+FS6Y+Q8TQkYyP&0<@_yS&=&`T-q2ynlt z3xiQEyE!AbogK|Wh3~VZo77&MXyUn#LW=hj@HkW4Phjh&=gTOck=;mlqh?Qp^Z zM~l!mBZUn%YIuL~XEBy5?88_osD%zu(lINyHsiMDoby~8FR_#^Mxz?rhkL1TR zb=+tBa9(35Lw@jHh!(&gUV{Ik7>8R70aYTw03f-NcHsh6?#L1LT^@dP?Pm8Ea@3DY zeL#-di$Cq(3y5zm*y5F1K+#x$0JP@)tvbJ`)Opb(y~FR!6a$(G{rFAzvk36iL)$}& ztrD|KHUVY%bRu96Y9$(FUU@&4F)qBQY3sL6pU`I)J;F`)~tD&{cDfGl{ML5BecArfpwkS~wTuXlWK4tSeTCBi z!&CMTi+9_qIt^B4+sz^Esyu@X6GIrnKxYN6#1aa>BL-1`_;m{!%1l5_QY5C z%`fJg7lt_6BzfMw7pgJ3JY{oxQbg~vVZG?#89s4#1=2^P+hAc`C!`yv`izQiwNYtC zR39Q1eLByeo$v7Cxg%A$EZKb#TTr*6>B?Bb)JA}Abx%4hUts?mmF4{R#J?@Ymq{xRLbuqP3= z{_=9L`Sv0B&hnoJFGA6Q02+bd10v0DkhA0an2oQ2H?yj0P*2#+j~`qq z+1)IEhzn7`{d>Yyez5kP!y>fTjOf(U#$wwk!n9Yz(F5Gozp>q#>|@Gc(}5kzN8g9& zk>CWxu%&1)yA$49Js%2w^o?#>NbwuAHH*~MeadFB=DwKrMFvEPD?bc&TKD4Hj*^~= z!u+$@kb#5)37N?OF*1)4+%2UjqTdp43=C?*%1A1o{2`+-ir~Py5RXbB)Ie(2S2;O1)KF+qHfA9CFRGZ7(pWnqjOya!&gN`>uJ`K* z)NI|TaI(P%b}Nqg2=KGRZ@GF?!%+dL`TqD>K)8Hl6T5G2Bnn_WtxR`so=${w0lYXN z{Is~9BsP$BIlGfzp4+KK;#RrfU3WXn&c5kv4hTSF?n2E6F>YA+0QueuMi|#O#8Y>7 zOzvr6@2UX*P$yIT!PQH5zkErA_ik%a6idC$h3r+h)P7r)1E3ZP=|YIHI_u;DdTDiB z^9W>-2qhAGhAqg+3KZ|I z3@~zb`hH;9Ph(moQA6cZ){|w z$JiRrvu!$^`Zh^_9uC(Ly)#b8a=z6ccO5nGai{*@zaFVK~BjD#l_4OU;o08MYhwx7Jh}zsVVm3S*_$$7oi^w z$6uWG@vEF0JuCH2F&DSun|oAYu!Ib>8AxtzGPS3oMRmycFxzlCFzD`9?%(5aGms^8 zTDmBgdVEik)VY|mx@s0hpsa}vENb(Dc>yN};fX2Wny|sB1pfh!WRE9`z%v|r{DC{6)H`_IGJ)sA@_s{Q5Q@}Ix7rnDWGR>{P{;>z^XM#tXA}vJvDaXj0$X7%m4>-H6J5*h~3?KhR`FzwW zGOju6Zg+Oik=uLy ze;`TT`49;HilPcl|+4TpCvu5c(*B| zL#p>Io1w>dPwxD|?CQ-4pkb|%cD-pthBbcC@)O*0%&&#^BZvBftE&(ShD3>=K#uOQ z5i)%VyMyi06Ik-I@u{zxI@_u2xQ_;MH4znYFtB|}VU?M-Sv1K%y$Pg*STKuw*zT+y zaF-?HFDh*%;aY8Ptqh*P1vWBY6pS*8^-+ zh9Oeo{lWu}ZV(Cz3fCTP-sR9B*rm+rYohF2@L$9h*^QBIiPPvaU!_m3C{jJoC5xqn zq5fr1S_i>j^CTVMhcTrg{#2)(^tqE?g)M=vm-^~(^l+-y@GCj{C2TAL>I{%p0Lxsq z9n?hl3(+D6;^a_>Jh^7!ox8G zDw$}^-J8~wYWkFP%z%WU0bR(`1Bt)&sxh|ldodmO%0{`@U_vZ z>AXpwJrU_N zhs-}1n#X0i@jfm3CzIJ<_Vy4-=H4Z$-L8YLno#>ug8pVQC;v0qY`f}jk)gv(D(4aA z+P+>%=5sjud58$hDGvyniT*b!B~ZQVjKJcoNjCQuF*t z3iu+!FuSb|s)K=PgJdc(L8sow&y4Q!G4guwj_-oZA)jw$Ut~E07M5SdO>0Z=^lwmQ z8fPaUd4niL%fLe0@x`BUnf;3rY++eK-57=npq0nKpjzP@rVvPBv%!3WG6QW_(`S5!UOp2Nwy@xTz|-fFM45ZGm3;BzPx(d< zYN+@BqV^s9i?RS7t5!0;0!`Xy(8b=f;SL;S>UYu-<%*yk-`dvy0c+xC|cO%UWGEuKHY8UD6QzetAEcsGcYHDh={~8Y!h|xg1GOEyDEsaHY#W8 z7}xv0Km0bwQ!%_RT~52<%DnsiBU6?g2Y!`*<|FGO;kBErJM>VMc|X=aNH>sZoG|+q ztTo<&7o9~55rT$&ZmaI{T*!BJXX*MBi7IMz`&M4RVP~n9bA^F~V(GwMS7JHaT$I4# zod-ZM2cVm>MFd|l>=PzA4aoiw4b{1Xz}FGn>XVsP$^xDmN_{#rFQ1OH;w*ct#AT(o zSj?rTt$ZLXcLD!Z54zelgdMM@NitNJ@8Ib1@KS;1NAL}-fa8eQ{{BZJUYg-aS{s$rlpe#tT7)H@d3i^|%JY|cBDlPNhH$TjW)ScNa-E|P?=1UbH>d3Q%Ebb{1K%5%(3*}L zB=a}OnsB~l8@mYU&t175;8kt=+PQUEZO@aIN`IwkzoVVraM3c~+C^fcA8hQ++{-CM z)B&TEC+j?0o&Iq;fvsE&ha+OcgMpt5>hk^%U2h%_W!wIbk0fPDWZy>FDr+jrHd>I} zh!$C=NVaU*!(2tO6G9PF*(x#FWgD_gNU~&S#@MpYsKzieSKqVe^Ld`v_xt)izd!tQ z-_6W*o#$~L=drwx_j~x)w7o-d&Tfy}{Eb(bWrB(MyEq_z6s3n)Rm?g_6aWuiwDB*m zu?1Yi9{mt(`*oZfEL*SQ&GF%sk!c z8;QrigJn^qUbWFdT09Gj5evV?dI@WUc(1h8i?oXcBuMe9<-4ht?TOzauRHt5*a%2% z9hLmYdhvGp13_VUQVVHLf63W@IdtU(5AvpwhuP=~;j|!P=V(LpaThC%5W*YT?S}>e z{gLa}({?CS2u;)zgb+aqnDN!@Vf?+! z;U526eqLOe@EL{7Q%MJ)5bzG($Vbx1A?6_puFa8u_=(DNM#1RV7s2@pPuk0$@FAyO z@>#ylsk`baD>PO65?l-`yB?qjKJb2Rs%u;|K*%h1uIL59C!_+am zv#j||-<-|;>5KFwY`lW7K-<0<#D0F{hwh#kyTOl6-vOSxYBF2s}k4|RE5o|fSw z&%Ae@qp9irTg9>OU##TbCY6aCdb%~c%>tJ$fKu&V`mL9JszO&Kw2{fL~^k^ z5L4Wa3U$_q!-f0bzH-+;9%EW>`Z3c}u=dg3>%#^!FK;B=ITc&<^*bEsv^FSxc`P|Z zahbD-ZSJ=94(QOeg3=)A1+v=b5uP-Tm4rJTRlcQPqQ_9Vjj2+d&kLta<|}v|Pce?! zOJbJKCtv-A`+1+LwHnQ^q@&vJr##X)% zj2iMYIDqK}DinOtkUKtRT82`%)|vI@EEy0|*H>k{&OSVH{MFIJw;o?P7TU^L2sK=T z;BN>jO>@SyEq*WLGO7{@UXQXtH) z&NQEdpR#F&kTahpR5@WmK;E)Fw;y#Z$Zz-oiXBB-=j^+#^pytnrG5-w$#Hj-m9PFj-+zjNjQue^8t{mfIg_Lxl^xzK#c;m*CQiOnW|{DfNEQ~>HDc=&4IC2 zALnBGf{NVDcagodw>|WK`gK6K;XjD8EDnT;p_XrfN^%t&nC=p2yhVmY!;MD5Ey+{o zR<3?m+gMjs_3=?~FT0a%6KtZK*6c9n|9vzqY($_o&8YiUw^yfnsHhHJdGiE182*l> zm|IMor#aIZARI*=Y({#b$M2gB<;;Jm$lDyanBbxiPZo5W*8I&$!O2n-S8W(Kn8s90 z7Rh2C^E6ey^X>a7LsxhHK~-7n?4Yp&KjjP!c_xLG5t83H8Ne=EPgM8uhkzP2fx_P5 zsEW_A8v2cj(HClLs;>)5^Na)305&d}#`nHB%sI6$G|%C{`M8CR&QqbYF$BY<=?AH7 zx5UBLF%QnL*ss`G|GZ__d&0b?vW~widOAVb>v79xv5tsa1{_d2P``;GL;M~97-%6% z_q^JiH)}C)(u`MGr64u&dWq(9ALRtDgVjQF^3T{JJy|X#%vK0+y^dPb-qe9#c(#nJ z>Wm_>&f8E@l20~i^XhMyMw<3kx)1YD^z!uVI-c}X+CcZfeLz_`Cvg+^3tV|ox5NEs z1HosxF#}q(@!nrPGhW6W#>O3A@IT~r^}GU#MoW%9N{DfVaU zZN;G|*Mk4@m9P#$q$%X68ko2QA^vU?I*!sn{yPw|7p|o~|J`KVR+F_c*F$r#FpRON zPFvzy;N3J_xH%X5+)hjfRCYg?1tzdAZF;gUS=VLHWSck|-*HWaf2QZ%*m*IW8AZ3-pPqdf`ZRqr`8gSI;$*c5nE8`b_LFCN8f!G)&wuQ4yNVoI zXjq;LM;1>0m=+kQ@@(8!s&Xj0N$Wy9zD%j?e^L=VU~sF26#=s|@NsEGY38*Vos}dl zs|rfSY-^yW?0IFcjLVkaA`4urF{LAm5K}0OB+~9Po&xXdp~e8cyYoI$#JF(lnVu3U zZ83C@@$>i(R->mGbs+60pW8B%6}~lsdfPQO2ZxUgqdwFoG@8v=Ojyhq$Lb!1{EE;W zK`f&$nAUi|>ITqPzTJbR5fK~+mc`9O)&GStA;ok9kE#36Cg;nHSLg~Zs+ z=-_gdnj^D@N&eN>t{IFYa9a{MY7(%>_fV@I-gDz2R12ohc{w}aJ>SbjY^lP9W$s(H z5d|YbBbwq#zXm3HC7_Yue9yEN+4JrPh^-=ibwHI6^MIWLRU`ql zasD9KK$lUF*!LDaN%sq%NO&vlE-C-zb3?X~(?vt>7bDwyeqbxC*YwCzPJ?Yb#%&w? zU7-=j&hCcBf<2oi*Dmji<%#e^uVw)=f5gHz%fsD7iWzV^m5ZGcH&&UZGf7-JVT=&s z7yi$iT}SOn5mR&~3cvG`t;dC{Bkmsj4fGn;@N{Nxj+=gq=g!7~d+b&{u{IT+C;%7_KHFiJ} z-!(!V1M%g33;|yyvf9H?3J3HoRJ=h>+c1hh&_Q$7@G;d^;_a=$nL3l(Zc^922VdMZ z=l}Q@Zq@uhG8(AQU_7pnY8)G=MpuD4RQPT**ELl4zi-s>yv0+g)8Xm8BlWa*H-EX3 zppm;vmJ^5c?J|OL`^eASrji{{riprozr{CRF#&Uxl6}V2E>Z3jz7IK1Hq6XWO@az1 zOz$V|ct3Z&<;U|{&{?uX*@o+Wem;8_H**kbQ-%jozs#AyMMak2;Zp`kVlh)?F9{fmqIv-BR}GjcoW8|WoqTD$)aLqM28EH9o!1WF{8_;#-YZqmy14!(GwDkX`9 z%>ug!pK~$h&~x z>*wlAa`%n|1j>}~Bw90;M(6>5t6UUwz6oPc_vv^Q&O^Tj+V?hIKIj)`+0ix@uAT=Z zdz68nEGGzZ|Gd;bxBtNiBjLZ`ng;$`MTOm_W`wbAP2Y3zjM9<;&z)Y#088Kb z9tOvr^yMzpHl%wyLSJN=SX2ts$NnJ9aXcYfZI1gWYsHTmk$ZB=+w*SAl3xI&%|wbK_t zdieP_f;H?z*OwrB{6X~AFJb9cpdQe@1J|RR)#ysrt5b}d;6?=CwAbRn6DRrh(eDs0 zH&Au8E?@fT?o(iwlkT0?1EPc-sCl}wZX@43l65)YA$ z_Wnacuz1g}s6%a_F8drZG3w7*3i1N$jU&AJ}^26|f2_TBUfked-zgi?pwV z@3+q_lFs`1divE�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%0D-#^LEtT|$END= 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%0AAPMY_`6!+rNT$c8 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 z�~KC-Iyg@hQZ{LS3oyLuq-aChx>KTviP!G53VAo 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%0A0Z(kj$@id7 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

+)Z@SB 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
JyQHO)L`-4Bg}{++zEG4dq=b8PMp-xIEcimqle> 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%0AL;rP;|({~|AkC&G6HV$Wmp36j(w@M<;s-tt6 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.0.302 +fschat[model_worker]==0.2.29 openai sentence_transformers -transformers>=4.31.0 -torch~=2.0.0 -fastapi~=0.99.1 +transformers>=4.33.0 +torch>=2.0.1 +torchvision +torchaudio +fastapi>=0.103.1 nltk~=3.8.1 uvicorn~=0.23.1 starlette~=0.27.0 @@ -23,6 +25,12 @@ pathlib pytest scikit-learn numexpr +vllm==0.1.7; sys_platform == "linux" +# online api libs +# zhipuai +# dashscope>=1.10.0 # qwen +# qianfan +# volcengine>=1.0.106 # fangzhou # uncomment libs if you want to use corresponding vector store # pymilvus==2.1.3 # requires milvus==2.1.3 @@ -34,9 +42,13 @@ pandas~=2.0.3 streamlit>=1.26.0 streamlit-option-menu>=0.3.6 streamlit-antd-components>=0.1.11 -streamlit-chatbox >=1.1.6, <=1.1.7 +streamlit-chatbox>=1.1.9 streamlit-aggrid>=0.3.4.post3 httpx~=0.24.1 watchdog tqdm websockets +tiktoken +einops +scipy +transformers_stream_generator==0.0.4 diff --git a/requirements_api.txt b/requirements_api.txt index c56c07bfe..e195d74f4 100644 --- a/requirements_api.txt +++ b/requirements_api.txt @@ -1,10 +1,12 @@ -langchain==0.0.287 -fschat[model_worker]==0.2.28 +langchain>=0.0.302 +fschat[model_worker]==0.2.29 openai sentence_transformers -transformers>=4.31.0 -torch~=2.0.0 -fastapi~=0.99.1 +transformers>=4.33.0 +torch >=2.0.1 +torchvision +torchaudio +fastapi>=0.103.1 nltk~=3.8.1 uvicorn~=0.23.1 starlette~=0.27.0 @@ -17,12 +19,19 @@ accelerate spacy PyMuPDF==1.22.5 rapidocr_onnxruntime>=1.3.2 - requests pathlib pytest scikit-learn numexpr +vllm==0.1.7; sys_platform == "linux" + + +# online api libs +# zhipuai +# dashscope>=1.10.0 # qwen +# qianfan +# volcengine>=1.0.106 # fangzhou # uncomment libs if you want to use corresponding vector store # pymilvus==2.1.3 # requires milvus==2.1.3 diff --git a/requirements_webui.txt b/requirements_webui.txt index f67f968f7..9caf085ab 100644 --- a/requirements_webui.txt +++ b/requirements_webui.txt @@ -3,7 +3,7 @@ pandas~=2.0.3 streamlit>=1.26.0 streamlit-option-menu>=0.3.6 streamlit-antd-components>=0.1.11 -streamlit-chatbox >=1.1.6, <=1.1.7 +streamlit-chatbox>=1.1.9 streamlit-aggrid>=0.3.4.post3 httpx~=0.24.1 nltk diff --git a/server/agent/callbacks.py b/server/agent/callbacks.py new file mode 100644 index 000000000..394d2279e --- /dev/null +++ b/server/agent/callbacks.py @@ -0,0 +1,109 @@ +from uuid import UUID +from langchain.callbacks import AsyncIteratorCallbackHandler +import json +import asyncio +from typing import Any, Dict, List, Optional + +from langchain.schema import AgentFinish, AgentAction +from langchain.schema.output import LLMResult + + +def dumps(obj: Dict) -> str: + return json.dumps(obj, ensure_ascii=False) + + +class Status: + start: int = 1 + running: int = 2 + complete: int = 3 + agent_action: int = 4 + agent_finish: int = 5 + error: int = 6 + make_tool: int = 7 + + +class CustomAsyncIteratorCallbackHandler(AsyncIteratorCallbackHandler): + def __init__(self): + super().__init__() + self.queue = asyncio.Queue() + self.done = asyncio.Event() + self.cur_tool = {} + self.out = True + + async def on_tool_start(self, serialized: Dict[str, Any], input_str: str, *, run_id: UUID, + parent_run_id: UUID | None = None, tags: List[str] | None = None, + metadata: Dict[str, Any] | None = None, **kwargs: Any) -> None: + self.cur_tool = { + "tool_name": serialized["name"], + "input_str": input_str, + "output_str": "", + "status": Status.agent_action, + "run_id": run_id.hex, + "llm_token": "", + "final_answer": "", + "error": "", + } + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_tool_end(self, output: str, *, run_id: UUID, parent_run_id: UUID | None = None, + tags: List[str] | None = None, **kwargs: Any) -> None: + self.out = True + self.cur_tool.update( + status=Status.agent_finish, + output_str=output.replace("Answer:", ""), + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_tool_error(self, error: Exception | KeyboardInterrupt, *, run_id: UUID, + parent_run_id: UUID | None = None, tags: List[str] | None = None, **kwargs: Any) -> None: + self.cur_tool.update( + status=Status.error, + error=str(error), + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_llm_new_token(self, token: str, **kwargs: Any) -> None: + if token: + if "Action" in token: + self.out = False + self.cur_tool.update( + status=Status.running, + llm_token="\n\n", + ) + self.queue.put_nowait(dumps(self.cur_tool)) + if self.out: + self.cur_tool.update( + status=Status.running, + llm_token=token, + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_llm_start(self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any) -> None: + self.cur_tool.update( + status=Status.start, + llm_token="", + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: + self.out = True + self.cur_tool.update( + status=Status.complete, + llm_token="", + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_llm_error(self, error: Exception | KeyboardInterrupt, **kwargs: Any) -> None: + self.out = True + self.cur_tool.update( + status=Status.error, + error=str(error), + ) + self.queue.put_nowait(dumps(self.cur_tool)) + + async def on_agent_finish( + self, finish: AgentFinish, *, run_id: UUID, parent_run_id: Optional[UUID] = None, + tags: Optional[List[str]] = None, + **kwargs: Any, + ) -> None: + self.cur_tool = {} diff --git a/server/agent/custom_template.py b/server/agent/custom_template.py new file mode 100644 index 000000000..25697a6e1 --- /dev/null +++ b/server/agent/custom_template.py @@ -0,0 +1,64 @@ +from langchain.agents import Tool, AgentOutputParser +from langchain.prompts import StringPromptTemplate +from typing import List, Union +from langchain.schema import AgentAction, AgentFinish +import re + +class CustomPromptTemplate(StringPromptTemplate): + # The template to use + template: str + # The list of tools available + tools: List[Tool] + + def format(self, **kwargs) -> str: + # Get the intermediate steps (AgentAction, Observation tuples) + # Format them in a particular way + intermediate_steps = kwargs.pop("intermediate_steps") + thoughts = "" + for action, observation in intermediate_steps: + thoughts += action.log + thoughts += f"\nObservation: {observation}\nThought: " + # Set the agent_scratchpad variable to that value + kwargs["agent_scratchpad"] = thoughts + # Create a tools variable from the list of tools provided + kwargs["tools"] = "\n".join([f"{tool.name}: {tool.description}" for tool in self.tools]) + # Create a list of tool names for the tools provided + kwargs["tool_names"] = ", ".join([tool.name for tool in self.tools]) + return self.template.format(**kwargs) +class CustomOutputParser(AgentOutputParser): + + def parse(self, llm_output: str) -> AgentFinish | AgentAction | str: + # Check if agent should finish + if "Final Answer:" in llm_output: + return AgentFinish( + # Return values is generally always a dictionary with a single `output` key + # It is not recommended to try anything else at the moment :) + return_values={"output": llm_output.replace("Final Answer:", "").strip()}, + log=llm_output, + ) + # Parse out the action and action input + regex = r"Action\s*\d*\s*:(.*?)\nAction\s*\d*\s*Input\s*\d*\s*:[\s]*(.*)" + match = re.search(regex, llm_output, re.DOTALL) + if not match: + return AgentFinish( + return_values={"output": f"调用agent失败: `{llm_output}`"}, + log=llm_output, + ) + action = match.group(1).strip() + action_input = match.group(2) + # Return the action and action input + try: + ans = AgentAction( + tool=action, + tool_input=action_input.strip(" ").strip('"'), + log=llm_output + ) + return ans + except: + return AgentFinish( + return_values={"output": f"调用agent失败: `{llm_output}`"}, + log=llm_output, + ) + + + diff --git a/server/agent/google_search.py b/server/agent/google_search.py new file mode 100644 index 000000000..979d478cf --- /dev/null +++ b/server/agent/google_search.py @@ -0,0 +1,8 @@ +import os +os.environ["GOOGLE_CSE_ID"] = "" +os.environ["GOOGLE_API_KEY"] = "" + +from langchain.tools import GoogleSearchResults +def google_search(query: str): + tool = GoogleSearchResults() + return tool.run(tool_input=query) \ No newline at end of file diff --git a/server/agent/math.py b/server/agent/math.py new file mode 100644 index 000000000..a00667af1 --- /dev/null +++ b/server/agent/math.py @@ -0,0 +1,70 @@ +from langchain.prompts import PromptTemplate +from langchain.chains import LLMMathChain +from server.utils import wrap_done, get_ChatOpenAI +from configs.model_config import LLM_MODEL, TEMPERATURE +from langchain.chat_models import ChatOpenAI +from langchain.callbacks.manager import CallbackManagerForToolRun + +_PROMPT_TEMPLATE = """将数学问题翻译成可以使用Python的numexpr库执行的表达式。使用运行此代码的输出来回答问题。 +问题: ${{包含数学问题的问题。}} +```text +${{解决问题的单行数学表达式}} +``` +...numexpr.evaluate(query)... +```output +${{运行代码的输出}} +``` +答案: ${{答案}} + +这是两个例子: + +问题: 37593 * 67是多少? +```text +37593 * 67 +``` +...numexpr.evaluate("37593 * 67")... +```output +2518731 + +答案: 2518731 + +问题: 37593的五次方根是多少? +```text +37593**(1/5) +``` +...numexpr.evaluate("37593**(1/5)")... +```output +8.222831614237718 + +答案: 8.222831614237718 + + +问题: 2的平方是多少? +```text +2 ** 2 +``` +...numexpr.evaluate("2 ** 2")... +```output +4 + +答案: 4 + + +现在,这是我的问题: +问题: {question} +""" +PROMPT = PromptTemplate( + input_variables=["question"], + template=_PROMPT_TEMPLATE, +) + + +def calculate(query: str): + model = get_ChatOpenAI( + streaming=False, + model_name=LLM_MODEL, + temperature=TEMPERATURE, + ) + llm_math = LLMMathChain.from_llm(model, verbose=True, prompt=PROMPT) + ans = llm_math.run(query) + return ans diff --git a/server/agent/shell.py b/server/agent/shell.py new file mode 100644 index 000000000..4dfee0bb5 --- /dev/null +++ b/server/agent/shell.py @@ -0,0 +1,5 @@ +from langchain.tools import ShellTool +def shell(query: str): + tool = ShellTool() + return tool.run(tool_input=query) + diff --git a/server/agent/tools.py b/server/agent/tools.py new file mode 100644 index 000000000..7c6793f10 --- /dev/null +++ b/server/agent/tools.py @@ -0,0 +1,40 @@ +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) + +from server.agent.math import calculate +from server.agent.translator import translate +from server.agent.weather import weathercheck +from server.agent.shell import shell +from server.agent.google_search import google_search +from langchain.agents import Tool + +tools = [ + Tool.from_function( + func=calculate, + name="计算器工具", + description="进行简单的数学运算" + ), + Tool.from_function( + func=translate, + name="翻译工具", + description="翻译各种语言" + ), + Tool.from_function( + func=weathercheck, + name="天气查询工具", + description="查询天气", + ), + Tool.from_function( + func=shell, + name="shell工具", + description="使用命令行工具输出", + ), + Tool.from_function( + func=google_search, + name="谷歌搜索工具", + description="使用谷歌搜索", + ) +] +tool_names = [tool.name for tool in tools] diff --git a/server/agent/translator.py b/server/agent/translator.py new file mode 100644 index 000000000..8466cf83b --- /dev/null +++ b/server/agent/translator.py @@ -0,0 +1,55 @@ +from langchain.prompts import PromptTemplate +from langchain.chains import LLMChain +import sys +import os + +from server.utils import get_ChatOpenAI + +sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) +from langchain.chains.llm_math.prompt import PROMPT +from configs.model_config import LLM_MODEL,TEMPERATURE + +_PROMPT_TEMPLATE = ''' +# 指令 +接下来,作为一个专业的翻译专家,当我给出句子或段落时,你将提供通顺且具有可读性的对应语言的翻译。注意: +1. 确保翻译结果流畅且易于理解 +2. 无论提供的是陈述句或疑问句,只进行翻译 +3. 不添加与原文无关的内容 + +原文: ${{用户需要翻译的原文和目标语言}} +{question} +```output +${{翻译结果}} +``` +答案: ${{答案}} + +以下是两个例子 +问题: 翻译13成英语 +```text +13 英语 +```output +thirteen +以下是两个例子 +问题: 翻译 我爱你 成法语 +```text +13 法语 +```output +Je t'aime. +''' + +PROMPT = PromptTemplate( + input_variables=["question"], + template=_PROMPT_TEMPLATE, +) + + +def translate(query: str): + model = get_ChatOpenAI( + streaming=False, + model_name=LLM_MODEL, + temperature=TEMPERATURE, + ) + llm_translate = LLMChain(llm=model, prompt=PROMPT) + ans = llm_translate.run(query) + + return ans diff --git a/server/agent/weather.py b/server/agent/weather.py new file mode 100644 index 000000000..3e5a37bf5 --- /dev/null +++ b/server/agent/weather.py @@ -0,0 +1,365 @@ +## 使用和风天气API查询天气 +from __future__ import annotations + +## 单独运行的时候需要添加 +import sys +import os +# sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) + + +from server.utils import get_ChatOpenAI + + +import re +import warnings +from typing import Dict + +from langchain.callbacks.manager import ( + AsyncCallbackManagerForChainRun, + CallbackManagerForChainRun, +) +from langchain.chains.base import Chain +from langchain.chains.llm import LLMChain +from langchain.pydantic_v1 import Extra, root_validator +from langchain.schema import BasePromptTemplate +from langchain.schema.language_model import BaseLanguageModel +import requests +from typing import List, Any, Optional +from configs.model_config import LLM_MODEL, TEMPERATURE + +## 使用和风天气API查询天气 +KEY = "" + +def get_city_info(location, adm, key): + base_url = 'https://geoapi.qweather.com/v2/city/lookup?' + params = {'location': location, 'adm': adm, 'key': key} + response = requests.get(base_url, params=params) + data = response.json() + return data + + +from datetime import datetime + + +def format_weather_data(data): + hourly_forecast = data['hourly'] + formatted_data = '' + for forecast in hourly_forecast: + # 将预报时间转换为datetime对象 + forecast_time = datetime.strptime(forecast['fxTime'], '%Y-%m-%dT%H:%M%z') + # 获取预报时间的时区 + forecast_tz = forecast_time.tzinfo + # 获取当前时间(使用预报时间的时区) + now = datetime.now(forecast_tz) + # 计算预报日期与当前日期的差值 + days_diff = (forecast_time.date() - now.date()).days + if days_diff == 0: + forecast_date_str = '今天' + elif days_diff == 1: + forecast_date_str = '明天' + elif days_diff == 2: + forecast_date_str = '后天' + else: + forecast_date_str = str(days_diff) + '天后' + forecast_time_str = forecast_date_str + ' ' + forecast_time.strftime('%H:%M') + # 计算预报时间与当前时间的差值 + time_diff = forecast_time - now + # 将差值转换为小时 + hours_diff = time_diff.total_seconds() // 3600 + if hours_diff < 1: + hours_diff_str = '1小时后' + elif hours_diff >= 24: + # 如果超过24小时,转换为天数 + days_diff = hours_diff // 24 + hours_diff_str = str(int(days_diff)) + '天后' + else: + hours_diff_str = str(int(hours_diff)) + '小时后' + # 将预报时间和当前时间的差值添加到输出中 + formatted_data += '预报时间: ' + hours_diff_str + '\n' + formatted_data += '具体时间: ' + forecast_time_str + '\n' + formatted_data += '温度: ' + forecast['temp'] + '°C\n' + formatted_data += '天气: ' + forecast['text'] + '\n' + formatted_data += '风向: ' + forecast['windDir'] + '\n' + formatted_data += '风速: ' + forecast['windSpeed'] + '级\n' + formatted_data += '湿度: ' + forecast['humidity'] + '%\n' + formatted_data += '降水概率: ' + forecast['pop'] + '%\n' + # formatted_data += '降水量: ' + forecast['precip'] + 'mm\n' + formatted_data += '\n\n' + return formatted_data + + +def get_weather(key, location_id, time: str = "24"): + if time: + url = "https://devapi.qweather.com/v7/weather/" + time + "h?" + else: + time = "3" # 免费订阅只能查看3天的天气 + url = "https://devapi.qweather.com/v7/weather/" + time + "d?" + params = { + 'location': location_id, + 'key': key, + } + response = requests.get(url, params=params) + data = response.json() + return format_weather_data(data) + + +def split_query(query): + parts = query.split() + location = parts[0] if parts[0] != 'None' else parts[1] + adm = parts[1] + time = parts[2] + return location, adm, time + + +def weather(query): + location, adm, time = split_query(query) + key = KEY + if time != "None" and int(time) > 24: + return "只能查看24小时内的天气,无法回答" + if time == "None": + time = "24" # 免费的版本只能24小时内的天气 + if key == "": + return "请先在代码中填入和风天气API Key" + city_info = get_city_info(location=location, adm=adm, key=key) + location_id = city_info['location'][0]['id'] + weather_data = get_weather(key=key, location_id=location_id, time=time) + return weather_data + + +class LLMWeatherChain(Chain): + llm_chain: LLMChain + llm: Optional[BaseLanguageModel] = None + """[Deprecated] LLM wrapper to use.""" + prompt: BasePromptTemplate + """[Deprecated] Prompt to use to translate to python if necessary.""" + input_key: str = "question" #: :meta private: + output_key: str = "answer" #: :meta private: + + class Config: + """Configuration for this pydantic object.""" + + extra = Extra.forbid + arbitrary_types_allowed = True + + @root_validator(pre=True) + def raise_deprecation(cls, values: Dict) -> Dict: + if "llm" in values: + warnings.warn( + "Directly instantiating an LLMWeatherChain with an llm is deprecated. " + "Please instantiate with llm_chain argument or using the from_llm " + "class method." + ) + if "llm_chain" not in values and values["llm"] is not None: + prompt = values.get("prompt", PROMPT) + values["llm_chain"] = LLMChain(llm=values["llm"], prompt=prompt) + return values + + @property + def input_keys(self) -> List[str]: + """Expect input key. + + :meta private: + """ + return [self.input_key] + + @property + def output_keys(self) -> List[str]: + """Expect output key. + + :meta private: + """ + return [self.output_key] + + def _evaluate_expression(self, expression: str) -> str: + try: + output = weather(expression) + except Exception as e: + output = "输入的信息有误,请再次尝试" + # raise ValueError(f"错误: {expression},输入的信息不对") + + return output + + def _process_llm_result( + self, llm_output: str, run_manager: CallbackManagerForChainRun + ) -> Dict[str, str]: + + run_manager.on_text(llm_output, color="green", verbose=self.verbose) + + llm_output = llm_output.strip() + text_match = re.search(r"^```text(.*?)```", llm_output, re.DOTALL) + if text_match: + expression = text_match.group(1) + output = self._evaluate_expression(expression) + run_manager.on_text("\nAnswer: ", verbose=self.verbose) + run_manager.on_text(output, color="yellow", verbose=self.verbose) + answer = "Answer: " + output + elif llm_output.startswith("Answer:"): + answer = llm_output + elif "Answer:" in llm_output: + answer = "Answer: " + llm_output.split("Answer:")[-1] + else: + raise ValueError(f"unknown format from LLM: {llm_output}") + return {self.output_key: answer} + + async def _aprocess_llm_result( + self, + llm_output: str, + run_manager: AsyncCallbackManagerForChainRun, + ) -> Dict[str, str]: + await run_manager.on_text(llm_output, color="green", verbose=self.verbose) + llm_output = llm_output.strip() + text_match = re.search(r"^```text(.*?)```", llm_output, re.DOTALL) + if text_match: + expression = text_match.group(1) + output = self._evaluate_expression(expression) + await run_manager.on_text("\nAnswer: ", verbose=self.verbose) + await run_manager.on_text(output, color="yellow", verbose=self.verbose) + answer = "Answer: " + output + elif llm_output.startswith("Answer:"): + answer = llm_output + elif "Answer:" in llm_output: + answer = "Answer: " + llm_output.split("Answer:")[-1] + else: + raise ValueError(f"unknown format from LLM: {llm_output}") + return {self.output_key: answer} + + def _call( + self, + inputs: Dict[str, str], + run_manager: Optional[CallbackManagerForChainRun] = None, + ) -> Dict[str, str]: + _run_manager = run_manager or CallbackManagerForChainRun.get_noop_manager() + _run_manager.on_text(inputs[self.input_key]) + llm_output = self.llm_chain.predict( + question=inputs[self.input_key], + stop=["```output"], + callbacks=_run_manager.get_child(), + ) + return self._process_llm_result(llm_output, _run_manager) + + async def _acall( + self, + inputs: Dict[str, str], + run_manager: Optional[AsyncCallbackManagerForChainRun] = None, + ) -> Dict[str, str]: + _run_manager = run_manager or AsyncCallbackManagerForChainRun.get_noop_manager() + await _run_manager.on_text(inputs[self.input_key]) + llm_output = await self.llm_chain.apredict( + question=inputs[self.input_key], + stop=["```output"], + callbacks=_run_manager.get_child(), + ) + return await self._aprocess_llm_result(llm_output, _run_manager) + + @property + def _chain_type(self) -> str: + return "llm_weather_chain" + + @classmethod + def from_llm( + cls, + llm: BaseLanguageModel, + prompt: BasePromptTemplate, + **kwargs: Any, + ) -> LLMWeatherChain: + llm_chain = LLMChain(llm=llm, prompt=prompt) + return cls(llm_chain=llm_chain, **kwargs) + + +from langchain.prompts import PromptTemplate + +_PROMPT_TEMPLATE = """用户将会向您咨询天气问题,您不需要自己回答天气问题,而是将用户提问的信息提取出来区,市和时间三个元素后使用我为你编写好的工具进行查询并返回结果,格式为 区+市+时间 每个元素用空格隔开。如果缺少信息,则用 None 代替。 +问题: ${{用户的问题}} + +```text + +${{拆分的区,市和时间}} +``` + +... weather(提取后的关键字,用空格隔开)... +```output + +${{提取后的答案}} +``` +答案: ${{答案}} + +这是两个例子: +问题: 上海浦东未来1小时天气情况? + +```text +浦东 上海 1 +``` +...weather(浦东 上海 1)... + +```output + +预报时间: 1小时后 +具体时间: 今天 18:00 +温度: 24°C +天气: 多云 +风向: 西南风 +风速: 7级 +湿度: 88% +降水概率: 16% + +Answer: +预报时间: 1小时后 +具体时间: 今天 18:00 +温度: 24°C +天气: 多云 +风向: 西南风 +风速: 7级 +湿度: 88% +降水概率: 16% + +问题: 北京市朝阳区未来24小时天气如何? +```text + +朝阳 北京 24 +``` +...weather(朝阳 北京 24)... +```output +预报时间: 23小时后 +具体时间: 明天 17:00 +温度: 26°C +天气: 霾 +风向: 西南风 +风速: 11级 +湿度: 65% +降水概率: 20% +Answer: +预报时间: 23小时后 +具体时间: 明天 17:00 +温度: 26°C +天气: 霾 +风向: 西南风 +风速: 11级 +湿度: 65% +降水概率: 20% + +现在,这是我的问题: +问题: {question} +""" +PROMPT = PromptTemplate( + input_variables=["question"], + template=_PROMPT_TEMPLATE, +) + + +def weathercheck(query: str): + model = get_ChatOpenAI( + streaming=False, + model_name=LLM_MODEL, + temperature=TEMPERATURE, + ) + llm_weather = LLMWeatherChain.from_llm(model, verbose=True, prompt=PROMPT) + ans = llm_weather.run(query) + return ans + +if __name__ == '__main__': + + ## 检测api是否能正确返回 + query = "上海浦东未来1小时天气情况" + # ans = weathercheck(query) + ans = weather("浦东 上海 1") + print(ans) \ No newline at end of file diff --git a/server/api.py b/server/api.py index 357a0678d..ea098d686 100644 --- a/server/api.py +++ b/server/api.py @@ -12,12 +12,12 @@ from fastapi.middleware.cors import CORSMiddleware from starlette.responses import RedirectResponse from server.chat import (chat, knowledge_base_chat, openai_chat, - search_engine_chat) + search_engine_chat, agent_chat) from server.knowledge_base.kb_api import list_kbs, create_kb, delete_kb from server.knowledge_base.kb_doc_api import (list_files, upload_docs, delete_docs, update_docs, download_doc, recreate_vector_store, search_docs, DocumentWithScore) -from server.llm_api import list_llm_models, change_llm_model, stop_llm_model +from server.llm_api import list_running_models, list_config_models, change_llm_model, stop_llm_model from server.utils import BaseResponse, ListResponse, FastAPI, MakeFastAPIOffline from typing import List @@ -67,6 +67,10 @@ def create_app(): tags=["Chat"], summary="与搜索引擎对话")(search_engine_chat) + app.post("/chat/agent_chat", + tags=["Chat"], + summary="与agent对话")(agent_chat) + # Tag: Knowledge Base Management app.get("/knowledge_base/list_knowledge_bases", tags=["Knowledge Base Management"], @@ -125,20 +129,25 @@ def create_app(): )(recreate_vector_store) # LLM模型相关接口 - app.post("/llm_model/list_models", - tags=["LLM Model Management"], - summary="列出当前已加载的模型", - )(list_llm_models) + app.post("/llm_model/list_running_models", + tags=["LLM Model Management"], + summary="列出当前已加载的模型", + )(list_running_models) + + app.post("/llm_model/list_config_models", + tags=["LLM Model Management"], + summary="列出configs已配置的模型", + )(list_config_models) app.post("/llm_model/stop", - tags=["LLM Model Management"], - summary="停止指定的LLM模型(Model Worker)", - )(stop_llm_model) + tags=["LLM Model Management"], + summary="停止指定的LLM模型(Model Worker)", + )(stop_llm_model) app.post("/llm_model/change", - tags=["LLM Model Management"], - summary="切换指定的LLM模型(Model Worker)", - )(change_llm_model) + tags=["LLM Model Management"], + summary="切换指定的LLM模型(Model Worker)", + )(change_llm_model) return app diff --git a/server/chat/__init__.py b/server/chat/__init__.py index 136bad649..62fe430c1 100644 --- a/server/chat/__init__.py +++ b/server/chat/__init__.py @@ -2,3 +2,4 @@ from .knowledge_base_chat import knowledge_base_chat from .openai_chat import openai_chat from .search_engine_chat import search_engine_chat +from .agent_chat import agent_chat \ No newline at end of file diff --git a/server/chat/agent_chat.py b/server/chat/agent_chat.py new file mode 100644 index 000000000..c08ae81c1 --- /dev/null +++ b/server/chat/agent_chat.py @@ -0,0 +1,126 @@ +from langchain.memory import ConversationBufferWindowMemory +from server.agent.tools import tools, tool_names +from server.agent.callbacks import CustomAsyncIteratorCallbackHandler, Status, dumps +from langchain.agents import AgentExecutor, LLMSingleActionAgent +from server.agent.custom_template import CustomOutputParser, CustomPromptTemplate +from fastapi import Body +from fastapi.responses import StreamingResponse +from configs.model_config import LLM_MODEL, TEMPERATURE, HISTORY_LEN +from server.utils import wrap_done, get_ChatOpenAI, get_prompt_template +from langchain.chains import LLMChain +from typing import AsyncIterable, Optional +import asyncio +from typing import List +from server.chat.utils import History +import json + + +async def agent_chat(query: str = Body(..., description="用户输入", examples=["恼羞成怒"]), + history: List[History] = Body([], + description="历史对话", + examples=[[ + {"role": "user", "content": "我们来玩成语接龙,我先来,生龙活虎"}, + {"role": "assistant", "content": "虎头虎脑"}]] + ), + stream: bool = Body(False, description="流式输出"), + model_name: str = Body(LLM_MODEL, description="LLM 模型名称。"), + temperature: float = Body(TEMPERATURE, description="LLM 采样温度", ge=0.0, le=1.0), + prompt_name: str = Body("agent_chat", + description="使用的prompt模板名称(在configs/prompt_config.py中配置)"), + # top_p: float = Body(TOP_P, description="LLM 核采样。勿与temperature同时设置", gt=0.0, lt=1.0), + ): + history = [History.from_data(h) for h in history] + + async def agent_chat_iterator( + query: str, + history: Optional[List[History]], + model_name: str = LLM_MODEL, + prompt_name: str = prompt_name, + ) -> AsyncIterable[str]: + callback = CustomAsyncIteratorCallbackHandler() + model = get_ChatOpenAI( + model_name=model_name, + temperature=temperature, + ) + + prompt_template = CustomPromptTemplate( + template=get_prompt_template(prompt_name), + tools=tools, + input_variables=["input", "intermediate_steps", "history"] + ) + output_parser = CustomOutputParser() + llm_chain = LLMChain(llm=model, prompt=prompt_template) + agent = LLMSingleActionAgent( + llm_chain=llm_chain, + output_parser=output_parser, + stop=["Observation:", "Observation:\n", "<|im_end|>"], # Qwen模型中使用这个 + # stop=["Observation:", "Observation:\n"], # 其他模型,注意模板 + allowed_tools=tool_names, + ) + # 把history转成agent的memory + memory = ConversationBufferWindowMemory(k=HISTORY_LEN * 2) + + for message in history: + # 检查消息的角色 + if message.role == 'user': + # 添加用户消息 + memory.chat_memory.add_user_message(message.content) + else: + # 添加AI消息 + memory.chat_memory.add_ai_message(message.content) + agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, + tools=tools, + verbose=True, + memory=memory, + ) + input_msg = History(role="user", content="{{ input }}").to_msg_template(False) + task = asyncio.create_task(wrap_done( + agent_executor.acall(query, callbacks=[callback], include_run_info=True), + callback.done), + ) + if stream: + async for chunk in callback.aiter(): + tools_use = [] + # Use server-sent-events to stream the response + data = json.loads(chunk) + if data["status"] == Status.error: + tools_use.append("工具调用失败:\n" + data["error"]) + yield json.dumps({"tools": tools_use}, ensure_ascii=False) + yield json.dumps({"answer": "(工具调用失败,请查看工具栏报错) \n\n"}, ensure_ascii=False) + if data["status"] == Status.start or data["status"] == Status.complete: + continue + if data["status"] == Status.agent_action: + yield json.dumps({"answer": "(正在使用工具,请注意工具栏变化) \n\n"}, ensure_ascii=False) + if data["status"] == Status.agent_finish: + tools_use.append("工具名称: " + data["tool_name"]) + tools_use.append("工具输入: " + data["input_str"]) + tools_use.append("工具输出: " + data["output_str"]) + yield json.dumps({"tools": tools_use}, ensure_ascii=False) + yield json.dumps({"answer": data["llm_token"]}, ensure_ascii=False) + + else: + pass + # agent必须要steram=True,这部分暂时没有完成 + # result = [] + # async for chunk in callback.aiter(): + # data = json.loads(chunk) + # status = data["status"] + # if status == Status.start: + # result.append(chunk) + # elif status == Status.running: + # result[-1]["llm_token"] += chunk["llm_token"] + # elif status == Status.complete: + # result[-1]["status"] = Status.complete + # elif status == Status.agent_finish: + # result.append(chunk) + # elif status == Status.agent_finish: + # pass + # yield dumps(result) + + await task + + return StreamingResponse(agent_chat_iterator(query=query, + history=history, + model_name=model_name, + prompt_name=prompt_name), + media_type="text/event-stream") diff --git a/server/chat/chat.py b/server/chat/chat.py index c025c3c2b..6d3c9ce50 100644 --- a/server/chat/chat.py +++ b/server/chat/chat.py @@ -1,15 +1,15 @@ from fastapi import Body from fastapi.responses import StreamingResponse -from configs.model_config import llm_model_dict, LLM_MODEL, TEMPERATURE -from server.chat.utils import wrap_done -from langchain.chat_models import ChatOpenAI -from langchain import LLMChain +from configs import LLM_MODEL, TEMPERATURE +from server.utils import wrap_done, get_ChatOpenAI +from langchain.chains import LLMChain from langchain.callbacks import AsyncIteratorCallbackHandler from typing import AsyncIterable import asyncio from langchain.prompts.chat import ChatPromptTemplate from typing import List from server.chat.utils import History +from server.utils import get_prompt_template async def chat(query: str = Body(..., description="用户输入", examples=["恼羞成怒"]), @@ -21,29 +21,26 @@ async def chat(query: str = Body(..., description="用户输入", examples=["恼 ), stream: bool = Body(False, description="流式输出"), model_name: str = Body(LLM_MODEL, description="LLM 模型名称。"), - temperature: float = Body(TEMPERATURE, description="LLM 采样温度", gt=0.0, le=1.0), + temperature: float = Body(TEMPERATURE, description="LLM 采样温度", ge=0.0, le=1.0), # top_p: float = Body(TOP_P, description="LLM 核采样。勿与temperature同时设置", gt=0.0, lt=1.0), + prompt_name: str = Body("llm_chat", description="使用的prompt模板名称(在configs/prompt_config.py中配置)"), ): history = [History.from_data(h) for h in history] async def chat_iterator(query: str, history: List[History] = [], model_name: str = LLM_MODEL, + prompt_name: str = prompt_name, ) -> AsyncIterable[str]: callback = AsyncIteratorCallbackHandler() - - model = ChatOpenAI( - streaming=True, - verbose=True, - callbacks=[callback], - openai_api_key=llm_model_dict[model_name]["api_key"], - openai_api_base=llm_model_dict[model_name]["api_base_url"], + model = get_ChatOpenAI( model_name=model_name, temperature=temperature, - openai_proxy=llm_model_dict[model_name].get("openai_proxy") + callbacks=[callback], ) - input_msg = History(role="user", content="{{ input }}").to_msg_template(False) + prompt_template = get_prompt_template(prompt_name) + input_msg = History(role="user", content=prompt_template).to_msg_template(False) chat_prompt = ChatPromptTemplate.from_messages( [i.to_msg_template() for i in history] + [input_msg]) chain = LLMChain(prompt=chat_prompt, llm=model) @@ -66,5 +63,8 @@ async def chat_iterator(query: str, await task - return StreamingResponse(chat_iterator(query, history, model_name), + return StreamingResponse(chat_iterator(query=query, + history=history, + model_name=model_name, + prompt_name=prompt_name), media_type="text/event-stream") diff --git a/server/chat/knowledge_base_chat.py b/server/chat/knowledge_base_chat.py index b26f2cbc4..9c70ee595 100644 --- a/server/chat/knowledge_base_chat.py +++ b/server/chat/knowledge_base_chat.py @@ -1,12 +1,9 @@ from fastapi import Body, Request from fastapi.responses import StreamingResponse -from configs.model_config import (llm_model_dict, LLM_MODEL, PROMPT_TEMPLATE, - VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, - TEMPERATURE) -from server.chat.utils import wrap_done -from server.utils import BaseResponse -from langchain.chat_models import ChatOpenAI -from langchain import LLMChain +from configs import (LLM_MODEL, VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, TEMPERATURE) +from server.utils import wrap_done, get_ChatOpenAI +from server.utils import BaseResponse, get_prompt_template +from langchain.chains import LLMChain from langchain.callbacks import AsyncIteratorCallbackHandler from typing import AsyncIterable, List, Optional import asyncio @@ -33,7 +30,8 @@ async def knowledge_base_chat(query: str = Body(..., description="用户输入", ), stream: bool = Body(False, description="流式输出"), model_name: str = Body(LLM_MODEL, description="LLM 模型名称。"), - temperature: float = Body(TEMPERATURE, description="LLM 采样温度", gt=0.0, le=1.0), + temperature: float = Body(TEMPERATURE, description="LLM 采样温度", ge=0.0, le=1.0), + prompt_name: str = Body("knowledge_base_chat", description="使用的prompt模板名称(在configs/prompt_config.py中配置)"), local_doc_url: bool = Body(False, description="知识文件返回本地路径(true)或URL(false)"), request: Request = None, ): @@ -44,27 +42,22 @@ async def knowledge_base_chat(query: str = Body(..., description="用户输入", history = [History.from_data(h) for h in history] async def knowledge_base_chat_iterator(query: str, - kb: KBService, top_k: int, history: Optional[List[History]], model_name: str = LLM_MODEL, + prompt_name: str = prompt_name, ) -> AsyncIterable[str]: callback = AsyncIteratorCallbackHandler() - - model = ChatOpenAI( - streaming=True, - verbose=True, - callbacks=[callback], - openai_api_key=llm_model_dict[model_name]["api_key"], - openai_api_base=llm_model_dict[model_name]["api_base_url"], + model = get_ChatOpenAI( model_name=model_name, temperature=temperature, - openai_proxy=llm_model_dict[model_name].get("openai_proxy") + callbacks=[callback], ) docs = search_docs(query, knowledge_base_name, top_k, score_threshold) context = "\n".join([doc.page_content for doc in docs]) - input_msg = History(role="user", content=PROMPT_TEMPLATE).to_msg_template(False) + prompt_template = get_prompt_template(prompt_name) + input_msg = History(role="user", content=prompt_template).to_msg_template(False) chat_prompt = ChatPromptTemplate.from_messages( [i.to_msg_template() for i in history] + [input_msg]) @@ -102,5 +95,9 @@ async def knowledge_base_chat_iterator(query: str, await task - return StreamingResponse(knowledge_base_chat_iterator(query, kb, top_k, history, model_name), + return StreamingResponse(knowledge_base_chat_iterator(query=query, + top_k=top_k, + history=history, + model_name=model_name, + prompt_name=prompt_name), media_type="text/event-stream") diff --git a/server/chat/openai_chat.py b/server/chat/openai_chat.py index 857ac9793..4a46ddd96 100644 --- a/server/chat/openai_chat.py +++ b/server/chat/openai_chat.py @@ -1,7 +1,8 @@ from fastapi.responses import StreamingResponse from typing import List import openai -from configs.model_config import llm_model_dict, LLM_MODEL, logger, log_verbose +from configs import LLM_MODEL, logger, log_verbose +from server.utils import get_model_worker_config, fschat_openai_api_address from pydantic import BaseModel @@ -23,9 +24,10 @@ class OpenAiChatMsgIn(BaseModel): async def openai_chat(msg: OpenAiChatMsgIn): - openai.api_key = llm_model_dict[LLM_MODEL]["api_key"] + config = get_model_worker_config(msg.model) + openai.api_key = config.get("api_key", "EMPTY") print(f"{openai.api_key=}") - openai.api_base = llm_model_dict[LLM_MODEL]["api_base_url"] + openai.api_base = config.get("api_base_url", fschat_openai_api_address()) print(f"{openai.api_base=}") print(msg) diff --git a/server/chat/search_engine_chat.py b/server/chat/search_engine_chat.py index f8e4ebe9c..00708b728 100644 --- a/server/chat/search_engine_chat.py +++ b/server/chat/search_engine_chat.py @@ -1,14 +1,12 @@ from langchain.utilities import BingSearchAPIWrapper, DuckDuckGoSearchAPIWrapper -from configs.model_config import BING_SEARCH_URL, BING_SUBSCRIPTION_KEY +from configs import (BING_SEARCH_URL, BING_SUBSCRIPTION_KEY, + LLM_MODEL, SEARCH_ENGINE_TOP_K, TEMPERATURE) from fastapi import Body from fastapi.responses import StreamingResponse from fastapi.concurrency import run_in_threadpool -from configs.model_config import (llm_model_dict, LLM_MODEL, SEARCH_ENGINE_TOP_K, - PROMPT_TEMPLATE, TEMPERATURE) -from server.chat.utils import wrap_done -from server.utils import BaseResponse -from langchain.chat_models import ChatOpenAI -from langchain import LLMChain +from server.utils import wrap_done, get_ChatOpenAI +from server.utils import BaseResponse, get_prompt_template +from langchain.chains import LLMChain from langchain.callbacks import AsyncIteratorCallbackHandler from typing import AsyncIterable import asyncio @@ -73,7 +71,8 @@ async def search_engine_chat(query: str = Body(..., description="用户输入", ), stream: bool = Body(False, description="流式输出"), model_name: str = Body(LLM_MODEL, description="LLM 模型名称。"), - temperature: float = Body(TEMPERATURE, description="LLM 采样温度", gt=0.0, le=1.0), + temperature: float = Body(TEMPERATURE, description="LLM 采样温度", ge=0.0, le=1.0), + prompt_name: str = Body("knowledge_base_chat", description="使用的prompt模板名称(在configs/prompt_config.py中配置)"), ): if search_engine_name not in SEARCH_ENGINES.keys(): return BaseResponse(code=404, msg=f"未支持搜索引擎 {search_engine_name}") @@ -88,23 +87,20 @@ async def search_engine_chat_iterator(query: str, top_k: int, history: Optional[List[History]], model_name: str = LLM_MODEL, + prompt_name: str = prompt_name, ) -> AsyncIterable[str]: callback = AsyncIteratorCallbackHandler() - model = ChatOpenAI( - streaming=True, - verbose=True, - callbacks=[callback], - openai_api_key=llm_model_dict[model_name]["api_key"], - openai_api_base=llm_model_dict[model_name]["api_base_url"], + model = get_ChatOpenAI( model_name=model_name, temperature=temperature, - openai_proxy=llm_model_dict[model_name].get("openai_proxy") + callbacks=[callback], ) docs = await lookup_search_engine(query, search_engine_name, top_k) context = "\n".join([doc.page_content for doc in docs]) - input_msg = History(role="user", content=PROMPT_TEMPLATE).to_msg_template(False) + prompt_template = get_prompt_template(prompt_name) + input_msg = History(role="user", content=prompt_template).to_msg_template(False) chat_prompt = ChatPromptTemplate.from_messages( [i.to_msg_template() for i in history] + [input_msg]) @@ -135,5 +131,10 @@ async def search_engine_chat_iterator(query: str, ensure_ascii=False) await task - return StreamingResponse(search_engine_chat_iterator(query, search_engine_name, top_k, history, model_name), + return StreamingResponse(search_engine_chat_iterator(query=query, + search_engine_name=search_engine_name, + top_k=top_k, + history=history, + model_name=model_name, + prompt_name=prompt_name), media_type="text/event-stream") diff --git a/server/chat/utils.py b/server/chat/utils.py index a80648b11..dd3c33326 100644 --- a/server/chat/utils.py +++ b/server/chat/utils.py @@ -1,22 +1,7 @@ -import asyncio -from typing import Awaitable, List, Tuple, Dict, Union from pydantic import BaseModel, Field from langchain.prompts.chat import ChatMessagePromptTemplate from configs import logger, log_verbose - - -async def wrap_done(fn: Awaitable, event: asyncio.Event): - """Wrap an awaitable with a event to signal when it's done or an exception is raised.""" - try: - await fn - except Exception as e: - # TODO: handle exception - msg = f"Caught exception: {e}" - logger.error(f'{e.__class__.__name__}: {msg}', - exc_info=e if log_verbose else None) - finally: - # Signal the aiter to stop. - event.set() +from typing import List, Tuple, Dict, Union class History(BaseModel): diff --git a/server/db/base.py b/server/db/base.py index 1d911c057..ae42ac09f 100644 --- a/server/db/base.py +++ b/server/db/base.py @@ -2,7 +2,7 @@ from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -from configs.model_config import SQLALCHEMY_DATABASE_URI +from configs import SQLALCHEMY_DATABASE_URI import json diff --git a/server/knowledge_base/kb_api.py b/server/knowledge_base/kb_api.py index c7b703e95..f50d8a732 100644 --- a/server/knowledge_base/kb_api.py +++ b/server/knowledge_base/kb_api.py @@ -3,7 +3,7 @@ from server.knowledge_base.utils import validate_kb_name from server.knowledge_base.kb_service.base import KBServiceFactory from server.db.repository.knowledge_base_repository import list_kbs_from_db -from configs.model_config import EMBEDDING_MODEL, logger, log_verbose +from configs import EMBEDDING_MODEL, logger, log_verbose from fastapi import Body diff --git a/server/knowledge_base/kb_cache/base.py b/server/knowledge_base/kb_cache/base.py index f3e6d6546..59426fa6a 100644 --- a/server/knowledge_base/kb_cache/base.py +++ b/server/knowledge_base/kb_cache/base.py @@ -4,9 +4,9 @@ from langchain.embeddings.base import Embeddings from langchain.schema import Document import threading -from configs.model_config import (CACHED_VS_NUM, EMBEDDING_MODEL, CHUNK_SIZE, - embedding_model_dict, logger, log_verbose) -from server.utils import embedding_device +from configs import (EMBEDDING_MODEL, CHUNK_SIZE, CACHED_VS_NUM, + logger, log_verbose) +from server.utils import embedding_device, get_model_path from contextlib import contextmanager from collections import OrderedDict from typing import List, Any, Union, Tuple @@ -22,7 +22,11 @@ def __init__(self, key: Union[str, Tuple], obj: Any = None, pool: "CachePool" = def __repr__(self) -> str: cls = type(self).__name__ - return f"<{cls}: key: {self._key}, obj: {self._obj}>" + return f"<{cls}: key: {self.key}, obj: {self._obj}>" + + @property + def key(self): + return self._key @contextmanager def acquire(self, owner: str = "", msg: str = ""): @@ -30,13 +34,13 @@ def acquire(self, owner: str = "", msg: str = ""): try: self._lock.acquire() if self._pool is not None: - self._pool._cache.move_to_end(self._key) + self._pool._cache.move_to_end(self.key) if log_verbose: - logger.info(f"{owner} 开始操作:{self._key}。{msg}") + logger.info(f"{owner} 开始操作:{self.key}。{msg}") yield self._obj finally: if log_verbose: - logger.info(f"{owner} 结束操作:{self._key}。{msg}") + logger.info(f"{owner} 结束操作:{self.key}。{msg}") self._lock.release() def start_loading(self): @@ -118,15 +122,24 @@ def load_embeddings(self, model: str, device: str) -> Embeddings: with item.acquire(msg="初始化"): self.atomic.release() if model == "text-embedding-ada-002": # openai text-embedding-ada-002 - embeddings = OpenAIEmbeddings(openai_api_key=embedding_model_dict[model], chunk_size=CHUNK_SIZE) + embeddings = OpenAIEmbeddings(openai_api_key=get_model_path(model), chunk_size=CHUNK_SIZE) elif 'bge-' in model: + if 'zh' in model: + # for chinese model + query_instruction = "为这个句子生成表示以用于检索相关文章:" + elif 'en' in model: + # for english model + query_instruction = "Represent this sentence for searching relevant passages:" + else: + # maybe ReRanker or else, just use empty string instead + query_instruction = "" embeddings = HuggingFaceBgeEmbeddings(model_name=embedding_model_dict[model], - model_kwargs={'device': device}, - query_instruction="为这个句子生成表示以用于检索相关文章:") + model_kwargs={'device': device}, + query_instruction=query_instruction) if model == "bge-large-zh-noinstruct": # bge large -noinstruct embedding embeddings.query_instruction = "" else: - embeddings = HuggingFaceEmbeddings(model_name=embedding_model_dict[model], model_kwargs={'device': device}) + embeddings = HuggingFaceEmbeddings(model_name=get_model_path(model), model_kwargs={'device': device}) item.obj = embeddings item.finish_loading() else: diff --git a/server/knowledge_base/kb_cache/faiss_cache.py b/server/knowledge_base/kb_cache/faiss_cache.py index 325c7bb1b..801e4a6b2 100644 --- a/server/knowledge_base/kb_cache/faiss_cache.py +++ b/server/knowledge_base/kb_cache/faiss_cache.py @@ -7,7 +7,7 @@ class ThreadSafeFaiss(ThreadSafeObject): def __repr__(self) -> str: cls = type(self).__name__ - return f"<{cls}: key: {self._key}, obj: {self._obj}, docs_count: {self.docs_count()}>" + return f"<{cls}: key: {self.key}, obj: {self._obj}, docs_count: {self.docs_count()}>" def docs_count(self) -> int: return len(self._obj.docstore._dict) @@ -17,7 +17,7 @@ def save(self, path: str, create_path: bool = True): if not os.path.isdir(path) and create_path: os.makedirs(path) ret = self._obj.save_local(path) - logger.info(f"已将向量库 {self._key} 保存到磁盘") + logger.info(f"已将向量库 {self.key} 保存到磁盘") return ret def clear(self): @@ -27,7 +27,7 @@ def clear(self): if ids: ret = self._obj.delete(ids) assert len(self._obj.docstore._dict) == 0 - logger.info(f"已将向量库 {self._key} 清空") + logger.info(f"已将向量库 {self.key} 清空") return ret @@ -58,21 +58,22 @@ def unload_vector_store(self, kb_name: str): class KBFaissPool(_FaissPool): def load_vector_store( - self, - kb_name: str, - create: bool = True, - embed_model: str = EMBEDDING_MODEL, - embed_device: str = embedding_device(), + self, + kb_name: str, + vector_name: str = "vector_store", + create: bool = True, + embed_model: str = EMBEDDING_MODEL, + embed_device: str = embedding_device(), ) -> ThreadSafeFaiss: self.atomic.acquire() - cache = self.get(kb_name) + cache = self.get((kb_name, vector_name)) # 用元组比拼接字符串好一些 if cache is None: - item = ThreadSafeFaiss(kb_name, pool=self) - self.set(kb_name, item) + item = ThreadSafeFaiss((kb_name, vector_name), pool=self) + self.set((kb_name, vector_name), item) with item.acquire(msg="初始化"): self.atomic.release() - logger.info(f"loading vector store in '{kb_name}' from disk.") - vs_path = get_vs_path(kb_name) + logger.info(f"loading vector store in '{kb_name}/{vector_name}' from disk.") + vs_path = get_vs_path(kb_name, vector_name) if os.path.isfile(os.path.join(vs_path, "index.faiss")): embeddings = self.load_kb_embeddings(kb_name=kb_name, embed_device=embed_device) @@ -89,7 +90,7 @@ def load_vector_store( item.finish_loading() else: self.atomic.release() - return self.get(kb_name) + return self.get((kb_name, vector_name)) class MemoFaissPool(_FaissPool): @@ -144,7 +145,7 @@ def worker(vs_name: str, name: str): if r == 3: # delete docs logger.warning(f"清除 {vs_name} by {name}") kb_faiss_pool.get(vs_name).clear() - + threads = [] for n in range(1, 30): t = threading.Thread(target=worker, @@ -152,6 +153,6 @@ def worker(vs_name: str, name: str): daemon=True) t.start() threads.append(t) - + for t in threads: t.join() diff --git a/server/knowledge_base/kb_doc_api.py b/server/knowledge_base/kb_doc_api.py index 02ad222cf..75d933052 100644 --- a/server/knowledge_base/kb_doc_api.py +++ b/server/knowledge_base/kb_doc_api.py @@ -1,10 +1,10 @@ import os import urllib from fastapi import File, Form, Body, Query, UploadFile -from configs.model_config import (DEFAULT_VS_TYPE, EMBEDDING_MODEL, - VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, - CHUNK_SIZE, OVERLAP_SIZE, ZH_TITLE_ENHANCE, - logger, log_verbose,) +from configs import (DEFAULT_VS_TYPE, EMBEDDING_MODEL, + VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, + CHUNK_SIZE, OVERLAP_SIZE, ZH_TITLE_ENHANCE, + logger, log_verbose,) from server.utils import BaseResponse, ListResponse, run_in_thread_pool from server.knowledge_base.utils import (validate_kb_name, list_files_from_folder,get_file_path, files2docs_in_thread, KnowledgeFile) @@ -122,10 +122,10 @@ def upload_docs(files: List[UploadFile] = File(..., description="上传文件, knowledge_base_name: str = Form(..., description="知识库名称", examples=["samples"]), override: bool = Form(False, description="覆盖已有文件"), to_vector_store: bool = Form(True, description="上传文件后是否进行向量化"), - chunk_size: int = Body(CHUNK_SIZE, description="知识库中单段文本最大长度"), - chunk_overlap: int = Body(OVERLAP_SIZE, description="知识库中相邻文本重合长度"), - zh_title_enhance: bool = Body(ZH_TITLE_ENHANCE, description="是否开启中文标题加强"), - docs: Json = Form({}, description="自定义的docs", examples=[{"test.txt": [Document(page_content="custom doc")]}]), + chunk_size: int = Form(CHUNK_SIZE, description="知识库中单段文本最大长度"), + chunk_overlap: int = Form(OVERLAP_SIZE, description="知识库中相邻文本重合长度"), + zh_title_enhance: bool = Form(ZH_TITLE_ENHANCE, description="是否开启中文标题加强"), + docs: Json = Form({}, description="自定义的docs,需要转为json字符串", examples=[{"test.txt": [Document(page_content="custom doc")]}]), not_refresh_vs_cache: bool = Form(False, description="暂不保存向量库(用于FAISS)"), ) -> BaseResponse: ''' @@ -205,12 +205,12 @@ def delete_docs(knowledge_base_name: str = Body(..., examples=["samples"]), def update_docs( knowledge_base_name: str = Body(..., description="知识库名称", examples=["samples"]), - file_names: List[str] = Body(..., description="文件名称,支持多文件", examples=["file_name"]), + file_names: List[str] = Body(..., description="文件名称,支持多文件", examples=[["file_name1", "text.txt"]]), chunk_size: int = Body(CHUNK_SIZE, description="知识库中单段文本最大长度"), chunk_overlap: int = Body(OVERLAP_SIZE, description="知识库中相邻文本重合长度"), zh_title_enhance: bool = Body(ZH_TITLE_ENHANCE, description="是否开启中文标题加强"), override_custom_docs: bool = Body(False, description="是否覆盖之前自定义的docs"), - docs: Json = Body({}, description="自定义的docs", examples=[{"test.txt": [Document(page_content="custom doc")]}]), + docs: Json = Body({}, description="自定义的docs,需要转为json字符串", examples=[{"test.txt": [Document(page_content="custom doc")]}]), not_refresh_vs_cache: bool = Body(False, description="暂不保存向量库(用于FAISS)"), ) -> BaseResponse: ''' @@ -323,6 +323,7 @@ def recreate_vector_store( chunk_size: int = Body(CHUNK_SIZE, description="知识库中单段文本最大长度"), chunk_overlap: int = Body(OVERLAP_SIZE, description="知识库中相邻文本重合长度"), zh_title_enhance: bool = Body(ZH_TITLE_ENHANCE, description="是否开启中文标题加强"), + not_refresh_vs_cache: bool = Body(False, description="暂不保存向量库(用于FAISS)"), ): ''' recreate vector store from the content. @@ -366,5 +367,7 @@ def output(): "msg": msg, }) i += 1 + if not not_refresh_vs_cache: + kb.save_vector_store() return StreamingResponse(output(), media_type="text/event-stream") diff --git a/server/knowledge_base/kb_service/base.py b/server/knowledge_base/kb_service/base.py index c97f8cce2..a725a78ee 100644 --- a/server/knowledge_base/kb_service/base.py +++ b/server/knowledge_base/kb_service/base.py @@ -18,8 +18,8 @@ list_docs_from_db, ) -from configs.model_config import (kbs_config, VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, - EMBEDDING_MODEL) +from configs import (kbs_config, VECTOR_SEARCH_TOP_K, SCORE_THRESHOLD, + EMBEDDING_MODEL) from server.knowledge_base.utils import ( get_kb_path, get_doc_path, load_embeddings, KnowledgeFile, list_kbs_from_folder, list_files_from_folder, diff --git a/server/knowledge_base/kb_service/faiss_kb_service.py b/server/knowledge_base/kb_service/faiss_kb_service.py index 6e20acf6a..e37c93ebb 100644 --- a/server/knowledge_base/kb_service/faiss_kb_service.py +++ b/server/knowledge_base/kb_service/faiss_kb_service.py @@ -1,7 +1,7 @@ import os import shutil -from configs.model_config import ( +from configs import ( KB_ROOT_PATH, SCORE_THRESHOLD, logger, log_verbose, @@ -18,18 +18,21 @@ class FaissKBService(KBService): vs_path: str kb_path: str + vector_name: str = "vector_store" def vs_type(self) -> str: return SupportedVSType.FAISS def get_vs_path(self): - return os.path.join(self.get_kb_path(), "vector_store") + return os.path.join(self.get_kb_path(), self.vector_name) def get_kb_path(self): return os.path.join(KB_ROOT_PATH, self.kb_name) def load_vector_store(self) -> ThreadSafeFaiss: - return kb_faiss_pool.load_vector_store(kb_name=self.kb_name, embed_model=self.embed_model) + return kb_faiss_pool.load_vector_store(kb_name=self.kb_name, + vector_name=self.vector_name, + embed_model=self.embed_model) def save_vector_store(self): self.load_vector_store().save(self.vs_path) diff --git a/server/knowledge_base/kb_service/milvus_kb_service.py b/server/knowledge_base/kb_service/milvus_kb_service.py index 5ca425b5c..80eac4e1f 100644 --- a/server/knowledge_base/kb_service/milvus_kb_service.py +++ b/server/knowledge_base/kb_service/milvus_kb_service.py @@ -7,7 +7,7 @@ from langchain.vectorstores import Milvus from sklearn.preprocessing import normalize -from configs.model_config import SCORE_THRESHOLD, kbs_config +from configs import SCORE_THRESHOLD, kbs_config from server.knowledge_base.kb_service.base import KBService, SupportedVSType, EmbeddingsFunAdapter, \ score_threshold_process @@ -22,9 +22,9 @@ def get_collection(milvus_name): from pymilvus import Collection return Collection(milvus_name) - def save_vector_store(self): - if self.milvus.col: - self.milvus.col.flush() + # def save_vector_store(self): + # if self.milvus.col: + # self.milvus.col.flush() def get_doc_by_id(self, id: str) -> Optional[Document]: if self.milvus.col: diff --git a/server/knowledge_base/kb_service/pg_kb_service.py b/server/knowledge_base/kb_service/pg_kb_service.py index fa832ab57..9c17e80d4 100644 --- a/server/knowledge_base/kb_service/pg_kb_service.py +++ b/server/knowledge_base/kb_service/pg_kb_service.py @@ -7,7 +7,7 @@ from langchain.vectorstores.pgvector import DistanceStrategy from sqlalchemy import text -from configs.model_config import EMBEDDING_DEVICE, kbs_config +from configs import kbs_config from server.knowledge_base.kb_service.base import SupportedVSType, KBService, EmbeddingsFunAdapter, \ score_threshold_process diff --git a/server/knowledge_base/migrate.py b/server/knowledge_base/migrate.py index b2073a109..2ca144af5 100644 --- a/server/knowledge_base/migrate.py +++ b/server/knowledge_base/migrate.py @@ -1,9 +1,10 @@ -from configs.model_config import (EMBEDDING_MODEL, DEFAULT_VS_TYPE, ZH_TITLE_ENHANCE, - logger, log_verbose) +from configs import (EMBEDDING_MODEL, DEFAULT_VS_TYPE, ZH_TITLE_ENHANCE, + CHUNK_SIZE, OVERLAP_SIZE, + logger, log_verbose) from server.knowledge_base.utils import (get_file_path, list_kbs_from_folder, list_files_from_folder,files2docs_in_thread, KnowledgeFile,) -from server.knowledge_base.kb_service.base import KBServiceFactory, SupportedVSType +from server.knowledge_base.kb_service.base import KBServiceFactory from server.db.repository.knowledge_file_repository import add_file_to_db from server.db.base import Base, engine import os @@ -33,33 +34,23 @@ def file_to_kbfile(kb_name: str, files: List[str]) -> List[KnowledgeFile]: def folder2db( - kb_name: str, - mode: Literal["recreate_vs", "fill_info_only", "update_in_db", "increament"], + kb_names: List[str], + mode: Literal["recreate_vs", "update_in_db", "increament"], vs_type: Literal["faiss", "milvus", "pg", "chromadb"] = DEFAULT_VS_TYPE, embed_model: str = EMBEDDING_MODEL, - chunk_size: int = -1, - chunk_overlap: int = -1, + chunk_size: int = CHUNK_SIZE, + chunk_overlap: int = CHUNK_SIZE, zh_title_enhance: bool = ZH_TITLE_ENHANCE, ): ''' use existed files in local folder to populate database and/or vector store. set parameter `mode` to: recreate_vs: recreate all vector store and fill info to database using existed files in local folder - fill_info_only: do not create vector store, fill info to db using existed files only + fill_info_only(disabled): do not create vector store, fill info to db using existed files only update_in_db: update vector store and database info using local files that existed in database only increament: create vector store and database info for local files that not existed in database only ''' - kb = KBServiceFactory.get_service(kb_name, vs_type, embed_model) - kb.create_kb() - - if mode == "recreate_vs": - files_count = kb.count_files() - print(f"知识库 {kb_name} 中共有 {files_count} 个文档。\n即将清除向量库。") - kb.clear_vs() - files_count = kb.count_files() - print(f"清理后,知识库 {kb_name} 中共有 {files_count} 个文档。") - - kb_files = file_to_kbfile(kb_name, list_files_from_folder(kb_name)) + def files2vs(kb_name: str, kb_files: List[KnowledgeFile]): for success, result in files2docs_in_thread(kb_files, chunk_size=chunk_size, chunk_overlap=chunk_overlap, @@ -68,84 +59,77 @@ def folder2db( _, filename, docs = result print(f"正在将 {kb_name}/{filename} 添加到向量库,共包含{len(docs)}条文档") kb_file = KnowledgeFile(filename=filename, knowledge_base_name=kb_name) - kb.add_doc(kb_file=kb_file, docs=docs, not_refresh_vs_cache=True) - else: - print(result) - kb.save_vector_store() - elif mode == "fill_info_only": - files = list_files_from_folder(kb_name) - kb_files = file_to_kbfile(kb_name, files) - - for kb_file in kb_files: - add_file_to_db(kb_file) - print(f"已将 {kb_name}/{kb_file.filename} 添加到数据库") - elif mode == "update_in_db": - files = kb.list_files() - kb_files = file_to_kbfile(kb_name, files) - - for kb_file in kb_files: - kb.update_doc(kb_file, not_refresh_vs_cache=True) - kb.save_vector_store() - elif mode == "increament": - db_files = kb.list_files() - folder_files = list_files_from_folder(kb_name) - files = list(set(folder_files) - set(db_files)) - kb_files = file_to_kbfile(kb_name, files) - - for success, result in files2docs_in_thread(kb_files, - chunk_size=chunk_size, - chunk_overlap=chunk_overlap, - zh_title_enhance=zh_title_enhance): - if success: - _, filename, docs = result - print(f"正在将 {kb_name}/{filename} 添加到向量库") - kb_file = KnowledgeFile(filename=filename, knowledge_base_name=kb_name) - kb.add_doc(kb_file=kb_file, docs=docs, not_refresh_vs_cache=True) + kb_file.splited_docs = docs + kb.add_doc(kb_file=kb_file, not_refresh_vs_cache=True) else: print(result) - kb.save_vector_store() - else: - print(f"unspported migrate mode: {mode}") - -def recreate_all_vs( - vs_type: Literal["faiss", "milvus", "pg", "chromadb"] = DEFAULT_VS_TYPE, - embed_mode: str = EMBEDDING_MODEL, - **kwargs: Any, -): + kb_names = kb_names or list_kbs_from_folder() + for kb_name in kb_names: + kb = KBServiceFactory.get_service(kb_name, vs_type, embed_model) + kb.create_kb() + + # 清除向量库,从本地文件重建 + if mode == "recreate_vs": + kb.clear_vs() + kb_files = file_to_kbfile(kb_name, list_files_from_folder(kb_name)) + files2vs(kb_name, kb_files) + kb.save_vector_store() + # # 不做文件内容的向量化,仅将文件元信息存到数据库 + # # 由于现在数据库存了很多与文本切分相关的信息,单纯存储文件信息意义不大,该功能取消。 + # elif mode == "fill_info_only": + # files = list_files_from_folder(kb_name) + # kb_files = file_to_kbfile(kb_name, files) + # for kb_file in kb_files: + # add_file_to_db(kb_file) + # print(f"已将 {kb_name}/{kb_file.filename} 添加到数据库") + # 以数据库中文件列表为基准,利用本地文件更新向量库 + elif mode == "update_in_db": + files = kb.list_files() + kb_files = file_to_kbfile(kb_name, files) + files2vs(kb_name, kb_files) + kb.save_vector_store() + # 对比本地目录与数据库中的文件列表,进行增量向量化 + elif mode == "increament": + db_files = kb.list_files() + folder_files = list_files_from_folder(kb_name) + files = list(set(folder_files) - set(db_files)) + kb_files = file_to_kbfile(kb_name, files) + files2vs(kb_name, kb_files) + kb.save_vector_store() + else: + print(f"unspported migrate mode: {mode}") + + +def prune_db_docs(kb_names: List[str]): ''' - used to recreate a vector store or change current vector store to another type or embed_model + delete docs in database that not existed in local folder. + it is used to delete database docs after user deleted some doc files in file browser ''' - for kb_name in list_kbs_from_folder(): - folder2db(kb_name, "recreate_vs", vs_type, embed_mode, **kwargs) - - -def prune_db_files(kb_name: str): - ''' - delete files in database that not existed in local folder. - it is used to delete database files after user deleted some doc files in file browser - ''' - kb = KBServiceFactory.get_service_by_name(kb_name) - if kb.exists(): - files_in_db = kb.list_files() - files_in_folder = list_files_from_folder(kb_name) - files = list(set(files_in_db) - set(files_in_folder)) - kb_files = file_to_kbfile(kb_name, files) - for kb_file in kb_files: - kb.delete_doc(kb_file, not_refresh_vs_cache=True) - kb.save_vector_store() - return kb_files - -def prune_folder_files(kb_name: str): + for kb_name in kb_names: + kb = KBServiceFactory.get_service_by_name(kb_name) + if kb and kb.exists(): + files_in_db = kb.list_files() + files_in_folder = list_files_from_folder(kb_name) + files = list(set(files_in_db) - set(files_in_folder)) + kb_files = file_to_kbfile(kb_name, files) + for kb_file in kb_files: + kb.delete_doc(kb_file, not_refresh_vs_cache=True) + print(f"success to delete docs for file: {kb_name}/{kb_file.filename}") + kb.save_vector_store() + + +def prune_folder_files(kb_names: List[str]): ''' delete doc files in local folder that not existed in database. is is used to free local disk space by delete unused doc files. ''' - kb = KBServiceFactory.get_service_by_name(kb_name) - if kb.exists(): - files_in_db = kb.list_files() - files_in_folder = list_files_from_folder(kb_name) - files = list(set(files_in_folder) - set(files_in_db)) - for file in files: - os.remove(get_file_path(kb_name, file)) - return files + for kb_name in kb_names: + kb = KBServiceFactory.get_service_by_name(kb_name) + if kb and kb.exists(): + files_in_db = kb.list_files() + files_in_folder = list_files_from_folder(kb_name) + files = list(set(files_in_folder) - set(files_in_db)) + for file in files: + os.remove(get_file_path(kb_name, file)) + print(f"success to delete file: {kb_name}/{file}") diff --git a/server/knowledge_base/utils.py b/server/knowledge_base/utils.py index 8eeb5049c..02212c88f 100644 --- a/server/knowledge_base/utils.py +++ b/server/knowledge_base/utils.py @@ -2,18 +2,17 @@ from transformers import AutoTokenizer -from configs.model_config import ( +from configs import ( EMBEDDING_MODEL, KB_ROOT_PATH, CHUNK_SIZE, OVERLAP_SIZE, ZH_TITLE_ENHANCE, - logger, - log_verbose, - text_splitter_dict, - llm_model_dict, - LLM_MODEL, - TEXT_SPLITTER + logger, + log_verbose, + text_splitter_dict, + LLM_MODEL, + TEXT_SPLITTER_NAME, ) import importlib from text_splitter import zh_title_enhance as func_zh_title_enhance @@ -23,7 +22,7 @@ from pathlib import Path import json from concurrent.futures import ThreadPoolExecutor -from server.utils import run_in_thread_pool, embedding_device +from server.utils import run_in_thread_pool, embedding_device, get_model_worker_config import io from typing import List, Union, Callable, Dict, Optional, Tuple, Generator import chardet @@ -44,8 +43,8 @@ def get_doc_path(knowledge_base_name: str): return os.path.join(get_kb_path(knowledge_base_name), "content") -def get_vs_path(knowledge_base_name: str): - return os.path.join(get_kb_path(knowledge_base_name), "vector_store") +def get_vs_path(knowledge_base_name: str, vector_name: str): + return os.path.join(get_kb_path(knowledge_base_name), vector_name) def get_file_path(knowledge_base_name: str, doc_name: str): @@ -190,9 +189,10 @@ def get_loader(loader_name: str, file_path_or_content: Union[str, bytes, io.Stri def make_text_splitter( - splitter_name: str = TEXT_SPLITTER, + splitter_name: str = TEXT_SPLITTER_NAME, chunk_size: int = CHUNK_SIZE, chunk_overlap: int = OVERLAP_SIZE, + llm_model: str = LLM_MODEL, ): """ 根据参数获取特定的分词器 @@ -228,8 +228,9 @@ def make_text_splitter( ) elif text_splitter_dict[splitter_name]["source"] == "huggingface": ## 从huggingface加载 if text_splitter_dict[splitter_name]["tokenizer_name_or_path"] == "": + config = get_model_worker_config(llm_model) text_splitter_dict[splitter_name]["tokenizer_name_or_path"] = \ - llm_model_dict[LLM_MODEL]["local_model_path"] + config.get("model_path") if text_splitter_dict[splitter_name]["tokenizer_name_or_path"] == "gpt2": from transformers import GPT2TokenizerFast @@ -281,7 +282,7 @@ def __init__( self.docs = None self.splited_docs = None self.document_loader_name = get_LoaderClass(self.ext) - self.text_splitter_name = TEXT_SPLITTER + self.text_splitter_name = TEXT_SPLITTER_NAME def file2docs(self, refresh: bool=False): if self.docs is None or refresh: @@ -372,18 +373,23 @@ def file2docs(*, file: KnowledgeFile, **kwargs) -> Tuple[bool, Tuple[str, str, L kwargs_list = [] for i, file in enumerate(files): kwargs = {} - if isinstance(file, tuple) and len(file) >= 2: - file = KnowledgeFile(filename=file[0], knowledge_base_name=file[1]) - elif isinstance(file, dict): - filename = file.pop("filename") - kb_name = file.pop("kb_name") - kwargs = file - file = KnowledgeFile(filename=filename, knowledge_base_name=kb_name) - kwargs["file"] = file - kwargs["chunk_size"] = chunk_size - kwargs["chunk_overlap"] = chunk_overlap - kwargs["zh_title_enhance"] = zh_title_enhance - kwargs_list.append(kwargs) + try: + if isinstance(file, tuple) and len(file) >= 2: + filename=file[0] + kb_name=file[1] + file = KnowledgeFile(filename=filename, knowledge_base_name=kb_name) + elif isinstance(file, dict): + filename = file.pop("filename") + kb_name = file.pop("kb_name") + kwargs.update(file) + file = KnowledgeFile(filename=filename, knowledge_base_name=kb_name) + kwargs["file"] = file + kwargs["chunk_size"] = chunk_size + kwargs["chunk_overlap"] = chunk_overlap + kwargs["zh_title_enhance"] = zh_title_enhance + kwargs_list.append(kwargs) + except Exception as e: + yield False, (kb_name, filename, str(e)) for result in run_in_thread_pool(func=file2docs, params=kwargs_list, pool=pool): yield result @@ -398,4 +404,4 @@ def file2docs(*, file: KnowledgeFile, **kwargs) -> Tuple[bool, Tuple[str, str, L pprint(docs[-1]) docs = kb_file.file2text() - pprint(docs[-1]) \ No newline at end of file + pprint(docs[-1]) diff --git a/server/llm_api.py b/server/llm_api.py index 5843e89a7..b028747ba 100644 --- a/server/llm_api.py +++ b/server/llm_api.py @@ -1,10 +1,10 @@ from fastapi import Body from configs import logger, log_verbose, LLM_MODEL, HTTPX_DEFAULT_TIMEOUT -from server.utils import BaseResponse, fschat_controller_address -import httpx +from server.utils import BaseResponse, fschat_controller_address, list_llm_models, get_httpx_client -def list_llm_models( + +def list_running_models( controller_address: str = Body(None, description="Fastchat controller服务器地址", examples=[fschat_controller_address()]), placeholder: str = Body(None, description="该参数未使用,占位用"), ) -> BaseResponse: @@ -13,8 +13,9 @@ def list_llm_models( ''' try: controller_address = controller_address or fschat_controller_address() - r = httpx.post(controller_address + "/list_models") - return BaseResponse(data=r.json()["models"]) + with get_httpx_client() as client: + r = client.post(controller_address + "/list_models") + return BaseResponse(data=r.json()["models"]) except Exception as e: logger.error(f'{e.__class__.__name__}: {e}', exc_info=e if log_verbose else None) @@ -24,6 +25,13 @@ def list_llm_models( msg=f"failed to get available models from controller: {controller_address}。错误信息是: {e}") +def list_config_models() -> BaseResponse: + ''' + 从本地获取configs中配置的模型列表 + ''' + return BaseResponse(data=list_llm_models()) + + def stop_llm_model( model_name: str = Body(..., description="要停止的LLM模型名称", examples=[LLM_MODEL]), controller_address: str = Body(None, description="Fastchat controller服务器地址", examples=[fschat_controller_address()]) @@ -34,11 +42,12 @@ def stop_llm_model( ''' try: controller_address = controller_address or fschat_controller_address() - r = httpx.post( - controller_address + "/release_worker", - json={"model_name": model_name}, - ) - return r.json() + with get_httpx_client() as client: + r = client.post( + controller_address + "/release_worker", + json={"model_name": model_name}, + ) + return r.json() except Exception as e: logger.error(f'{e.__class__.__name__}: {e}', exc_info=e if log_verbose else None) @@ -57,12 +66,13 @@ def change_llm_model( ''' try: controller_address = controller_address or fschat_controller_address() - r = httpx.post( - controller_address + "/release_worker", - json={"model_name": model_name, "new_model_name": new_model_name}, - timeout=HTTPX_DEFAULT_TIMEOUT, # wait for new worker_model - ) - return r.json() + with get_httpx_client() as client: + r = client.post( + controller_address + "/release_worker", + json={"model_name": model_name, "new_model_name": new_model_name}, + timeout=HTTPX_DEFAULT_TIMEOUT, # wait for new worker_model + ) + return r.json() except Exception as e: logger.error(f'{e.__class__.__name__}: {e}', exc_info=e if log_verbose else None) diff --git a/server/model_workers/__init__.py b/server/model_workers/__init__.py index a3a162f31..c1a824bdf 100644 --- a/server/model_workers/__init__.py +++ b/server/model_workers/__init__.py @@ -2,3 +2,5 @@ from .minimax import MiniMaxWorker from .xinghuo import XingHuoWorker from .qianfan import QianFanWorker +from .fangzhou import FangZhouWorker +from .qwen import QwenWorker diff --git a/server/model_workers/base.py b/server/model_workers/base.py index df5fbfcc6..515c5db96 100644 --- a/server/model_workers/base.py +++ b/server/model_workers/base.py @@ -1,4 +1,4 @@ -from configs.model_config import LOG_PATH +from configs.basic_config import LOG_PATH import fastchat.constants fastchat.constants.LOGDIR = LOG_PATH from fastchat.serve.model_worker import BaseModelWorker @@ -92,5 +92,5 @@ def prompt_to_messages(self, prompt: str) -> List[Dict]: if content := msg[len(ai_start):].strip(): result.append({"role": ai_role, "content": content}) else: - raise RuntimeError(f"unknow role in msg: {msg}") + raise RuntimeError(f"unknown role in msg: {msg}") return result diff --git a/server/model_workers/fangzhou.py b/server/model_workers/fangzhou.py new file mode 100644 index 000000000..33a6b7da6 --- /dev/null +++ b/server/model_workers/fangzhou.py @@ -0,0 +1,122 @@ +from server.model_workers.base import ApiModelWorker +from configs.model_config import TEMPERATURE +from fastchat import conversation as conv +import sys +import json +from pprint import pprint +from server.utils import get_model_worker_config +from typing import List, Literal, Dict + + +def request_volc_api( + messages: List[Dict], + model_name: str = "fangzhou-api", + version: str = "chatglm-6b-model", + temperature: float = TEMPERATURE, + api_key: str = None, + secret_key: str = None, +): + from volcengine.maas import MaasService, MaasException, ChatRole + + maas = MaasService('maas-api.ml-platform-cn-beijing.volces.com', 'cn-beijing') + config = get_model_worker_config(model_name) + version = version or config.get("version") + version_url = config.get("version_url") + api_key = api_key or config.get("api_key") + secret_key = secret_key or config.get("secret_key") + + maas.set_ak(api_key) + maas.set_sk(secret_key) + + # document: "https://www.volcengine.com/docs/82379/1099475" + req = { + "model": { + "name": version, + }, + "parameters": { + # 这里的参数仅为示例,具体可用的参数请参考具体模型的 API 说明 + "max_new_tokens": 1000, + "temperature": temperature, + }, + "messages": messages, + } + + try: + resps = maas.stream_chat(req) + for resp in resps: + yield resp + except MaasException as e: + print(e) + + +class FangZhouWorker(ApiModelWorker): + """ + 火山方舟 + """ + SUPPORT_MODELS = ["chatglm-6b-model"] + + def __init__( + self, + *, + version: Literal["chatglm-6b-model"] = "chatglm-6b-model", + model_names: List[str] = ["fangzhou-api"], + controller_addr: str, + worker_addr: str, + **kwargs, + ): + kwargs.update(model_names=model_names, controller_addr=controller_addr, worker_addr=worker_addr) + kwargs.setdefault("context_len", 16384) # TODO: 不同的模型有不同的大小 + + super().__init__(**kwargs) + + config = self.get_config() + self.version = version + self.api_key = config.get("api_key") + self.secret_key = config.get("secret_key") + + self.conv = conv.Conversation( + name=self.model_names[0], + system_message="你是一个聪明、对人类有帮助的人工智能,你可以对人类提出的问题给出有用、详细、礼貌的回答。", + messages=[], + roles=["user", "assistant", "system"], + sep="\n### ", + stop_str="###", + ) + + def generate_stream_gate(self, params): + super().generate_stream_gate(params) + + messages = self.prompt_to_messages(params["prompt"]) + text = "" + + for resp in request_volc_api(messages=messages, + model_name=self.model_names[0], + version=self.version, + temperature=params.get("temperature", TEMPERATURE), + ): + error = resp.error + if error.code_n > 0: + data = {"error_code": error.code_n, "text": error.message} + elif chunk := resp.choice.message.content: + text += chunk + data = {"error_code": 0, "text": text} + yield json.dumps(data, ensure_ascii=False).encode() + b"\0" + + def get_embeddings(self, params): + # TODO: 支持embeddings + print("embedding") + print(params) + + +if __name__ == "__main__": + import uvicorn + from server.utils import MakeFastAPIOffline + from fastchat.serve.model_worker import app + + worker = FangZhouWorker( + controller_addr="http://127.0.0.1:20001", + worker_addr="http://127.0.0.1:21005", + ) + sys.modules["fastchat.serve.model_worker"].worker = worker + MakeFastAPIOffline(app) + uvicorn.run(app, port=21005) diff --git a/server/model_workers/minimax.py b/server/model_workers/minimax.py index c772c0dc0..9079ea441 100644 --- a/server/model_workers/minimax.py +++ b/server/model_workers/minimax.py @@ -2,7 +2,7 @@ from fastchat import conversation as conv import sys import json -import httpx +from server.utils import get_httpx_client from pprint import pprint from typing import List, Dict @@ -63,22 +63,23 @@ def generate_stream_gate(self, params): } print("request data sent to minimax:") pprint(data) - response = httpx.stream("POST", - self.BASE_URL.format(pro=pro, group_id=group_id), - headers=headers, - json=data) - with response as r: - text = "" - for e in r.iter_text(): - if e.startswith("data: "): # 真是优秀的返回 - data = json.loads(e[6:]) - if not data.get("usage"): - if choices := data.get("choices"): - chunk = choices[0].get("delta", "").strip() - if chunk: - print(chunk) - text += chunk - yield json.dumps({"error_code": 0, "text": text}, ensure_ascii=False).encode() + b"\0" + with get_httpx_client() as client: + response = client.stream("POST", + self.BASE_URL.format(pro=pro, group_id=group_id), + headers=headers, + json=data) + with response as r: + text = "" + for e in r.iter_text(): + if e.startswith("data: "): # 真是优秀的返回 + data = json.loads(e[6:]) + if not data.get("usage"): + if choices := data.get("choices"): + chunk = choices[0].get("delta", "").strip() + if chunk: + print(chunk) + text += chunk + yield json.dumps({"error_code": 0, "text": text}, ensure_ascii=False).encode() + b"\0" def get_embeddings(self, params): # TODO: 支持embeddings @@ -93,8 +94,8 @@ def get_embeddings(self, params): worker = MiniMaxWorker( controller_addr="http://127.0.0.1:20001", - worker_addr="http://127.0.0.1:20004", + worker_addr="http://127.0.0.1:21002", ) sys.modules["fastchat.serve.model_worker"].worker = worker MakeFastAPIOffline(app) - uvicorn.run(app, port=20003) + uvicorn.run(app, port=21002) diff --git a/server/model_workers/qianfan.py b/server/model_workers/qianfan.py index 8a593a7ef..5eefd407c 100644 --- a/server/model_workers/qianfan.py +++ b/server/model_workers/qianfan.py @@ -5,7 +5,7 @@ import json import httpx from cachetools import cached, TTLCache -from server.utils import get_model_worker_config +from server.utils import get_model_worker_config, get_httpx_client from typing import List, Literal, Dict @@ -54,7 +54,8 @@ def get_baidu_access_token(api_key: str, secret_key: str) -> str: url = "https://aip.baidubce.com/oauth/2.0/token" params = {"grant_type": "client_credentials", "client_id": api_key, "client_secret": secret_key} try: - return httpx.get(url, params=params).json().get("access_token") + with get_httpx_client() as client: + return client.get(url, params=params).json().get("access_token") except Exception as e: print(f"failed to get token from baidu: {e}") @@ -72,7 +73,10 @@ def request_qianfan_api( version_url = config.get("version_url") access_token = get_baidu_access_token(config.get("api_key"), config.get("secret_key")) if not access_token: - raise RuntimeError(f"failed to get access token. have you set the correct api_key and secret key?") + yield { + "error_code": 403, + "error_msg": f"failed to get access token. have you set the correct api_key and secret key?", + } url = BASE_URL.format( model_version=version_url or MODEL_VERSIONS[version], @@ -88,14 +92,15 @@ def request_qianfan_api( 'Accept': 'application/json', } - with httpx.stream("POST", url, headers=headers, json=payload) as response: - for line in response.iter_lines(): - if not line.strip(): - continue - if line.startswith("data: "): - line = line[6:] - resp = json.loads(line) - yield resp + with get_httpx_client() as client: + with client.stream("POST", url, headers=headers, json=payload) as response: + for line in response.iter_lines(): + if not line.strip(): + continue + if line.startswith("data: "): + line = line[6:] + resp = json.loads(line) + yield resp class QianFanWorker(ApiModelWorker): @@ -165,8 +170,8 @@ def get_embeddings(self, params): worker = QianFanWorker( controller_addr="http://127.0.0.1:20001", - worker_addr="http://127.0.0.1:20006", + worker_addr="http://127.0.0.1:21004" ) sys.modules["fastchat.serve.model_worker"].worker = worker MakeFastAPIOffline(app) - uvicorn.run(app, port=20006) \ No newline at end of file + uvicorn.run(app, port=21004) \ No newline at end of file diff --git a/server/model_workers/qwen.py b/server/model_workers/qwen.py new file mode 100644 index 000000000..32d875744 --- /dev/null +++ b/server/model_workers/qwen.py @@ -0,0 +1,123 @@ +import json +import sys +from configs import TEMPERATURE +from http import HTTPStatus +from typing import List, Literal, Dict + +from fastchat import conversation as conv + +from server.model_workers.base import ApiModelWorker +from server.utils import get_model_worker_config + + +def request_qwen_api( + messages: List[Dict[str, str]], + api_key: str = None, + version: str = "qwen-turbo", + temperature: float = TEMPERATURE, + model_name: str = "qwen-api", +): + import dashscope + + config = get_model_worker_config(model_name) + api_key = api_key or config.get("api_key") + version = version or config.get("version") + + gen = dashscope.Generation() + responses = gen.call( + model=version, + temperature=temperature, + api_key=api_key, + messages=messages, + result_format='message', # set the result is message format. + stream=True, + ) + + text = "" + for resp in responses: + if resp.status_code != HTTPStatus.OK: + yield { + "code": resp.status_code, + "text": "api not response correctly", + } + + if resp["status_code"] == 200: + if choices := resp["output"]["choices"]: + yield { + "code": 200, + "text": choices[0]["message"]["content"], + } + else: + yield { + "code": resp["status_code"], + "text": resp["message"], + } + + +class QwenWorker(ApiModelWorker): + def __init__( + self, + *, + version: Literal["qwen-turbo", "qwen-plus"] = "qwen-turbo", + model_names: List[str] = ["qwen-api"], + controller_addr: str, + worker_addr: str, + **kwargs, + ): + kwargs.update(model_names=model_names, controller_addr=controller_addr, worker_addr=worker_addr) + kwargs.setdefault("context_len", 16384) + super().__init__(**kwargs) + + # TODO: 确认模板是否需要修改 + self.conv = conv.Conversation( + name=self.model_names[0], + system_message="你是一个聪明、对人类有帮助的人工智能,你可以对人类提出的问题给出有用、详细、礼貌的回答。", + messages=[], + roles=["user", "assistant", "system"], + sep="\n### ", + stop_str="###", + ) + config = self.get_config() + self.api_key = config.get("api_key") + self.version = version + + def generate_stream_gate(self, params): + messages = self.prompt_to_messages(params["prompt"]) + + for resp in request_qwen_api(messages=messages, + api_key=self.api_key, + version=self.version, + temperature=params.get("temperature")): + if resp["code"] == 200: + yield json.dumps({ + "error_code": 0, + "text": resp["text"] + }, + ensure_ascii=False + ).encode() + b"\0" + else: + yield json.dumps({ + "error_code": resp["code"], + "text": resp["text"] + }, + ensure_ascii=False + ).encode() + b"\0" + + def get_embeddings(self, params): + # TODO: 支持embeddings + print("embedding") + print(params) + + +if __name__ == "__main__": + import uvicorn + from server.utils import MakeFastAPIOffline + from fastchat.serve.model_worker import app + + worker = QwenWorker( + controller_addr="http://127.0.0.1:20001", + worker_addr="http://127.0.0.1:20007", + ) + sys.modules["fastchat.serve.model_worker"].worker = worker + MakeFastAPIOffline(app) + uvicorn.run(app, port=20007) diff --git a/server/model_workers/xinghuo.py b/server/model_workers/xinghuo.py index 499e8bc17..bc98a9cfe 100644 --- a/server/model_workers/xinghuo.py +++ b/server/model_workers/xinghuo.py @@ -94,8 +94,8 @@ def get_embeddings(self, params): worker = XingHuoWorker( controller_addr="http://127.0.0.1:20001", - worker_addr="http://127.0.0.1:20005", + worker_addr="http://127.0.0.1:21003", ) sys.modules["fastchat.serve.model_worker"].worker = worker MakeFastAPIOffline(app) - uvicorn.run(app, port=20005) + uvicorn.run(app, port=21003) diff --git a/server/model_workers/zhipu.py b/server/model_workers/zhipu.py index f835ac06d..18cec5b58 100644 --- a/server/model_workers/zhipu.py +++ b/server/model_workers/zhipu.py @@ -67,8 +67,8 @@ def get_embeddings(self, params): worker = ChatGLMWorker( controller_addr="http://127.0.0.1:20001", - worker_addr="http://127.0.0.1:20003", + worker_addr="http://127.0.0.1:21001", ) sys.modules["fastchat.serve.model_worker"].worker = worker MakeFastAPIOffline(app) - uvicorn.run(app, port=20003) + uvicorn.run(app, port=21001) diff --git a/server/utils.py b/server/utils.py index 516eaee33..b6a3945b2 100644 --- a/server/utils.py +++ b/server/utils.py @@ -4,16 +4,57 @@ from fastapi import FastAPI from pathlib import Path import asyncio -from configs.model_config import LLM_MODEL, llm_model_dict, LLM_DEVICE, EMBEDDING_DEVICE, logger, log_verbose -from configs.server_config import FSCHAT_MODEL_WORKERS +from configs import (LLM_MODEL, LLM_DEVICE, EMBEDDING_DEVICE, + MODEL_PATH, MODEL_ROOT_PATH, ONLINE_LLM_MODEL, + logger, log_verbose, + FSCHAT_MODEL_WORKERS, HTTPX_DEFAULT_TIMEOUT) import os from concurrent.futures import ThreadPoolExecutor, as_completed -from typing import Literal, Optional, Callable, Generator, Dict, Any +from langchain.chat_models import ChatOpenAI +import httpx +from typing import Literal, Optional, Callable, Generator, Dict, Any, Awaitable, Union thread_pool = ThreadPoolExecutor(os.cpu_count()) +async def wrap_done(fn: Awaitable, event: asyncio.Event): + """Wrap an awaitable with a event to signal when it's done or an exception is raised.""" + try: + await fn + except Exception as e: + # TODO: handle exception + msg = f"Caught exception: {e}" + logger.error(f'{e.__class__.__name__}: {msg}', + exc_info=e if log_verbose else None) + finally: + # Signal the aiter to stop. + event.set() + + +def get_ChatOpenAI( + model_name: str, + temperature: float, + streaming: bool = True, + callbacks: List[Callable] = [], + verbose: bool = True, + **kwargs: Any, +) -> ChatOpenAI: + config = get_model_worker_config(model_name) + model = ChatOpenAI( + streaming=streaming, + verbose=verbose, + callbacks=callbacks, + openai_api_key=config.get("api_key", "EMPTY"), + openai_api_base=config.get("api_base_url", fschat_openai_api_address()), + model_name=model_name, + temperature=temperature, + openai_proxy=config.get("openai_proxy"), + **kwargs + ) + return model + + class BaseResponse(BaseModel): code: int = pydantic.Field(200, description="API status code") msg: str = pydantic.Field("success", description="API status message") @@ -197,22 +238,71 @@ async def redoc_html(request: Request) -> HTMLResponse: ) +# 从model_config中获取模型信息 +def list_embed_models() -> List[str]: + ''' + get names of configured embedding models + ''' + return list(MODEL_PATH["embed_model"]) + +def list_llm_models() -> Dict[str, List[str]]: + ''' + get names of configured llm models with different types. + return [(model_name, config_type), ...] + ''' + workers = list(FSCHAT_MODEL_WORKERS) + if "default" in workers: + workers.remove("default") + return { + "local": list(MODEL_PATH["llm_model"]), + "online": list(ONLINE_LLM_MODEL), + "worker": workers, + } + + +def get_model_path(model_name: str, type: str = None) -> Optional[str]: + if type in MODEL_PATH: + paths = MODEL_PATH[type] + else: + paths = {} + for v in MODEL_PATH.values(): + paths.update(v) + + if path_str := paths.get(model_name): # 以 "chatglm-6b": "THUDM/chatglm-6b-new" 为例,以下都是支持的路径 + path = Path(path_str) + if path.is_dir(): # 任意绝对路径 + return str(path) + + root_path = Path(MODEL_ROOT_PATH) + if root_path.is_dir(): + path = root_path / model_name + if path.is_dir(): # use key, {MODEL_ROOT_PATH}/chatglm-6b + return str(path) + path = root_path / path_str + if path.is_dir(): # use value, {MODEL_ROOT_PATH}/THUDM/chatglm-6b-new + return str(path) + path = root_path / path_str.split("/")[-1] + if path.is_dir(): # use value split by "/", {MODEL_ROOT_PATH}/chatglm-6b-new + return str(path) + return path_str # THUDM/chatglm06b + + # 从server_config中获取服务信息 -def get_model_worker_config(model_name: str = LLM_MODEL) -> dict: +def get_model_worker_config(model_name: str = None) -> dict: ''' 加载model worker的配置项。 - 优先级:FSCHAT_MODEL_WORKERS[model_name] > llm_model_dict[model_name] > FSCHAT_MODEL_WORKERS["default"] + 优先级:FSCHAT_MODEL_WORKERS[model_name] > ONLINE_LLM_MODEL[model_name] > FSCHAT_MODEL_WORKERS["default"] ''' + from configs.model_config import ONLINE_LLM_MODEL from configs.server_config import FSCHAT_MODEL_WORKERS from server import model_workers - from configs.model_config import llm_model_dict config = FSCHAT_MODEL_WORKERS.get("default", {}).copy() - config.update(llm_model_dict.get(model_name, {})) + config.update(ONLINE_LLM_MODEL.get(model_name, {})) config.update(FSCHAT_MODEL_WORKERS.get(model_name, {})) - # 如果没有设置local_model_path,则认为是在线模型API - if not config.get("local_model_path"): + # 在线模型API + if model_name in ONLINE_LLM_MODEL: config["online_api"] = True if provider := config.get("provider"): try: @@ -222,13 +312,14 @@ def get_model_worker_config(model_name: str = LLM_MODEL) -> dict: logger.error(f'{e.__class__.__name__}: {msg}', exc_info=e if log_verbose else None) - config["device"] = llm_device(config.get("device") or LLM_DEVICE) + config["model_path"] = get_model_path(model_name) + config["device"] = llm_device(config.get("device")) return config def get_all_model_worker_configs() -> dict: result = {} - model_names = set(llm_model_dict.keys()) | set(FSCHAT_MODEL_WORKERS.keys()) + model_names = set(FSCHAT_MODEL_WORKERS.keys()) for name in model_names: if name != "default": result[name] = get_model_worker_config(name) @@ -256,7 +347,7 @@ def fschat_openai_api_address() -> str: host = FSCHAT_OPENAI_API["host"] port = FSCHAT_OPENAI_API["port"] - return f"http://{host}:{port}" + return f"http://{host}:{port}/v1" def api_address() -> str: @@ -275,19 +366,74 @@ def webui_address() -> str: return f"http://{host}:{port}" -def set_httpx_timeout(timeout: float = None): +def get_prompt_template(name: str) -> Optional[str]: + ''' + 从prompt_config中加载模板内容 + ''' + from configs import prompt_config + import importlib + importlib.reload(prompt_config) # TODO: 检查configs/prompt_config.py文件有修改再重新加载 + + return prompt_config.PROMPT_TEMPLATES.get(name) + + +def set_httpx_config( + timeout: float = HTTPX_DEFAULT_TIMEOUT, + proxy: Union[str, Dict] = None, + ): ''' - 设置httpx默认timeout。 - httpx默认timeout是5秒,在请求LLM回答时不够用。 + 设置httpx默认timeout。httpx默认timeout是5秒,在请求LLM回答时不够用。 + 将本项目相关服务加入无代理列表,避免fastchat的服务器请求错误。(windows下无效) + 对于chatgpt等在线API,如要使用代理需要手动配置。搜索引擎的代理如何处置还需考虑。 ''' import httpx - from configs.server_config import HTTPX_DEFAULT_TIMEOUT + import os - timeout = timeout or HTTPX_DEFAULT_TIMEOUT httpx._config.DEFAULT_TIMEOUT_CONFIG.connect = timeout httpx._config.DEFAULT_TIMEOUT_CONFIG.read = timeout httpx._config.DEFAULT_TIMEOUT_CONFIG.write = timeout + # 在进程范围内设置系统级代理 + proxies = {} + if isinstance(proxy, str): + for n in ["http", "https", "all"]: + proxies[n + "_proxy"] = proxy + elif isinstance(proxy, dict): + for n in ["http", "https", "all"]: + if p:= proxy.get(n): + proxies[n + "_proxy"] = p + elif p:= proxy.get(n + "_proxy"): + proxies[n + "_proxy"] = p + + for k, v in proxies.items(): + os.environ[k] = v + + # set host to bypass proxy + no_proxy = [x.strip() for x in os.environ.get("no_proxy", "").split(",") if x.strip()] + no_proxy += [ + # do not use proxy for locahost + "http://127.0.0.1", + "http://localhost", + ] + # do not use proxy for user deployed fastchat servers + for x in [ + fschat_controller_address(), + fschat_model_worker_address(), + fschat_openai_api_address(), + ]: + host = ":".join(x.split(":")[:2]) + if host not in no_proxy: + no_proxy.append(host) + os.environ["NO_PROXY"] = ",".join(no_proxy) + + # TODO: 简单的清除系统代理不是个好的选择,影响太多。似乎修改代理服务器的bypass列表更好。 + # patch requests to use custom proxies instead of system settings + # def _get_proxies(): + # return {} + + # import urllib.request + # urllib.request.getproxies = _get_proxies + # 自动检查torch可用的设备。分布式部署时,不运行LLM的机器上可以不装torch def detect_device() -> Literal["cuda", "mps", "cpu"]: @@ -302,13 +448,15 @@ def detect_device() -> Literal["cuda", "mps", "cpu"]: return "cpu" -def llm_device(device: str = LLM_DEVICE) -> Literal["cuda", "mps", "cpu"]: +def llm_device(device: str = None) -> Literal["cuda", "mps", "cpu"]: + device = device or LLM_DEVICE if device not in ["cuda", "mps", "cpu"]: device = detect_device() return device -def embedding_device(device: str = EMBEDDING_DEVICE) -> Literal["cuda", "mps", "cpu"]: +def embedding_device(device: str = None) -> Literal["cuda", "mps", "cpu"]: + device = device or EMBEDDING_DEVICE if device not in ["cuda", "mps", "cpu"]: device = detect_device() return device @@ -333,3 +481,51 @@ def run_in_thread_pool( for obj in as_completed(tasks): yield obj.result() + +def get_httpx_client( + use_async: bool = False, + proxies: Union[str, Dict] = None, + timeout: float = HTTPX_DEFAULT_TIMEOUT, + **kwargs, +) -> Union[httpx.Client, httpx.AsyncClient]: + ''' + helper to get httpx client with default proxies that bypass local addesses. + ''' + default_proxies = { + # do not use proxy for locahost + "all://127.0.0.1": None, + "all://localhost": None, + } + # do not use proxy for user deployed fastchat servers + for x in [ + fschat_controller_address(), + fschat_model_worker_address(), + fschat_openai_api_address(), + ]: + host = ":".join(x.split(":")[:2]) + default_proxies.update({host: None}) + + # get proxies from system envionrent + default_proxies.update({ + "http://": os.environ.get("http_proxy"), + "https://": os.environ.get("https_proxy"), + "all://": os.environ.get("all_proxy"), + }) + for host in os.environ.get("no_proxy", "").split(","): + if host := host.strip(): + default_proxies.update({host: None}) + + # merge default proxies with user provided proxies + if isinstance(proxies, str): + proxies = {"all://": proxies} + + if isinstance(proxies, dict): + default_proxies.update(proxies) + + # construct Client + kwargs.update(timeout=timeout, proxies=default_proxies) + if use_async: + return httpx.AsyncClient(**kwargs) + else: + return httpx.Client(**kwargs) + diff --git a/startup.py b/startup.py index b30944451..272c2f8f0 100644 --- a/startup.py +++ b/startup.py @@ -17,12 +17,21 @@ pass sys.path.append(os.path.dirname(os.path.dirname(__file__))) -from configs.model_config import EMBEDDING_MODEL, llm_model_dict, LLM_MODEL, LOG_PATH, \ - logger, log_verbose, TEXT_SPLITTER -from configs.server_config import (WEBUI_SERVER, API_SERVER, FSCHAT_CONTROLLER, - FSCHAT_OPENAI_API, HTTPX_DEFAULT_TIMEOUT) +from configs import ( + LOG_PATH, + log_verbose, + logger, + LLM_MODEL, + EMBEDDING_MODEL, + TEXT_SPLITTER_NAME, + FSCHAT_CONTROLLER, + FSCHAT_OPENAI_API, + API_SERVER, + WEBUI_SERVER, + HTTPX_DEFAULT_TIMEOUT, +) from server.utils import (fschat_controller_address, fschat_model_worker_address, - fschat_openai_api_address, set_httpx_timeout, + fschat_openai_api_address, set_httpx_config, get_httpx_client, get_model_worker_config, get_all_model_worker_configs, MakeFastAPIOffline, FastAPI, llm_device, embedding_device) import argparse @@ -49,112 +58,162 @@ def create_controller_app( def create_model_worker_app(log_level: str = "INFO", **kwargs) -> FastAPI: + """ + kwargs包含的字段如下: + host: + port: + model_names:[`model_name`] + controller_address: + worker_address: + + + 对于online_api: + online_api:True + worker_class: `provider` + 对于离线模型: + model_path: `model_name_or_path`,huggingface的repo-id或本地路径 + device:`LLM_DEVICE` + """ import fastchat.constants fastchat.constants.LOGDIR = LOG_PATH - from fastchat.serve.model_worker import app, GptqConfig, AWQConfig, ModelWorker, worker_id, logger + from fastchat.serve.model_worker import worker_id, logger import argparse - import threading - import fastchat.serve.model_worker logger.setLevel(log_level) - # workaround to make program exit with Ctrl+c - # it should be deleted after pr is merged by fastchat - def _new_init_heart_beat(self): - self.register_to_controller() - self.heart_beat_thread = threading.Thread( - target=fastchat.serve.model_worker.heart_beat_worker, args=(self,), daemon=True, - ) - self.heart_beat_thread.start() - - ModelWorker.init_heart_beat = _new_init_heart_beat - parser = argparse.ArgumentParser() args = parser.parse_args([]) - # default args. should be deleted after pr is merged by fastchat - args.gpus = None - args.max_gpu_memory = "20GiB" - args.load_8bit = False - args.cpu_offloading = None - args.gptq_ckpt = None - args.gptq_wbits = 16 - args.gptq_groupsize = -1 - args.gptq_act_order = False - args.awq_ckpt = None - args.awq_wbits = 16 - args.awq_groupsize = -1 - args.num_gpus = 1 - args.model_names = [] - args.conv_template = None - args.limit_worker_concurrency = 5 - args.stream_interval = 2 - args.no_register = False - args.embed_in_truncate = False for k, v in kwargs.items(): setattr(args, k, v) - if args.gpus: - if args.num_gpus is None: - args.num_gpus = len(args.gpus.split(',')) - if len(args.gpus.split(",")) < args.num_gpus: - raise ValueError( - f"Larger --num-gpus ({args.num_gpus}) than --gpus {args.gpus}!" - ) - os.environ["CUDA_VISIBLE_DEVICES"] = args.gpus - # 在线模型API if worker_class := kwargs.get("worker_class"): + from fastchat.serve.model_worker import app worker = worker_class(model_names=args.model_names, controller_addr=args.controller_address, worker_addr=args.worker_address) + sys.modules["fastchat.serve.model_worker"].worker = worker # 本地模型 else: - # workaround to make program exit with Ctrl+c - # it should be deleted after pr is merged by fastchat - def _new_init_heart_beat(self): - self.register_to_controller() - self.heart_beat_thread = threading.Thread( - target=fastchat.serve.model_worker.heart_beat_worker, args=(self,), daemon=True, - ) - self.heart_beat_thread.start() - - ModelWorker.init_heart_beat = _new_init_heart_beat + from configs.model_config import VLLM_MODEL_DICT + if kwargs["model_names"][0] in VLLM_MODEL_DICT and args.infer_turbo == "vllm": + import fastchat.serve.vllm_worker + from fastchat.serve.vllm_worker import VLLMWorker,app + from vllm import AsyncLLMEngine + from vllm.engine.arg_utils import AsyncEngineArgs,EngineArgs + args.tokenizer = args.model_path # 如果tokenizer与model_path不一致在此处添加 + args.tokenizer_mode = 'auto' + args.trust_remote_code= True + args.download_dir= None + args.load_format = 'auto' + args.dtype = 'auto' + args.seed = 0 + args.worker_use_ray = False + args.pipeline_parallel_size = 1 + args.tensor_parallel_size = 1 + args.block_size = 16 + args.swap_space = 4 # GiB + args.gpu_memory_utilization = 0.90 + args.max_num_batched_tokens = 2560 + args.max_num_seqs = 256 + args.disable_log_stats = False + args.conv_template = None + args.limit_worker_concurrency = 5 + args.no_register = False + args.num_gpus = 1 # vllm worker的切分是tensor并行,这里填写显卡的数量 + args.engine_use_ray = False + args.disable_log_requests = False + if args.model_path: + args.model = args.model_path + if args.num_gpus > 1: + args.tensor_parallel_size = args.num_gpus + + for k, v in kwargs.items(): + setattr(args, k, v) + + engine_args = AsyncEngineArgs.from_cli_args(args) + engine = AsyncLLMEngine.from_engine_args(engine_args) + + worker = VLLMWorker( + controller_addr = args.controller_address, + worker_addr = args.worker_address, + worker_id = worker_id, + model_path = args.model_path, + model_names = args.model_names, + limit_worker_concurrency = args.limit_worker_concurrency, + no_register = args.no_register, + llm_engine = engine, + conv_template = args.conv_template, + ) + sys.modules["fastchat.serve.vllm_worker"].engine = engine + sys.modules["fastchat.serve.vllm_worker"].worker = worker - gptq_config = GptqConfig( - ckpt=args.gptq_ckpt or args.model_path, - wbits=args.gptq_wbits, - groupsize=args.gptq_groupsize, - act_order=args.gptq_act_order, - ) - awq_config = AWQConfig( - ckpt=args.awq_ckpt or args.model_path, - wbits=args.awq_wbits, - groupsize=args.awq_groupsize, - ) + else: + from fastchat.serve.model_worker import app, GptqConfig, AWQConfig, ModelWorker + args.gpus = "0" # GPU的编号,如果有多个GPU,可以设置为"0,1,2,3" + args.max_gpu_memory = "20GiB" + args.num_gpus = 1 # model worker的切分是model并行,这里填写显卡的数量 + + args.load_8bit = False + args.cpu_offloading = None + args.gptq_ckpt = None + args.gptq_wbits = 16 + args.gptq_groupsize = -1 + args.gptq_act_order = False + args.awq_ckpt = None + args.awq_wbits = 16 + args.awq_groupsize = -1 + args.model_names = [] + args.conv_template = None + args.limit_worker_concurrency = 5 + args.stream_interval = 2 + args.no_register = False + args.embed_in_truncate = False + for k, v in kwargs.items(): + setattr(args, k, v) + if args.gpus: + if args.num_gpus is None: + args.num_gpus = len(args.gpus.split(',')) + if len(args.gpus.split(",")) < args.num_gpus: + raise ValueError( + f"Larger --num-gpus ({args.num_gpus}) than --gpus {args.gpus}!" + ) + os.environ["CUDA_VISIBLE_DEVICES"] = args.gpus + gptq_config = GptqConfig( + ckpt=args.gptq_ckpt or args.model_path, + wbits=args.gptq_wbits, + groupsize=args.gptq_groupsize, + act_order=args.gptq_act_order, + ) + awq_config = AWQConfig( + ckpt=args.awq_ckpt or args.model_path, + wbits=args.awq_wbits, + groupsize=args.awq_groupsize, + ) - worker = ModelWorker( - controller_addr=args.controller_address, - worker_addr=args.worker_address, - worker_id=worker_id, - model_path=args.model_path, - model_names=args.model_names, - limit_worker_concurrency=args.limit_worker_concurrency, - no_register=args.no_register, - device=args.device, - num_gpus=args.num_gpus, - max_gpu_memory=args.max_gpu_memory, - load_8bit=args.load_8bit, - cpu_offloading=args.cpu_offloading, - gptq_config=gptq_config, - awq_config=awq_config, - stream_interval=args.stream_interval, - conv_template=args.conv_template, - embed_in_truncate=args.embed_in_truncate, - ) - sys.modules["fastchat.serve.model_worker"].args = args - sys.modules["fastchat.serve.model_worker"].gptq_config = gptq_config + worker = ModelWorker( + controller_addr=args.controller_address, + worker_addr=args.worker_address, + worker_id=worker_id, + model_path=args.model_path, + model_names=args.model_names, + limit_worker_concurrency=args.limit_worker_concurrency, + no_register=args.no_register, + device=args.device, + num_gpus=args.num_gpus, + max_gpu_memory=args.max_gpu_memory, + load_8bit=args.load_8bit, + cpu_offloading=args.cpu_offloading, + gptq_config=gptq_config, + awq_config=awq_config, + stream_interval=args.stream_interval, + conv_template=args.conv_template, + embed_in_truncate=args.embed_in_truncate, + ) + sys.modules["fastchat.serve.model_worker"].args = args + sys.modules["fastchat.serve.model_worker"].gptq_config = gptq_config - sys.modules["fastchat.serve.model_worker"].worker = worker + sys.modules["fastchat.serve.model_worker"].worker = worker MakeFastAPIOffline(app) app.title = f"FastChat LLM Server ({args.model_names[0]})" @@ -194,7 +253,6 @@ def create_openai_api_app( def _set_app_event(app: FastAPI, started_event: mp.Event = None): @app.on_event("startup") async def on_startup(): - set_httpx_timeout() if started_event is not None: started_event.set() @@ -205,6 +263,8 @@ def run_controller(log_level: str = "INFO", started_event: mp.Event = None): from fastapi import Body import time import sys + from server.utils import set_httpx_config + set_httpx_config() app = create_controller_app( dispatch_method=FSCHAT_CONTROLLER.get("dispatch_method"), @@ -216,7 +276,7 @@ def run_controller(log_level: str = "INFO", started_event: mp.Event = None): @app.post("/release_worker") def release_worker( model_name: str = Body(..., description="要释放模型的名称", samples=["chatglm-6b"]), - # worker_address: str = Body(None, description="要释放模型的地址,与名称二选一", samples=[fschat_controller_address()]), + # worker_address: str = Body(None, description="要释放模型的地址,与名称二选一", samples=[FSCHAT_CONTROLLER_address()]), new_model_name: str = Body(None, description="释放后加载该模型"), keep_origin: bool = Body(False, description="不释放原模型,加载新模型") ) -> Dict: @@ -242,15 +302,16 @@ def release_worker( logger.error(msg) return {"code": 500, "msg": msg} - r = httpx.post(worker_address + "/release", - json={"new_model_name": new_model_name, "keep_origin": keep_origin}) - if r.status_code != 200: - msg = f"failed to release model: {model_name}" - logger.error(msg) - return {"code": 500, "msg": msg} + with get_httpx_client() as client: + r = client.post(worker_address + "/release", + json={"new_model_name": new_model_name, "keep_origin": keep_origin}) + if r.status_code != 200: + msg = f"failed to release model: {model_name}" + logger.error(msg) + return {"code": 500, "msg": msg} if new_model_name: - timer = HTTPX_DEFAULT_TIMEOUT * 2 # wait for new model_worker register + timer = HTTPX_DEFAULT_TIMEOUT # wait for new model_worker register while timer > 0: models = app._controller.list_models() if new_model_name in models: @@ -290,6 +351,8 @@ def run_model_worker( import uvicorn from fastapi import Body import sys + from server.utils import set_httpx_config + set_httpx_config() kwargs = get_model_worker_config(model_name) host = kwargs.pop("host") @@ -297,7 +360,7 @@ def run_model_worker( kwargs["model_names"] = [model_name] kwargs["controller_address"] = controller_address or fschat_controller_address() kwargs["worker_address"] = fschat_model_worker_address(model_name) - model_path = kwargs.get("local_model_path", "") + model_path = kwargs.get("model_path", "") kwargs["model_path"] = model_path app = create_model_worker_app(log_level=log_level, **kwargs) @@ -328,6 +391,8 @@ def release_model( def run_openai_api(log_level: str = "INFO", started_event: mp.Event = None): import uvicorn import sys + from server.utils import set_httpx_config + set_httpx_config() controller_addr = fschat_controller_address() app = create_openai_api_app(controller_addr, log_level=log_level) # TODO: not support keys yet. @@ -344,6 +409,8 @@ def run_openai_api(log_level: str = "INFO", started_event: mp.Event = None): def run_api_server(started_event: mp.Event = None): from server.api import create_app import uvicorn + from server.utils import set_httpx_config + set_httpx_config() app = create_app() _set_app_event(app, started_event) @@ -355,6 +422,9 @@ def run_api_server(started_event: mp.Event = None): def run_webui(started_event: mp.Event = None): + from server.utils import set_httpx_config + set_httpx_config() + host = WEBUI_SERVER["host"] port = WEBUI_SERVER["port"] @@ -418,7 +488,7 @@ def parse_args() -> argparse.ArgumentParser: "-c", "--controller", type=str, - help="specify controller address the worker is registered to. default is server_config.FSCHAT_CONTROLLER", + help="specify controller address the worker is registered to. default is FSCHAT_CONTROLLER", dest="controller_address", ) parser.add_argument( @@ -470,19 +540,18 @@ def dump_server_info(after_start=False, args=None): if args and args.model_name: models = args.model_name - print(f"当前使用的分词器:{TEXT_SPLITTER}") + print(f"当前使用的分词器:{TEXT_SPLITTER_NAME}") print(f"当前启动的LLM模型:{models} @ {llm_device()}") for model in models: - pprint(llm_model_dict[model]) + pprint(get_model_worker_config(model)) print(f"当前Embbedings模型: {EMBEDDING_MODEL} @ {embedding_device()}") if after_start: print("\n") print(f"服务端运行信息:") if args.openai_api: - print(f" OpenAI API Server: {fschat_openai_api_address()}/v1") - print(" (请确认llm_model_dict中配置的api_base_url与上面地址一致。)") + print(f" OpenAI API Server: {fschat_openai_api_address()}") if args.api: print(f" Chatchat API Server: {api_address()}") if args.webui: diff --git a/tests/agent/test_agent_function.py b/tests/agent/test_agent_function.py new file mode 100644 index 000000000..e860cb7ab --- /dev/null +++ b/tests/agent/test_agent_function.py @@ -0,0 +1,40 @@ +import sys +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) +from configs import LLM_MODEL, TEMPERATURE +from server.utils import get_ChatOpenAI +from langchain.chains import LLMChain +from langchain.agents import LLMSingleActionAgent, AgentExecutor +from server.agent.tools import tools, tool_names +from langchain.memory import ConversationBufferWindowMemory + +memory = ConversationBufferWindowMemory(k=5) +model = get_ChatOpenAI( + model_name=LLM_MODEL, + temperature=TEMPERATURE, + ) +from server.agent.custom_template import CustomOutputParser, prompt + +output_parser = CustomOutputParser() +llm_chain = LLMChain(llm=model, prompt=prompt) +agent = LLMSingleActionAgent( + llm_chain=llm_chain, + output_parser=output_parser, + stop=["\nObservation:"], + allowed_tools=tool_names +) + +agent_executor = AgentExecutor.from_agent_and_tools(agent=agent, tools=tools, memory=memory, verbose=True) + +import pytest +@pytest.mark.parametrize("text_prompt", + ["北京市朝阳区未来24小时天气如何?", # 天气功能函数 + "计算 (2 + 2312312)/4 是多少?", # 计算功能函数 + "翻译这句话成中文:Life is the art of drawing sufficient conclusions form insufficient premises."] # 翻译功能函数 +) +def test_different_agent_function(text_prompt): + try: + text_answer = agent_executor.run(text_prompt) + assert text_answer is not None + except Exception as e: + pytest.fail(f"agent_function failed with {text_prompt}, error: {str(e)}") diff --git a/tests/api/test_kb_api.py b/tests/api/test_kb_api.py index ed4e8b217..975f8bccf 100644 --- a/tests/api/test_kb_api.py +++ b/tests/api/test_kb_api.py @@ -6,7 +6,7 @@ root_path = Path(__file__).parent.parent.parent sys.path.append(str(root_path)) from server.utils import api_address -from configs.model_config import VECTOR_SEARCH_TOP_K +from configs import VECTOR_SEARCH_TOP_K from server.knowledge_base.utils import get_kb_path, get_file_path from pprint import pprint diff --git a/tests/api/test_kb_api_request.py b/tests/api/test_kb_api_request.py index 864552828..3c115f1ec 100644 --- a/tests/api/test_kb_api_request.py +++ b/tests/api/test_kb_api_request.py @@ -6,7 +6,7 @@ root_path = Path(__file__).parent.parent.parent sys.path.append(str(root_path)) from server.utils import api_address -from configs.model_config import VECTOR_SEARCH_TOP_K +from configs import VECTOR_SEARCH_TOP_K from server.knowledge_base.utils import get_kb_path, get_file_path from webui_pages.utils import ApiRequest diff --git a/tests/api/test_llm_api.py b/tests/api/test_llm_api.py index af5ced8fb..89579818d 100644 --- a/tests/api/test_llm_api.py +++ b/tests/api/test_llm_api.py @@ -6,21 +6,19 @@ root_path = Path(__file__).parent.parent.parent sys.path.append(str(root_path)) from configs.server_config import FSCHAT_MODEL_WORKERS -from configs.model_config import LLM_MODEL, llm_model_dict +from configs.model_config import LLM_MODEL from server.utils import api_address, get_model_worker_config from pprint import pprint import random +from typing import List -def get_configured_models(): +def get_configured_models() -> List[str]: model_workers = list(FSCHAT_MODEL_WORKERS) if "default" in model_workers: model_workers.remove("default") - - llm_dict = list(llm_model_dict) - - return model_workers, llm_dict + return model_workers api_base_url = api_address() @@ -56,12 +54,9 @@ def test_change_model(api="/llm_model/change"): running_models = get_running_models() assert len(running_models) > 0 - model_workers, llm_dict = get_configured_models() + model_workers = get_configured_models() - availabel_new_models = set(model_workers) - set(running_models) - if len(availabel_new_models) == 0: - availabel_new_models = set(llm_dict) - set(running_models) - availabel_new_models = list(availabel_new_models) + availabel_new_models = list(set(model_workers) - set(running_models)) assert len(availabel_new_models) > 0 print(availabel_new_models) diff --git a/tests/api/test_stream_chat_api.py b/tests/api/test_stream_chat_api.py index 14314853a..8b98c20d3 100644 --- a/tests/api/test_stream_chat_api.py +++ b/tests/api/test_stream_chat_api.py @@ -4,7 +4,7 @@ from pathlib import Path sys.path.append(str(Path(__file__).parent.parent.parent)) -from configs.model_config import BING_SUBSCRIPTION_KEY +from configs import BING_SUBSCRIPTION_KEY from server.utils import api_address from pprint import pprint @@ -91,7 +91,7 @@ def test_knowledge_chat(api="/chat/knowledge_base_chat"): print("=" * 30 + api + " output" + "="*30) for line in response.iter_content(None, decode_unicode=True): data = json.loads(line) - if "anser" in data: + if "answer" in data: print(data["answer"], end="", flush=True) assert "docs" in data and len(data["docs"]) > 0 pprint(data["docs"]) @@ -114,7 +114,7 @@ def test_search_engine_chat(api="/chat/search_engine_chat"): assert data["msg"] == f"要使用Bing搜索引擎,需要设置 `BING_SUBSCRIPTION_KEY`" print("\n") - print("=" * 30 + api + " by {se} output" + "="*30) + print("=" * 30 + api + f" by {se} output" + "="*30) for line in response.iter_content(None, decode_unicode=True): data = json.loads(line) if "answer" in data: diff --git a/tests/custom_splitter/test_different_splitter.py b/tests/custom_splitter/test_different_splitter.py index fea597e70..2111bae18 100644 --- a/tests/custom_splitter/test_different_splitter.py +++ b/tests/custom_splitter/test_different_splitter.py @@ -4,7 +4,7 @@ import sys sys.path.append("../..") -from configs.model_config import ( +from configs import ( CHUNK_SIZE, OVERLAP_SIZE ) diff --git a/tests/online_api/test_fangzhou.py b/tests/online_api/test_fangzhou.py new file mode 100644 index 000000000..1157537c3 --- /dev/null +++ b/tests/online_api/test_fangzhou.py @@ -0,0 +1,22 @@ +import sys +from pathlib import Path +root_path = Path(__file__).parent.parent.parent +sys.path.append(str(root_path)) + +from server.model_workers.fangzhou import request_volc_api +from pprint import pprint +import pytest + + +@pytest.mark.parametrize("version", ["chatglm-6b-model"]) +def test_qianfan(version): + messages = [{"role": "user", "content": "hello"}] + print("\n" + version + "\n") + i = 1 + for x in request_volc_api(messages, version=version): + print(type(x)) + pprint(x) + if chunk := x.choice.message.content: + print(chunk) + assert x.choice.message + i += 1 diff --git a/tests/online_api/test_qianfan.py b/tests/online_api/test_qianfan.py index 0e8a94877..b4b9b1538 100644 --- a/tests/online_api/test_qianfan.py +++ b/tests/online_api/test_qianfan.py @@ -8,7 +8,7 @@ import pytest -@pytest.mark.parametrize("version", MODEL_VERSIONS.keys()) +@pytest.mark.parametrize("version", list(MODEL_VERSIONS.keys())[:2]) def test_qianfan(version): messages = [{"role": "user", "content": "你好"}] print("\n" + version + "\n") diff --git a/tests/online_api/test_qwen.py b/tests/online_api/test_qwen.py new file mode 100644 index 000000000..001cf6060 --- /dev/null +++ b/tests/online_api/test_qwen.py @@ -0,0 +1,19 @@ +import sys +from pathlib import Path +root_path = Path(__file__).parent.parent.parent +sys.path.append(str(root_path)) + +from server.model_workers.qwen import request_qwen_api +from pprint import pprint +import pytest + + +@pytest.mark.parametrize("version", ["qwen-turbo"]) +def test_qwen(version): + messages = [{"role": "user", "content": "hello"}] + print("\n" + version + "\n") + + for x in request_qwen_api(messages, version=version): + print(type(x)) + pprint(x) + assert x["code"] == 200 diff --git a/tests/test_migrate.py b/tests/test_migrate.py new file mode 100644 index 000000000..d694b026d --- /dev/null +++ b/tests/test_migrate.py @@ -0,0 +1,139 @@ +from pathlib import Path +from pprint import pprint +import os +import shutil +import sys +root_path = Path(__file__).parent.parent +sys.path.append(str(root_path)) + +from server.knowledge_base.kb_service.base import KBServiceFactory +from server.knowledge_base.utils import get_kb_path, get_doc_path, KnowledgeFile +from server.knowledge_base.migrate import folder2db, prune_db_docs, prune_folder_files + + +# setup test knowledge base +kb_name = "test_kb_for_migrate" +test_files = { + "faq.md": str(root_path / "docs" / "faq.md"), + "install.md": str(root_path / "docs" / "install.md"), +} + + +kb_path = get_kb_path(kb_name) +doc_path = get_doc_path(kb_name) + +if not os.path.isdir(doc_path): + os.makedirs(doc_path) + +for k, v in test_files.items(): + shutil.copy(v, os.path.join(doc_path, k)) + + +def test_recreate_vs(): + folder2db([kb_name], "recreate_vs") + + kb = KBServiceFactory.get_service_by_name(kb_name) + assert kb.exists() + + files = kb.list_files() + print(files) + for name in test_files: + assert name in files + path = os.path.join(doc_path, name) + + # list docs based on file name + docs = kb.list_docs(file_name=name) + assert len(docs) > 0 + pprint(docs[0]) + for doc in docs: + assert doc.metadata["source"] == path + + # list docs base on metadata + docs = kb.list_docs(metadata={"source": path}) + assert len(docs) > 0 + + for doc in docs: + assert doc.metadata["source"] == path + + +def test_increament(): + kb = KBServiceFactory.get_service_by_name(kb_name) + kb.clear_vs() + assert kb.list_files() == [] + assert kb.list_docs() == [] + + folder2db([kb_name], "increament") + + files = kb.list_files() + print(files) + for f in test_files: + assert f in files + + docs = kb.list_docs(file_name=f) + assert len(docs) > 0 + pprint(docs[0]) + + for doc in docs: + assert doc.metadata["source"] == os.path.join(doc_path, f) + + +def test_prune_db(): + del_file, keep_file = list(test_files)[:2] + os.remove(os.path.join(doc_path, del_file)) + + prune_db_docs([kb_name]) + + kb = KBServiceFactory.get_service_by_name(kb_name) + files = kb.list_files() + print(files) + assert del_file not in files + assert keep_file in files + + docs = kb.list_docs(file_name=del_file) + assert len(docs) == 0 + + docs = kb.list_docs(file_name=keep_file) + assert len(docs) > 0 + pprint(docs[0]) + + shutil.copy(test_files[del_file], os.path.join(doc_path, del_file)) + + +def test_prune_folder(): + del_file, keep_file = list(test_files)[:2] + kb = KBServiceFactory.get_service_by_name(kb_name) + + # delete docs for file + kb.delete_doc(KnowledgeFile(del_file, kb_name)) + files = kb.list_files() + print(files) + assert del_file not in files + assert keep_file in files + + docs = kb.list_docs(file_name=del_file) + assert len(docs) == 0 + + docs = kb.list_docs(file_name=keep_file) + assert len(docs) > 0 + + docs = kb.list_docs(file_name=del_file) + assert len(docs) == 0 + + assert os.path.isfile(os.path.join(doc_path, del_file)) + + # prune folder + prune_folder_files([kb_name]) + + # check result + assert not os.path.isfile(os.path.join(doc_path, del_file)) + assert os.path.isfile(os.path.join(doc_path, keep_file)) + + +def test_drop_kb(): + kb = KBServiceFactory.get_service_by_name(kb_name) + kb.drop_kb() + assert not kb.exists() + assert not os.path.isdir(kb_path) + + kb = KBServiceFactory.get_service_by_name(kb_name) + assert kb is None diff --git a/webui_pages/dialogue/dialogue.py b/webui_pages/dialogue/dialogue.py index f581a9b54..05c2a4f7a 100644 --- a/webui_pages/dialogue/dialogue.py +++ b/webui_pages/dialogue/dialogue.py @@ -1,15 +1,13 @@ import streamlit as st -from configs.server_config import FSCHAT_MODEL_WORKERS from webui_pages.utils import * from streamlit_chatbox import * from datetime import datetime from server.chat.search_engine_chat import SEARCH_ENGINES import os -from configs.model_config import LLM_MODEL, TEMPERATURE +from configs import LLM_MODEL, TEMPERATURE from server.utils import get_model_worker_config from typing import List, Dict - chat_box = ChatBox( assistant_avatar=os.path.join( "img", @@ -18,30 +16,24 @@ ) -def get_messages_history(history_len: int) -> List[Dict]: +def get_messages_history(history_len: int, content_in_expander: bool = False) -> List[Dict]: + ''' + 返回消息历史。 + content_in_expander控制是否返回expander元素中的内容,一般导出的时候可以选上,传入LLM的history不需要 + ''' + def filter(msg): - ''' - 针对当前简单文本对话,只返回每条消息的第一个element的内容 - ''' - content = [x._content for x in msg["elements"] if x._output_method in ["markdown", "text"]] + content = [x for x in msg["elements"] if x._output_method in ["markdown", "text"]] + if not content_in_expander: + content = [x for x in content if not x._in_expander] + content = [x.content for x in content] + return { "role": msg["role"], - "content": content[0] if content else "", + "content": "\n\n".join(content), } - # workaround before upgrading streamlit-chatbox. - def stop(h): - return False - - history = chat_box.filter_history(history_len=100000, filter=filter, stop=stop) - user_count = 0 - i = 1 - for i in range(1, len(history) + 1): - if history[-i]["role"] == "user": - user_count += 1 - if user_count >= history_len: - break - return history[-i:] + return chat_box.filter_history(history_len=history_len, filter=filter) def dialogue_page(api: ApiRequest): @@ -63,6 +55,7 @@ def on_mode_change(): ["LLM 对话", "知识库问答", "搜索引擎问答", + "自定义Agent问答", ], index=1, on_change=on_mode_change, @@ -71,8 +64,9 @@ def on_mode_change(): def on_llm_change(): config = get_model_worker_config(llm_model) - if not config.get("online_api"): # 只有本地model_worker可以切换模型 + if not config.get("online_api"): # 只有本地model_worker可以切换模型 st.session_state["prev_llm_model"] = llm_model + st.session_state["cur_llm_model"] = st.session_state.llm_model def llm_model_format_func(x): if x in running_models: @@ -80,25 +74,32 @@ def llm_model_format_func(x): return x running_models = api.list_running_models() + available_models = [] config_models = api.list_config_models() - for x in running_models: - if x in config_models: - config_models.remove(x) - llm_models = running_models + config_models - cur_model = st.session_state.get("cur_llm_model", LLM_MODEL) - index = llm_models.index(cur_model) + for models in config_models.values(): + for m in models: + if m not in running_models: + available_models.append(m) + llm_models = running_models + available_models + index = llm_models.index(st.session_state.get("cur_llm_model", LLM_MODEL)) llm_model = st.selectbox("选择LLM模型:", - llm_models, - index, - format_func=llm_model_format_func, - on_change=on_llm_change, - # key="llm_model", - ) + llm_models, + index, + format_func=llm_model_format_func, + on_change=on_llm_change, + key="llm_model", + ) if (st.session_state.get("prev_llm_model") != llm_model - and not get_model_worker_config(llm_model).get("online_api")): + and not get_model_worker_config(llm_model).get("online_api") + and llm_model not in running_models): with st.spinner(f"正在加载模型: {llm_model},请勿进行操作或刷新页面"): - r = api.change_llm_model(st.session_state.get("prev_llm_model"), llm_model) - st.session_state["cur_llm_model"] = llm_model + prev_model = st.session_state.get("prev_llm_model") + r = api.change_llm_model(prev_model, llm_model) + if msg := check_error_msg(r): + st.error(msg) + elif msg := check_success_msg(r): + st.success(msg) + st.session_state["prev_llm_model"] = llm_model temperature = st.slider("Temperature:", 0.0, 1.0, TEMPERATURE, 0.05) history_len = st.number_input("历史对话轮数:", 0, 10, HISTORY_LEN) @@ -143,17 +144,42 @@ def on_kb_change(): text = "" r = api.chat_chat(prompt, history=history, model=llm_model, temperature=temperature) for t in r: - if error_msg := check_error_msg(t): # check whether error occured + if error_msg := check_error_msg(t): # check whether error occured st.error(error_msg) break text += t chat_box.update_msg(text) chat_box.update_msg(text, streaming=False) # 更新最终的字符串,去除光标 + + + elif dialogue_mode == "自定义Agent问答": + chat_box.ai_say([ + f"正在思考和寻找工具 ...",]) + text = "" + element_index = 0 + for d in api.agent_chat(prompt, + history=history, + model=llm_model, + temperature=temperature): + try: + d = json.loads(d) + except: + pass + if error_msg := check_error_msg(d): # check whether error occured + st.error(error_msg) + + elif chunk := d.get("answer"): + text += chunk + chat_box.update_msg(text, element_index=0) + elif chunk := d.get("tools"): + element_index += 1 + chat_box.insert_msg(Markdown("...", in_expander=True, title="使用工具...", state="complete")) + chat_box.update_msg("\n\n".join(d.get("tools", [])), element_index=element_index, streaming=False) + chat_box.update_msg(text, element_index=0, streaming=False) elif dialogue_mode == "知识库问答": - history = get_messages_history(history_len) chat_box.ai_say([ f"正在查询知识库 `{selected_kb}` ...", - Markdown("...", in_expander=True, title="知识库匹配结果"), + Markdown("...", in_expander=True, title="知识库匹配结果", state="complete"), ]) text = "" for d in api.knowledge_base_chat(prompt, @@ -173,12 +199,13 @@ def on_kb_change(): elif dialogue_mode == "搜索引擎问答": chat_box.ai_say([ f"正在执行 `{search_engine}` 搜索...", - Markdown("...", in_expander=True, title="网络搜索结果"), + Markdown("...", in_expander=True, title="网络搜索结果", state="complete"), ]) text = "" for d in api.search_engine_chat(prompt, search_engine_name=search_engine, top_k=se_top_k, + history=history, model=llm_model, temperature=temperature): if error_msg := check_error_msg(d): # check whether error occured diff --git a/webui_pages/knowledge_base/knowledge_base.py b/webui_pages/knowledge_base/knowledge_base.py index c71da7e43..bf8f08945 100644 --- a/webui_pages/knowledge_base/knowledge_base.py +++ b/webui_pages/knowledge_base/knowledge_base.py @@ -6,9 +6,10 @@ from server.knowledge_base.utils import get_file_path, LOADER_DICT from server.knowledge_base.kb_service.base import get_kb_details, get_kb_file_details from typing import Literal, Dict, Tuple -from configs.model_config import (embedding_model_dict, kbs_config, - EMBEDDING_MODEL, DEFAULT_VS_TYPE, - CHUNK_SIZE, OVERLAP_SIZE, ZH_TITLE_ENHANCE) +from configs import (kbs_config, + EMBEDDING_MODEL, DEFAULT_VS_TYPE, + CHUNK_SIZE, OVERLAP_SIZE, ZH_TITLE_ENHANCE) +from server.utils import list_embed_models import os import time @@ -94,7 +95,7 @@ def format_selected_kb(kb_name: str) -> str: key="vs_type", ) - embed_models = list(embedding_model_dict.keys()) + embed_models = list_embed_models() embed_model = cols[1].selectbox( "Embedding 模型", diff --git a/webui_pages/utils.py b/webui_pages/utils.py index 26e532061..a2113685f 100644 --- a/webui_pages/utils.py +++ b/webui_pages/utils.py @@ -1,12 +1,11 @@ # 该文件包含webui通用工具,可以被不同的webui使用 from typing import * from pathlib import Path -from configs.model_config import ( +from configs import ( EMBEDDING_MODEL, DEFAULT_VS_TYPE, KB_ROOT_PATH, LLM_MODEL, - llm_model_dict, HISTORY_LEN, TEMPERATURE, SCORE_THRESHOLD, @@ -15,9 +14,10 @@ ZH_TITLE_ENHANCE, VECTOR_SEARCH_TOP_K, SEARCH_ENGINE_TOP_K, + FSCHAT_MODEL_WORKERS, + HTTPX_DEFAULT_TIMEOUT, logger, log_verbose, ) -from configs.server_config import HTTPX_DEFAULT_TIMEOUT import httpx import asyncio from server.chat.openai_chat import OpenAiChatMsgIn @@ -26,7 +26,7 @@ import json import os from io import BytesIO -from server.utils import run_async, iter_over_async, set_httpx_timeout, api_address +from server.utils import run_async, iter_over_async, set_httpx_config, api_address, get_httpx_client from configs.model_config import NLTK_DATA_PATH import nltk @@ -35,7 +35,7 @@ KB_ROOT_PATH = Path(KB_ROOT_PATH) -set_httpx_timeout() +set_httpx_config() class ApiRequest: @@ -53,6 +53,8 @@ def __init__( self.base_url = base_url self.timeout = timeout self.no_remote_api = no_remote_api + self._client = get_httpx_client() + self._aclient = get_httpx_client(use_async=True) if no_remote_api: logger.warn("将来可能取消对no_remote_api的支持,更新版本时请注意。") @@ -79,9 +81,9 @@ def get( while retry > 0: try: if stream: - return httpx.stream("GET", url, params=params, **kwargs) + return self._client.stream("GET", url, params=params, **kwargs) else: - return httpx.get(url, params=params, **kwargs) + return self._client.get(url, params=params, **kwargs) except Exception as e: msg = f"error when get {url}: {e}" logger.error(f'{e.__class__.__name__}: {msg}', @@ -98,18 +100,18 @@ async def aget( ) -> Union[httpx.Response, None]: url = self._parse_url(url) kwargs.setdefault("timeout", self.timeout) - async with httpx.AsyncClient() as client: - while retry > 0: - try: - if stream: - return await client.stream("GET", url, params=params, **kwargs) - else: - return await client.get(url, params=params, **kwargs) - except Exception as e: - msg = f"error when aget {url}: {e}" - logger.error(f'{e.__class__.__name__}: {msg}', - exc_info=e if log_verbose else None) - retry -= 1 + + while retry > 0: + try: + if stream: + return await self._aclient.stream("GET", url, params=params, **kwargs) + else: + return await self._aclient.get(url, params=params, **kwargs) + except Exception as e: + msg = f"error when aget {url}: {e}" + logger.error(f'{e.__class__.__name__}: {msg}', + exc_info=e if log_verbose else None) + retry -= 1 def post( self, @@ -124,11 +126,10 @@ def post( kwargs.setdefault("timeout", self.timeout) while retry > 0: try: - # return requests.post(url, data=data, json=json, stream=stream, **kwargs) if stream: - return httpx.stream("POST", url, data=data, json=json, **kwargs) + return self._client.stream("POST", url, data=data, json=json, **kwargs) else: - return httpx.post(url, data=data, json=json, **kwargs) + return self._client.post(url, data=data, json=json, **kwargs) except Exception as e: msg = f"error when post {url}: {e}" logger.error(f'{e.__class__.__name__}: {msg}', @@ -146,18 +147,18 @@ async def apost( ) -> Union[httpx.Response, None]: url = self._parse_url(url) kwargs.setdefault("timeout", self.timeout) - async with httpx.AsyncClient() as client: - while retry > 0: - try: - if stream: - return await client.stream("POST", url, data=data, json=json, **kwargs) - else: - return await client.post(url, data=data, json=json, **kwargs) - except Exception as e: - msg = f"error when apost {url}: {e}" - logger.error(f'{e.__class__.__name__}: {msg}', - exc_info=e if log_verbose else None) - retry -= 1 + + while retry > 0: + try: + if stream: + return await self._client.stream("POST", url, data=data, json=json, **kwargs) + else: + return await self._client.post(url, data=data, json=json, **kwargs) + except Exception as e: + msg = f"error when apost {url}: {e}" + logger.error(f'{e.__class__.__name__}: {msg}', + exc_info=e if log_verbose else None) + retry -= 1 def delete( self, @@ -173,9 +174,9 @@ def delete( while retry > 0: try: if stream: - return httpx.stream("DELETE", url, data=data, json=json, **kwargs) + return self._client.stream("DELETE", url, data=data, json=json, **kwargs) else: - return httpx.delete(url, data=data, json=json, **kwargs) + return self._client.delete(url, data=data, json=json, **kwargs) except Exception as e: msg = f"error when delete {url}: {e}" logger.error(f'{e.__class__.__name__}: {msg}', @@ -193,18 +194,18 @@ async def adelete( ) -> Union[httpx.Response, None]: url = self._parse_url(url) kwargs.setdefault("timeout", self.timeout) - async with httpx.AsyncClient() as client: - while retry > 0: - try: - if stream: - return await client.stream("DELETE", url, data=data, json=json, **kwargs) - else: - return await client.delete(url, data=data, json=json, **kwargs) - except Exception as e: - msg = f"error when adelete {url}: {e}" - logger.error(f'{e.__class__.__name__}: {msg}', - exc_info=e if log_verbose else None) - retry -= 1 + + while retry > 0: + try: + if stream: + return await self._aclient.stream("DELETE", url, data=data, json=json, **kwargs) + else: + return await self._aclient.delete(url, data=data, json=json, **kwargs) + except Exception as e: + msg = f"error when adelete {url}: {e}" + logger.error(f'{e.__class__.__name__}: {msg}', + exc_info=e if log_verbose else None) + retry -= 1 def _fastapi_stream2generator(self, response: StreamingResponse, as_json: bool =False): ''' @@ -315,6 +316,7 @@ def chat_chat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + prompt_name: str = "llm_chat", no_remote_api: bool = None, ): ''' @@ -329,6 +331,7 @@ def chat_chat( "stream": stream, "model_name": model, "temperature": temperature, + "prompt_name": prompt_name, } print(f"received input message:") @@ -342,6 +345,40 @@ def chat_chat( response = self.post("/chat/chat", json=data, stream=True) return self._httpx_stream2generator(response) + def agent_chat( + self, + query: str, + history: List[Dict] = [], + stream: bool = True, + model: str = LLM_MODEL, + temperature: float = TEMPERATURE, + no_remote_api: bool = None, + ): + ''' + 对应api.py/chat/agent_chat 接口 + ''' + if no_remote_api is None: + no_remote_api = self.no_remote_api + + data = { + "query": query, + "history": history, + "stream": stream, + "model_name": model, + "temperature": temperature, + } + + print(f"received input message:") + pprint(data) + + if no_remote_api: + from server.chat.agent_chat import agent_chat + response = run_async(agent_chat(**data)) + return self._fastapi_stream2generator(response) + else: + response = self.post("/chat/agent_chat", json=data, stream=True) + return self._httpx_stream2generator(response) + def knowledge_base_chat( self, query: str, @@ -352,6 +389,7 @@ def knowledge_base_chat( stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + prompt_name: str = "knowledge_base_chat", no_remote_api: bool = None, ): ''' @@ -370,6 +408,7 @@ def knowledge_base_chat( "model_name": model, "temperature": temperature, "local_doc_url": no_remote_api, + "prompt_name": prompt_name, } print(f"received input message:") @@ -392,9 +431,11 @@ def search_engine_chat( query: str, search_engine_name: str, top_k: int = SEARCH_ENGINE_TOP_K, + history: List[Dict] = [], stream: bool = True, model: str = LLM_MODEL, temperature: float = TEMPERATURE, + prompt_name: str = "knowledge_base_chat", no_remote_api: bool = None, ): ''' @@ -407,9 +448,11 @@ def search_engine_chat( "query": query, "search_engine_name": search_engine_name, "top_k": top_k, + "history": history, "stream": stream, "model_name": model, "temperature": temperature, + "prompt_name": prompt_name, } print(f"received input message:") @@ -766,20 +809,31 @@ def list_running_models( "controller_address": controller_address, } if no_remote_api: - from server.llm_api import list_llm_models - return list_llm_models(**data).data + from server.llm_api import list_running_models + return list_running_models(**data).data else: r = self.post( - "/llm_model/list_models", + "/llm_model/list_running_models", json=data, ) return r.json().get("data", []) - def list_config_models(self): + def list_config_models(self, no_remote_api: bool = None) -> Dict[str, List[str]]: ''' - 获取configs中配置的模型列表 + 获取configs中配置的模型列表,返回形式为{"type": [model_name1, model_name2, ...], ...}。 + 如果no_remote_api=True, 从运行ApiRequest的机器上获取;否则从运行api.py的机器上获取。 ''' - return list(llm_model_dict.keys()) + if no_remote_api is None: + no_remote_api = self.no_remote_api + + if no_remote_api: + from server.llm_api import list_config_models + return list_config_models().data + else: + r = self.post( + "/llm_model/list_config_models", + ) + return r.json().get("data", {}) def stop_llm_model( self, @@ -825,13 +879,13 @@ def change_llm_model( if not model_name or not new_model_name: return - if new_model_name == model_name: + running_models = self.list_running_models() + if new_model_name == model_name or new_model_name in running_models: return { "code": 200, - "msg": "什么都不用做" + "msg": "无需切换" } - running_models = self.list_running_models() if model_name not in running_models: return { "code": 500, @@ -839,7 +893,7 @@ def change_llm_model( } config_models = self.list_config_models() - if new_model_name not in config_models: + if new_model_name not in config_models.get("local", []): return { "code": 500, "msg": f"要切换的模型'{new_model_name}'在configs中没有配置。"