From 6354823d9ce7b406d8bba1418ed8688eb6021483 Mon Sep 17 00:00:00 2001 From: jiangwel Date: Thu, 14 Aug 2025 19:21:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ui):=20=E7=A7=BB=E9=99=A4=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=96=87=E6=A1=A3=20feat(validation):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AF=B7=E6=B1=82=E5=8F=82=E6=95=B0=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20chore:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E8=87=B30.4.0=E5=B9=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E9=85=8D=E7=BD=AE=20style:=20=E6=B8=85?= =?UTF-8?q?=E7=90=86=E6=97=A0=E7=94=A8=E5=9B=BE=E7=89=87=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=92=8C=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 97 ++++---- handler/http/v1/modelkit.go | 12 +- ui/ModelModal/README.md | 82 +++---- ui/ModelModal/package.json | 5 +- ui/ModelModal/rollup.config.mjs | 40 ---- ui/ModelModal/src/ModelModal.tsx | 1 - ui/ModelModal/src/assets/images/logo.png | Bin 54599 -> 0 bytes ui/ModelModal/src/assets/images/qrcode.png | Bin 44786 -> 0 bytes ui/ModelModal/src/constants/theme.ts | 253 --------------------- ui/ModelModal/src/index.ts | 1 - ui/ModelModal/src/types/theme.d.ts | 48 ---- usecase/modelkit.go | 20 ++ 12 files changed, 119 insertions(+), 440 deletions(-) delete mode 100644 ui/ModelModal/rollup.config.mjs delete mode 100644 ui/ModelModal/src/assets/images/logo.png delete mode 100644 ui/ModelModal/src/assets/images/qrcode.png delete mode 100644 ui/ModelModal/src/constants/theme.ts delete mode 100644 ui/ModelModal/src/types/theme.d.ts diff --git a/README.md b/README.md index 4585a66..5701eb2 100644 --- a/README.md +++ b/README.md @@ -4,64 +4,61 @@ [![React Version](https://img.shields.io/badge/React-19.0.0+-blue.svg)](https://reactjs.org) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) -ModelKit 是一个强大的AI模型管理平台,支持多种AI服务提供商,提供统一的模型管理、配置验证和API接口服务。 +ModelKit 是一个强大的AI模型管理平台,支持多种AI服务提供商,提供统一的模型管理、配置验证服务。 ## 🚀 功能特性 - **多模型提供商支持**: 支持 OpenAI、Ollama、DeepSeek、SiliconFlow、Moonshot、Azure OpenAI、百智云、腾讯混元、百炼、火山引擎、Gemini、智谱等主流AI服务商 - **模型类型管理**: 支持聊天模型、嵌入模型、重排序模型、视觉模型、代码模型、函数调用等多种模型类型 - **配置验证**: 提供模型配置的实时验证功能,确保API配置正确性 -- **统一API接口**: 提供标准化的RESTful API,简化AI模型集成 - **现代化Web界面**: 基于React 19和Material-UI构建的响应式用户界面 - **国际化支持**: 内置中英文多语言支持 - **可复用组件**: 提供开箱即用的ModelModal组件,支持在其他项目中快速集成 -## 🏗️ 技术架构 - -### 后端 (Go) -- **框架**: Echo v4 (HTTP框架) -- **语言**: Go 1.24.0+ -- **架构**: 分层架构 (Handler -> UseCase -> Domain) -- **依赖管理**: Go Modules - -### 前端 (React) -- **框架**: React 19 + TypeScript -- **UI库**: Material-UI v6 + CT-MUI -- **构建工具**: Vite 6 -- **状态管理**: Redux Toolkit -- **路由**: React Router v7 -- **编辑器**: TipTap (富文本编辑器) - -## 📁 项目结构 - -``` -ModelKit/ -├── consts/ # 常量定义 -├── domain/ # 领域模型和接口 -├── errcode/ # 错误码和国际化 -├── handler/ # HTTP处理器 -├── pkg/ # 公共包 -├── usecase/ # 业务用例 -├── ui/ # 前端应用 -│ ├── src/ # 源代码 -│ │ ├── components/ # 可复用组件 -│ │ │ └── Card/ # 卡片组件 -│ │ ├── constant/ # 常量定义 -│ │ ├── api/ # API接口 -│ │ └── services/ # 服务层 -│ ├── public/ # 静态资源 -│ └── package.json # 前端依赖 -├── utils/ # 工具函数 -├── go.mod # Go模块文件 -└── Makefile # 构建脚本 +## 使用方式 +### 后端 +``` bash + // 1. 引入ModelKit + import ( + modelkit "github.com/chaitin/ModelKit/usecase" + ) + // 2. 调用ModelKit提供的函数即可 + modelkitRes, err := modelkit.CheckModel(...) + modelkitRes, err := modelkit.ListModel(...) ``` - -## 🛠️ 安装部署 - -### 环境要求 - -- Go 1.24.0+ - -## 📝 许可证 - -本项目采用 [MIT 许可证](LICENSE)。 +### 前端 +``` bash + // 1. 引入ModelKit + import { ModelModal, Model, ModelService, ConstsModelType as ModelKitType, ModelListItem } from '@yokowu/modelkit-ui'; + // 2.创建符合ModelService接口的服务实现 + const modelService: ModelService = { + createModel: async (params) => { + const response = await postCreateModel(params as unknown as DomainCreateModelReq); + return { model: response as unknown as Model }; + }, + listModel: async (params) => { + const response = await getGetProviderModelList(params as unknown as GetGetProviderModelListParams); + return { models: response?.models || [] }; + }, + checkModel: async (params) => { + const response = await postCheckModel(params as unknown as DomainCheckModelReq); + return { model: response as unknown as Model }; + }, + updateModel: async (params) => { + const response = await putUpdateModel(params as unknown as DomainUpdateModelReq); + return { model: response as unknown as Model }; + } + // 3. 使用ModelModal组件 + { + setOpen(false); + setEditData(null); + }} + refresh={refreshModel} + data={editData as Model | null} + type={modelType} + modelService={modelService} + language="zh-CN" + /> +``` \ No newline at end of file diff --git a/handler/http/v1/modelkit.go b/handler/http/v1/modelkit.go index b52d8b4..cea98f5 100644 --- a/handler/http/v1/modelkit.go +++ b/handler/http/v1/modelkit.go @@ -51,12 +51,12 @@ func (p *ModelKit) GetModelList(c echo.Context) error { } // 验证参数 - // if err := c.Validate(&req); err != nil { - // return c.JSON(http.StatusBadRequest, domain.Response{ - // Success: false, - // Message: "参数验证失败: " + err.Error(), - // }) - // } + if err := c.Validate(&req); err != nil { + return c.JSON(http.StatusBadRequest, domain.Response{ + Success: false, + Message: "参数验证失败: " + err.Error(), + }) + } resp, err := usecase.ModelList(c.Request().Context(), &req) if err != nil { diff --git a/ui/ModelModal/README.md b/ui/ModelModal/README.md index 8e97c2d..0eeb4d6 100644 --- a/ui/ModelModal/README.md +++ b/ui/ModelModal/README.md @@ -5,11 +5,7 @@ ## 安装 ```bash -npm install @yokowu/modelkit-ui -# 或 -yarn add @yokowu/modelkit-ui -# 或 -pnpm add @yokowu/modelkit-ui +npm install @your-org/model-modal ``` ## 使用方法 @@ -100,51 +96,61 @@ const baseTheme = createTheme({ const theme = mergeThemeWithDefaults(baseTheme); ``` -## 组件 +### TypeScript 支持 -### ModelAdd +如果你使用 TypeScript,需要确保主题类型扩展被正确导入: -模型添加/编辑弹窗组件。 +```tsx +// 在你的类型声明文件中(如 vite-env.d.ts 或 global.d.ts) +import '@your-org/model-modal/dist/types/theme'; +``` -#### Props +或者在使用组件的文件中导入: -- `open: boolean` - 是否显示弹窗 -- `data: ModelListItem | null` - 编辑时的模型数据 -- `type: 'chat' | 'embedding' | 'rerank'` - 模型类型 -- `onClose: () => void` - 关闭弹窗回调 -- `refresh: () => void` - 刷新数据回调 +```tsx +import '@your-org/model-modal/dist/types/theme'; +import { ModelModal } from '@your-org/model-modal'; +``` -## 依赖要求 +## 常见问题 -确保你的项目已安装以下依赖: +### 样式显示不正确 -```json -{ - "peerDependencies": { - "react": ">=18.0.0", - "react-dom": ">=18.0.0", - "@mui/material": ">=5.0.0", - "@mui/icons-material": ">=5.0.0", - "@emotion/react": ">=11.0.0", - "@emotion/styled": ">=11.0.0", - "react-hook-form": ">=7.0.0" - } -} -``` +如果组件的样式显示不正确,通常是因为主题中缺少 `background.paper2` 的定义。请确保: -## 开发 +1. 在主题配置中添加 `background.paper2` 属性 +2. 使用 `ThemeProvider` 包装你的应用 +3. 导入了正确的主题类型声明 -本项目使用 pnpm 作为包管理器: +### TypeScript 类型错误 -```bash -# 安装依赖 -pnpm install +如果遇到 TypeScript 类型错误,如 "Property 'paper2' does not exist",请确保: -# 开发模式 -pnpm dev +1. 导入了主题类型扩展:`import '@your-org/model-modal/dist/types/theme'` +2. 重启 TypeScript 服务 -# 构建 -pnpm build +## API + +### ModelModalProps + +| 属性 | 类型 | 必需 | 描述 | +|------|------|------|------| +| open | boolean | ✓ | 控制模态框的显示/隐藏 | +| onClose | () => void | ✓ | 关闭模态框的回调函数 | +| refresh | () => void | ✓ | 刷新数据的回调函数 | +| data | Model \| null | ✓ | 编辑时的模型数据,新建时为 null | +| type | ConstsModelType | ✓ | 模型类型 | +| modelService | ModelService | ✓ | 模型服务接口 | + +### ModelService + +```tsx +interface ModelService { + createModel: (data: CreateModelReq) => Promise<{ model: Model }>; + listModel: (data: ListModelReq) => Promise<{ models: ModelListItem[] }>; + checkModel: (data: CheckModelReq) => Promise<{ model: Model }>; + updateModel: (data: UpdateModelReq) => Promise<{ model: Model }>; +} ``` ## 许可证 diff --git a/ui/ModelModal/package.json b/ui/ModelModal/package.json index 7b0d7cb..1a8572b 100644 --- a/ui/ModelModal/package.json +++ b/ui/ModelModal/package.json @@ -1,6 +1,6 @@ { "name": "@yokowu/modelkit-ui", - "version": "0.3.0", + "version": "0.4.0", "description": "A reusable AI model configuration modal component for React applications", "private": false, "type": "module", @@ -16,8 +16,7 @@ "./styles": "./dist/styles.css" }, "publishConfig": { - "registry": "https://registry.npmjs.org", - "access": "public" + "registry": "https://npm.pkg.github.com" }, "files": [ "dist" diff --git a/ui/ModelModal/rollup.config.mjs b/ui/ModelModal/rollup.config.mjs deleted file mode 100644 index 2372696..0000000 --- a/ui/ModelModal/rollup.config.mjs +++ /dev/null @@ -1,40 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import typescript from '@rollup/plugin-typescript'; -import terser from '@rollup/plugin-terser'; -import peerDepsExternal from 'rollup-plugin-peer-deps-external'; -import { createRequire } from 'module'; -const require = createRequire(import.meta.url); -const packageJson = require('./package.json'); - -export default [ - { - input: 'src/index.ts', - external: ['react', 'react-dom'], - output: [ - { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - { - file: packageJson.module, - format: 'esm', - sourcemap: true, - }, - ], - plugins: [ - peerDepsExternal(), - resolve({ - extensions: ['.js', '.jsx', '.ts', '.tsx'], - }), - commonjs(), - typescript({ - tsconfig: './tsconfig.json', - declaration: true, - declarationDir: './dist', - }), - terser(), - ], - }, -]; \ No newline at end of file diff --git a/ui/ModelModal/src/ModelModal.tsx b/ui/ModelModal/src/ModelModal.tsx index a50b2af..8173b9a 100644 --- a/ui/ModelModal/src/ModelModal.tsx +++ b/ui/ModelModal/src/ModelModal.tsx @@ -24,7 +24,6 @@ import { } from './types/types'; import { DEFAULT_MODEL_PROVIDERS } from './constants/providers'; import { ModelProvider } from './constants/providers'; -import { mergeThemeWithDefaults } from './constants/theme'; import { getLocaleMessage } from './constants/locale'; import './assets/fonts/iconfont'; import { lightTheme } from './theme'; diff --git a/ui/ModelModal/src/assets/images/logo.png b/ui/ModelModal/src/assets/images/logo.png deleted file mode 100644 index da96d16c1d0755ef4d0d306afe42fe120b099e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54599 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%0Ah>v?gN?fTzsJ3>w? z(MaIi6SJNOR7Eb|BC2_s)UdamjW(k#pHrly!YjOMrovW<+bs~odHr1lb`}Qg^v+KoZ z^-6Y*eJka0-TXajNf@Z<=2Y+>87+9WsGA~z}P=LQmWy6))vb!?KLJV8O zURh>1OQKJpXd>_)vyJlOcYr!bMz#`aiOd~peveh?q=ULanYlmOeE}IEo&^jFDa>{)K0TY?bPQp8M5yF$jFFkrn z0^Ezfe3%FsUXtmetHy?yy)QzvA{KpgDamGj$jB3nEp1(Xv315@E8`w}G3++)g@Q%4 zqzZ_kx@>_{>hpT)+)8yRq)*h89=Iz}9rUPQ-BTLIPZvL_+Z)oB{gwAkFPv~uUzmq~ z$~C15F7xLEf4Ve|q;;f;l1<+qCmb7%3Yh4d#zm7b6}s=eOfh@RJ7*IwyYa0$P5OMb zpq`|P-PZI$61PC>^V|gv@1p?ql3(U0qm~7=pL8;U$>cYN?=osGC7xIXUyg;EZd^xr ze{P+kwT*k;EfqWBmF@@=c-2uJ1O@USn4y< zORNSmLwe2Ovn!mNRUFo~gW0NC1btvztQ<6^+1Inmy6y54(h(k?8L?mxnkd&5ZQ6yP<3fe^d3kbw**cKqxw^CUhF4RYkdH4pl<>q+3ScH zQtUgTIe#Fd=&XQUuCYrj^YRkS8>=^QL>;odScc z_e3-T4^n~8hXZbCuD*(5gMuboi#upt5}hcnQkLKVyIS!~FCgo(ceU&FaPDvRMIt&$ z31iI1ZISpwhXN;K1j1{G0B7oih+w5>rX6AADpJ$CQYrSQT!-qm$JX{7>Hl=2oGwfJI`S|le62HZ<-uH~l z7TK)!oG<=DdGugem~*{&g^G`hU93kq`dH&2ytTf&WYsAiglPAL4-cF#Tftvi~dgfqxyk_AbAe_`Hov`cx%T@&$WGeG#3h6|S3Njk4z z|FX^NsgbfQv*r=e0Rgi&4+D8ZCA2K}*PH3Th7KPt^@U z%6v;KttX0Vs6*EVg$R^)@%hR0#l~Qi@xXiV#C!P)P7oUkm#uQ$!-)kZ?aF5ED#53J zVF|+FqBk3$5?w660Jb(3yk&cP0=?Q|=zqFOIo|_%^}2hW72&JEqPt-W;dB=-8 z&#LU_lfX^A5dwDZw!|9;yj-Y>Qj+ldfz(9@-Nz{#o+e>PSNr<_|5f_ccbhniZ1ch} zPCLXCnT~QOSK4bogN^c;?N_l5v3_`dYQ~_VUFP;PhBV6ySSC;)fD+^jh}aGB0l@b&zplenVIn?Z@ySNi%BZ_67Nur zCFS(ioLKm#$y|PQhuR=x&v);pYMAVn!SIv^8N!ZQFyyPYsm>#wx(iUqawA&I+2$aA zh}Pq>53$QH{_(nms7JqItislI_r_d}dGFWvOkm6#scpI!dKJ+9-U(nwE+CSSV-d+^ zPo~u{JZ27=&LRW=P?wN$@vaI#X?zzcs=CJACGbN8h9c>}vPGE|7Oz2d#S6m&{^Q%; zdP^5(9nmj#MU{Clxrmc2hH_&-1md>xEOGJ78wRm__B7^@Kb1pEXr|ZMtZH}eG}Kg6Ws5vHi{zR%;{Nm&?A?aA@0ej@f3CFcwv)-1=j~uE3SeqbqtuhS46U&1byt4 zY}*cb<)M3%(@glt_WM2^ALX3vDdXfCzwT-?~LQOTz}C4_MT=)nC?K2-+I(|0Um;9B+#Uq5ZIKqjtZtEV zznx*a%o?|A;>f;AZc|CaTk`?`R@l^CMsH>8-LCIrUf<(2XJm?{GC`-DAL5Ag9Y zRuQaLU&i%d`O?PlX>GV4zg_Mz_+Er`j(~`^l^u1lfVKAs1I|VOOJ|S#+ zfZZktd&u7`D@-JKpC1kECfUr3WmF9=Qv^jG3T9LpEaDn7!c!$JpjIL$;k|Gg^@upf zeqO_L_k$pmcf9b1B#gp^rfe4lqZWN%7(q257^f)^P8Yy6ajzn&H$vXl`PKNse>NOe zWWIOcteSl~*bQ%Ia(K8)8y1Z0FC7K$+T_EARlYo2kl1Ut0~^ABY7(1;vBRk0l9kk4 ztcCWm<|m)JU$W$W@{xfzjV=3HG2s`V@>Ozrn+QfW$*a$j5FtA3lUexs9{Xz+ZBfI| zkbQ;G-$$|e5QtpS-e;@&3$Tguf;5n=b%j;Cv>|7EUy#uK4-+0n0i2YFYCKW;CEpL* zW7Phauet_BNfDXDVgTX7L4xOpvz_pOcTVa_mzt>9-~+nUe~pamXAKBvO(Dn7hV<9e zM0ZGTJY%xa2nyE~3hc@8>@)}+U&2OpqaNnTVF)~{g>gQcLkDMbG|-P?0SmDEAjWK7 z9;<>O`c@3kg6BB8!pjo_jFBrNj2^xE>YE`wc58H4HKa+i8(zdJ4KOjYYOW=WlKV@> zc!@DTYOLJa5^+vPwg{w6=+6qmPdGECON!q?#CcHA4c9Yp*p3t4=Ky&ISdK0NpiDOM~VzOYKhND~PDq=2mCEOXea_Q_4~ zafxXEEekLpcSU;w{X+!}t zZR)5Jj(ok^G5J`&PT2gKP)Jv}u?ibELfewvzh_~&{+$sy*lp~G!E zRg-sb+0$=v<8P#1aLt8`VaN{?>Q&sI?C^3r+dD7CG(1yIIH7mm%he%jHuMFiNemo@ zg#24vm%FkK$X{D$`a*e?up*xb+JqhYVX17nDrXVVzDBx%*pkQI*e_ANy8)094SbAD6@aA z?hiJZISKvQ28(rw=|!0-QtvFJ^U%_NCiGNJDi`7(oZO9Ck z<^Su)A%IDP_dH~MDPFrEv`5nt0pfkuF<0r|DxoK6w!+q9=)J*b241aZtu%S|tIs3k zS4R$6=$exB|#W8|7%*{crZ5eguW}WHAWSfBi{B z2=E-+-?zrUHwoR<;_-GIbjjDKd@&Iq-RC(pYl$3*WMOet6eq@Z)A|XiE_*<~gn>hm4z|lwZy1KUXLvWEoNpA-e2) zAFHj+C7YlS^AZKZUbT%@o%=+ z@I>F92mZW^e3&|zFlkm%8ot00tF1-qM2>h1<)K|$Mi^|JHeYVIo@GCl>_lCx`auF;J49%#9+U4 z9V6cMwYa}D{Wm$s(BCr}lGJXrf6Kxjbw}Tby2Av#FQlb z-t-+P5240?#$iPye!cJG(+oS0Xui%zFi(=XIuPzsW|Szd)pijp_exg(rhVK{>-nOb zC(BkRUov+w);}jO>SypLw^b*JNMJrl$jC5m!PxugYr-Q+Jki;LqV=7-+gi$jW$kIX z^;UuJu|+O4_4>OGZxH5yYZ~%i(cgU17KOrlqCo^_TBs!vG%j@d_`yb0s>MVA_5Y8kN96--kbkBiYT9l z^#ASu268nO6d@pdLy(pDuI7n&)PcIdDw+Jc_QQz~X_xS-_EQAS&t?>y?-)k^R&r?~ z3Ybvb`>WsoZQBjA(dvEW%>S78)8q{jjSL=+29e@e!ny{vkDsDkWfI-Ee6W6o1MuZkgd z_AZ%bfU$p9Sd#r|>~~+f?jfvv+m=+OQ$kl0;+a&>FljNDW?N`2xn__AVsJeBvf&W6 z{~1!eD*q-7XP%mF(pjo#CU`D=UXucX->H}Pt6tI z*racv7P+7mw|R=z&-=sRpBxoMxY9N#`7EfFZ6~c}^+|Y8_ z5tDj(mEVj;|GA)`y`Z1!%~`oEpjPy01G`Q!Y8gJGigeHmUmz`eb3dDXe8Jl5%dONy=7`j?dx_a?f?n5zN`XdK2}_K9ohZXZ67fF%?uQbH#4k!Z6|B0#^x7*Lvu)D*IS%315aEoBLeciC zQwZtlgR0BKxP#1wh-jNXf3cSdy7yt1=Nu+P5xZqaNIy$;Twu6#{MG1}503vvFp;v83D%(cv_IO6S_Gp3&+H#M=mRlYkcb&AZj zlOH_zE+VkS>%%L|M_3lm=JZ@3YV{qvyj3K;(&xx$b~jxD2N3~&ZTaP0FAprlBc`us ztD=~b_JYaI{-3pOdwX3Sr1xbfxxP)tJ8qL4KbRd{-flCBwg_y7(Ox89(s&Uc+2@YC z&0Q8f38Y|Nf?#z~pX+Ic+{|{j6N-kI3C2Uk-w=MU2^Lqqf zB;$~8_7L7Smw7>liQ^N5CqG}#l!`Q1vUOcEWI6nj-PK*+dZ}4&6J?j7%6voBwZpa- zQM(l@YH&oDkA@ZKB;~C3X0u`Ex7#;5Cj$a7%awarWTn!RN}9`z==wrh9rvwcqy-9h zwr9D~HzYNT*`sfg;8N?{WR89$d|qrga>i zvxHSyzHK+Gc>j64P~m}w=ik}cmE@E2B9SzUJ&#T(*(VmZ%j-8849K}B{o2G`_1ub9 zAwjDve80 zEqvk>OO1Gi7%ak`(L+c4a>1Cyl3QoGi6s%6k8c$%hfTftW9nQ8h8xN-)MS7hbd4W9 zL3tJQ$#ZX4;mwnu6>JnM4M>NA+HqqwQz^)GqZH|ripZ7VM_?` zVC`Y9DI_cG4#y=vKC94mc4pln;88dFZ8i(a;#!D6y6lSsS21s0VWO6ne71VeWIUHE zr^{~#9kA>wtdVMf@-l6ZE;9j%`s90as&=ETcHNr)qgM^N=*1ANs@_F0PGD9d!FF*j z>%~tnn&I6@^>zWqbKX^=f&cvu9+=v^I*;v`P=%oa84Voxju>x9c?0Iz34_lOhiX#H z@;jjKCVr@lh~GG|^Axv9R;5+cyLQ##x95Pd6z7ZIg)s>&bB@1_91@GL^}|QfiKRM^ zI?jSQ)Ld&PFkGyeNmYKG`tE%d7qDWc7s=n$?xrcg{lqA|Hh7FV{(GL5-FN%AghK%Mf{M3Wo`~M+de+|Gp`%<#lLgnacLzP=NIzfnpef{ z#;xAp`$djQ2NZ`E)l|6v|5)i#)grIGWLhrz#V{qH*rzj?e`Cy4_pGL&@ZICutAV=u zmxi9Qb>gVCmzyT>sfC!E#6%7+FaYJh=#4t}MW6`b=d?wZ)4=+FApk)jFg9|xw~#~B z%yH*B)ndx<+YbrA906r<(zDhSVmPNqoGn&kI)i zb4Xz&qbyS z@9569*Iu^8)g-7)IPp)zVAITYqI^|XLkOU$ZSDC)lK1Fg5#OmeaYRdq_qbb%%ub^I z{mf`Q(mTScPsmb#KIkLsZ-%BLO)K-PFr3MV|C_dAgZFaLX|K5NN9H=?Wi~8T$W?W%fOrtS zfAkOoM^m~wF>8*@A}eMF&V5glU^%;6o2fan0?Z`)%%iR}@k|W)?BPF~bLqfu?+Yr=W_0NODpa2rn)=@Df5vgR@2^VwsHxuheC)s|-9e<$a0`=* zEX`8$kOHGSFW9Sx^BR)IYE<2v{Pe&Yy_K6Vq|eG42xbq7&M%lst=JmaVfFSGldq>0 zNcq=ogLF5CF;27Y(K4cc@#P!FZf(!wk%j1zm8#&-Url_{J37%f2$HW-1 zzhYm=?3;}*CqhMdp8ws0SN|G5A4piFQ}Q5aQ!(_tO!R8sIruCs;dO!;GR<`5Ot+%H zC<@I{7l?Z})-x|J&7m6dh}}a8AIRdb6_}A4caI?PL4y-HF=bd4f@G;9zK;I5uol9O z4|1p?e&2&!o8J8^MvvCkpbTZuqprt;k@n+Liu={=3j|u|LsdxZSLKxTHaOKJkp<3+ z3gbYvui=Uu2DW0-dbJb#LbUC>88#AQ)UH)Fm(qClelO`K_u7**6BPr=vgd;EuT4Ru z&sG8LK7=qU5Sq9c3^;hSE%81H&6r7Q!ra271(7I8uW*3IsrK8zpG_c!w?1g)j5QJl z6_yP)w^Ui4-4*Fx-EWB`?lUo0-HxMxQp9BzD!gd~lNeYspNKrNuobltWl9QADo@S#s!l*0TDH6Mjt8 zb=ObJmoF`fQ?R6c)i{weMkhTWSv@bZ^ur^of;YCYU`z=l#USp-h2vF#U#7b>@{QxU zJ!*6H15fNy#9`19O!mEON8AO|Gd}i09@gZ;w_))h9ke^CqNX4Zt`?5jx^1WPdOj)DgZ>M%hN z5;RV7{V~_`!CH5OaVe^i{%cY?jmm;)a}j~n`a^~{rIWvN+>8F^=!XmEA~Xsdeg2JF z^AWsQ`M0H82})d_wdJa=5*%Yix1U{SGCJ)`g!2UyavOnVY3Z)-VLk1i&n@3A2WU?& zc^_6>zLjQ#ZZa+^k=nU-ApQ=PLaZNY zL*M}yY?51?SWW#SC<2qQpk&?q0wW14zF9@|01H?Rw0ed&={?w|5hU85JTPZsGdH_l$L)2#EDk zU;k*mH$jW`iZefY!%fWT*HR9wet4VsxfX%i&_xV{fq#I`M6!?bGSc+~n7t{y>G-5@ z(*lyTh|yGVVnC|6KG_J5Q~nK{Wja{@`zk4-@6bvatPEn8PEj?NPnV_o$kY0_ATTVJ z*x)1!cEd|qLrqDYew9z9zb9MawEg(wDJtJJ|MAaC0gIWW2$u+Vf28p_@0T6wGjot{ zU-x|m{!|j}HWI=2DzAMTcIdo_wS7YES!1=Gy~Q7EwK{W>sRf~g(SZQ}bEG~l88hLJ zd--YU%HVnK{!40ehC9`qizHhzJuaL-j0v8{HZP-?4(cnP>B-c$3sy3KhG!?c`GXjS zQ47Ufs+~-IL}gMzK<}xUmKM>Q*vg6GW6c{?4&d z?UJ|e=SmG)pi=mLZfR#pg5m3^BYy@BiH@U(+FsF%Q1_zwfw=0EgTZ;vE6!^zA}Vm0 zqrh){N`8G`jP&vYRmjLpytd`ZcB-5*Bf*+DkCCjFO;?$qbtM93b+{<30WYO68>2 zs@byrGM6_7zQ)Z&9RwsKOQ822A(>0O(!u^#d1-Avy0594%1`STP`=pLmO{ooB}UpULM$?L=Jtd@iYGU}!T{ zc2s**rZWodF7`mP6Uldn~)io+`5oiF0+yU~3> zB+mEn!|Y&ksPdW%WlSf~enEX66n$}G2wbvV$JNas&a3gfVTe;;MrW*_7dr2{D&{CY zGsgDOYD6=vh1KT$+j1v2=&}21n0|s$s6Y?_EJ0&n+U<0bcWCKz{D)ID%nE*&S_C_) z8>{B<9oXR=RDG;EL^F=yqvvClvnU$r%*@xV-KvMKBRyx2u67sy?Tr7d%#*wW)!;DK`Cv@roADhI^)|zV4ZF@!Te*&q;38k=Z1}pGWF^r^nD(lbuR1_JB@_n^jbu}AC;U(3v5bC$$3@tZvqfuy4zaAs6 zy?I;BTJMG=NjBb_1B|2DJA0;T!sFMyc~=0@NtYG>UaOyPiyiDfkM~;uG-{HZ7tKx#m%fj8Dr<1R*^v01woFN079(Wj(g5g6aR`|@GlgfydT|6Dsz8aJv zNp9YKyX-P9Wl@uShd=$a@|l(r;sk?p!M~&pUg7*rPWTN?CV#NJ?vl_V%B|gHmKME= zH-iS$6b&(ump25Ch{ zak^+zl?;oR*eh2S7Q_oZ4ZtHV#SmLdX^?TFOY*aOd5L!LHQi>8$E&6PVc?y}%ALs8 zI3+!>>wD7}EtFY-qhsOD4BfD!mv^L@ut&sa)=V->WOT-h>zpT4*l2Dn*7QS<&~DGN zjKR2pr>D5Mu%{Vp0U9IZyKflylh0rcj9Jx}>#6`@C_MG3M;rT&8#JfpI=5F)YX?xP z6;)cn4KS-H?mIRUo#i)_g!Akx{kwj2^uL=%UgZNiqx!wgZB$0Q1tYTzSWgM0#RxE(J%F%b~#hviJkn zp!yaxUYnj$#B8ckAl?Nv&DBSt5Cc&DW|8&*d5JY$KR)t%4+D_8&d%<`Ed4 zcu=#7r1Q45lD(&&zcG^oEuW>K+uQOzZL332a+}Kp?v7ffod+7Iz3!K8%nq1UVQ$Zf zXt^jqZRKJd!NTd}SIi4roK049owKBnrLL}m?g;kO8G(F8xB&Ql=<2FaqhbqBzzZodj z7GMgeH;PQ&DTvD$Qc!yUKXy7YR7|1w_IWSRS`qT~8w{{)Br(0!I9BxB z<=fHB=7Aj-1a$Wv!&%~in2GbE_~xe@YQMj@eN+W3nr=h{4~)|UD12Odl95iYys>W< zERj05S$2);WwB7^pPv`IrKFpddf!;3OsQ8*@{4y&7A73$W5>mmP#5`97c~V<7+6g^ zpn4aX)5^`k5*~M0PA1BC4$=x99nVxBe?OaS?atY(Hg5cR+QNLDFFzk+=@?SV;sNYW z)nWUIynL`5B)@I;;#*i##0^8p&V^*i>gn-(3%&RDj|#r2oWpKss1l~jCwOX zk1t0Kvfj zhOP4j#aE7tG}2%PX9G(}WG6IQ2!Z*o1DLND4=r^OKKm7Q27l8SFg)||AeU{Mts=q7 z{!H8rrhm+Dx*HALtnLRJ+mAV2GlyW|^Xm;P~q4SpSg_$Rlh$e?Jpqza4bvr7}*6hoeZrM52e zM`DOe^D2`u{&jAZRKUIcgs3Og-xZGC0)iCFon-rhJfFX8cAX&PbK=V_%)Q-n^M#+? z9N@bV)Bp#~u`hI(8Hu=?iTn4fqA!?>$qU>^CC_R`AbS3FE`jr zbcXCSWO%f|c>1mDErFCaEJI<>oTpU(LcebPi4J+6sjsq0-&!%EN~x7INR;fLK~Kw) z*gA9m0I08cMWXayp7vE6sZ4*!k|NIVD~Vg2jV>ykmm8K1g_7=G^%H%OOEWfWx^bk) z7`t2gW+HfHqUUz%?Z3TJ*>?%&EHmp(h`z68!=RbTM3Vij^;(Ktc?a>A6fsd-#DHXy zgKMJZvi?ZmZZnbcC+^C#}$)E*d8b1tRo%*M2#$*ASl z-ajp1Ne*eSojC|X=sE~R`)&?eN(@)%+zmpd@^w_y@&BZj&fE@UG97XkPKU2XURXIv z&W*PRr{#$8qPYxm`F*{u-=$l=p1!`ET78abIixod`&5g;Ib$ns;Tasa(uk~VU}qgL znrhZ2W?SQ+%F;*r;(G>9pzx@;&`y?i*E`=Lk5yH?rTaC67-VO|NMEI7m6VaAJg`*{ zSu%ow>m_#I%FoV?O>rg}!!Xd$|Ltc-{Qa2r{iiTuRl02iLslH42X!FNld7RSKtN$@ z4VmEqJW%C-{kI4^ro!oCNku~uHT8O4KXSA`xQ?8XXtv4nV zjw_sdZ-s=X-w0c6EoPlgNKm~#t5I_p`hH<;>X7H9Y^U;b3pF7ajbmA4$jW;;ze2i}kA zIl>>0^I`b1!ZBHAmb!d-ril|HN*pQdwHUvXE31yB&Ll2+W150HHf^v>@z!}QjtfHZ zP9l-+Zm5SoDR)9ZNy)gdn{LwcU{Y}f=~lnq0*a9xV~Mgu8bbOL zjb-yoH$VngQ5P*M7?>6Fx2#mYExP8r4n8z$Y~5`je%+e5HcN4pSrbP)%?MKR<*E?2ZEWpc ztd||if_>-|kb&9XF-}*06?XCyhr%v-Q_IDs^3W?$K5_d=qY6^~^Go0N5~*ZVH80s? zrnHNs6yGj5nn<(?CkgNkTd@EI2EneC_&X<+F`*F~zqg;5)2u8zO}H@bje%DwBjur+sROmyfmr?oMC7fU{x;})}*=z z>VI0j)v7?v1*#5J1}>gRbipDsR2S-^{b|2$h_JomL&%+GXRfwX73?(4qth+?GmY@I zu^>P~UV-S^}aHS-48V<&F06F(eWkJE^8; zn&b4-%o1p{G{R!n(WwiPa`{og_UP^yZ4Hz%uGGnADR|}V5aOABanp|gxlX^fU(e|> zI*EQlr{0tudag12ZT1AEQ>43WNDbdc1LV1(pK&y=|7`b1%(^_{y~NG(QwAUaMekUX z@a+xD>xmWlx#^$^s?ED+?-`M4a>7o4mp<`d4}KStmy$QA(w6#uC5=&8t1A6Bg1+??DqtdgwD7sy_KICEGnL9_ z&-DA>A*LDnp5>+~W6*1>tMDaRb#bt@{cl$rw^4e16R!D{5C0ZW8`yy!5CnHu>KTh86m(_VOk<+9m*b(Mr z5W|{`SGS#M?#$l3E-iFmSxB^Pt(s{jP7kWbJzw|~OAkuo*pN%CMy}~I^J;UgrwTmF zh_>`t*0?Y4tIs+{&$8N~-prBCQc>n=m;(5gwBH~ebdu-3QOYgCVj?U5ae$Oi1?G~} zOmG@*M-_id+|oP0$<%_!-@UitRHJ523oBYU_KM$&{b z@I&Co=F%LmtYLG5MyMm~$6XJ8&Cd9(=_0(3Ycb3-vgJ>W`?AxZFB@Eo^pHMcFBaVW z#7$?_VtMQAODyd`4(-fg4T5x9Nw*Yl1FqOM@xSqAUT##wyI-8 zip_UH^q%qAJ*?@u&qo&Y@uP+T&)2&54LmVI7elsNZdE=j5`32XBftyMH)O}*uR)AL z)V28R{*ZCF>@B<$c4+$<=P(W3Ew^Juy_PD`PtgCiZ4K%c72`}-@Epz|6k=;nPZEtF zNpfye;eKA2<2c|=-)qr~yqW4bLF}9qB}_|eq9)r{8qoB=U1thh<@EZ)O68_pdg{Yj z{hc_1e+#LOMCpw#wODY2KZrL@P3)sJTw`%YTQZf@%p3Ud&Y8yb@dqTaGlM5M$I$!J z1pYM+P(4h9N>$Qwu26k#vNF{>_}z$Ca}W0eB+@M?g%-{vqmYff+1h<8U1Lhd_GUFy^bS0Min!XxYLX?%Og3sY}H{~6rC7`VA&9mb;GxL{4>X#J({P{tOEH@=7DJzB zAg8{J>@klnT7R{62nKIY{btzO*GL_?;A@T3f+-zmqBM34C#HGU< z2@jbmLl5TF(mu6}pl__40QWY_$&$I?Ptm`t^r_Z$lNoCxn<37_x4-GW70UTr+I-n4 z2crhz&*kZuWK3az1gfW;^A=;l77AUm9f=~;IOmp{WQQ~!cN?M7Hxiz?;XV2xg=_lw z!EHy~v3zZ=4CzcqP1^nbSxn^$Gv~#pC;2=%+dkkuxampcvO(eR_H&~ly*@BAIZfmX z=$t+gX%??;M0{zPyNd*s($gr_bMp{Fja)y;-AwvDeDZ?GPGZ?1V%`K4Mo*UEM4N>Z z=BXL3t)qi$C(&+W)gRYONVgb850bPCBe#?Am07?Ub4-vw-C|}nEXF@Z%S}!j4%cq3 zb^b9hA@jFg$K)WK0eRt6n@393Bpm!CasC{>C+l^edsn;f)yMe9R4Q|tiL=m^|BrV8VFC|ekoR3Lqlb|b>&BXfQK?QNtl)TdXA(%ALs`?;n!*HAJ03LVaFyLX! zzz2R!_-NURI1R%0=Z#)3MPFU&vr}TMU4KpDwZ5^vQA{u;FfNSdlPjH+!6ln4$qq=D z{z`csCSAn4$QQ}*$F{l~MZ7IyM6sUQo2_2)p&jF=`CIGtneF`8Oq4`g9`~`{YB=G~ zcPY7=ZjqDz<;DN5mnw%rk12qp!PqPKVjks9hK?JUOxj>13LJ1`70wa5l$639>vOEv z#8A18-|6;Urcld7qiq%9d6K{9;()C)aJ-2!hd16_F-DdoQX2X>Ny{(VnE zgC#$)CtDr~xD%z$cag!gJjs6QPcqIXs_GYX9s{2~=;!WT_ucmOzpij+7ehOr8#}rt z4Y|f?+l>}(o}_OBmg~KGriPY$*-c-Dqd$I}@slo(oV=Xu2H$lT2o%QdCH9YtamlEB zdF<k{q*@;^%D zS*;6mi4~eCt#BndFHpj%lv1vz?rg%}nnmS)zq)+Rk>e&_cS$|Z_oY}{cctZgm2tW8 zz6#>7!p5J-wEOK8HSy2$s1zd1dBQokV0K4B4$PNlBe^2(OKGWwc1JfcdkL5HKE@N< z32X%6_nlDKcRk-&Wqu=26uIBtg;R894l8!pttA2%^DbZe^RMFCs%Ep=4;LZFyBdsY z$G%TVhnbp`{&tsZ(yzSW<&8NTo&f*n2&C(>2sVrd&RL^;>buL_SD|ZkKylK%FBeg( zj;WhmOPp9{Y`T+s=Vczy6RgQ0-G2KEI;h378f@d_rF)2SLcsn@v7)QoO=dwUYwtlo=#*H2|{P5C7I741nszVD5if24&hgGaKu!?@XyYRh|X@$IRVEw5ZOY{^#iO zWDMwStArX^Ak{sx)QunshU?3XRJMnC)$OF{?v9-%6cQPD8ecx`iHg?1e!QNAiV7u2 z$#XB>|7Y77Xmpp~h8y9!jJuTX^VvJu$tFQP3V+@Wj6(d8KNSAzfXRH6>Uz`Wf_=ku zdd`vM^_&NHj_vR5Pe-g>2nWbD=3XaHCQ2~M((X$3nWFm0nxq;27iL@=prWzqE%XR_{J_)O8w3c-m-Ci z5o{$n^I71u@gnl+_e1ru3m8rNqE8RX4JuUlJAf%nRMVH$2a+unRMrB>LTY%HW&T1j zelTQ3l!ug9exGjnMDb8zO|cFBHZD4)YGH4fdGX!ghbiTG;*|O~P9?m$*QRec?TRGxy|&p}u-ia~1`T^3pf&0-Nhi z62f~Hylz68Y;*2_F2ehRoo6?YSdPrYgALWSo23^cpR{?=clc;?T8+8t$I?^>qEBvd zRKvREEmAJa?8kn^ehlvi+r#jKcM^N1E>o-h?>+tI6QPtOyhB$A2 zh`e;VP>`hR@mgYuo`&oK=P@&M*G!^!JLkM!W**lHTFf`psj~dkT((~AGe^rCuI(Yk zuNUXL1)^&+wl%9dT*Bz4SV;#66Y}h@|4c<0c(A8`o8F`|kv~V=@f@VRw3ZNdIpyl3 z%%8S`UZQQ9W3=O*wUk z!pcl*S<-A_tYBE^UC_63Q>pt|wAgvd^Wfj615bx_#0vgaA#IL5q-p?pQTp7~C-&-b zIZBcOV4`v+J6YC6B;_|!TjNp@c2I%Q-of80Mc)TG06N%&6c;%Bci*smE^P2A8u~4_ zTPr!fG}X_HlH z2IZzP+!y$EZ1n9w3hsv`^}(o%bNl#$XPhX**us6@gENK-ya6;)Ond zf5cP2e@m+cW@lVaa;|042*m^P9jT_s^q>KZrdu!EoNA?zGx_817Y_s%qdb?Jd2{GV zrkOS-K}q}n{U`~c#iL&%D7nX-N^G1EEtb!jLk#$IB%3pAK{joc8@%G9^Mz{2i=TQ7 zL>Hs(2FM(i1q%n3RP^}jJ>{D3IJb>hXCY7JK42%d+WZ8AW;2>Gd8%Td!Nb$Bu9#G& z9DtfW&FuFf6p-cQr_h(G*e6NFm=vu-mTz5pgPbYme`v!sU9wa(n^mF^{VC)0;&0^X zctX9EZa+_JSfj|-M=SILlu$}<%K`15M*#WE%6W74^Het76g#bCD~Z7mDdwHReY8(_ z-DP^(sGXvKi!j<4;w--#Xu88ROpZayk~08Gqg$T~w+7Q*B;u8=NTw_l{L+_DoF3$M zA`Fv1Xqvw~pQ86TFP>%~^1@Axu5?uCU~lW78ojo|W6EXncaoLRq}c@I;^g7dld9IL z)$E$22Mu@fZ>HV=6ZEMH{^pjloN%kGkZ&@pWn8Gb2D6%LkZwmdf!&nAM23;aMY`w$ z-Qt1=rK%W2)7@o zR}JgaxH2!Khwn$X>oBG zuCquYq2)~yr$WSHZ&}&7^JkLf?Wm{&C>Emlqty-NRK&cEj5DT`dN~%un&&m!AB=9E zk--x@Vw7sde?x8b+F-ykT>wC2_Kv>QRj%SD!IvnyQyW@-%tzx7`9RB_F!@ebp;1bD zO*Bmzt4*#q_DrIM9ex&_T+LK_#@uMJx30d@S$HZ-VOm}Ky%#`#_@dYnJ`b@$DpcNE zWNSzwRhY?)*o&yQ4~4txLux#)a<-Sh7?j>|Bjzx*|oU3B&_n3 zq-59?{N0QGK$%N(uQF6Bkm8?|aIrNR>+dRCK?T7e>aKVB@=ZApl@ksfny5ZjGPTmR z;xtY&QzE?gt+qbxbSz!g6i1u*DgQJWL7D%V!b4gkXSxlhF6(6l7YYq=n}F6gk@Z3W zI!*zYeE{(U^|d|D%bVI@>Vu{4A{pTHkAWC+*n1pWJBM=?F+3nZ^2(00i)0( zd_8_IU6O=C_V)7za-OMYFjJ^sdo<^u8EveQ7UgFfZ!HRU+NEE<9`;lbZK|g>gC9QtZFZ@2| zw!QQoUVe~8v1xM-FInK&k|@CR`5bzO|B;yZI5G+-)Z9=KB1faDMWVw|-QX#25Fqy+SPhD@)$9bQS3)-)ffz z+6h#sE5Tfhl660(Auqrrf=4%&%1LY04%F>jaB00^^)jKr}H0qnd&iZfZi$1C* zw+(04J`+{bHI*G}pUd|~;4)+2udOFo83_@CcGQPySlvcoWg(xTl5Y=QwNJX4HDh5o z2N^C0^tyg31XZ7}^+O@&>GTo||5ikS^mc#7R$kA<#FyM?QJC9ONP-Og`sSX;VeC9@ zZF(q@dAZJn!etZBg_LO4yim>L#%rm4MTEX2)$q6H)z?i|NZ6c56r9@o)@K?H7T*qN z-1y$9heaHTot|3JUl*7X_Vh_%ulG2?+O52uu6=<=QOlH^biyL#61Qa{Eu434p;Oy* zOVBcpp)KwT=Fw;O!PkJl#OC;daWRaaJK(qU+=aDYCZOzT_6?l6mh&O+w2e{E%Y zn~5a}9<9m$;6`MhdtqrJ5g?I=+Fcsi>_%+Sw(hiD%A*mp?ECS?^rnXJ`GoX7y-1yM zaM;dSa*S*V;#G~K+m}?SKVPQN0*~3O`*_pjr^vd4TxvfTIi0M~{^&bSnfus8pK?uy zLL~+HZL$j07s-uJifwPQt*D+Gub~izOxuKnaMM#9l6+;-nfX9VTHFmpJ#5zBo zm1wWzEA ztX3r;(9$F@v#qi1mt!o_S;!u=THp4H4BjsS=C=ojj}hf*YQdZQ-#pnc%{1=urrGUT z^CBe*bsAc;?s$7gGvY_Ju1hky-xf?SgdO^~CQP}_ZfnUcgX)sHYDs!^Na03hl6*Cj zjI)WvP8`pxEqJ(xSk;<+INO)Hmp#8<6oMCe)EfR*KNYfTx(Jc6cPs90R{$?;@5^$S z%W%v!_}W#2!cY5PI4EDz`UyZyN#kx+AveDbv9Gyn`V zs;3=~REO#!X)tO6U_u4uUeLR8gDSVliAUu|vxw@3RE7hgzgm(`21Zk}-~+iW`dMp} zoQ-ab*o)gZFX{KbImvL@yC)YDeeM}RAl)|nX9g&5lOx`txnRDAto=bqvDXDJPod|FxZe zE0}kh1--s1eri5PV*TYe(YYUSRqv&};<*XxS06!Zv3(Qs5Wf@B6rxe1ot+7A z?$r##$HjRr|547tBsDHWK2y?B0-_4DAK9yYYks#YiD8Zq6C%ZT5?SUw1yHk{5PgN9 z`5Roq+-hw3#~jlt4h+rFPdZNAGZ70~+m%4l0soiFTx_V>Y>}n!h38VxygQUIU?@&} zfj!RdEg~1z*QsuQv_2w^O?P?O)z9i&B1IY06l{q&m4YRX`;uA369rBI{2nrQ@UpB= z4f#q>)SGyc8vBB~c#!FIUDcsL1NvQpsq`TUp~f9}o!RhX0C#`D<8jltblXgdtOVI4 zZc0_zRmt_}&1B=WBi?kv+;4n4sVuzal$*g#{-$Y?~ zzqrUU=c*R8UM&i0OyVfQfN(M*XvxZ0*6>v`XY<^sM+-}Yr9pK`)n&;5attrYt+$ZIS1jc#<$@f)5(eC z=;YsO{2suO*{H>Km_%TU^kcN?7Ysm?9_v6~T?nehIP9$m%y44427Joq+4wohUzLR9fx*|?qq4!1La`8 z45$vm2gp_0a5wrh6C!plxt(>^7~`z7IrYabhojSW;H>NQu`BaG|6KTJ2)dd}QE#cQ zdZ+=#5&TxQ_%uzy6!+DtMNcdu1F*1V&UDkpj$EtXG0lekKF zwa$DbWv7yN-!*trO8%FxQMUh&87uqN-fFdjv|a;Dlo$Tp{{-BL(ikhEtV4rI%I2ys z%7aHplc2sfTX~hiD62j}kY>hNVf62<`###c_J~?u_-e_yPOxNW2ty;ATx-g0G%b22 z8wR(+Qg7hjtfPwZZ}^4)KKh5FMpvNCqLPYo^Jc>VfLC}Dx(yH{FH?VW-XF<-tv2~| zL=R3C1E+cdVm?IboE1MXbKDCSDsZ44ZP-39kBjV#7#hlbetu}5Oe#sxw9(|J#&K%g z!jI-W0{R`Ol30j^UYmmS@L5}Z^S{$(4lPzXlUO)zmWn=G4U{@9Sf+|@jxhEVWBonW zYPsnl<~cegYg4F}S7G#p1a9Nit?^34u2z}(!y?z{Uw&##^z2}lqY!z|B!{c6bf z(cvKCII<(aT`MPN5J>K9n|iO1L3`x?JF(k*G_uH=ys18`k@E7pPdV=OX^-SE!k|gq z)RWvLm8&^j-iGYGw4`&~UxVxG%occPbfh48#ywB)P2*>$K~T`-Z;<-%iL+{;yG1$Q z#`k6)ZJNMg$F5<%9VRi4!25sOrEBO2O`Db|_hN&K5U-Pz#ogFYFY)GqHs@I@ZX2Pd zF*O;la{L&jYEQ~(t`!+{)U#P==4d&!$FyFc(fwm!LG+Ieg97xypNgcgGbZGtV=~Fc zfliF#RUTN{0AT+HK)2t{7J@7fKg9~)YLK2rN^SfqcmLHVx`D71%`=D7oF~5XOP}RSK>XGEST`0Yp$$4zz#aI0g*wq!6q3Fwu+S>} zGp4=yP|t^zYbBx zSb#4Y5j2DoU_uO;2B;df&UGYcqk}(Iq!;FGt8LV0z;Y&Gv2Y7e*+;QbUiB0EI0MT zrm~AD9J`CAa>k2)MM4u|H>EfbKud*{0FZFn)^ic|$e#l8K$#@CxJ{E8+IOS=emnwX z|!Iw0fZM1pBmZ=k%>#Se2o}eDu>lM7xK1R>S^P_E4l8r8&=hMsm^N!={wDj5azy@h(_~e4t%>&LdEjvL4gCe;fWslX3#Dz%yPPx z70#i_ihbCZg7NcWvL<2IuI0ERe~boiIq!ZZI{b$LyxCIC3}nc;e?_g`hjs9(h(fa9 zltcpTiPWchHR)eOYXxvu>iJfzdHUo^;wH;Xm@0}mu`X|oedW`wy{5pRC>y4#XzXGG zkV?9R^V^9?jOzccg=GwYB#j}ErBdkzfWP$C zJ153OxD)sR>+Rs!mjVwp2V{4!hJ==Lnfe9ir-_7w_^91F_t96qU5xpSh%u;Ib<1X+ z9NB!%JZkp4j@L}bRbcnZJZN+I0D60lSU?zqd2Lc$kN%xHiG_YofyL!O%5vf=cb z+;nZQ@}{fP(C&DG99i#{HD7PM)o0up@>XV|>4+25NAA+wa5K68ZjAUAHcc%?DP*v3 zmVXB@tcRV4yw$;~A*S`*R))p(u>CDJF`F(nmOiE5G)XjAM67#WkFolX=C|q`|3frE z%}RDJJ@HHBx6VA>x8xYTZ!Sk^R&QKdh81j7dct@)IugF)#O@@@2peTkc%=qCd7-Mn zl=^1r5hg<{QfJz(r%H3P#AT1N6+ql zU`>lo9mYb29n;K>*Xt}>xvh;SG@IfPw=l;>w1be6ZllgGFQ70tg%X47MvcKA!zaW9 z>->@Rh@I&0#xHZTr*>;+nNyBp2aJK9;MN@3a^kyKN-Pp_Zz7IT)35pS+^ojHx{7&R zS8bV>p9>E5C(FH@?Ek=}9=Eqho?_UKce}>j>@M!_+thiwG4h^p4x1HK{lUsC>wdg~HZEbq9(qXm$e zjKL&_?NMC^K?#8p z=jH^rw;OT(724Iq9YCpJdKeNPv7{)NffT0gEisC%ae(#9byU+MXBAy^+31LaQBx;k zdhKbk{7yvsQB@3bYEQH@MHhAj;eWy;vlSNX3X^PyWDXcZ|9w+av8T4TGFP1-;SMjv zWqH4S_J#!+6uLkpRbX?kn5MYtnPHA^#uyF~;y+-vag$znmp~w5{?n5UPsKtiOQk#?x6k`BD} zqjyt`?}(E|@5rKl>y`R6YuXs8eP3zB$H2kA_rsR7`B$G=C!SMj%?q~E!Euc>`vO3} z-sn_c0Vy|M_KMNLze18r3WoWnA=ZN{(lnU;F+9_X$CqRZ9hLc zrwzX8GL`Xq8XIsM;wlqJzDaHHoM`_vwt(XWy{COjYu?)pq$tE=?EByNc-v?Km|SO&R%d|_rfmMH1zbM*)CK=I@E?Cq1m!1_>GkUAfW+a+& z`~9%25oU&SeRT%cYi-QpUCwUhcByw7pF09g{m^=dhZj@06&oYTzZUOdEl>Tt|7)J> zH=#}4Ow@gQ7JBE|oDa?(k6T9wyDi>w;yH!l=2IGngyv=YknW#VY!XwL@z>^S=G=7Y zT0!!^+)1KNhpZbOCgHd&FuTsqj55yXG#&emgNFsrEr}1ZC-N>j#k{DlTFkAzej0E5 zFoRi5uB6KabTmo`+Abl z+Xi+%@IG1k!G8SDWYcX&GJM@*y1+7sPsDvq*ll%+bC{nqJT%4UsX^5fyE}Zn!B&F^ zUfP}6d<{v>^IZZCKM~AMV(XZAPB@7F2Zy%zsCYv2r7GA4)q2vOl>uq*Dhp6e>J7-a z9r&|gN4%gGcQ6oy&`U92Z?5R_MVnP-TvdsbHqOflw`&@!k|aZ7oUr5aZDocXv_9Nx zZ;P01rz3-uYxQDy-H~ir$7&7btykCiH1P~oeyiV8;I)kb@&)Coh$L#Sv@{X-n};hU z705|^o!Mi8OZB)&Bll!uOK|F)jRm*2TSr>e{S>Cwq~|$TajG2NEkt4U`-T9n#-eAa zJ#2WiCr&PdZDu#eSEe%GTHbOh(g|yL;Jd)5K&3Af99yHw&|- z4pWgN_G>S}_4<+}zaLUtf$lSG8ZxP{xg)5X5(1e5jt}v?a|ZLD{-F z*n``*jEvq(Nv%A`H()}ERSSb^AD1FJ3|F0wnp}us&8Tt36ZR{KWzRdfT*_c<>VshO z!^^rodn3zxZJVZS?vqbDvW>&!DoY0MIiH`GP3TA~YbMf{TBzQ?Dz7Q*%Akgz0OBoS zu3qox-`an?AD-xL@D?P#46FqtTXyB(wbceWKO@0)M1JVx8~ec=|clt`V8WOB0U2j?ryz?+xY6 zoRbXs(i~UhK4>={3Y|?5mLB!&x;RnBd2t|8Cp<6MH$jwhTT2^Wbsn~3Zj&U#TLqd? z*#z1M_aWX*<=lY2XjLz9Pc`?q2JFd>j{o%(Dt}#HXZ3cg9d-7)o`w(4q^RfAH8t4I zN#41|$WA};a_kF-t9r8|%6VB?y{ip4c}%c4^#pKT7AtvA6-@HRjxQN;EaV;ra5s(I zjTq#UTOkmZDfZ7Bzl0_>ezmXvv86#T`=kNA3SbXs@wlWVZ>*>FahdfCmru8cobTc` z&z$hANF^y-uwyCY#*&6r=o5=ObFPpwU(5#U9yW61zgk6iKwd9-xFN1NPODRh!)*<5 zI2YE!?8Tg&~nh_9?Z?^tJU1@D{UM_pLbLNj>psXGR|;yhzcu5FC0`yw%;nBea}o{Tkw4 zxlCLZZlF}f-S{7H0^r!bAqb*{6#?M+?m2$tmNp#jQ8HUnIRr_rS%9v1W}pq#!y3l6 zD~Maq<=~AL<@HD_=O$M{R$4f?_4l7;C2J!I!>}y3Aw*f1{Ta@L>G^Jt5!D2j_DtK6VX0frjbg>z3#knEIrTd;@&4Y;e23b-} zpMD7R3#fiZE4zi`&30OUQRh)wtmRw-0=E#p=lX7f`5Cl?JHD`Vy_d#^d`Ud(LHSF1 zpeY|u$cuZ=9br%XBG&YZfwxk%9yWf`B-YockGz7VLFESBY24RS>`k6W7ciT9puIOE zZWVwDjZxMGR0+(Finq7ODd@fug$s4Q^}2K~E;slWdB$YQNH8^Lo058)JiD8|Iv#S_ z9CTr+;kJAL0jEIL^#upF6WJw$JkHU98E#!dCc~#hs zVX$jgG-3+T{?aE%0s>-;8w3KF&bV?k>p`jEe8pHp7=?{0v_BpGmLGBhk{uL>zeTM= zv-8o*r=YI{;RN5_4G;}&```z$zE=o#X)BEo!3hP3fT*1bv?NO)hSz3aVSuBAVvL5(t zi_O@xLj-m-?g|y3Y}>S%^ZmgWO-vyYKgUKuk;!lf1h}yjEH@Qo>r_UN_#0m`VG@1C z3~`c?qHy{-KC?Gob!_u?c7gr5EH=Klvs9@wYGlTsiEr8P8R!!QXP}}&oQ1~j<=-Lq zu@pzq&-vAFj}lwwI03&R{kyBITc!K%oi~(xSF$hj#ou1|-fW(5N0em|TM3`E-Tll7 z=Bg+tCmH^=E301im0mD0Ecg*cmf>*z{c}e2_qf_q7R8j0)a}piKg&kDE@OeG$(*P4 z;DoALQHq8Rii;5Rs4!@FCVocPdQgHX6}#%cR>?9EKF2Gw+vdG7^+WM_eBt!r{i7br z3|kO~ZdA${IbEvyNeTT=(l-qfc$-f!TiD1n+RR*_dcUn|k+eve-a~MMZ_BVgmj@OR z*&t$$S6W{?bkq~Gi5ct1z1VxK{nKYOY<*5YdbSf=nyWa|?7gaIQz+XiFv}47TzQf& zI%7tG`+&*BxMF)lxboM2sHH5W5*{oufpmP%qP*p}K%Cj_0GEnlOyN$kK0%XkHAXAY zaplL)z3ay;$91Qh2~3o6G&T->o*X@y;0G-b)ji-P;y@^oq|I2>&68^4r+0GCJ1P~0 z`*rbc1S$L2UacpXFof<<$z6my!*!?Zi=r9Hw@YhS!c&99EK5M#h0{MnrJxLp6Q3KN z&Y=I6Q3Jvdo88&v(xeEzJTon%vFSNl9hKI(F&fTaTeh*SKJ$jet+Sb zKmhF<-EzFpaWX$ZZbOzHaW2hc^~{MX{`haM0o0zH^A`@^ef04$--qm} zS3_q6hxN-(p)acb342opISsmATNgzjjS$yn)r(X5WS$$G8GV-@1IZMX6BhkwDgr;v z{vOVKg_@RgLz}%~S*@LBO?tDav-Gh!UL4=vJ5RQTtjSc#j3K-X5YizqBb^2X`Dm5W z0cp&TZaf;}7ht^(3R0kyb^87*?hWYHck7!Fe7ce#__b=M1CxL0X#;MU;1@xks(&Ua zFzMxqn42dim_@LDI-;*tK6m&*;FWJ4KqZ}gjoxK)D#JH;nw27bdA(Df(dlOq|Hl@& z^{P(<6?^{qJAjRb)Ps*@CPO`=UQbp^{?0OowD&E-*zCxwZJu#9sN=}|L0gw3+g<7! zhaUivms@maIwghV8g2_9)o#ek>~^w1RHDq%G`Mh+fVeeY9B@?uIxe%3AeAxJQEGX$ z|5&_IB49rrePJMepgCO)eGz8SF>4V@+|w^9BTUOmc*tycV9?j9ah65>)oR9bjO9!R zc-~xHu8yC(?H~9jB&jrC>RvZyH}dAkEqU&`f=kw?%=_gTtO>QA@egsqsf4-xZVB40h31Mvjbn#S<_8W53;i1&U^+M$d)1zKtvq8x zd~UNL!K&%p)uzP;05Efa|A;R?pGk5Q!6~{!U_OnDRNEYVqnki3wCeWwE+bms)`+rU zh`9S)&x0N4F=F$%UB>3U4)m(TttI-%N$H^a@|B5`%z7u2mK5*LG6VbTcP(ePiGP~Z zGP%AevROCAzOB+*-Cq4myk0cWPdn>!;d5riCBX+-yXozv(0i#iO_QYByg~?gwaSt7 z47{IW6k@v{qqlh&vsdJk1DFT{sjqg;<0Fg@e&~G^$>TL6^)xpW8Ly(Pp%M7|rK$+| zb!GCq@x*Cq`h=xuqi2xgvZpx>flx*?9{938Yj|oGgAzn{2e@NLcAE}h zeS&mzieOK;g-*;NkoN2ap9SE`C}@r>s7-aCzI?Ij-){C}=IbVQaGd2WpnjKkm{K>P z0Vlc*`I&tG?QbynHbJ)0a@tk*QNDU>c2`-?be+#7Np;*Ug$P;0qh}U>kGK5+&^Px` zcvz;BS&+m+;iIC(vTunpY!!n*pBBC-OoNDey=IU9%LaTj0x#4H3V(j+4>;SSDYI?I z5A)zi&QRX78m6;uDh;dO*b8U7AuuNJXQui;PcqE_2Eu$#S`Hwr4exP_4?M6vYcBwW zAobAZpWvpdqUYA_7F17GE@Z2zA3aMM`U8cybP+xXo09d zKwQ-i;kW?s5u5&QuW{|w3LSZ#5WN{H4FAjc#bZ315q>qJITlWNt@PY-uycWrlvh_P z!JX_(?{|uVyKOc$QmGgC<+3Zl$t4mwR*q2W%F&6KYGe*4ahr%T zO`Ei)P$|zw8$(~T?WfCL#;TGoMdOa-Cuh}aJ&*a&HCvn()2L-2jAzxe+$0~|=c7o@ ziIY+#86Q}$&Um(i#oEjk8oQmC#M}C#A;PS*KI=LtuX3s0sQ*V=PXX4rRKjkcY}vc0 z3=BO$bU9?^xn}`>uVy5)nqpO}F7@e}(9VL|C`}R)0?J7%t({>g&?}$;^zaJ>5vXx$ ziY!29y*;hUeA8D%*tAZazx9M*Rmv`gF-AlUY7iz!R2{9k9&NWzX%>I1) zxc~aGq92bXz@W>UAFoIKa_q<&Ez4|pU*8{Y0nwc5;Vo5b^oxS-P@3l(s2QLJ%`6YL)Ce}DBrvB;i*6HY>V1N`DYtn8?J`ONc_xeI_%;}?EPwAwFMj=mRJ0f#>y1XD(0BA^hzgygtXkRJ)*Jh?=I}s8tt2q>M zrxG&^L~+0ODkfE{BY?0QG?1@*1HQ9}JR$7mS`|n5eeT&_u+$)dJU{!dXglaZ`G)KJ zH2E4Y8eTaOf`{K|IP}4Wu!mibZ?q5n0klD`f|zE(!}JO-JInL_ee&*O!@D{immhZB zonS!*(n9k7weyUc2MPxdqbFSc96j9iIG`>Fru#y9GlGgu0H-#q_yQm18uexMB(JXY zYd0t_$k054^T+~rsJ<7Cx9I&}i@=cpyaz&hxqDZJJiYETAO)o97kmnJ)J*t$Fh1w-@;z9X(+yycfK zG!R@7+g>+&h{K)#Xzp}py04Jla$*K{(~nsXq6S$?8A_kC!!2#`sF=vAMV=~#FpU|s z9~JAI{q=J=X2Y6Wqtlk;iz|bR$yEyMLC2$m!Ve0RSQl}dej6yq&OngG7f%- zL^YQGCRneyN?E+6jdE;Hy^IM+jn5z7O?-F%&k%c5BVH=QtZXCtZ18^F86RXI;#Do6QaC748*<4llOq)jqCnP*+%{?m~y-v zL<6?o9IwtI{N95ZUMYo5l3`bIzLB`w0&CebDT1F+c9DsvtSsUNuaYtv4Cck)Uz8HG2;mLUY2}rHn2v z*3u++uuk$5P_pz)DPm|BV~d{Jk2{|aAXK({PMu^df{3gbWY@#3Fk`Ja6fV11z3jR* z(~Ez3WLIe4PW-D2fp~7eWX}EvBM83fUv>v0={HX%dJLRP0CkruJLFIUBGagBK&`an zLICEI{t}z<*TDIzuf!GAiTO&Kg8B$~Q;5D2DlwDZt@E?p;wsb{5D`6&2?$`HH*5F4 z-}DA~Q7o54@WSV`*R9Tq4Q7ls-2Z*=x(SP$MXn%mH6f}ct6|c)_jwjoNRHLNbZ#g> zD^M3;kdH*+OVZwprS)c@C&X|28xww@l-UM zQqaA+MVQ`d0nw7AR*rwGvKpYxO1KTUz+1esbMaSpS&92{SBf-F%WF*JF;y7PLYZTH`9iV|mo7~DsF)kLA%BYv6* z6L5XM+H5OPfW2C5PTHv^1NN^^z|W}aUJ^lR>v%Na{hS9C&NPCqG2_}9pwr^@!QEoDg6IQnDi(6K7B@uQ?P7VQ)k1+vO zpB9YV6|R84-CZXE{`Y_{5gP=8(7Q-2ropce7zEG=K;_>VxH7Tn7F|xD# z@ajF?qR(51gt|P*>O>`;+bZx{&2uWdW7x#&JdYgKiuYNIXCwmqzEfAT7|^cU+$QtS zK2~8Wrzb2xB)g)$L)=N;MW@p>Ti#wtdpEr76w>GRl zIS`&@S2{)6D^Ds0K1#;mO$%pbe^XBN?EOTBWzG9F&EjTGAlGb~wTnziT4vDtUnT1s zKU-xo1ZCbIl8i-#KSp(3HI@*m#x?-sb)v(_msHmdfSg^VxN4`(I1S~CN9`}m;QWH*i_$ugDF>=5X^bCgE<>~H1hs)Xvq?#EFjodvk#<~dXxD$*`RP>IKw z*N80#@>#1oZ51eIVkpOU2UG+j)bpzl3sN^_HZfrd*R5B?p0t+NO`&^8TarV9%uY1Q zW)orbUK_8~DCuIemnw2sQTDb>P-YghIUy~MS=pm3mabY*W+1rh_Y9GP7Z&%IRrC7^ z%UA%`LLQ>rl9H`hb6or6<%_R4ONm z(3mqvVCU`pl3%%2JDYi9OF|LGX& z7Pw0B@~xHQG6=iiM6JWMkM zrgW_3Pg?f!Mhxjj-0`7y=5zRTmrS@dRchKiZOuK`)hKYThr*e!n}KmdPWh}ptX@Z< zV(&AqCkm)J4l3d|VT(gJ5SHsK!9f7RSQWc}oC349=ufPpwszyyRECu$qP`;8#C)s{f{SDjzr0w)>YaKr^Qf)>UD#u#t4|iNrmtq0Xh5L|)Wj z^g&H?@w%88Xc=W=>UBFwOA3_9fCQB@($zUsA#TQ5-+2o0zdCOcZ z+c($TF=NNEAJs4C9>E1buIQH!VWOeZ3=J1psvDGaw&Ipy0ZfI$B9fY0SiqLk^wt27p zUnEdHh>tC~Kc*Swx=-r`5?---AO{*{E;cfpXUw{|W-y*-+wBxH%~agaQM&_3AMq6~ zP^MRZR?$J}-28!yOLA8BZuWFf}hZ6cH9uZxTKOK=^Y z9$1zR%ScX9EZFJfYmk1Km6{FA6RgIE?}WWSIIiBXk+qpSjmi)wt?^K*W)`}0x~#vn zx_3*09d-T4DQ7K?nJWos`0X+tzfz;|SYrQWwJXjxkTV$mejcS|T4A-J5wm1^UG}|T zQW$pwa5eB9a9I`^ca&oQ0~O}^#(4mLpT)LP&a5IlVDWW+3R?9uhxXfCN_*h!k&haG z+5<8c?(wdv(Lq%ZK)@kTwfyqy>U8pk;c?o5r->3nnBetjWPZ34ir53_D!)eaHyt+v zDq1n2O=(?74Vo@^x;kiuPn(N-89cniQ(A&`u&@d*$oy!1S3etIDqE+Kdv_4oni z&9#f`z1CuuFHZbfJwGOS0%Kcd$-Hlms5XQy|KWl_bX-=s&47|G@({_k0mKsYyny_o ztzhqF?;+!~f9bJTquLQ@fDyCaR??Qrv^WNR|0?>07pcrzc<6XZ6&zn&MVjpgRVI<< zvB=lR>Us6xgUwUO!_A_N<#B^d{u@|w#)Pmm2#{3QQ4cKr4EA1+Q^i51;(p&d0gN8z zD-)lr`~$5poTR*(QL;8tlAOj+s;Ly?gG_ z3x8A5LNz+Hwgefh{mjL%AWA&Af#t4#GYk>*2+USsj@)oiHANv(qR^DJepSv;%bJAF|%2f_eLcw zeywKc`V8GFxAX4Zh&R=z1iU1U|?;N1POYGWvlrUVpDkZ4lM%(7 zT5W*m9yqN22yiIWHvq7g;P(taVbyM6oRDC))S?rjB^sadw2OaD4t0G9WC*@xB4*GBcAXY)?bFZ*L9$nM!F~m zW4hL@87s;g?HSp&e?gjZd+kwFk6m)s7f{p-yxXucSyDk1a^wB^=^#*^{r?j6_xgxg zMVE(RX(gFi1L^u*CmnY<{3mBN1I%?y=?(K!e(5&J3K_<&X zOlgRMESt%DXsjl%XGiV0RELJRl{x3ar?oa^?l<|~MyUkX zM9bG9lD7anXfxwXsDCmcf-3+m{7N-szqIiOtr=}9wN!@z%}5*4|7%^$aD>wHk9cgk7wM00QUMf3Ip?Oe22k%uQtO{sbdCVk>XtmVd`yh)?oJa;8nNyMvz>!KhXOoZ0# zzvfsX4G zglSF0%l57~pwG`Hne6D|vPa0vyy5II zg1=J`b@hu%-nE?|gkvT+AY3UYa>=rrQI|$0HmfK%nFLKM3U^3P`!~FU=@_X7)Y{){ zK4b6DNz)bz#9!`|HCZoGC&$R~6`6KW-ae+ZS%?PY&vF54de2tuj|O)WUDxe96T;zP zuk&g=$gUlI((gEac5K`8F)bz@V4Puy;N_&ypkjk}jUs{-V-cAg&^@{|@q^hu~_y9fqI}=hF$;I&> zA`ss6veNF%$*~x38px^VVrCsC?jaZJ*PgVS1gpGtw@wR~81JEmP)>nIhGC8<0c*f9 z_t@Q8+-{udXt(|y2M1ER;vptbITsr?)$#F6ArX{{iz8=Hpoxt+2xxD68*T>Q$ zJKQaP?F;xA_XC!7R^Gsm9#^a#J63SDUeXYPUs8ZkzQ4Wr@cqWlz4|4_7$Wb``p9fu z^6pS$BT4=8y7Xe_G)cWVkmJt{N7bLkc`at-ujOhS^{vXX8~l#a9Y0iV$7`DC{TTFU zbQS8C6=)W$X(x)N%6zD5-G9%x-HzADNSg~&y{=IWw>m~ZXEgu%c72bOQ=2Zr<8iFR zdhe>hquWQ0WwHMQ{nQtPRt#f%hZ~`Q5zaR_$)mrNjNR=!Q2t?&$ywbzMgQ3`Ape3# zC|=iUJYSYGZAAxiHfh}%gg2CN;VePnW*F4IjNX2nonEZ=Y4sl_rQ>~=QyJ}$kI7JK z(!c>VnhCB39Rm+&#x%$HZ4VHuItWkUmJdl*J8d~G;~G1eDOoBMtO|Le6A^YW22yp>kjbMe#JgCj-CjfGJ=qilM5q35ZauWq>cE-mYu(=l%F-G%O|8URU60A%E%DDNP6>KNIUr3 zO;#WU$JHC9S2D6pf+SEQpQlF4f0p!(j!qjXQsjv;*vI2^4t+`6SHA7&2kV$k;t^ul z*YtA(fs8Y1#su)}Z$aUWziA4^L|Czs>Pz{uG4y=<7%nhBCR^ekVzYiFoxXkJx)voN zLssSXoH;bWiCW24r6pTqWtB!N-h!a`Q);CPk`mn%WK@m#x^BG?ql?Cr?`&G6c9b8D zQ~haQSwQjwaOnP!%#6l~0f(5RyV24;ac;Q=(gsmcc|6^ne)6_3jgo1WR4@7)tbTh5 zn3_`{$|O!(aK4t&1baAHgxnw05?a`0H-R zS|V)|7Ns>)ud2T`ZZfjoGN37>ttNz{uiX3n6er^FGN>9^B_>@4YI@jljTV>J%@NCq zf1T-Q_RqJ-uNqTiOy?{HAn5swg-JcLy6*GeR2#`z3TEvkzV#PrrWD(Yz+@?HZJpwz ziOs>J7=wh&pIfF+c0YFn2YhP*C^tipWuyeo4WWa(a92h$`pg|Mu)4ua@^<(xC;bN?%Xd&+d75x+Wjij zdoH$~FcZGz%JeUZa(nS>VIA-sPNpi4LZ;3{f;DurR4e`4I4@$%^JFt%Ul;2yS3>pJ zE?h>%h_5Jf-IwAut^1Y(^SN)W@YQGwwSkXk;0^t&|2DYa*zchNAD$At4VMKWsa1Q*HIi}s?u<3c$jGWq zhOJk&KzI%xN_;b~D1Vbtu1&tw@lMV82DXcSJz}!o(fSw)nuk0Ta&9qA*FvK*_2JIM2>QnU1%kQEyW_fb!s%q0f<2Fy>{umdh1!#x=F@1YV>D;mA z5XxNJ+doR9emCO&7Z{a1G~o~u5i@U#6^Kg`H7fkYwwuHRN+y{3d%d|0xUbFsGIa9& zM^g&ioO$fOUM6HQ^>y9g(i#!rD4e}uo!1JEGZ-ED+L2hNE`4mh6=20)T7BBjalcjF zWkOipL>0l)?pEjY5v5`9_mO;1*Sh)>g!}$G5jZ1HHk1LyHcI91E=14Kml=bW=y&U4 z89(*#&h|CGbR#6RUY57m66Bxan_zFTM}m1-;Km zv#g_<8LBe9@H*3z(!*w!g9JDQ0P9Q^3sEWui++`^%m>`eA4HWV-P0vIffbai+&h;4 zgrteMKHm(!8o4N~-%9H0_V-E%?PfiZExgJ19avarATa)d*}iZUP=s|D&SbF8#mwMtw;rRHiXGJ>T2ACJl8V5*JWP2nCM%tQOGIw0 z5Qq_qQ(Z`D)F0}YxOLHfG%Rr4#+OCOH^_GtzRWPDcP&Da&wuwcnO4gC@S`eb&)8Or zPj1I472CIH;m4zu=BH#}-`J0xr~c}5zArOzUnO8MeKeBv+cd)pbj{7DSYJNIj>)WQ z;~38NfrHhBAB>j^9r}FT{)mY77BSZhbJ>BFKW-&l&K z|Nh*y8P>dE?g0AmaCAbUo~yG;!*t5`1x+`uU;nk^4EwU9ONb1WZoWKlMo%_}hmEa_t?yL3P=$4)=4OnpwnR@W80p-u|9Ts-1xy)5!!8y)ILY48 zNvFfi3vzaqcR0rAeT;H?Fcj= z_+Fy^&@EXhI;>Ch@Y<>W-u#1caazd|#EaI064!p?fH9Qy2G@vgAS_MFq|Zp5+&Q;D zS|VQeBTnC@kD8;}r&pa@l1;X5pZ8928fu_ZZjEKoO;Vt^_@Qya$0b%fK2GyK6r*BV0c1^m< zJ0&q+YuQM-T8E?l!<#`iF-u3`kD9TtB9Tt%9%MU+o4B8*sHN}YZW)B4e7|+St&zrf^wkA07^NODJ9nnGEmy1lrJd z?Um;nbRLs5l6)rlOho(H9YXIh&RI4q+hQ$7;Fh2VYm1?SWB(E6HRjRh8;qio0GYj| z0lt%rp(Xrc6;EK>zoPVvZaHS0q1=9DbxfM|iybg`i&s`qQGZMFcMRLq^c4_Knd(Gj zLa)N>F8MTmK##n|k9G;HHUx~S0khJ(dvzg$yL@YprvdNJAm1;?#3?WIzk$={AGTa+ z?$q*V8n#}b{l{E@1zl0!4j!pbSanvURqZP%6YFVbwCb>sk_T%}(@k*-UNh!LGR|m9?vr;Ry!p{RGI2rpxX5I*^01qa zVtm|G(7=jjkxxT1X{pvVmp?xyiwPa&fV{2HX{1cW4+_U4QR3)sUqG>&p){P*%ZiUW zZFl&b^4tXKoC6@%9Po2Z=-ea~*yuCHx@_5T_x6-NQMMuK34#ZAF9At&gisT!{ z<-Rfx^z@l+38cpm9QH*&%C$jgU$QLbfyTw5zV!7Lo(;7hpk3{-+kT-Bwc za@T4R=}u{0`F5RQ62*s%1m)5zy(IGA7cN91m>011-yM~i&X+28W;r0+LVL&@!T>aM zAlK|9M3$Lvg5f91lv+xeUoJ3H``93sd`ho9R^C!DuEYLt^6Dkr1STfZq|u@2xFrY< zEYB?Sr>aeTWz;U9)5%O$#iajPFD}&Wg>*7dIWcXzea_FRasAI#SONG(6rg+kqrAb(0zAKj);S`c5q>V=T=%uz=`wOCGn6VoLliY-r} zk@o+4c1aL^VQ$A-XpbUobq-D7`sV_j7izO7d3~%EHS@zmw%TC1+p0d+*bTJXDm3y{ zC1>Jg1sM7loNIMwOjhxn5GJNP9{aE~oss5z#|N4>9uj}~t2tH?q{OEx-8K&%)=JRJ ziK-=mxXFU<4+rWb>RZk#jZ4~PhJos4?bMkGPG0ZinVc}ztN2P!cyI@zsnH$zx9rqj z5v(zxJJR9DGBRNujN)ZiWBYi;pYi*`rZo6$TLVf~^hG<2JNZN+4Kd1mF`z_DYD+IpiJ$S^V{^~34T26r7mOy1;~y|~Tf`pzpC?-o zq1)~+FK9jTGVq3ht-~wy;y)F$_BD$Nu2{PdTBPd4gm<}ObPnELzBCr+`SQKZ#Kzq&r5B4pBlunt^oZ=#-Apjf8Y} z*WkVU-}k)RIXh=(+r2xxci;OwpXU=Ku~Luy&ooFX{MMvuMzSL>$$#=h;}8*uVT{@^ zlL0051&nTUb2r^&=UZgn|MJ^BC#ct4W(_C=ZN87sa^7``w&X@UuY5oV{Jr`QHk1Z}ZtpRzOo;{O75nPh9uC zuZNOkriD$zLVU@A9NmZUFM~WhV$;Yn#I0v~#MdO2CRD50V#P$9KjR&*^^eLyX&KQX zH%*wc8Dv#C>6hFAp`&h4HAM!)`WRUTayccf_!qf+w?B(;w*LgDupd=HCrb&RVY*nQ zNEe!G`0i!30Q{gv&js~1aAGs2pHj*7>->j?PZ{e(g75`miH9eZu?debna%O<15Fhx zjG02?>>qgx<>m#1T-6EGP=APZ$B{H@kZSbLVmz!~Z`e{zUJgj2N%E38-z_L!>1_5< zuRh1qgnL>yyc}(X~xYEj{r@^vjs#l6*5kek0!mCv3UqzQ0e62iG!;n?1a;plIpL&Oo(eCCj&xo zpJ$(jPMKfkF5vg6?CEFuklLNNEIHyWn^jux=Y3kqpGa_a0b#wZ#Wwi8%YMvJKj)cj z2q5zHO!RUK_{R!{v)o#-XWlo)0I*PCSe;|6!~x zhrqXu03G2nP7oV*>hD66e5)|x#VCRg;9gb}wRgAIykzV^r}!=#zQO(7{PRm#qH{d| z?F|w9^Y!gg){Yg|&bp|EPLCd+#gppw&PK3myWPv@&d8bU#c))J`Zisk&osL2)S z*|Dw2rgxT3x7PgH_O_KaVUL&n-CY!pB~ZqbMg-kf&DbWr!1xh+{Z6O`Msvcu;el8Z z-#JQH`sMlAhK#knEdRrchz&&xKZ^_@zYOfMZfSkSCZH9ovr4~C#`HF*@`O_7L*8UR z9AFy@T;iun3-aBrgO%nsP%wM0#(|Jwozk9qO_yfT1%^HGg2}oa_wQ2DThZR+=EKcJ zn|pUNpQ`6@zt5q#8igIwpI@{OQr06R8xpTCGsg)_$8`Eom7Tb((pU{#j)_V~HN6DX z&aRZ8z9pO?^5826nxs!TGwl22Sypj}^#dZ?@m}9Nigm6k*fx?`2r-;aH#}nrJh!WQ z#R0@E9~DDhg^$2He*PIJ=5!$E(wiMwR1dzK;=V3gbfJZAo>$>2aM|82H^X|I^JxX6 zuV5fV&cORkWc3XdF%9JpI4p8X zL_IQ&y|D(o_z;T!oCd{d=(G~wr8I5%24hyLN2;C^=`f{k{DO+2Mn3iyu~^32?Plw^ zS(y2ar+6f)73j^mzezE6tk}>|U@~?qIzz6BAAf4wg}ZORMFmf)OE|PA+7?yAzg3>^ zvf7sCi^9FOd2V{IVNSejYpz+IgW)RA1VARbzi65#YD$l+K}&uYMhzVY&Pm`5O*zWB zqYqh#EP~N})`Xf$nxCplCUcy8K|e%9U^!W{t?VX?kld z_7Z%x@gtw+)tF>8-)I-_db%b@b!AM6Bw~AfRzbcZpU~U+`cDG)_fENlL#yzI>|Csv zDeAC8%C=D(@352uP5J-3-w{KNpA(NipCfovUBAcfN+?y|d7o(8?k=9amfa%y#SZ(W zFn8fdDC(;0nKN^R2r%fhTNIfiVj}oFYB-PzcnY(5-7JIc&Md}qKbkTCEflV_)pN_} zKZa$H<5Tq$MnDS@4J~GPijJtUjjWRjn|6>YL^JC>#ZgfO|B(<~8&QR!x437%{)Rps zeYp6xmhPg9y{LeIXb2DeMX_1%E-q${*wwwh-g=*Z_HM?z=KA05R})F!w#QdcCGGt! zM{VV!)5@3li4!fTn+Y35O=#5QGeUabKr#DBV|^w{9F^?_;bG&&+)+}V0b2;IP*>jL z82OLN)#)l)g$uH+kiHIQ$}+D4*~Ao1DvWtwpkk`TAKhm-MSN7`k);s}d!H#6WEtUp zd(oY*%7@(5N9dXg;N}fGD&H7Ao8V+c{w4q5sh%@xa~!t3=c#JVZ5(c0s(aNTVzY52 z=qc3rzMS<PX_O9x1X5 zQkPxrI3c*gPcwl9OUO8ry+O)BU_b3xi+(FS?VU7K*363}S(1>%8R#Y4sEg`Sw|9L_ zX#W-R&XrKEeBDs!*Yeg#Z=W zDSoV>a<_vfg7PDg+cKjzQiXRpgk{`Cg=tS|)+$RW)NB=cGlr+PaQVq1c@F@67GB(N?q7)BHQ|3FoN3m@P+j z!aw+g{YX(s4Zo@fr&DwG@pY7~n^PKJlY2&yEvE9_!g*x#Vy9k((7HGRZs+KHy23wO z^D%}J!cjwLr{6GF8{+B^E~w8}P+ZX>?Ah#UTep-O&`uH^fX;za~==C zX5}KkjznUlSQt$Iu_=qC={%eQYzIq3YzC(-_ANrhXR4b{i|D_V8F$rfj^>zM-gCa4 z=JmPHg@D9eUWG0IUd|>*M9Mn@kwvv{j5{|9BSxLp2jIM>echFkCquFfW**RQYDkgF zyy73>^`Do z4^Q$!I^Jgfdg}8YAPBTACb~90arjeVG3uyftGr6xZ1TWv^L_+T{F?Dw(_y&Xm&^Nx zYctPlq7a&(N>Xx=lj30s!V_y{&&RuXx=oSywc6QgR_XFVlZF%1j-+9IFyOuzPa_T} zLJjIWIqI@G>rk;8hl5^dzoad@Xw6M=Vd zt)p7gd2z~khQ#ik{zfyj?Pv&~JX@U!A-Vsz^V`ip|NIo$K6iP;763LL3=Oeo8A>Pk$b z?P4>InUBX4LHAMg?E7uW?b&~(!sko6&3d&}Fn{n0JdUfD1+Qc`*rqH;=Mt@XAwGC! zd1=w?(Svk7Pg?H{eFEs5%JfTKm;-lLSQC*lMr2t`#fa&~#{2>Vdk|L{m^ zLXDH38KehX3;V8??(`{%t9BVsb`(pPQqemRF3N(he&~4G+?7u}Xt%jU!)~M60@+1l z=U#RZkgfWJ>TE5HsVnn-kkoQex92cJnp#SaE%qY@-7x>4b~Kk=Lt&?7E}-cnn?0Y~ z!{GYeP{COS?mAx61WIBcLTQqo;%ZVO-3B{%#uuoZsv z$VEOQDmG=;eH(YZ<0*n>b&T-g96mW&bSw@5;kJEbQ(NLrJadJaYeCV9;W;#uxUxY= z$+LK9RG}tQIf6bN_Vh03Q)i5TqiwvRW|FR=IIG?xdhFTsX9{Q>n2@36xowhdUEc5A znNvSA8__<4TAkp4WH(3SDb{&sI4??4<)raC zc|~9R)*Lw=%_mtk!5hvnh>AA|g9@EM9eRrh?w8Y;MU=Temq%P$%PdI*Y>xQ5AhIiu z2`s5(W@5p520&+~n*i5h@aDpBDI`QY?Hgmu-PY;}X-Yz{>x1F9%L#qshsuHt$Kj?( z7lOOWu>&(pC!w46p3>;#KnV;l{uHnRgFke7vaq+^T@!5=BgqRW? zrC~sF`Oop+Hl4Gt222j=8%I%~dm?!dqAg|g(aPIIQHI`bajWJT^QYlu7f>v*&g&y9$dIPYco)Wrx)&lfdB3T{FR&K+g-jKoJjX2?$y(beLR zqU_C`s`Ol@J1orJ{9deqK@AjPZ!;jpTH>Eo8_;RcpJDr2qR7GF_utjT*Dp#tgvBNH z&34fagIfOt5f$8@ME>u%P*};A3swGYz;Zy)NP4JYSHlJofh#>qC-Ekymii_Z*Mc*bxoMR*Vc;GAA4u$Oz#vOmyp6qSmfi~N2@SE<3^()G|T#3EKn zs*R^13@ka{{%qh6dcmNB;;4tJLaT)yn5fh`Zo!=T`G0eXLQM-l14(7=SkuB)y&^s2 z3i)+K*=eJ7s$r6P3L}&tq}idAPTDig7Bqo>ThOVvUE~lVch)E zNEwGFok@e6s5A=jeb1hO5Wvq3g0|al;1Q`Ejk9CMyx!~AffxzK-c(UzFACxB&nPkr zoSnP{CPzZXLMIpFr$x>`A%y~lDIGbnatwTdrXz;mm`C{89tzC6y#hvIM1}+>sv)5f zKd4^bjLI*)X!PcQtn2&#enQc5e?c{sT*U!lb_DQgb084t7Wv1WSZ#PAIiD<92ZT%GJ-yoNm5tmYZS%!iWSvG_7XbnHz`?>N4QiYZo8F& za|a)}#F`ZK!mG{i_n8(+uXDdoCi6G9E#QF6wlGE3RW<;?EW{_-d*+dAfXVNy-NaGu_|~5=0=j@^W~piW`pJqiz5` zyrRZHNp4ob(Ji;}+}6v~XlSD32*kZT^s%Z%o8w+d-B$j{$&izd5GALs)?+*vc5Lxu zvkI(eHZ=i@g$mj~Rf9{wY?#3R`LQX*gyAMD3^GL>ygCc>*vwL)pJVj~m{3W4XaD|% zEWRXwU9?gu)8EVHgCDX9Ye)`-659Xm&wt?(e=_~L`Jj~$R}NPELO!hfuqCQth3bni zW~w~pvv$;Z)_Dp(@iQEDuEPIT=YeHdy@h6?2s`!u?6=UYtv-OdtJ|NY7k5O*Og^z8 zOa&gpTYw{RGP5+=TOhlKNaZ%Z5=EAbjwlwPhk(QKx{d-#rKHm=p`l-hNVuU+9hul- zGZFc>l!srkz~xzaU{RL{4(E+6*?#voT^d?FsJt9r1PTn+4PvXcq!+P?>AIpvQ_-sz zzmYJ;pzOQ09^2Li+raPOB86Ru!oe~xLInnQkHW_i0PCf$mX*O&a74-G|8ZA7J28bd zh5nX*_PaoIGc&q%M;f7KUuNPruX81BUk11zWV3L&H~}PNla!gZBfz#1LTC?O3pwBU zp_VN4Cg;2Rzw7z+-mOp}US;1}lA%{A_N@elE`xiKLQD9g--W8YHloYuVit4~2~Nfp z7~r3)X6k^P$jY6FPsD=~$riAC}v@Gi;ZOZ2#~w>|NIrs(hAq|il7(fv1%iWdYSTeXCmE^Vc)l&|&AP6hJhU5ke$!#`3PqnntCHsJDg%V6Qz{`?RtU zW71N~M)?hWJ{opY{o-8ih9>;?=;ffWKh5h6VZ)Cuwf@6<0O32o$IL?6dFxgLP5P1M zz<`Eil=!NRssoU0rfD}Mw2ysf5#^DhTnxr?EIgiC^v5Mkrq(Cq^@5YebGp16_1Uy2E&dwOxXGW^OO=0 zg&h9W=BCrGVQmv};{h<^y(!i5IvNS>FMO*^G&AAO#pReIlu&UJg(4TrMXW$7Z3o?+ zM&1IFlP|VLX3wJt$mxyt3mgs_;-BW}w6l4ve!#`zoG1Ou+r$B`IKVFv6J>2bPyk&$ zH?tOz9mnFMPEw9XHlZ6}j;hEqG&Sg9$*z9*#}0dO-t7a)`PJWG>7ibSk*3(m>t}(p z|L$W4O=a)M)_O6M%5B>^iSWNH4cLpip5|9AW7cbIs;CI?PQOT_>IIlP8m}abOT`1| zlUPB`q@QRNK6c#a(y)f-{g*?@&)~Q^?^pVY&@OC#XS4<;nG1}Kam21^bkm7gDE=Ll__~R_rT6##4uP= zbW`GgXBpFTzxVYk8_`0J6#fwM?tjLS;(flSm@x$sx4xzS@M`}7p0-XRy|4YEhaPJ4 zo$!P__)z0U_-sv_rBJg=Tr`I=HC^DPEH*=0P=;zFKW8(9_FjC5E)~k$Dow8Z^2TLn z%2ZPFIAL%l7X6oy1YX3j?_!zFdSpTn5f;HH4vc@>LWl>CN)1Xceys|;E(Qh~T-D5z zVkBhPG5YwqRlZa84L}(rkYr#K#4h}#!8qN?ln5HUW1{|v)-Fp0Jjb1Nzjy)EJ8pu{ zg#N)cRL$CpVCkMDmPxfM#2kF`w5R~%*feYt@?j^$*xwUFF~sqtiR4?dowHI# z#F@2`R=GhyA*4OoP7CJrCK*Q=bx|5NZ7fvR-_;w~ANPZ}@iBXP%bN96iYI*$gg93& zL=i8TmgtuR)Jw}9`{OPA*kTcN6r2yqKdF2_r{9ZSYU?fNm1PjhAIbD)VPIt?-)NWF zIM4g}!<%dGGO_IHo3LE7uk=IWw9DuX*Q*W%QU+(a*uo+ANrH_!89ld{p>p^US(|zY zWC#O28WZWIM)X96!|cxqzuW|~A@aliiG2BJ<`WG+vVNKCfb~qnp^NFul zY_OAfeivk@Jm4UNIpMXJlb{T1FZrBMfE>#&uHSZxg!r+)U0T^dDQvgdq?;U zm9vFtAK>!GJvlFV(FrVabD6`Dfs^1QF9RO}w`C9Dy_M$W>&>%$BJ)C$1x^6DCw?^! z=IyR=3)m+ltj>F+D`vd(Q(-$Iyu0DFni!*7Snti<))bV>WskX@^N0os1o^sVTgQ5u zz0BIY(96kSm7#+Lo%31fa1bpbfr(I-|HG z@U;sSxsD5_4SNL|sayy*eBW~5ir0k>liz+|(E8o)Uid&wJyuMHJ(GNyqfm3Q@g6GW z`BA|6qG$$MK7{$ovAk08X-6r2hxF40sct6!R{}!!iQ_W2$=!l%juew+EZsNI_9Kof z?W#K6&dAxS$o;Pfu`X+vI zv8(+Jo{WbWNh9xB5L7)fU&uyAcMH9@j}ELW7s!MGEVzZGW>tHgmppm5c(F`>t2OD) zx+f8O=JmAw2qoXrJVi|^40;O1vF3`KnYtKXPEQR3P$S7Kq&W-0i8R(l`-*`)krwGe z44n>5`(O3`^$=-q^TH}`#XW#vPhVjEdrckHMxWcL#prd3TFFMlOChh4x-^~Kh4gW~0{;)|@m6)c*EcUB8+bDmvF_6%@fypph zk{;KUu=!Nt!z#@Ndqij)9#9)`5kJCvt-_ds`*%lf`=7I(1>NXiyR#N;NG88{&+_Xl z?)yT=%Mt+%124j^$d@J?HYr3Y;Sj|}7tPD4F}SmS7`P|ycH=A)D1Njj zzgLdKnTy;lY%2zaN4A3aNCvZbOuLequ zx9(Tyo)*L`4DM2|}oVd7| zJ~jl%l8)<0SN&KFpeY$}Za};1Z!;@=wfa4Kw?x%!&z9n56oE|OHLC;sHpmlRK)+C8 z=@;TVKC%}`z2JD}mLw}^)c&=$tu zj`1|7;5m3;dq`79Wfc-NL_!HtVi*FcaiLF8s12>FF9rINM+do_ba^s>Tfn6C-q5jw zaZl14O$uO)n&18j!|ccGN1=h0)y%D_MIa{<;oVukH5jusCpzm4g+;3?8#>~|%04P? zy|=)oH~BbRnh7M%s5M{MKgfo(yFcQ@;-Eju!sb-|(W>%bI&bjJWCjuaxlu0#7L3p2 zp%dh?e8T1}rHGw-R*^%2`>WTJa8G24q>ncz6Mg+Q&+Wa1DMZz?yQ};V9f~uv!eYI! zZ-wL@?%!=V9(a`C7qdFpl=P;&z`jQj+lVvd00=PaT9l(5LLZkho?rZ|FoN3w0Wa9{ zak#0<+B^;pV61>>@9Kc(&;!~30yAd7w6Xnyv-YwPDq_AFU=D1#as#N%CVHcJLueR7 zDh0t|U3yJ!H`O%Y>5LA*#h0f}xoLT7J(8)I;Lf06S!7&^zS8t4@7wa6`|#>u8xx#b z)*o=d_%T+Esi5V7#Amq~?~9VWR@+|${u+VIYs`x`$Aes!iM^sfd{cA#)|&t*$kn&s zR>qgx9efhwYlL;1(OT$qhdEb@DJ~Y08?I=p_{U=BMqX5G{>x(LMNrjhM%ZyUkMqrA zHifRc1HKzguY@)Atq;y1~_$?lFVV_>hNnVi$vDY1HJuHhv z6hgjzF7d|^$~WstdSDHIs3iG4*d_5^cvgoE5@J&LgolTw$PUZJQ5D^-NUo*1LhEl- zUyB&d18BAl66-C?r?dyW!8OgZ524#Hfc?1F#M!%$Hi(AD# ze%#F2b1EkQcf^%`ME54P>%~SKTv#3q;gTS_i5IQ#4d2Ns6L|5K@}w)ub!WruYjdA? z=K|#uM0?~$mgD>P%hnlYqvPcjr+wTQSv+m$*{8yGfFwKU)bTC5=|Xo6SZb`>#dn>< zO7{SCZ8rFatE3B3?^_}pLgQq*O*62`B+@Ty_X$Tb5n-ywBY_I9YRt-Y*|k)K9uOMtmzx3~-XxY-xq8n?G8(RP zq?h6j-{eNAR$safN#m`4k!x;Tl~2+z{WxOi(ZceM?Ee0e#jlC8N6CTj-RrW?vtOcB zv}5^i1$)#TEIP>gT0gqH3dnco_8D8_*4=COp~9qPKjA09Os4Lo7HLOVv3D zAxRwcH7V?bxyBIs^d*B@>zI=2c@GoCrxUVI42Opl7-?Q;Fxa%|yfp{1%pK#QJ-kLc zPk<1T=eO6;h%I!KD-`~7t+L|yiSuVMCM7B+d|@+D!&aQye!XE1BkXCV1GG}L{bFks z^8s|4^W9VVzp)&8I+=OgiUz*#9yF%{BM(z2p2{hi97`4Iji`i zQk-V5_nUnL&9}^z6neL~(Rk8IBFcAPDK4Crvi09?@8V;vf#vrG+1n_x_oD9U=>VVm zPI?1$$Yjkhy6(Y71hw0%+vfaFW4SZj>TJRXlK^MN*G3sp5%@pSUY7Cyt>-!iH@#fx ziB9^A`4U?os}J>!?FdM1Pkec!nE>sgn-kn73Jk24>OSl-RV{BjQFHt43kj0(KKZ1T z18>yQ(aW(GSxZ;i?~U!?pW3GAdCp2cry9GjO_@u7b=g-~B62aTp2i=_x zUe-Jwv-rE^3Ppd*=ZiiL&nMH-kQ5t*n4gexpcgq#Z%WEP?_bd#+mkPsSovd9ODj_v zwUS4N+UBIDI>(q;A_pM?oPm6S6Wt;)z2ea~wD*@x+Ab+Y9Zc2H)`FnT zmGeuvUwd*~q^b`+o_JqQSdj%h^7%RMelHR9GTo)0pJ2fs05ZJ>lBvQu(596P1EtoZ zDuNuDhd{_cVE>~PanAEA+)Y9hEJ|QQ7XVMDKSi#l+(y6iXm~0D8@b{m<%(O`F0i&N z8_qsvX#|qdXy`ebA*`Z{DzL*}pQ+p!vK3{Mv!w6}uvK6qOV_BcRAQWpbcj_v4c}

fx8C6oUL`|m+Y}vRgf&(pMD4vYO*GCkMzJADB`g-_6F~jl4 zldbzcK~oi3P|{RaN^BSefL&yp%i?u!2)UtHZn@gctnkyl?5yUrl#P~^*8msDift9s z)cGZi&Ck~TTaV0keT8+9J_Q5oU>}xCGAibf+6$Y%yS4(?_|Uw)e(F$s@^n;R*e+rzWNas$kC)MyIZP8 zq%NFhQ>(sIzj@ENJU4nUeqMEZ3o@rk!C-3rs_4+tL%ZqCtuuq-_8WuMjuqDBXY%Zw zNkh4ga+DKJG6}7~@eM8bjWB zj{k;DwC}@npp^sG-Up(kXXQ*>QNfL@eVT=W@cdmgLZ3NE7=g?dx-*q zeK|^r(?J1@a4!C8U^frqi?cIPP8J#lbU<91fyI@!NR5bYlD;WxR6l)LET8>I&Oo?) z!-A)$ipq1PyG=EpUQpS}V}Bx|S%N?+?;e|)#bBs!`R_V+^hIg1)xrYKvX}3lfbWzX zmKK9i$Y z0~IntOAt~S>H!SPw-tXg8)|UknSSIwV&4hkEJ-xQMthi+t$KY;^{60b>wB%gYP_tu zANJz=4>j}dE}A4YL*WJun&y$}%(kbBnO15nOaaw7Z#9@!V#SIYY~OyulOPO<(G*OD zkCNP4jvJD7#Z$LnGjJnofEF{|8kB`vAxb`=N{K)z(a!LLaNFYiPg%Mh*{aw9{2kAV zM6-o-N%!YI;0)}NB^nbghplVW@$pf~{GVS}>K71RZw?9mC!NKo>J8RA9Fh#IB9Roh zQ(CP~F8FS8K-ju*`OdwiN%o5$G`yx?s*DY1^k;ePzdaJV0Wd8T$BJ-p2%FVkp4!g7 z58AYqwTAXp*h})VTsZW6_pNMFX^vWIijMqZ&rOKrjp4-3Jx%>IQ;f|9k7i`(ybJ8( zr3#k+x5#0dpD}aJ9ET0wOiY%K+zR!Y`~9u z)-B*JxzJ4zv9bO){*>+&>k~=oaUe@Py?rsYGt8r~m)8Kb*q# pZwc;SiNbk{mE{_q)$+{|b2qTtE;fLRCVT+g6y;Rk7Rwm;{~u(efv5lg diff --git a/ui/ModelModal/src/constants/theme.ts b/ui/ModelModal/src/constants/theme.ts deleted file mode 100644 index a660924..0000000 --- a/ui/ModelModal/src/constants/theme.ts +++ /dev/null @@ -1,253 +0,0 @@ -import { createTheme } from '@mui/material/styles'; -import type { Shadows } from '@mui/material'; -import { zhCN } from '@mui/material/locale'; -import { zhCN as CuiZhCN } from '@c-x/ui/dist/local'; -import onData from '@/assets/images/nodata.png'; - -const defaultTheme = createTheme(); -// 默认主题配置,确保与UI项目主题一致 -export const defaultModelModalTheme = createTheme({ - cssVariables: true, - palette: { - // mode: 'light', - primary: { - main: '#21222D', - }, - error: { - main: '#F64E54', - }, - success: { - main: '#35B37E', - light: '#AAF27F', - dark: '#229A16', - contrastText: '#fff', - }, - warning: { - main: '#FFA500', - }, - info: { - main: '#3248F2', - }, - risk: { - severe: '#FF6262', - critical: '#FFA762', - suggest: '#FFCF62' - }, - disabled: { - main: '#666', - }, - dark: { - dark: '#000', - main: '#14141B', - light: '#20232A', - contrastText: '#fff', - }, - light: { - main: '#fff', - contrastText: '#000', - }, - background: { - default: '#fff', - paper: '#F1F2F8', - }, - text: { - primary: '#21222D', - secondary: 'rgba(33,34,45, 0.7)', - tertiary: 'rgba(33,34,45, 0.5)', - // @ts-ignore - auxiliary: 'rgba(33,34,45, 0.5)', - disabled: 'rgba(33,34,45, 0.2)', - }, - // divider: '#ECEEF1', - }, - shadows: [ - ...defaultTheme.shadows.slice(0, 8), - '0px 10px 20px 0px rgba(54,59,76,0.2)', - ...defaultTheme.shadows.slice(9), - ] as Shadows, - components: { - MuiPaper: { - styleOverrides: { - root: { - backgroundColor: '#fff', - backgroundImage: 'none', - }, - }, - }, - - MuiInputBase: { - styleOverrides: { - root: { - backgroundColor: '#F8F9FA', - fontFamily: `var(--font-gilory), var(--font-HarmonyOS), 'PingFang SC', - 'Roboto', 'Helvetica', 'Arial', sans-serif`, - '.MuiOutlinedInput-notchedOutline': { - borderColor: 'transparent', - }, - '&.Mui-focused .MuiOutlinedInput-notchedOutline': { - borderColor: '#21222D !important', - borderWidth: '10px !important', - }, - borderRadius: '10px !important', - fontSize: 14, - }, - }, - }, - - MuiTypography: { - styleOverrides: { - root: { - fontFamily: `var(--font-gilory), var(--font-HarmonyOS), 'PingFang SC', - 'Roboto', 'Helvetica', 'Arial', sans-serif`, - }, - }, - }, - MuiButtonBase: { - styleOverrides: { - root: { - // lineHeight: '1.5', - fontFamily: `var(--font-gilory), var(--font-HarmonyOS), 'PingFang SC', - 'Roboto', 'Helvetica', 'Arial', sans-serif`, - }, - }, - }, - MuiButton: { - styleOverrides: { - root: { - // lineHeight: '1.5', - borderRadius: '10px', - boxShadow: 'none', - fontFamily: `var(--font-gilory), var(--font-HarmonyOS), 'PingFang SC', - 'Roboto', 'Helvetica', 'Arial', sans-serif`, - }, - }, - }, - // @ts-ignore - MuiLoadingButton: { - styleOverrides: { - root: { - lineHeight: '1.5', - borderRadius: '10px', - }, - }, - }, - MuiInputLabel: { - styleOverrides: { - root: { - fontSize: 14, - }, - }, - }, - MuiMenu: { - styleOverrides: { - paper: { - borderRadius: '10px', - }, - }, - }, - MuiMenuItem: { - styleOverrides: { - root: { - fontFamily: 'var(--font-gilory), var(--font-HarmonyOS)', - fontSize: '14px', - }, - }, - }, - MuiAutocomplete: { - defaultProps: { - slotProps: { - paper: { - elevation: 8, - }, - }, - }, - styleOverrides: { - paper: { - borderRadius: '10px', - }, - option: { - fontSize: '14px', - fontFamily: 'var(--font-gilory), var(--font-HarmonyOS)', - }, - }, - }, - MuiFormLabel: { - styleOverrides: { - root: { - fontFamily: 'var(--font-gilory), var(--font-HarmonyOS)', - }, - asterisk: { - color: '#F64E54', - }, - }, - }, - MuiLink: { - styleOverrides: { - root: { - textDecoration: 'none', - }, - }, - }, - MuiTableCell: { - styleOverrides: { - root: { - borderColor: '#eee', - paddingLeft: '24px !important', - fontFamily: 'var(--font-gilory), var(--font-HarmonyOS)', - padding: '25px 12px 26px !important', - '&:first-of-type': { - paddingLeft: '16px !important', - }, - }, - head: { - paddingTop: '0 !important', - paddingBottom: '0 !important', - height: '50px', - backgroundColor: '#f8f9fa', - borderBottom: 'none !important', - }, - body: { - borderBottom: '1px dashed', - borderColor: '#ECEEF1', - }, - }, - }, - }, - }, - zhCN, - CuiZhCN, - { - components: { - CuiEmpty: { - defaultProps: { - image: onData, - imageStyle: { - width: '150px', - }, - }, - }, - }, - -}); - -// 主题合并工具函数 - 以用户自定义主题为主 -// 深度合并函数 -const deepMerge = (target: any, source: any): any => { - const result = { ...target }; - - for (const key in source) { - if (source.hasOwnProperty(key)) { - if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) { - result[key] = deepMerge(target[key] || {}, source[key]); - } else { - result[key] = source[key]; - } - } - } - - return result; -}; - -export const mergeThemeWithDefaults = (userTheme: any) => { - return deepMerge(defaultModelModalTheme, userTheme); -}; \ No newline at end of file diff --git a/ui/ModelModal/src/index.ts b/ui/ModelModal/src/index.ts index 814318b..289fa85 100644 --- a/ui/ModelModal/src/index.ts +++ b/ui/ModelModal/src/index.ts @@ -10,7 +10,6 @@ export { ConstsModelType } from './types/types'; // 常量 export { DEFAULT_MODEL_PROVIDERS, getProvidersByType } from './constants/providers'; export { LOCALE_MESSAGES, getLocaleMessage, getTitleMap } from './constants/locale'; -export * from './constants/theme'; // 主题类型声明会通过TypeScript自动包含 diff --git a/ui/ModelModal/src/types/theme.d.ts b/ui/ModelModal/src/types/theme.d.ts deleted file mode 100644 index 79fa6b5..0000000 --- a/ui/ModelModal/src/types/theme.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/// - -import type { PaletteColorChannel } from '@mui/material'; - -declare module '@mui/material/styles' { - interface TypeText { - tertiary: string; - auxiliary: string; - } - - interface TypeBackground { - paper2: string; - } - - interface Palette { - light: Palette['primary'] & PaletteColorChannel; - dark: Palette['primary'] & PaletteColorChannel; - disabled: Palette['primary'] & PaletteColorChannel; - risk: { - severe: string; - critical: string; - suggest: string; - }; - } - - // allow configuration using `createTheme` - interface PaletteOptions { - light?: PaletteOptions['primary'] & Partial; - dark?: PaletteOptions['primary'] & Partial; - disabled?: PaletteOptions['primary'] & Partial; - risk?: { - severe?: string; - critical?: string; - suggest?: string; - }; - text?: Partial; - background?: Partial; - } -} - -declare module '@mui/material/Button' { - interface ButtonPropsColorOverrides { - light: true; - dark: true; - } -} - -import type {} from '@mui/material/themeCssVarsAugmentation'; \ No newline at end of file diff --git a/usecase/modelkit.go b/usecase/modelkit.go index c967899..4bde601 100644 --- a/usecase/modelkit.go +++ b/usecase/modelkit.go @@ -18,6 +18,7 @@ import ( "github.com/cloudwego/eino-ext/components/model/openai" "github.com/cloudwego/eino/components/model" "github.com/cloudwego/eino/schema" + "github.com/go-playground/validator/v10" "github.com/ollama/ollama/api" "google.golang.org/genai" @@ -27,7 +28,19 @@ import ( "github.com/chaitin/ModelKit/utils" ) +// 全局验证器实例 +var validate *validator.Validate + +func init() { + validate = validator.New() +} + func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelListResp, error) { + // 验证请求参数 + if err := validate.Struct(req); err != nil { + return nil, fmt.Errorf("参数验证失败: %w", err) + } + httpClient := &http.Client{ Timeout: time.Second * 30, Transport: &http.Transport{ @@ -104,6 +117,13 @@ func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelList } func CheckModel(ctx context.Context, req *domain.CheckModelReq) (*domain.CheckModelResp, error) { + // 验证请求参数 + if err := validate.Struct(req); err != nil { + return &domain.CheckModelResp{ + Error: fmt.Sprintf("参数验证失败: %v", err), + }, nil + } + checkResp := &domain.CheckModelResp{} modelType := consts.ModelType(req.Type) modelProvider := consts.ModelProvider(req.Provider)