From bd84a1f1d66e59413cd39ac6988e8e666d2c9fec Mon Sep 17 00:00:00 2001 From: maftwonfv <3526208476@qq.com> Date: Mon, 18 Nov 2024 19:16:13 +0800 Subject: [PATCH] 1 --- src/flaskProject/.idea/.gitignore | 8 + src/flaskProject/.idea/.name | 1 + src/flaskProject/.idea/flaskProject.iml | 19 +++ .../inspectionProfiles/profiles_settings.xml | 6 + src/flaskProject/.idea/misc.xml | 4 + src/flaskProject/.idea/modules.xml | 8 + .../__pycache__/config.cpython-39.pyc | Bin 0 -> 713 bytes .../__pycache__/run.cpython-39.pyc | Bin 0 -> 311 bytes .../__pycache__/zp.cpython-39.pyc | Bin 0 -> 761 bytes src/flaskProject/app.db | Bin 0 -> 49152 bytes src/flaskProject/app/__init__.py | 47 ++++++ .../app/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 1374 bytes .../app/__pycache__/ai_service.cpython-39.pyc | Bin 0 -> 1522 bytes src/flaskProject/app/ai_service.py | 41 +++++ src/flaskProject/app/models/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 192 bytes .../models/__pycache__/models.cpython-39.pyc | Bin 0 -> 5534 bytes src/flaskProject/app/models/models.py | 158 ++++++++++++++++++ src/flaskProject/app/routes/__init__.py | 7 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 348 bytes .../routes/__pycache__/auth.cpython-39.pyc | Bin 0 -> 2950 bytes .../routes/__pycache__/chat.cpython-39.pyc | Bin 0 -> 2373 bytes .../routes/__pycache__/main.cpython-39.pyc | Bin 0 -> 1889 bytes .../routes/__pycache__/records.cpython-39.pyc | Bin 0 -> 3234 bytes .../__pycache__/settings.cpython-39.pyc | Bin 0 -> 1821 bytes .../routes/__pycache__/triage.cpython-39.pyc | Bin 0 -> 2920 bytes src/flaskProject/app/routes/auth.py | 106 ++++++++++++ src/flaskProject/app/routes/chat.py | 96 +++++++++++ src/flaskProject/app/routes/main.py | 71 ++++++++ src/flaskProject/app/routes/records.py | 111 ++++++++++++ src/flaskProject/app/routes/settings.py | 57 +++++++ src/flaskProject/app/routes/triage.py | 116 +++++++++++++ src/flaskProject/app/static/css/style.css | 139 +++++++++++++++ src/flaskProject/app/static/js/main.js | 130 ++++++++++++++ src/flaskProject/app/static/uploads/2_1.png | Bin 0 -> 182253 bytes .../app/templates/auth/login.html | 37 ++++ .../app/templates/auth/profile.html | 100 +++++++++++ .../app/templates/auth/register.html | 112 +++++++++++++ .../app/templates/auth/reset_password.html | 65 +++++++ .../auth/reset_password_request.html | 37 ++++ src/flaskProject/app/templates/base.html | 155 +++++++++++++++++ src/flaskProject/app/templates/chat/list.html | 38 +++++ src/flaskProject/app/templates/chat/room.html | 94 +++++++++++ .../app/templates/main/ai_consult.html | 143 ++++++++++++++++ .../app/templates/main/index.html | 124 ++++++++++++++ .../app/templates/records/list.html | 104 ++++++++++++ .../app/templates/records/new.html | 117 +++++++++++++ .../app/templates/records/view.html | 125 ++++++++++++++ .../app/templates/settings/settings.html | 41 +++++ .../app/templates/triage/manage.html | 101 +++++++++++ .../app/templates/triage/triage.html | 153 +++++++++++++++++ src/flaskProject/config.py | 19 +++ src/flaskProject/requirements.txt | 36 ++++ src/flaskProject/run.py | 6 + src/flaskProject/scripts/__init__.py | 0 src/flaskProject/scripts/init_db.py | 158 ++++++++++++++++++ src/flaskProject/zp.py | 25 +++ 57 files changed, 2915 insertions(+) create mode 100644 src/flaskProject/.idea/.gitignore create mode 100644 src/flaskProject/.idea/.name create mode 100644 src/flaskProject/.idea/flaskProject.iml create mode 100644 src/flaskProject/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 src/flaskProject/.idea/misc.xml create mode 100644 src/flaskProject/.idea/modules.xml create mode 100644 src/flaskProject/__pycache__/config.cpython-39.pyc create mode 100644 src/flaskProject/__pycache__/run.cpython-39.pyc create mode 100644 src/flaskProject/__pycache__/zp.cpython-39.pyc create mode 100644 src/flaskProject/app.db create mode 100644 src/flaskProject/app/__init__.py create mode 100644 src/flaskProject/app/__pycache__/__init__.cpython-39.pyc create mode 100644 src/flaskProject/app/__pycache__/ai_service.cpython-39.pyc create mode 100644 src/flaskProject/app/ai_service.py create mode 100644 src/flaskProject/app/models/__init__.py create mode 100644 src/flaskProject/app/models/__pycache__/__init__.cpython-39.pyc create mode 100644 src/flaskProject/app/models/__pycache__/models.cpython-39.pyc create mode 100644 src/flaskProject/app/models/models.py create mode 100644 src/flaskProject/app/routes/__init__.py create mode 100644 src/flaskProject/app/routes/__pycache__/__init__.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/auth.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/chat.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/main.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/records.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/settings.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/__pycache__/triage.cpython-39.pyc create mode 100644 src/flaskProject/app/routes/auth.py create mode 100644 src/flaskProject/app/routes/chat.py create mode 100644 src/flaskProject/app/routes/main.py create mode 100644 src/flaskProject/app/routes/records.py create mode 100644 src/flaskProject/app/routes/settings.py create mode 100644 src/flaskProject/app/routes/triage.py create mode 100644 src/flaskProject/app/static/css/style.css create mode 100644 src/flaskProject/app/static/js/main.js create mode 100644 src/flaskProject/app/static/uploads/2_1.png create mode 100644 src/flaskProject/app/templates/auth/login.html create mode 100644 src/flaskProject/app/templates/auth/profile.html create mode 100644 src/flaskProject/app/templates/auth/register.html create mode 100644 src/flaskProject/app/templates/auth/reset_password.html create mode 100644 src/flaskProject/app/templates/auth/reset_password_request.html create mode 100644 src/flaskProject/app/templates/base.html create mode 100644 src/flaskProject/app/templates/chat/list.html create mode 100644 src/flaskProject/app/templates/chat/room.html create mode 100644 src/flaskProject/app/templates/main/ai_consult.html create mode 100644 src/flaskProject/app/templates/main/index.html create mode 100644 src/flaskProject/app/templates/records/list.html create mode 100644 src/flaskProject/app/templates/records/new.html create mode 100644 src/flaskProject/app/templates/records/view.html create mode 100644 src/flaskProject/app/templates/settings/settings.html create mode 100644 src/flaskProject/app/templates/triage/manage.html create mode 100644 src/flaskProject/app/templates/triage/triage.html create mode 100644 src/flaskProject/config.py create mode 100644 src/flaskProject/requirements.txt create mode 100644 src/flaskProject/run.py create mode 100644 src/flaskProject/scripts/__init__.py create mode 100644 src/flaskProject/scripts/init_db.py create mode 100644 src/flaskProject/zp.py diff --git a/src/flaskProject/.idea/.gitignore b/src/flaskProject/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/src/flaskProject/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/src/flaskProject/.idea/.name b/src/flaskProject/.idea/.name new file mode 100644 index 0000000..e56fbdd --- /dev/null +++ b/src/flaskProject/.idea/.name @@ -0,0 +1 @@ +run.py \ No newline at end of file diff --git a/src/flaskProject/.idea/flaskProject.iml b/src/flaskProject/.idea/flaskProject.iml new file mode 100644 index 0000000..ef81496 --- /dev/null +++ b/src/flaskProject/.idea/flaskProject.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/flaskProject/.idea/inspectionProfiles/profiles_settings.xml b/src/flaskProject/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/src/flaskProject/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/src/flaskProject/.idea/misc.xml b/src/flaskProject/.idea/misc.xml new file mode 100644 index 0000000..d56657a --- /dev/null +++ b/src/flaskProject/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/flaskProject/.idea/modules.xml b/src/flaskProject/.idea/modules.xml new file mode 100644 index 0000000..2c2d842 --- /dev/null +++ b/src/flaskProject/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/flaskProject/__pycache__/config.cpython-39.pyc b/src/flaskProject/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e1e84a4d43eed0c610bc37a6d95674773df2fb0 GIT binary patch literal 713 zcmYjP&2HL25MKWP4hc<*D&^(HF+@>S$C%*87y?FWR!FPGYZ4PDCbm;c4SirZ=*+mF zd>B)4j*}}Y&O-l|<|a7yh#%3t;kl(*ddKKqpqA!nC)&_Jqk&0ZZ4{h=rk|m1uVuDP zU31KyJ*0(E-|A^C)b3d=V?c{t?H$s4wqw{1vJCsw>A+psG5aIUL|WfWr}ze<=j_fa z_%mWr`)HitaDv0JESH<5Utd3$et!Q_swsy`t*TV(s#;SOS!R-?TUXku!-@?xYOs9u=%hjB#JPiGb_xbYZ zeY`z;QG5_bK^!D$8l`aDn%+PRV!{*q-eXlP3=0dwd+V}l$_v( zDjon1?G0XmN7*YvhzH;b%sN3TBh8F=*7Ns$OSiWh2;_Xx8Gj@QeKUvq0x|R)R5ihH z#Bq)$IKdck!mW2GA>8H;c#FGlP~iQ9zfgd+mt3ah?8OnoCa@7x%bX8Em1(;~8Cu~b zhD>~7vRE;##Iy=XvLl5mi>VT$iBO7;g|r~y3z9atUuR$j2g8aM=d>7x;akmue{ce#JrM} zRin)qrlT_b5OJ||!T-08xp6@2bq4TJ0X&@CV6#$&Gm=@{;`S18=Mx!Y?%t3Usq7`m z9PT|qnfn&6tfh79ai4G9kz1epcLs{a$s&w7WpSTg?4L)p6L(+<9=caOv+qTDNv$aCIziTjRv2X^ArfI?oL0=wG($F0V)=5uWfmf8YV%+pXiU=VI#9~0vLA-`RBhsehe nJAs1U!aOgU)+5$))K~Y48FFM@(SHit&T{e0ELqd}koewTt--bT literal 0 HcmV?d00001 diff --git a/src/flaskProject/app.db b/src/flaskProject/app.db new file mode 100644 index 0000000000000000000000000000000000000000..9cd8154dc54bce0e6d541ed6777770c3e470080f GIT binary patch literal 49152 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 OKmZ5;0U*$f!2bY?JpWDr literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/__init__.py b/src/flaskProject/app/__init__.py new file mode 100644 index 0000000..be93c3f --- /dev/null +++ b/src/flaskProject/app/__init__.py @@ -0,0 +1,47 @@ +from flask import Flask +from flask_sqlalchemy import SQLAlchemy +from flask_login import LoginManager +from config import Config +import os + +# 初始化扩展 +db = SQLAlchemy() +login_manager = LoginManager() + +def create_app(config_class=Config): + # 创建Flask应用实例 + app = Flask(__name__) + app.config.from_object(config_class) + + # 确保上传目录存在 + os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) + + # 初始化扩展 + db.init_app(app) + login_manager.init_app(app) + + # 配置登录管理器 + login_manager.login_view = 'auth.login' + login_manager.login_message = '请先登录' + login_manager.login_message_category = 'info' + + # 注册蓝图 + from app.routes import auth, main, triage, records, settings, chat + app.register_blueprint(auth.bp) + app.register_blueprint(main.bp) + app.register_blueprint(triage.bp) + app.register_blueprint(records.bp) + app.register_blueprint(settings.bp) + app.register_blueprint(chat.bp) + + # 用户加载函数 + from app.models.models import User + @login_manager.user_loader + def load_user(id): + return User.query.get(int(id)) + + # 创建数据库表 + with app.app_context(): + db.create_all() + + return app \ No newline at end of file diff --git a/src/flaskProject/app/__pycache__/__init__.cpython-39.pyc b/src/flaskProject/app/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e89726920d10345bb51026a40034ba2a57fe1faf GIT binary patch literal 1374 zcmaJ>&u<$=6rR~%Ua!|_+NL3`s1ykaWDZdr6Oy8;qN3y!(n4Dy7E7b`&e&OJf4DPa z+En%_MHC^_69;a|jh;9nf%r$}ilV|Fz=adGAp+uyRz-f$=%4UY$x;bT2!lSH}fN3*heI) z3l}gDwLaw@uRWttgS+=h%l`v1lNL4ZP8O>JFoOFZ@7~UmeUTr67w(pWwD>44;(?Ih zdmofVKOO8P6yG~*b(nn^NLTsrL=#Pq=#)dXXv8O=~W=l?Qbnu^Nwp1 zT0Qm8E$(Qa)wv58a1XG-YuwMmyg9YIuYr3T1Gh zA3+g{#WqoYt-~tz&tOa_$Q$lO&4>4P@7}({cJA)p`S6nmprJ3Gq)M~$;As$#_5NCh z5|2X=@An^nI{otbtM7j~{q;NJq(#4!sB_CR4n`U$kJG|Y7yW$8IohFtqD1T3IJES*RqZKXe{KRu?IpMJ1sQO zwNfq@;Dwju&(C4nd9SPEvKN=#c6;r{>Z>2VSv~#v#p*`q-Ok2(XMJ;PYh$a^Zg1b{ z;M&GJo7>x+_U6|5Y^~eJV|GuLLy_oiJQ{TwON&%9wl+F6^{k9J8w2;ZkfsGdtf$u# zDPk=cM6cb<$|TOzEfDQ2vUN>jobeee;#@Fhyrep#rqP#W&dMHs%2*}nl*b2xr&1Y< z_aeXgE+jS0ssb#Zo$@G{xnHE>adiGjC0+>ru450c#vR*b8BMBNCt2c@+VurlrB2#CRya4f01Jz)-TOmyYf*9;h zizhk?&SlB6R^5cNO|t~_RmO(E|0g1skgC z==LfN|Lt~29lGEI^i4~?0nx3{xK)j-szi&G&D5hTp8ZoK{v@KtY`IcX;<1z~2=EUi l@*2YH2-guX>5OMZwt|YRe-q>yXW|wfZH1dSr{yD2>u=C*SsnlY literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/__pycache__/ai_service.cpython-39.pyc b/src/flaskProject/app/__pycache__/ai_service.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0c3ba35eb8d1c8bb39452bbfddc7c975d331fdee GIT binary patch literal 1522 zcmZ8h-Af}^6u)<7G8q$H?XoOgC^WArD8^`Ymr^QaOQj&f(v}@8VKy_yWG9($XQr%@ zl*Q<}Rbwn#?fTIwRq8JIMT^F`w*SXKpLS*vpZ2Lwg>BEBDAit=d(J)Q&iS~%-@Q^( zQvkvE`-`5$pBzH3=;HEVVDS-rdM8XWlCg@?Sj3p>jLM{0kp-QVxp5?NvQOqg`eeT> zfaK+ddng<@gFjIiTYhmknKgU+Kn=!CLX?aVld{=3rvCFm)6w@)&S40I z%@7#e(wtLTbe~mf`v<*!&V13SEZF6p>hierWWw1!ritQO#(?NyMr zTAh}F7#lVFQ1O?ja5t!I3$P@*GB^??L3o^(HxBT+49< zyn@!44M5fi%E1C2gZ=lB+?eOS;WB}`Y)9>20VtY0C~EtK>caK~6z=SnQ~J3!dj#+} zD?e6u7OZCR)4qYvd;4O&1AVd2?%oe$(Jy6_v4_gYXdt1cTRU5`s;OI?2}c%YERJYu z9U)lw(weNOmT(T7PAD%%eWo$g+GFv_L`EZuc@u2CeeP<}ncAqA<7^((e%rbeGQ*c# z?(&$sbZD20PH7KHe*JQ$ws%zBE;@6wXOqR+-uM0CWBi6L@quo8DcQ5 zrL(GHB!NfZB8p@v9&|voVGV%RE&q9u7O!ODP`1U(iYFWHK8h<@`m4pOS_1fI`4mDl zVzIhG!amXG5d*@iNnorcT=3Q6K{Hju!ivY$`oz=fSYTWb6#Z?O5X0aWEMSHa{$bwm zd<(vTui=}RyaT=~+@kH#?mTYY07b?*v;wSJWAoTRIb5KZj5V)=>m0?Ilj`D8f3>*yYD|`Gw={fNMDQ-2HaCeyr~Lv0L1=PqysxbaiR6I&}zF*8Y9P zdAjEAY}KQ^e!1+$s{3JO9@6lh4Unn-aIq=U76RC6g;TiW)ujn%W!>A?0cNi>XaAtK zH&y-RJ7;&(^F-T1?yuYKc*(9zpKTof7uGXE*xDb@oYD*ThrO#c%{UWB_USwXa~F4@ z4CsM2xbPDsw#)N&dD(fo2`*^gnSAo<@tBt_Tt91Ite}sivxb%imShQV#`r&S*At2X z50RXVOKMD#=_5g5(gm0RNQQYM1j)Og_lNzWf0RC#Qqtq4+A-(s=P3aU(16!dw3W_VEoN literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/ai_service.py b/src/flaskProject/app/ai_service.py new file mode 100644 index 0000000..775b6b7 --- /dev/null +++ b/src/flaskProject/app/ai_service.py @@ -0,0 +1,41 @@ +from zhipuai import ZhipuAI +from flask import current_app + + +def extract_content(response_message): + """提取智谱AI响应中的内容""" + content = response_message.content + return content + + +def ask(conte): + """调用智谱AI接口获取回答""" + try: + client = ZhipuAI(api_key=current_app.config['ZHIPUAI_API_KEY']) + response = client.chat.completions.create( + model="glm-4-plus", + messages=[ + {"role": "user", "content": conte}, + ], + ) + result = extract_content(response.choices[0].message) + return result.encode('utf-8', 'ignore').decode('utf-8') + except Exception as e: + current_app.logger.error(f"AI服务调用失败: {str(e)}") + raise Exception("AI服务暂时不可用,请稍后重试") + + +def get_medical_advice(symptoms): + """获取医疗建议""" + prompt = f""" + 作为一个医疗AI助手,请根据以下症状提供初步建议: + 症状:{symptoms} + + 请提供: + 1. 可能的病因 + 2. 建议就诊科室 + 3. 注意事项 + + 请注意:这只是初步建议,具体诊断请以医生的专业判断为准。 + """ + return ask(prompt) \ No newline at end of file diff --git a/src/flaskProject/app/models/__init__.py b/src/flaskProject/app/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/flaskProject/app/models/__pycache__/__init__.cpython-39.pyc b/src/flaskProject/app/models/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cbb4bef522af257914c2da058d9a6d04fa8cde4c GIT binary patch literal 192 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 KJNXb#%l!eaQcTkT literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/routes/__pycache__/auth.cpython-39.pyc b/src/flaskProject/app/routes/__pycache__/auth.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..848b8a280329bab3d35260b657d9c34236e60be1 GIT binary patch literal 2950 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 ZMcFRBiRW<5{zyba9I-hdsdgs>`5$>F-o*d_ literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/routes/__pycache__/records.cpython-39.pyc b/src/flaskProject/app/routes/__pycache__/records.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..208cf16ac0066120c14001b0b2ad79e4614454b5 GIT binary patch literal 3234 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 literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/routes/__pycache__/triage.cpython-39.pyc b/src/flaskProject/app/routes/__pycache__/triage.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff78c99475faf013a411eeabfe18e1afb75a7dcb GIT binary patch literal 2920 zcmZuzTaO$^74E9;>F(*d?ad(|BaD!ML1DcY-x65{f@5C5M691$8x7;B_Ik$M)8pzI z$gXBkq&3JftV|>%{KZ4Ll%_Ey3T2>VX%Swf7nEKok+d8y`EwwA6;JkO5Mc=xTL}wU!b6_ep`AFPlN7=Nqd6YC zi5Gf_ANoeN<6;toK~f4!NjWT=F(_<*L!oB3ZX}`I2lmH=^%EtyBsRMk!* z?JBc;%R8Pk+Wy8%m$dWpx7RK~&r2e8H5FNld^q@dV2XIYjwjm#QC5cuc8$xwf#V}v z@G%=&!X7eV4Y_bc;f6J^MvidD>^$N*vy@RUqY53j;|(0)?XZzQwuXg4L7o~E zI>iCI=H%RvK@Nue`l$iWexORUf+9X$!BtsRI@JNkV~JqE-m>m;QG#51%M#_gwy3C? z(d^g~)g5o>s=3bmXkh?Lm}U4QV+-6fqDCtY)`S0qn0edTW^0yuR?O17K6g>hz+3HS zd5p7t2C+rt;K#vG*{&wfF&mVjEs~;bm+`oNnW%bnR%F^o6$Ac5d-d=>zs0mBZBYei`a}cXsz*dvo%mA3nVI2Iib@Gl}{xCLZ3uH@W#+ zqceGM|IzO5GI><8cnoN)^E|?bw_@VmIsGh%Foh3Nkmx-!B_3H zyET_@Ij#Q1t15}>pOlnC?dHX=ohzwKw7n52WUUvsl_cEK1$3<3)Ws|9SfQ6MQ_r>~ zdboOEZzG1`vHU!=Wr+xNjr3_ThjX7MsX~(5SFLXPeMw=3{V*P;X}c+ec9Ek5M;1u= z3q)*?x@STYmXqeIjf3OD83_@-$%$%Ca zYSTa;zY2p=x%m{ZQ1_6Z23RhDAzS|U@E^BQ4Pwg6_7ZrZI^^NMkrawC&pqMdBue4g*;Aj&Tjq0GxAn)MOv zyk>%yjDW?0D%YXHgbn$=QJ!gTER!$L+Q%Sa(xa=>c9-cbPi0Uy}727(=DSWrQyG%61Y2BL|t z7>EX_lO5f2IH&x?*%j>Js$!=)su8SD*U$W)^;P2sY2rEjJIH2=@*?3bOh_jzh(E z)(~k6ttct`+Q%mbJ~LW?(Y}luKt5C1@{434%#tsqdJrXJMtwW|5N#u+`&fP0N;d0b`Hb> zFadlxfQl0cnZE%b0wMmP>j97eNe6QQz>8!8E&h@G7IwH;e%|=7>%ROX?E@^|g rrd^FWPdIKuK(MU+vp5AQJ;xwr6vLxzhAoi0Jg{frOnKEOS|a|xyoeDM literal 0 HcmV?d00001 diff --git a/src/flaskProject/app/routes/auth.py b/src/flaskProject/app/routes/auth.py new file mode 100644 index 0000000..479ad5e --- /dev/null +++ b/src/flaskProject/app/routes/auth.py @@ -0,0 +1,106 @@ +from flask import Blueprint, render_template, redirect, url_for, flash, request +from flask_login import login_user, logout_user, login_required, current_user +from app.models.models import User, Department +from app import db + +bp = Blueprint('auth', __name__) + + +@bp.route('/login', methods=['GET', 'POST']) +def login(): + if current_user.is_authenticated: + return redirect(url_for('main.index')) + + if request.method == 'POST': + username = request.form.get('username') + password = request.form.get('password') + remember = request.form.get('remember', False) + + user = User.query.filter_by(username=username).first() + if user and user.check_password(password): + login_user(user, remember=remember) + next_page = request.args.get('next') + return redirect(next_page or url_for('main.index')) + flash('用户名或密码错误') + + return render_template('auth/login.html') + + +@bp.route('/register', methods=['GET', 'POST']) +def register(): + if current_user.is_authenticated: + return redirect(url_for('main.index')) + + if request.method == 'POST': + username = request.form.get('username') + email = request.form.get('email') + password = request.form.get('password') + role = request.form.get('role', 'patient') + + if User.query.filter_by(username=username).first(): + flash('用户名已存在') + return redirect(url_for('auth.register')) + + if User.query.filter_by(email=email).first(): + flash('邮箱已被注册') + return redirect(url_for('auth.register')) + + user = User(username=username, email=email, role=role) + user.set_password(password) + + if role == 'doctor': + department_id = request.form.get('department') + title = request.form.get('title') + user.department_id = department_id + user.title = title + + db.session.add(user) + db.session.commit() + + flash('注册成功,请登录') + return redirect(url_for('auth.login')) + + departments = Department.query.all() + return render_template('auth/register.html', departments=departments) + + +@bp.route('/logout') +@login_required +def logout(): + logout_user() + return redirect(url_for('main.index')) + + +@bp.route('/profile', methods=['GET', 'POST']) +@login_required +def profile(): + if request.method == 'POST': + email = request.form.get('email') + current_password = request.form.get('current_password') + new_password = request.form.get('new_password') + + if current_password and new_password: + if current_user.check_password(current_password): + current_user.set_password(new_password) + flash('密码修改成功') + else: + flash('当前密码错误') + + if email != current_user.email: + if User.query.filter_by(email=email).first(): + flash('邮箱已被使用') + else: + current_user.email = email + flash('邮箱修改成功') + + if current_user.is_doctor(): + department_id = request.form.get('department') + title = request.form.get('title') + current_user.department_id = department_id + current_user.title = title + + db.session.commit() + return redirect(url_for('auth.profile')) + + departments = Department.query.all() + return render_template('auth/profile.html', departments=departments) \ No newline at end of file diff --git a/src/flaskProject/app/routes/chat.py b/src/flaskProject/app/routes/chat.py new file mode 100644 index 0000000..ac93015 --- /dev/null +++ b/src/flaskProject/app/routes/chat.py @@ -0,0 +1,96 @@ +from flask import Blueprint, render_template, request, jsonify +from flask_login import login_required, current_user +from app.models.models import Message, User +from app import db + +# 将 chat_bp 改为 bp +bp = Blueprint('chat', __name__) + + +@bp.route('/chat') +@login_required +def chat_list(): + """聊天列表""" + if current_user.is_doctor(): + # 医生查看与其对话的患者列表 + chats = db.session.query(User).join( + Message, + (Message.sender_id == User.id) | (Message.receiver_id == User.id) + ).filter( + (Message.sender_id == current_user.id) | + (Message.receiver_id == current_user.id) + ).distinct().all() + else: + # 患者查看与其对话的医生列表 + chats = User.query.filter_by(role='doctor').all() + + return render_template('chat/list.html', chats=chats) + + +@bp.route('/chat/') +@login_required +def chat_room(user_id): + """聊天室""" + other_user = User.query.get_or_404(user_id) + + # 获取聊天记录 + messages = Message.query.filter( + ((Message.sender_id == current_user.id) & (Message.receiver_id == user_id)) | + ((Message.sender_id == user_id) & (Message.receiver_id == current_user.id)) + ).order_by(Message.created_at.asc()).all() + + # 标记消息为已读 + unread_messages = Message.query.filter_by( + receiver_id=current_user.id, + sender_id=user_id, + read=False + ).all() + + for msg in unread_messages: + msg.read = True + db.session.commit() + + return render_template('chat/room.html', other_user=other_user, messages=messages) + + +@bp.route('/chat/send', methods=['POST']) +@login_required +def send_message(): + """发送消息""" + try: + receiver_id = request.form.get('receiver_id') + content = request.form.get('content') + + if not all([receiver_id, content]): + return jsonify({'success': False, 'message': '参数不完整'}) + + message = Message( + sender_id=current_user.id, + receiver_id=receiver_id, + content=content + ) + db.session.add(message) + db.session.commit() + + return jsonify({ + 'success': True, + 'message': { + 'id': message.id, + 'content': message.content, + 'created_at': message.created_at.strftime('%Y-%m-%d %H:%M:%S') + } + }) + except Exception as e: + db.session.rollback() + return jsonify({'success': False, 'message': str(e)}) + + +@bp.route('/chat/unread_count') +@login_required +def get_unread_count(): + """获取未读消息数""" + count = Message.query.filter_by( + receiver_id=current_user.id, + read=False + ).count() + return jsonify({'count': count}) \ No newline at end of file diff --git a/src/flaskProject/app/routes/main.py b/src/flaskProject/app/routes/main.py new file mode 100644 index 0000000..eaafc3f --- /dev/null +++ b/src/flaskProject/app/routes/main.py @@ -0,0 +1,71 @@ +from flask import Blueprint, render_template, jsonify, request +from flask_login import login_required, current_user +from app.models.models import ChatHistory +from app import db +from app.ai_service import ask + +bp = Blueprint('main', __name__) + + +@bp.route('/') +def index(): + return render_template('main/index.html') + + +@bp.route('/ai_consult', methods=['GET', 'POST']) +@login_required +def ai_consult(): + if request.method == 'POST': + question = request.form.get('question') + + # 保存用户问题 + user_message = ChatHistory( + user_id=current_user.id, + message_type='user', + message=question + ) + db.session.add(user_message) + + # 获取AI回答 + try: + ai_response = ask(question) + + # 保存AI回答 + ai_message = ChatHistory( + user_id=current_user.id, + message_type='ai', + message=ai_response + ) + db.session.add(ai_message) + db.session.commit() + + return jsonify({ + 'status': 'success', + 'answer': ai_response + }) + except Exception as e: + db.session.rollback() + return jsonify({ + 'status': 'error', + 'message': str(e) + }), 500 + + # 获取历史聊天记录 + chat_history = ChatHistory.query.filter_by( + user_id=current_user.id + ).order_by(ChatHistory.created_at.desc()).limit(50).all() + + return render_template('main/ai_consult.html', chat_history=chat_history) + + +@bp.route('/chat_history') +@login_required +def chat_history(): + page = request.args.get('page', 1, type=int) + pagination = ChatHistory.query.filter_by( + user_id=current_user.id + ).order_by(ChatHistory.created_at.desc()).paginate( + page=page, per_page=20, error_out=False + ) + + return render_template('main/chat_history.html', pagination=pagination) \ No newline at end of file diff --git a/src/flaskProject/app/routes/records.py b/src/flaskProject/app/routes/records.py new file mode 100644 index 0000000..eb6481b --- /dev/null +++ b/src/flaskProject/app/routes/records.py @@ -0,0 +1,111 @@ +from flask import Blueprint, render_template, request, redirect, url_for, flash +from flask_login import login_required, current_user +from app.models.models import MedicalRecord, Department, User +from app import db +from datetime import datetime + +bp = Blueprint('records', __name__) + + +@bp.route('/medical_records') +@login_required +def medical_records(): + page = request.args.get('page', 1, type=int) + + if current_user.is_doctor(): + # 医生查看其创建的病历 + pagination = MedicalRecord.query.filter_by( + doctor_id=current_user.id + ).order_by(MedicalRecord.created_at.desc()).paginate( + page=page, per_page=10, error_out=False + ) + else: + # 患者查看自己的病历 + pagination = MedicalRecord.query.filter_by( + patient_id=current_user.id + ).order_by(MedicalRecord.created_at.desc()).paginate( + page=page, per_page=10, error_out=False + ) + + return render_template('records/list.html', pagination=pagination) + + +@bp.route('/medical_records/new', methods=['GET', 'POST']) +@login_required +def new_record(): + if not current_user.is_doctor(): + flash('只有医生可以创建病历', 'warning') + return redirect(url_for('records.medical_records')) + + # 获取所有患者列表(仅普通用户,非医生) + patients = User.query.filter_by(role='patient').all() + + # 获取所有科室列表 + departments = Department.query.all() + + if request.method == 'POST': + try: + record = MedicalRecord( + patient_id=request.form.get('patient_id'), + doctor_id=current_user.id, + department_id=request.form.get('department_id', current_user.department_id), + chief_complaint=request.form.get('chief_complaint'), + present_illness=request.form.get('present_illness'), + past_history=request.form.get('past_history'), + diagnosis=request.form.get('diagnosis'), + treatment=request.form.get('treatment'), + prescription=request.form.get('prescription'), + notes=request.form.get('notes'), + status='completed' + ) + + db.session.add(record) + db.session.commit() + flash('病历创建成功', 'success') + return redirect(url_for('records.medical_records')) + except Exception as e: + db.session.rollback() + flash(f'病历创建失败:{str(e)}', 'danger') + + return render_template('records/new.html', + patients=patients, + departments=departments) + + +@bp.route('/medical_records/') +@login_required +def view_record(id): + record = MedicalRecord.query.get_or_404(id) + + # 检查访问权限 + if not (current_user.is_doctor() or record.patient_id == current_user.id): + flash('您没有权限查看此病历') + return redirect(url_for('records.medical_records')) + + return render_template('records/view.html', record=record) + + +@bp.route('/medical_records//edit', methods=['GET', 'POST']) +@login_required +def edit_record(id): + if not current_user.is_doctor(): + flash('只有医生可以编辑病历') + return redirect(url_for('records.medical_records')) + + record = MedicalRecord.query.get_or_404(id) + + if request.method == 'POST': + record.chief_complaint = request.form.get('chief_complaint') + record.present_illness = request.form.get('present_illness') + record.past_history = request.form.get('past_history') + record.diagnosis = request.form.get('diagnosis') + record.treatment = request.form.get('treatment') + record.prescription = request.form.get('prescription') + record.notes = request.form.get('notes') + record.updated_at = datetime.utcnow() + + db.session.commit() + flash('病历更新成功') + return redirect(url_for('records.view_record', id=id)) + + return render_template('records/edit.html', record=record) \ No newline at end of file diff --git a/src/flaskProject/app/routes/settings.py b/src/flaskProject/app/routes/settings.py new file mode 100644 index 0000000..1822014 --- /dev/null +++ b/src/flaskProject/app/routes/settings.py @@ -0,0 +1,57 @@ +from flask import Blueprint, render_template, request, redirect, url_for, flash, current_app +from flask_login import login_required, current_user +from werkzeug.utils import secure_filename +import os +from app import db +from app.models.models import UserProfile + +# 将 settings_bp 改为 bp +bp = Blueprint('settings', __name__) + + +def allowed_file(filename): + """检查文件类型是否允许""" + ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'} + return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + + +@bp.route('/settings', methods=['GET', 'POST']) +@login_required +def settings(): + """用户设置页面""" + if request.method == 'POST': + try: + # 处理头像上传 + if 'avatar' in request.files: + file = request.files['avatar'] + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + # 生成唯一文件名 + unique_filename = f"{current_user.id}_{filename}" + file.save(os.path.join(current_app.config['UPLOAD_FOLDER'], unique_filename)) + + # 更新或创建用户资料 + profile = UserProfile.query.filter_by(user_id=current_user.id).first() + if not profile: + profile = UserProfile(user_id=current_user.id) + db.session.add(profile) + profile.avatar = unique_filename + + # 更新昵称 + nickname = request.form.get('nickname') + if nickname: + profile = UserProfile.query.filter_by(user_id=current_user.id).first() + if not profile: + profile = UserProfile(user_id=current_user.id) + db.session.add(profile) + profile.nickname = nickname + + db.session.commit() + flash('设置已更新', 'success') + return redirect(url_for('settings.settings')) + + except Exception as e: + db.session.rollback() + flash(f'更新失败:{str(e)}', 'danger') + + return render_template('settings/settings.html') \ No newline at end of file diff --git a/src/flaskProject/app/routes/triage.py b/src/flaskProject/app/routes/triage.py new file mode 100644 index 0000000..934b416 --- /dev/null +++ b/src/flaskProject/app/routes/triage.py @@ -0,0 +1,116 @@ +from flask import Blueprint, render_template, request, jsonify, flash +from flask_login import login_required, current_user +from app.models.models import TriageRecord, SymptomDepartment, Department +from app import db +from datetime import datetime + +bp = Blueprint('triage', __name__) + + +@bp.route('/triage', methods=['GET', 'POST']) +@login_required +def triage(): + if request.method == 'POST': + symptoms = request.form.get('symptoms') + + # 分析症状,获取推荐科室和严重程度 + max_severity = 1 + recommended_dept = None + + # 将症状拆分为列表 + symptom_list = [s.strip() for s in symptoms.split(',')] + + # 查找匹配的症状规则 + for symptom in symptom_list: + symptom_rule = SymptomDepartment.query.filter_by( + symptom=symptom + ).first() + + if symptom_rule and symptom_rule.severity_level > max_severity: + max_severity = symptom_rule.severity_level + recommended_dept = symptom_rule.department + + # 如果没有找到匹配的科室,使用默认科室 + if not recommended_dept: + recommended_dept = Department.query.filter_by( + name='普通内科' + ).first() + + # 创建分诊记录 + triage_record = TriageRecord( + patient_id=current_user.id, + department_id=recommended_dept.id, + symptoms=symptoms, + severity=f'级别{max_severity}', + triage_result=f'建议前往{recommended_dept.name}就诊', + status='processed', + processed_at=datetime.utcnow() + ) + + db.session.add(triage_record) + db.session.commit() + + return jsonify({ + 'status': 'success', + 'department': recommended_dept.name, + 'severity': f'级别{max_severity}', + 'description': recommended_dept.description + }) + + return render_template('triage/triage.html') + + +@bp.route('/triage/history') +@login_required +def triage_history(): + page = request.args.get('page', 1, type=int) + pagination = TriageRecord.query.filter_by( + patient_id=current_user.id + ).order_by(TriageRecord.created_at.desc()).paginate( + page=page, per_page=10, error_out=False + ) + + return render_template('triage/history.html', pagination=pagination) + + +@bp.route('/triage/manage', methods=['GET', 'POST']) +@login_required +def manage_triage(): + if not current_user.is_doctor(): + flash('只有医生可以访问此页面') + return redirect(url_for('main.index')) + + if request.method == 'POST': + action = request.form.get('action') + + if action == 'add_rule': + symptom = request.form.get('symptom') + department_id = request.form.get('department_id') + severity = request.form.get('severity') + description = request.form.get('description') + + rule = SymptomDepartment( + symptom=symptom, + department_id=department_id, + severity_level=severity, + description=description + ) + + db.session.add(rule) + db.session.commit() + flash('规则添加成功') + + elif action == 'delete_rule': + rule_id = request.form.get('rule_id') + rule = SymptomDepartment.query.get_or_404(rule_id) + db.session.delete(rule) + db.session.commit() + flash('规则删除成功') + + # 获取所有规则和科室 + rules = SymptomDepartment.query.all() + departments = Department.query.all() + + return render_template('triage/manage.html', + rules=rules, + departments=departments) \ No newline at end of file diff --git a/src/flaskProject/app/static/css/style.css b/src/flaskProject/app/static/css/style.css new file mode 100644 index 0000000..fbdb8ec --- /dev/null +++ b/src/flaskProject/app/static/css/style.css @@ -0,0 +1,139 @@ +/* 全局样式 */ +:root { + --primary-color: #007bff; + --secondary-color: #6c757d; + --success-color: #28a745; + --danger-color: #dc3545; + --warning-color: #ffc107; + --info-color: #17a2b8; + --light-color: #f8f9fa; + --dark-color: #343a40; +} + +body { + background-color: #f4f6f9; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; +} + +/* 导航栏样式 */ +.navbar { + box-shadow: 0 2px 4px rgba(0,0,0,.1); +} + +.navbar-brand img { + margin-right: 0.5rem; +} + +/* 卡片样式 */ +.card { + border: none; + margin-bottom: 1.5rem; + box-shadow: 0 0.125rem 0.25rem rgba(0,0,0,.075); +} + +.card-header { + background-color: #fff; + border-bottom: 1px solid rgba(0,0,0,.125); +} + +/* 表单样式 */ +.form-control:focus { + border-color: var(--primary-color); + box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25); +} + +.btn-primary { + background-color: var(--primary-color); + border-color: var(--primary-color); +} + +.btn-primary:hover { + background-color: #0056b3; + border-color: #0056b3; +} + +/* 表格样式 */ +.table { + margin-bottom: 0; +} + +.table thead th { + border-top: none; + background-color: var(--light-color); +} + +/* 分页样式 */ +.pagination { + margin-bottom: 0; +} + +.page-link { + color: var(--primary-color); +} + +.page-item.active .page-link { + background-color: var(--primary-color); + border-color: var(--primary-color); +} + +/* 聊天界面样式 */ +.chat-container { + height: 400px; + overflow-y: auto; + padding: 1rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; +} + +.chat-message { + margin-bottom: 1rem; + padding: 0.75rem; + border-radius: 0.25rem; + max-width: 80%; +} + +.user-message { + background-color: #e3f2fd; + margin-left: auto; +} + +.ai-message { + background-color: #f8f9fa; + margin-right: auto; +} + +/* 响应式调整 */ +@media (max-width: 768px) { + .card-body { + padding: 1rem; + } + + .table-responsive { + margin-bottom: 1rem; + } + + .chat-container { + height: 300px; + } + + .chat-message { + max-width: 90%; + } +} + +/* 自定义动画 */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.fade-in { + animation: fadeIn 0.3s ease-out; +} \ No newline at end of file diff --git a/src/flaskProject/app/static/js/main.js b/src/flaskProject/app/static/js/main.js new file mode 100644 index 0000000..f1ecabc --- /dev/null +++ b/src/flaskProject/app/static/js/main.js @@ -0,0 +1,130 @@ +// 通用工具函数 +const utils = { + // 显示提示消息 + showAlert: function(message, type = 'info') { + const alertDiv = document.createElement('div'); + alertDiv.className = `alert alert-${type} alert-dismissible fade show`; + alertDiv.innerHTML = ` + ${message} + + `; + + const container = document.querySelector('main.container'); + container.insertBefore(alertDiv, container.firstChild); + + // 5秒后自动消失 + setTimeout(() => { + alertDiv.remove(); + }, 5000); + }, + + // 格式化日期时间 + formatDateTime: function(date) { + return new Date(date).toLocaleString('zh-CN', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }); + }, + + // 防抖函数 + debounce: function(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; + } +}; + +// 表单验证 +const formValidation = { + validateRequired: function(form) { + const requiredFields = form.querySelectorAll('[required]'); + let valid = true; + + requiredFields.forEach(field => { + if (!field.value.trim()) { + valid = false; + field.classList.add('is-invalid'); + + // 添加提示信息 + let feedback = field.nextElementSibling; + if (!feedback || !feedback.classList.contains('invalid-feedback')) { + feedback = document.createElement('div'); + feedback.className = 'invalid-feedback'; + field.parentNode.appendChild(feedback); + } + feedback.textContent = '此字段不能为空'; + } else { + field.classList.remove('is-invalid'); + } + }); + + return valid; + }, + + validateEmail: function(email) { + const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + return re.test(email); + }, + + validatePassword: function(password) { + return password.length >= 6; + } +}; + +// 页面加载完成后执行 +document.addEventListener('DOMContentLoaded', function() { + // 初始化所有工具提示 + const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + tooltipTriggerList.map(function(tooltipTriggerEl) { + return new bootstrap.Tooltip(tooltipTriggerEl); + }); + + // 初始化所有弹出框 + const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); + popoverTriggerList.map(function(popoverTriggerEl) { + return new bootstrap.Popover(popoverTriggerEl); + }); + + // 处理表单验证 + const forms = document.querySelectorAll('form'); + forms.forEach(form => { + form.addEventListener('submit', function(e) { + if (!formValidation.validateRequired(form)) { + e.preventDefault(); + utils.showAlert('请填写所有必填字段', 'danger'); + } + }); + }); +}); + +// 聊天相关功能 +const chat = { + scrollToBottom: function(container) { + container.scrollTop = container.scrollHeight; + }, + + addMessage: function(message, type, container) { + const messageDiv = document.createElement('div'); + messageDiv.className = `chat-message ${type}-message fade-in`; + + const now = utils.formatDateTime(new Date()); + messageDiv.innerHTML = ` +
+ ${now} +
+
${message}
+ `; + + container.appendChild(messageDiv); + this.scrollToBottom(container); + } +}; \ No newline at end of file diff --git a/src/flaskProject/app/static/uploads/2_1.png b/src/flaskProject/app/static/uploads/2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..75ea22a50e04d5b171742fcb3a895c0aa11b2e04 GIT binary patch literal 182253 zcmV*hKu*7jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D|D{PpK~#8N?EQC? zW>^ny_ItgopV&Hl?4(4A;5sJL1YnaJRaNF z<1n_zX=X^uQme!Bd-i>+s;h$l`@2}bwOIYfXWe{m-e>Ro+!C+cf=qM@!BP4y*cYS^VvTfH5XyEmh>WF3lktitwf%du_C(yMGD8*ij&(=u$| zy!@sVZ6X_2VEd+(sIAxzgSrY&tfR%<%dx#H!#6*nT7YLHi8BumhpU%?U@HGelyp8KQCb46%e~ zhIrD8M9McqGVPxsl?lv{$pn!lxoil{Ino?PJ|CT-r6s1&)*8P`p3~RS-V#S=TLRr3 zDfD(_(cjaIfxbKj`&%$XM*8y@9caPWU@OLl+AuNPj>(aZ_hb**H`+eK{_zeRn7EOH zlN~s;r@-O89XPVD^FPO4!fgw*leYJum9+d?j!m|`2koRo;V6;)9p=2l6YV%O-iAYC ztvEQ=f&=3%Jl9s9TN{z{mh*4L-jSA>;lyALLp@0hlab!kHH`LUG1i|`7#+xAWQzWt z6xv!syjNio;XM_i%6&H(>(RjXT%)dm(`i6F?n8Tf8iRwp7kdUVI@X85p>Fi_wxOf5 z87-}8#Nq+IJM~zxatZFe?=F1sgCD^A-uFIy;1B))ANufZc;5&90KfOX_bYt(qj%tr zJMZRlPXFHf@&5PUhTA`SH}1XnK|JulJZ#&x1A3hS9*-A+KmdNfpW`05TrM~qj;lCr z3U-GTHiwy*;BcAXByQq$a@?ebuC@%Sa@v~Wtx)gU0b@lO>~*!U)RMY-SQ}L^HZ($0 zUr!rTM_Z(V*=XW*ASM%x79$K66LeNHv{vrZVnNod$7y2?{@Ah`KMpkDD}g4Qb2Z|S zPm58n2Hmz=WHqIT(AIfri;@jx7;qRc>9Jvt%Yp%Y13FdJXlblKUR#Z3OCy>+M&v^_ zG{>As$Lwf{+Rz`h;%LN%hdlcb6YO0({~uFwqC_UA@v4 z14deLVJM5Ar|o#H#f5je{kYs81X2cEG3*4iTLIlBz_JNfY};_fT?S+Nn*;whZpIri8_V?pvT492J!EC7ydnJ!sX5wE~eag%d5j1);hdls>EBy-FRJ7j5l?=aK%vvw1seGvXjRg z#GAbKKZ}^~P6yAqI|9T_fU6c)Or=1miPKsj(u8+>wRp{4g;zY)cs<;R3uyx`_jrLZ zUWa{2U_6S8-9G$0q{lCLA1~1+zT4M^R|dN9x7{uHn?vLHn~$Hvk6(Ba-}=L6@Wn5D z635OQKP0zCe3#)nAOe+|)G0I_TkiA)H|R2Z2=1o?OrozW9hyAgrCn`0Qsm8LN3gDAm~HN?@0<4&Jx(~o(K2sbKw8*90aEDf9OH@ZhH{kkIaGZ_PGe$ zwE&TOmmq%sGNc|{iOk&9$S+uj_C*`fJa-LR7H>q)w%zE{>d_nWq9w*-j2Fnp+{C4j ziINE4m9Psbl8m?zi}D(A{UFy35I^faAE&($5_ZEIa={mL!sqApBq86m1bnP}y>@uL zHh75JV};wzd%$%5B3#d@81+=TD6tSiWNvVC9*DKj{=FCVX^;0+XpzY4$4#bYTD zBq48sAn|*7{2rD^JZ`@CQ@C9`ULKQ+cF#dOVY3?)tTsI?RvpY{EsRDDv<4M4Q|OGe zk3_9&LX)NeDs2PwCM_H+FT`h|r7e%P&Q`=zF+}-Xg<~Oj{2uy7Hrhr#th6@{D}5iE z5nkFKzg>@jO@pXYhb;Y{&V(03^cN<(GZ<-0q9+wXYt+MM%8szdgrJ+yzY6+o2nKnr zLQVvEA49y)Vcx%KA_*U&Nk3w#0OIKo66pw1>6k(~6GtYScu%sqWP#=sviY<^hT{ot z8%subULnp)p`*JM{lmQ&8e<(dF^pjjhsFjlINE<5tp7%P(LdCQ0WvbygNZ!@*t2g4 z6O+9d8EQvQR|XNf{hz&4zR-d3P8^!-rti{=;|B+E>c}w89395#BSSZE zhWj{kcw~mt+}|{3j*iZ7>ey^X$nbxP)7-xt!_BzaaS5}JYc{8N&LWuAdiE`$e{v{^%R-Cj}wOm zaGYfwKiu~#IeDlLXATVD+`a)kvUdP4K71TMc;<2Z=o3%ia|b7IC=sB~unTI&PvxuU zVdts`uzk(PP`qg_%62Yh%(nuiWsK!^%*E=pcVNMSKfuTC{cl)s|9`{kxgS9B(mN1S zm*7ZC0AJvJ_#}PeV_6?sOx1{}iV-!GAz<7Em!TLYeGy}w9k4h`X%}me&KWS!@5lIX z6njP!7#)nEw>yBAypwT(i_fp0Zb1?+9N3Tl@$i%Q^3WbU+}w(RL=Y_r))ff{u^~xP zNjo}NpSJNh;!z8d^if)JJ`DF~F+tx#80yWSyNz*0+KYU~i)PkE3D$M-uoWr#KQi5# z^P{sRjJ_^8o*edxf4q;+`hi}I4du|=5k*@w&yRIk3w?m=Y0bIOp7)}wEr6cR5c=t# z^mNd!$?}|wzOM(Jt$uX32bJZ6eQ|}ZcGiU%CzA9X5)mUJK`ngl1|*_JrOe*Wu!5AE zOWAq6W@M699soBxyqc_1#$|qK$wrim&``dW4rCFkE4QPjY6t3S3gSY2 z?GA+ojyKkops9Wr8tY4xkLy(xTTs4h9ZI&Z!j7%Wv3<)jvJ^#|g=NZz{u|)@n+XgG zn+gKMw8&u8RKsp+gww2o!_)+`rUsh2GE|psMai}`*t%{BHm+WXjjI-5(`ugU8ji17 zpdfk!P8ES6jC^xsMp$T_W=dFSZ%fS3A+#0{VWG1v zNhdu;XF9D241L`>4D{v|aX}cKB{ED44F747VXW}M{d(j>{K3fr(?Y{EHx(7g;l0At zdNTsU%|(X8ldV&^ejv3?iBn=;~}ne}6lMM!L~I&^aYAw4kjm$7dwXAT+Lgz*@C>8Seks zJ^0{<{s6!KzTd|OJ|H5)hw%p=x(y%rV1e5{d^p7i;C9Qg6+{NR-445hIBl?rz+kt)>M+CNG{NdL!sar- zL7WaftbCuLp^Nu^{_NF!qTXMi5QxiXlt5ihcpbp4KNxE zFc7^_53R`njoApb#R9v90i{Wg(}o)Sk+}kY5@^DUAq`IYwHWc~(C*eCV{1UtQiqVH z62{`quB3#|((s z^yuY2K5bIrpF9S<9<$+{oD;9MyKrG&4p$Df8m|o}@K#$87Z`wEr zN?Qb%Smp)V?>Ef#cwJwKH}t#lwy_cytTnjcYQ%+<6Bl}txWxBK1eVu$-mecO@pg9@ zmy=c?qz3{#|1`&QHe5*=aH)ksb0^QU!-aRde7M{b#-$D)r#(C-Ki(aW_3G{)GT- zeu&p7n)D%-@*|#>kFD1eBw?hJwB4~Vx`P4qc|GWJJJ1_)qC4S4ThfNslof4h3))F{ z#(}}+0Q$LocifBiFxTO_g`u6;&?X--SQoYPS!|8ik&oKZ9Jiq(?%+Nw=+HMJv}Geq z_umi89e2UbciR2I+u@nQ{Rg+h_u;z`y7PX7_@0OFdH~V8=OB8|Ttx1f1OFZOA$;!~ zWackL;=zSTE?9<^ja$*LZp3KVg+9Iq-3fOA)^A;$?%=Vs^SG4bW4+m`;6R?oo(s8< z<$EOLWEk`)WC8_5G?@`ld@keyUWE+DlWsfWv?)=WSsA9iPNY0e&UYvzxIE$FIZ2{FEtDK5(eSq{mtY(ch_G7_?#&yBFp3BO+ij%$&5A}Y*A5f`RJ1rZm*Q%nmD z0UncIga(%F<1u-8OkS4_9;X#0dA;q3xy=aCwuOB*gaY($f=>E9JjbXT z!5HB)FVB5A;YEbcenDs`Jm<-D^w$au(-ee;6tc}}vm|Bp$PgTL#*TX_2bB)VMSm#dU!+;8DzFE9wRk83ukc~0_C|G&!VBO(mk3@$rbSbpm808Sj}#j(BJGa|#$J>59I zuNNow_bFn-se=Nq@u4Aw6AA@^p&&98goa~>W^u5O_o`Rn7&*>;oZQ=s(~~`TXuJns zICBIqKlKQ{|KuZhVc$3oCqqa#Rl&4lJ!&>CLB+FcSiA5x)NfgY4r@Ig?aAP!lY8-JPoBY_K7I<{;k);ly?r>*8b+J5 z5dlpJjJ2ES7j1w_wHX>?5p3>qzUy^JCFq-EjA+l>=*PRz+3uxp=tp-~3?l>0I62;j zubw`Q|M~c{_{N^Yc(}O*S=ySUe4q}Si3!n=e3UmJ8MP7{Vj(l%0~>NFH#&I?y&ZA% z%LnMT7&@9m$TK#P58|1a6A9Y$jM(?)Ai7(l=xvLmt0juge3-*9x8c0@0_{1!^5Hrj zGI2X2QV}!Du_2#k-Ievs(4Lcz-#&EE59n<1vn>DB<+;Lgp{<$gahcG{WzF;lvaIJa zBo(zF7StmdF(J!+$nq}wCVd?drM#95>zbrpS(c>_l~21k&qL_TMOaVx^a#;6OvhQ5 z<^yPL<~HtH+5*S2SPy`0j#{G5Xf-`iHZr<0PmIwwr5*XsWmSJCeOc5Y%_Pyj5x46YE zep}oU8E)}A$ExM?v1a8$Y*@P#JGQPv@%9ZU+Oh^)H?2~T@g4Hfo6cluaY1OPEZ>GI z5gICrln?0gF@2h8kzpE{S6#6cyLYX}uI;O^bL(>K5RqZ?(kTjp!f#4JXebB_ipa3L zATo%!;IgRTqQ1_QzrE;8K#C+ySJiv#~MXs*j}_6 z#XHxdnAcT=h0VO)!dAKFBJA+^%XytkdA-Xxtf=HQZs0NM>XbkJ>`o(`41N`HVVYSY z!?gm#?Cgc>MTUaFaD&L82n_OPBVk}YTVzoFZ(v45nQ6oz|-vltslW4Jd#3fT(6KxYg+tsx9_#W_Ev2o0ls>1((_WFSLC zM211m?_)4J(93(oVOwhqexI2^=WeJ~RWS2?5BM1{Wg?2e(A(3BzP@(!4RoNpw-udT zd9<}R^ZCf~SxGC{>?Um3xCRf-`512d@Q3jJ_fKasd}NA`;zPIHu5jCj?@+QA?!4n( z+mf7>?$dT&FX;L?St3r=gfv+H0oHb7Nhj>f8DG*;|{rg9fdbyaYwnqY5ggtd`&tx*MYlNx4~8b&qI zXkgUoVIX?F4myLDfw>lOAfbd{i?cW76TYz6O6}s=yEZDtsZV#}Nj)-LwfQw+<19 z262}j5vvyZlI_rL*#hhKod{RdAYIplbZrA#)H<{q8T8fHBdk#&<8>hu@*^D!Adz73 z#{jM??8E`yhlibJJYzQCMTZ?<^SJRTyA_9QdSvV>_&s{KXrny5CT_cAc-Ud~nqlOz z82vg$EKOKV7}9C*IinW;!tGwQHsMuwJ^mw7k6*T1@J6=-uZ2~3)!T?y{2Kf`ZNo3R zLwI8{kJtIEzdDr0FI#+gBc#P8OBpU3x8t&D6E51<<8}9D{4`jM|C`t1mtzbf&ko_; zea(2gKZsXb9r$Uh6aU`n#lQB3@oz(M{KrHFKcCFu)zKVY?}*`5+NWQH?0A*7=atq7 ze#*f6XAInb-Vw&nyCe8{Zxlc8i}84(c%?mz*P4TPje+cI`7mDXiQ^Z8N&LUzB>rtM zhX36k!9Vwg@Gsp#{6}X9KWk^1EkV4V_2V_#%~w1|{LEaBpX#gdGhGE`aUEXiaN<=F zQ2IkkCdE5^PhU?v@$;w&|CTo6XT3qZu_uQ&_qXD$eVuq`PY+&g%i#Yez2v59iwp*M&f#m#MBsxsxg@~;&9%BeJLl# zB32Cg4Hya-FcLBo6Gp=%VpfJDe7=W*dJKeg=nHEx9y4K*&)1Nq0=dnr;CtXM`0xA( zf*<)1B7FY~+=l2!ZbS0U+tGaAJ>=dg?nmza`;of$9Gf7FV-F&nXCZ`6)G5gW!s7K{aWYJPY;eRSH)T+fPD-iO3gX2VR~KZS@4(^(7G zXD>{P3lRmkLYM?aWZ*F=aNj-!8@xO&kHZ9)-3W)>pkTjFWYFtX&=N&tFliK#L95q5 zrB$I(-GGLsdPQi^)5e*34Ri(rs%om~E0rtMH8eo2pGg{#?Ti~~t5Vjf+ zrw`TYvtle8!lM)2c=6#w`2MFJ!*`#10$+XdVLW|c4-R&=q9f#`&9fusu^`HO7MUe7 z1R^BnRuG{f822hdgNSTV*WJR4T!DDbDvNhGZs* zmi88O^>(3uunz;n12>`w3tVPD!y~qUmyT>bDrhQpH4Fe5Vb;)G-|$cK5!MwtC! zU&g06%l(|?I>MPLabdQ=FwL1+`+0BPTWGjmWVl{vxL#m5eVzC*8(DVa`v2dVeLTV` z5ej%sMPQglga#2Fj_vE25gd*m7%af+ef%J|IoMxdN?16m2n*x@@9zPYH_iTDrJQ3d z_XO|R>CsMn?$kki>+y4VnLNK|6o(UGrvCN3Ds3=QCYkUrR(P)##re&K7-$T=qUdBiRWM8@9n@Er!EZLL0IhVP74RQ7v+5E86m2`hN-f z-5of8U<}_pcMgB|#3%9XeaCRVxfN-PUJ)523n3Y`ATB~f&`A3wf6&thqMerPgmlb- z=9C+)89&--8{|WIYdV0IlwbLKJ{xr*ML$5sd+3i2Fpdzq8H325`7J5=Xf7FS4x}X8 zA#6h;XhzthrCrn_=GQAig9ropq?7BrSibyWem}Y)FR9 zi1XZ%tQ%!sd(MXrBHL#~RN-<#mgRY_lBJQ3)AsXt+iJ*Q6ja zD5Shfrh#M^r0A~*A_9mQ&`G<|m5*>pro;xhj*74_^}%06heEa=_sw#;xUO6~5gbHB zkc!`M{F@t(EPCX2Ap z$@1D+UJLgnnJukJ4+h#|80}^}LPp4NPx_kgB)7Q5EpGAK=9b8Ci{Cj`E}N$a4Qp2} zLeb{c*jcn5+oY+ajVrNv!-^@PVKsJaTZ7{5>rh&}0TpFiP+7heRlB#Lrm9H!fPOQ9 zp&&BsL`~&ZRLl|?t_lp&EYgilCH-oaDVYpKWZTB&sM%elG?ygJBsongIE_s(tE;aO z8MdukIwdkJP}s0)KGv_Ar?7Ryk{OXfuP#?agqbFj>US!`X^}xk=UA`Z4ZUXfdx{Kd zX(ozgHB|3FZIxtu6e)sq*7DR?kyzY|Cu)Sy< zN_K5l1cqH@1+k&3n#a^6SqzP{1P06hXOY222kjbh;s4Jf!}a3AO!h)^h=dh#WOfrt zvqgrR2@DD{ua(QDnn=1TG-PIFGBg*m7!-k_6{EA8NgBSHs8C>9fGDijs<4MhGeI|F zpZxu=G%?hI0~6ED3>BCb9j+qtt}a*B5yo4mXd(FmW6d~l4cS>_aB%b{jAU?Ngv&>A zH!{pJhVum!K_QQQBhA=5oWtIs9QF)mF*%T-QyxcOdx!yrhjILR~H2M{TW=1rUoe zSjZ>1PAmHR+R@+NQ4kq=TG7!dB7SI4;KLue3wPXpkCMS~pEQ&7v3Zy~XCda#Ta2=@N;n*DMO>IIFxYGkV!Kvk za9Uw@SYUFRVdT4ObV^e}dYGL$&ey_VYJ{q3HyU|fjnyU4)|SK4R0oe<3%g2ngUDc- z78x`;+9VxxQzC=bpo7LJB7+e&lK~ln2B&q^_+w)Qe&o~O^9(uUfmwz*B@iT2T{*Q4t{?=28zm3-69}-RY-~M|1qoW3YW3I-ZIqL9d5d;2b zM-YGA5ynqi0{B}7#{bSB{w<#h7u+>?+g*lN{5$aP!JYVDvEBIlb|e1xNEkmm)P|o9 zMerXjHvB_OjlT%1@x!nV-%DEYy_^f*Z};Oz?E(C_#gG5NVD!&<&Hl_~z@Ib7{qGSw ze#qiXnIPfP~C;l{P$B!Av|GD3UKc}tzvw#_Y!g=3scH-q$7rv8s z;@i!3d^>By%V`_FpS0mm;w+Qf`~}PWE3W~6<K^k>cBtR)%a_!_hU;9&yD-bSn;=Q9{f{R82{dz!at`%_=j)+|1+7y zKkS{v|9bXG{P_7#;G3WQB);_7PvPXr!|3X5N1V?4+ zI)X@w_>c-B7x$w(?8O0}8xMKic#^{>ST{VHvg6^T31=fsIOVItF=shWd8+YvOpmkP zCLFWZ;<&vIr(6vdun~`iHF(0S!g<|p94%gp z@nsKSWbR!U{@5KDC1VfXiLp6%VVq3Py&L=H-irhC?!$rk_v66Ak73`U2QaztJ`6s1 zJBH?Sy=4z#eEA$qu33ovTUX+&Y8O7vck4-B!zTh-qEmR>uf?NYH6HP(6wbSeOHFv3 zeD}}O4m{#8<59Z>kJ}17Vm0B6NrzKr9Zp*HJXZsbaJ|EB6OMSzIOH~Bk6DF%h9(>~ zs&Uq4!b9XF-iN((WGfYeN#Oe)s4!uhIX<+)r9hj3i?ZB z^qb01U0X+giQ8x`FzRiv8trhItni!7i1IpTx&Pjv69@A#JT=~l7f(&%yHB0Mcb<9( zUp;>Y&+gxY6Fr?6PDIfe_94e-Ji%)a<#4vh;E!G_G+Y%Ke26K}dKjtyL^eYvn8ol96vIOlShUBoXBuwe;@Xbbtugx9iHsLvHj8v&@j$$y|c%skPrME zK6GNNz_Br$J6hl&B7(v+4;`OSI7`l)xSm2L#m%`XLydT?}KAFnmnQ;_jqg`=|sg~R)MW{~E6gu~Lz z&z^1^<^4K7+JRH_dp~>P0KWOyS$yZwhw$mi5gdxse$N&eNKMfy)NNmlnw_gqS+WXc zrK?at#hz#=UkLlE<<(QYQ|=3pljL$i*7qy)^hmWb%@aR<}z-j z`J3Y-J^1pm0!AYEg^Ka29-bcTe2Q*XQXeUL)dRnvKf*Q z$x^T*8+R&y*o&CZ!q}vZ@kmFG+p`R50#81W%b)q(j6Zr9cXV;s$rz|f-zqX8*=f&$m+H&;mvVLXQ)-2a&DvKfInGqo* zBQ?r%n{L)f#D&>e1|q^VO9p{7Q$!mm$Tdv(tq3`Eh_Vh7K|nGQJ!$SU%Vo{j?d|80)|k zGzs>943YKlovgc)j+!Qax9^1zLVVI7Pq*?Z<|{p!!3U2Sg~Xd zRxF*X2n|~|uEh4OYZZZE)B5GuxNg~$(6ACkTUKF5(HbSAp?ue-g3z#g>vbZ7^ks0Z z$RNT)ZRIvpl&;6F9XE;$A{=bpxa2oN)>WEP+PGX17`AR$ru4g@Z>oe<&%nsg0K2{c zMpYHmHKnL6+lI2Dbtu}f9Gh1!Rx%lc4XXWv$nu+s3_4XAG>y9oSq#-XP*+)mnu=|xs@QrBmF1fikzu2p(-ui1E@Uli+qz~- zWLPoNWYW&!jVRu=S)r_4M1~TmG}SO!q-hZ|T#CT(pBEXf6&Nf;M271Tp+Q83DQ22W zD)h$?lxC8CMN>(_H6la&Dp3+kxEU~uz~DiG4&Kc~hIE$D*%dN$fOGlq49z63P-vsS zwN*q0(iTH|TO87?&TM2}y9g08M3X)gJ7Q&xj1tgp$HdM24ZBGzN*Zg*z=Wbaf;cKuVKD zM(A`ksI4i1#jHXwz@Q-$=5pS%{tgTdbYg&r$k5f(g7%JPw6^8=yh!sCDYUd^`P_O@ zTUU)$t5)Kkd+xzUKl)MJHX|_HC^FnNOJI-;h6M|jVDX~msH~`&5g1%95A1f=l*nLL zM1~omVJeeBLmE(Tc)4E}YVd8^kgp_M_)^4%uQ90q5d+D;3t92^T=#E0wfM2O6fb*=@wGr1 zzL_)NdmSG9X-^10$vg2kF+GA<5Y2cBSX{R!H{XWb@z z(qX{Iod!JRHsA@59#8W4pYrMPG=ul2LPk6hG2+P}#~H*wnri~iW0oIdpo|w`tM7cGJM5Ri*JQ=_+iS9AMpD9An3vm z({cRefl2(`b5G+>pMM75df_?z(F>o(nd3*$+tYz$Jd9AljewVSpTj8MuXx0dL@dZ< zp=(IRY0oA5CFMs))QwTrE06Fw`9i>t?Z z3pL@}?s|OFS%>chwfJ5@jqmW8_%83=_k4}`p1(;Me%IH)dtHa`cx&;pzaBpdH1Ym6 z@|-L2a?Mt}v|}Z{wrx4Swsjd^5{i~{-U@}UZ(oUT6|KZ~idNw}+gIZ|#cS}*k~R2R z@hW_2+Y)@Ch!iiwm&#V*%av>KM>QMpEqw`o=&HdF-P6?0@B>%1!uOq3_`ahW-*eR9 zyS&EVwevXbYJAV8!w>kr{K!(^2WBl^HmUJ#s|Meqjra!Z>#v0@cqz{3I_ttq)@}ZocKnIAKz{X;5&SGKIb*zA*)*HlO;vJ;>PBZTvzcGh9WkEJgnzk#OXj( za9qW2GQmaLQ#-gJ9==EjHQ%s~$!(?b=j741$5z#US%& z(1f4jX3*+&DX1uV!4}W}o0)KRTKmPE@0epOH1gAPXFrJK~Hyl8V(tMQ@v49g{ zMP%SLq3!d{2n{X-<8Fi#h33KvA_L!pB%l3MWGb6Mgoajq>lxCBX$hYN{ zY=*v@WiwnSG8D2I$VfMaN4hW~40kFb!^CK}A~Z;UROy5dZrX4Q?W)p81O3KU`dOnx zZAv!7iT{GgaO~h94o&vpz<3vj-O5LAX~sv%N>D@w5g3M*;X@}1Lc=+hagNJ{hd6$A zhN~ijaIL^Fsc@R}uSJB18^s67f;cP85-$b(C%P0tM>0o_NY=x?o*534 zX+dF{gL}FCo~s<1?8M>Gb{rjU!->H*Jb!E-zW&H*eDjer_|(KO4$_wAG>o}+Z9@ZN z!`iJPFsy-U*G4p!Za~ehwJ6=S3foHNLLE*@bTp4uJBELF`f+^c#33Aw`{AwFg5u@(VDs`jv3AuRShe;JY}k4qigwJw zuHt#9DqVtx%2m)dY+@X?lm1SH()^J$g>$gC6<<7f2!C9>H> z^eYlvC!cVzJP|EO#>Zh(+F_DpOgSw^DC;qH6hR@%*i-}t$&Q%Lnvi|O=xa)!49b2uEuw}r zjnqb4+n!?V$nv7}MPsbbl3YhJ8bo|3^v~c?`VteNAthz7PK?vWHS<18MuP(Hn`EQh z?0d;AZgGoS{I<9yGTh>Kj%AA;!1BcpDni5N4a=1*1`!ve`6QtrG{}4rAXa1Nb~=y6 z8?jqyHfc&^n8{+enaEI#I<8Y$wgII(xcv?+hvV z3n=SX$m9qE0wGJMy}2bs!U_d}Aq?pVxV0sUHahnTbnx5TW9aCJ&mhz7oG-z0OD;r$ zkdB1grL!-gEr!l^=|nA#?v5mSJ5$P^^L=EXJA=WVtAEzdpnL#NUrUdypTaW*Q!SDFwiFw&QpVYEMamA>RP%VyRQdJBvReew4ohOz#r!Z?}i zkG%(RlDHA>f3h#7Fd_7(SZ4AX6-7dIX2BeY!bhM|@-`9qbp&kqmc4Kg`OA#45yYp!4 z$SK0YjL6WIMJyhM$!y^Jw+RnE_#p1S`)+*nb`ce>6B&r~!yp2~bQ4Jn7c9k+#VfFE z=_=Gz*DK8=d2YyJm=YQ6S49S!Lz+smz~D4N%j4EKbgj&zwz8ayrMx=BM z*j+9RalL)9Bu=KAaXOyG32zjKJz-3G1LzBS&>eK3FJQ(#w-#p|YJ9@3#+PV|zUsH* zQ#{wBb`|orT7=zAv{7269}1h>2n#VY__cbQ;P5meU~WKOSC7NmMtnurfPdE1;ICN6 ze4~5|p5{G&)ULsK+My?XHaz9B;7O|yj~g_2+G4$g9tPkc z3tCABZDOCxgkgsXV-7QVELwD0)abQqF+hd{?zi8iK{tc=ZU*qZE;WX1Dva9H80Y<+ zU@$wu;CwP>$9T+!F*3>kUKo#9F+nDyHeP2t4#k}~mUQBH(t$GxD;|xS@C>i*7o2*0 zFXYCLLIHfw7r-A{Y&cb4gJ#wfnT^ZQ%6e_j(s?+uauFV1zZ^%_FT&m}i?O$41xB|o z#ppK9+qDT#R21WL)fIT5xEP<>%xk-L9Ufh`66ZFpz$3di;Aw3!o_E*bvo00B$aDWn za}+;1Jc+;ll!y$^;ya)D6u$EO^Eh|(DBt@|Wa3do0$!#4{jlGIXwZjvIDlj{h*T_e z4e6M)Pwhin(u;wx4TpHoKI?Yk$KeS6UrP&q+L^`AdXxCYKomdgaN++XHTWmjZv2bA z9IyE5m1eS}DXhz_9$ZLU@S3L%ueodSnyY3O)p*reiC103TaCB9b$FNObJ13fcXYe( zW>XO^Xo~SJ$1jk#jiq?YT;Ls!U(%Q2vO*aynaXj&T#h$QrTC>`C;p#)8~$Cl1^>^w z6F=kg^#3e7@N;W1UbUCvHQQBQ7dY>A$F8d=%gXSojpxE+dBs|fS1gTq&D_ZH3%tSc z*JPekgIE0qyc(0Hv7GpMyBEJ42;-N-5&X2*kDoO=@Qa9v*F=w3_-y>rp~5eGTKqI- z#J@M&@Nbm~93aEqX;*C}c2b6oJ9W_gp%+ z*GZFbT9qO&)bRPQsjERnbrs4hD^Oms8x>WRsH&+!ZG96Onha2D?DXp#u;?9d8tn*} ztcY36$lJ~6_t|kE>BB?x5uRop^xR-8o*U}MGeZM-tfvPj_)JbF;^^Z$*UEEF^PJ;; z`Zgjmgq-k&o$y9DWZmSa?-NY85KdkzGQ^X?scZ%j8luQ#MQnI4W(y5Bl1N3Bj;%## zP_h}i+HaE0Fx?+Rfx)Tfk_vQ_E)0_q=?r?X9TQ_cm?UGvol2%>G-QX>R1c%B3KnB6 zr>%-_w0}=8j!CD_M}Gs6;n>xW`O^P_WG@_?D2NR5hrNgl@y zM26#|ICpGB;h|Ys1|m4j78%aoATsQ^2{M27dRLKbh}q>`Wt{uFnE*kKaM?|`Dl%L} zGB&3BpZHCY^$Se(r*QCEPLfkooZxjmwzm(5C%SQPv=jSB+HpV_?ZAPtPG0kF9NN=E zWXS73EhOyi!ht=VGwh%2!2XE>2ZZr<92{=N;lUOh>u0qz;p<}u z@bS)G>}gJ-Cmld@!ma%EpN-p<5BriuAb<3?q+Dpv`p}&ZqPH!A4#prkzSnuiG4k=b zJzZ#Srz;y!{)kTnEl4t!k`LDM@mkvVmp1*!>Bo*sj6natljS7?w1uoo69MTjz=W*y z$w0f_OnaM8*pLnzxlD%)?YT^M(1-5M`_Pm3qdg;H0*_7lPvEi^>1Tm{!89^|Hu<iJN*Xf3nRg@BU~p=Ur+WS0)q7Q z(3NF;$bF<4t7d7JTM}M$WTgLvFuF-sHmEd}lxIAerd^xPW{~j=&q*O7&xQSlZzZ?5 z#Vu~}+vJwWaEsqLmM*$qVcC)g=(sJxmQ5?LVeJyEU$aPI!`j8zw0>0yRJdzNv6ZJ$RPbO6m4FjFfB4{S-pR26mMRMZ9I=Hs}^E2 zk?p1tk)gC`4OF!|VN@4{gF;rqRgpnmU#v_^b4Yq=GHFU=m`3I)O(oSAvKVS5gQ2V- zFqD^WMA@zl3NpTXmdLPi<5FziR1g|OSh!wf*d|#RJ49$;8M}*6D}Ola>tVC$;PFU@ zvw~S+T4Zq1@pAd5F~IGg#t07`D#0tzL7v7Jv?};-U|Lux5TIi>Ei7EkR&XE^W6({< zGZN>xhzTMt&}odt=y=lkF5pIt>j?3L6N#i7NjmNdDKAnaO(#B+@gtiH+(1r5hJ0v7 zTu=lC(kc#UOH>gIrV-JggF$ft5f~)PA&M3T0eJ=p(#B^ColWUbtWDCJMQ~s_9W1A- zHHPlC_$*{v(xC~*d#7Q!eI2vlw9J?Fx?AbcwuI2tLZ_F=AO6?V(-vSEp&9x*Lg?=Z zD-3iBktwF93-boAV~7lQMKRpX;Y}Fnxyooy6yxtn>^+EMqBp59P83mr^G3R-;JAnk zBfW79c1uThJfAiOY3S*9;X&f z4W)|6U^Lbv%-|xQ=XLMNV|b_wW23zok&h^Yo#^jxLuXer+S;>dY0dE2N%9#=pruXP zxQ@Z+bzlU7ES$F(OBOB1 z@};Y=YWZ5)wR(6ZlfmhNQ~DUN*$NYxm}Ad(PkWycHaGdMPTTR@S0~jF`4Z`mphDD7EuP;9uXNBNGc)&gG`H83!6s`x2p+3Q$6z9S{%~V=R;bY@YUgERpzWL9&Ip0O@GMUL_lI;8Lv%CHp#wLvW-58w* zgEC>^pWrV=&j7K@@os$-uorp43&F5?D71g<%`jX0PPx`)77h*8#z+O%QppHWjqtdU ztF8bFZF_M%b^^yghTx~{c7@}JJA*7j9Z5D+eh+f}v%Zu7Vy|8Fky&3;_LtbAb9OsX zBJr~ijn(TOt#%V{o)B3{oD3>VBwXcGD~p;pqtCiB4`|mcLrV@OJzO5&lUo%8H9OH! zwtR)+%>)E7x{PG4mp*`-05AIs8haWN*Qh~vl6jh3fQc)GW?WMU+<+JOHFep zP#;oJ5L4q3(voB9Y4C38sBXWDoP&vHk3lN24V|tJftgq8=0sb?)4@H%Dd=J}CP#mF z3+%|Y_Jac_&BFZ(_&SLBc0R{a>0^PQp6)0_o2?yV);$g%N911Bv7#w}`sPu7m~tH! zTj461Rwiwy0|Z{o9AwHKN~4Zqm6-YbnS0+`F)oBB2si*Q@jvkO1fzadoXBL+2&0EN|M{d|wBMt8xAX2* zo-<%vCsIY;s%k{e6tVpfvKi(_C)}Oav?HB|=iY8~r5B5NaT5S2S%~!W^6e&D{M+&8 zs{YG?&>s()ssUp|x@Bl*&ql>M_-qQuT0ekjF2*5r;<36O=l9*o%pRVDe0*;{O_bxH z?ja=%Y5OqHW1>PncChTGojM1Nr$F=>v7P&7A?D#hT(JmUDi)I?iL^cjspEufr)2YT zX*tbEu$tAfZVi)ZG}wg6ikoKQc5oh*cbl0Aplaziw&bH%n*6OAKR z$+wHY#oIBjT1@H{qJk>hJ1!hCEsq%L`^|!>>ehm!QX)kcpuAr61{wMt>5oIsxP)n7 zIE@vgPge_6X!94S*Q?3O8A?Ih)*zVymlB$c*9LS<)Fsm<`t5dEgde9m{4yGcwJtHz zm9vqhh$SVV9Ym3^G#u<-3YRoSm}{!@GdBt2XeU8hNhME$3rl~e9ya<})3_#lib{gc zM$%g$+nw5-S;jOc9h=7s=;c6S*wFF!kpbMXwv>1x)#gG1-F)J#Sth{ZT_r=_?ikK8 z!zj|vbDS9pDn>fs!^06q{0`?JF{LG`7Av%3fi)lSGW{$pBBu! zW_%xcStE-iH4;kET!?}`pEbZWuCub;5XapjB%ge7(l@asPM&iLrWv;*KGTdsvfTa{ zOUtV|^MROANKD0~1BnCAra%Tt5kKbPK%G(=>>u>!lD;?K9HBSloL*drKPs{b0yEVp ztg{2Yl={{yXkP^^o|#OpxbP{*>(9>`#cVRvKy=zD)khNWY6be5{674c7wRaxqFZszE89K!nr@ss9lkvhIn`-UIJUxEUjdE)j-I^hWuc{qC+nOlL<9cCYL5|8hfKJlY>RU}hZuLWBDE3?G2PS_)R?>WD%4w+ktBS2+&Z z=iO3v>sN+ByWVG7$ua&6c%i2;W{k$I)AU5t^9J?99o$|YCRd4I39A8|;uDD;s5 z2hhGaOj`W0zv54jS63Qu6$Qv&XtIq!nH@ShA{YiRvUqj!Iqa#lTXU_vp18n#h3H; zSdiGvUW&nsMrm6+3TZX#W|-O#YyPSweZ2pfX_`R^NoJ@{Ci{;4&l25l zzK_>d^veI8%Se~Ix8gEvJ`%4r??N#aXz2f)G}&mmNn2|yW}egT`1-+R6NIteUMtH* zG0uIQRpQN4J=qRZd+K(#SiHaRS=A7KocNi_lsp!nRpr9OqLn|{&j!qdM%&lv)rnX4 zJh?eu&qQZgw(OK7*5Ae6>nyzU0KOl-gVps><&FXvKIIUd3t8y7Yt{D!;|Z^|UN^3` zI_uBnm1~7+ZU-_ThmQyWug~xVs2)IcV`8V7g?AqN z@l`PH;~ebj%gD*L2!ZT9Z1 z(ax>mP6Z6Jo}rE%qTmHMe2$^CU8}{ghhnNFU@p_`MXK#SVZ=0|V0h!ud9QrGawLx% z5v1puNtvW#^2Uz_ZVWr-D0H~d?n-m->M73o6U{RVr;|u{dY^jHvY~K`^KGg!_5Ktp zOJ$ZOhv-UL~}BEWO}UzU;{lEzoRns>V3hq_n&JFK}7+0 zY*fhrCG#3;IC(gdBKZpBHJN43kKR#Si_G}4vCc>FoR`d;^8~|3fpf2BLtIN4n#2SF zco;*(iGaKkbzA|fXcshGs;7=xrh49j#ckZ252`>66MNNMU8_q5+DHU|{%|xbw&LJU zNGC>8Ut|ZvKhmWoj?WZnC+z272&k@WZ0<$Ja+A}+hpC)vu8rVj(}zn}Dh5CNhg1&{ zw||$W9sdfExenhRv+w(**>d_Yob_sD=6+LX3RLg-{M_+f*=;u7Z8WlI&#`RR*ySAL zir%!0&=oHf!r&D2hO8s9WB6hw@?)w7RZd43VkRgdcIl2bv!gtl#v2qnSF;vZS7JI* zCxOJ&AkI1vwUTAeDv(Bf%tTe>bg`V?a+CrY%wLp246&NqJ26A1OqTbc-;NJH3tm~6 zPw9DtJB4w$a(Q#dH+1!Ty){ldKWb&Gf1qZVQ5Cwlfe($luA&Vni{|~WyfX+6b>;Ix z*?^UbQ8=U^Cbo?%wP+14hi7Y~E%STh%LwgQyf#LVF)0pI?3z;$v|wlG*upmShi?G< zPD9)VQ7vg~uJ>$VX%{^P>7}&6 z(*D&rqKpmwlplof>U>zkLBQ%33JnlHG>9Vx4`b#&)`$3NsdUybHpCiH{-h0x`0Dlo zF^audBlRd;w|hwR_cwPj+u~UhC5p6j*A%Z<`-+{onu={Ha8{fky}9ZCG58t5y%Ov|>8bk~rIy zollA-HVI`s9hn?QfeFsNzz~VTWe2XGu4FD$T~wKY=P`%pU30$Muf&BSM1h2#B>(*t zIx-ZXf|r|w^jOjaEOYd~)j4~(9TJKfe@@gOa2>7WcOUjT;onU=m;?alOcI;b3pRQ& zm~`ZTizeZR5yIUoxI@^<*wBWePy~s$DLmj~bmi5zS>cV~&{`oixe z^>G}ocjL{YS-b5o9mDd`iPhmMp8$@$;ePP9%E;ULAdz=IxW%h6tetfoW$TH4n8ugM z{;V9xtl>a990DClgCy2uBa^nJopcO3Qj?i%4tm^Ne+b+%TN> z1kbKGw5$QOj&%MV<&n5awu|(vgB8CP)$`FwsEvQz@y}lM)wgDqJMH0X3qwox-Iwg> z$uAk#Y#T7RwfGYafy2GXAkD;VFsdm zX4@5K|I=-IN!z6ufl9N1&`4o=Z_e|*(^uc-@f+im|!@MtFQQ; zh4pxgoZ7DMR(*`=s(%ls22V=}|6QH6h@e+LsL~|J@048MW7WdP$fBfM1EfemBDCa`_hqiz? zqtgqNC$m%#T<74f#xhVnSP`RT4xd+!3%7PH>N!2KcmnT%L>3+x$+Z511!SjInQN@0Gf5%>Kgd<8TUR#^Vva|c%ZPXBc# zR=oxVDOgG9-!_h%#fm^!Y2dRGRkCVn9Phm7{Gx{jRWhIeDqDfAakH~yKy;VlZE@j| zH_$tmEX_ao72@IH$&z8IA?4CRqO7e%%Z<^xqZvx65O@tdzeMPLf}jQ^iHZnU#bKPu zW4`~Ds1z?C-5SjPr@c;=9Xiy>&I)M^=KB-BTpY0Mq?1`IOA(tp@6(v+CTnJzv{2h( zPEOe$D&hbB-{q0@!-<#uRU{qqRggLI9cMBCzd_;l>2albkE7P)PK(XpuT+rB`155` z`Nil40o71CAJy>RRzIuhr@%(r8r~uhe(N`~9WVZpyxx~DZ&*QR52!D%(Ak|pyi zam~1AP;Ex*jnd6n)U>EQ@){3flXP2#3tG;n10_Zo8a-xjEcRe=MZH*)QawlExTc&N z<}@^8oO_iX>hE#5%p*z4eR#0L+&r(A5iUu7JfyhanK2@Ae*de+eC<*X6h6oNtQU(KCnV0 zoG{m4l>M{WBKWb}Pt+HdYXC?!(+Y~yaeHh{_h$VM5Sj2lKxFp=CCo4rAY|_*J6Ylw z;unq=@l$3RQfczN6@_WpcX>;n^m19&qz;?P955%2-|2mGlXrd838Bd#Ve>cqI%B~>EXwse zzI>+FkG1&;)00#~Bjr?s$vz31J=W|~nB|QyQ9EydBx8!oyJ25?L(=3$F#+5Vkt@z# z3*i@8W|x0l`eqVJ#>SFavWdwP8-sKl1iI(`-9x*T>Htp z>Y#PSv>CN40X5dvyVox*J^g)`FTm`P(B<$dzN0bs5EL`o8lL3;G#Kdr&T{}SZ zCy(=bn^uG<6)}?dF^5i+A4l08JN)Jj;a#vKvU#!F_ksh(zoU-m$1kYkV!*THFGxRt zkn71Jj9cJ@OTAT(qb`K5KuQRPz^-b@M-MX*&rY+7EcM6~dvO|bIk&7*!!BR@3c1B? zO-tD2D#c|EL(v{H9CBy!%k-b^QWuZR<`s~PB6)7wIX!ZuE09UNHzWgz2QkcI7z{eG zaNmdE#dOIEcBG}b(dMAHq&_w$(Ykrdee;I~E0r@dSb~_w4*(2Rr04P0s_)z1*v0{( z&y-`^<{wsU4eesW&7CTE#D2D$#mbMzr-!I}=S~bLV4Jxg%g7vedxFsMWJdzKytFC8 znUvz8sQcGtLdi>+^s!tv=~Berw<}s8IP^n_xWJ2E^!CsPte~5=uFE;>&FGY%OZA|A zY{BW>O{$;R_gimV8-Ank2AA(#mvg5zfAN9sxWR|bVCYVut-ydItG5M#sxy|KZ2`Y>5hjGEPVKHBVy)uawO^JSmm z>N+Wn)Jh|giFq+0j$|csKOi=cfr{ngoa>_6njvgwU+6`W(~Bb{MZ)D`C_zDe&kGic zga)ebd5nG>Suhn`;){r6-#o&W#jV!|8|#Ie1mmeANIzI92=wMVfr(tDM9nL}+UqP= zM|Ym0bBj^eYmE8xi@TP=@ZxS-&}$C5-t*QS5e(6PkRQX2c}9+AAJ2Kg&?c~YEu{#c zUq0Urmh`+2GmK2EhqKN#3L4pn>T7hq{A?{Wvv7Xk=!~b1DcyY`9!#+pg9K9f9Wfg5 zib0RflUjh1Gk2&}I&2gxe*UcJg~VjkEC{yW(e!!;MP+@8AoWJ}KJr?$*3nIzC7HOg zR$&OSs2A0v|Dbg6V_d*2H=@0I4K7EFxN-uer zzWZ)IjXIaka=#Q8H1ype;o4vI@==A*L1oyHZV!Zrx)yuIpD*YkY#e*(bAoWWhC5 zLtC599`eJF=fXihe??PKoPhrYz2Uz-+t2JC5K#_Oh2Amei#1`xi`6MJM$&Q%n#Ki` zLFF82X~!%i5?$y$F&{l}DBwOl_3)E>lU(9&pHKn4AC|*#iLCUxGa7fL*S@g&f0BHD zzm}sC!p`B(_s*5oA&@f@Ufmm7&_o=P1KFXlC*UCSg%f@h?8D1aTfb^+MQIR;zl`@o z=D_F*DmE$i<_Z_4^S zmQ{1Yq%qvmaHAf40Hs8O0BL(#UH{sPuc|yDSy} z4hB8%*L+wlRyxQ>rYCpU%#bC5Yp7pa8tVzQ)_NNgE`(jfvJM0*UBWDU)-7}XP;Wc% zNX=Sjk67>xS~N-8w@F&_N|i5^YL&~o2E#tT#l^*vwhGEyA54eu)1UdOG$*f+>aYT` z$ddR){?uVror$l&17tr;k1=|UMVBfHxs2uVI{aELU0;b4r?l={k1#8A&V#im2n5ZC z_x*xlFNj^Uh{j=~r|tdnf%`Wku#07a?T=IUyrfr<`>VN-=WkdL=p6Mc`SFctgg1A5 zqW8v>pTr;x0*EYR{MMr^oYleHtQv(hZWp&8PcKy9K3mdKN%1PvLrh84f3#06Kl02a zI3Kwcj&+0WXB`G@$tn27Nn0S9(KJVy=+W8Gj_CL#ZI*&7FH5#w|QQc{pic zt6!Yyj?A7@^~=C|5R)fosYnLs6k@NAnsB-04U%EkYQV3eBd-$5ltRp>VE8`{9=P8~;v(dfjnG@33}` z3g4UsxmRNcp*^qyjfBX3oXV6j?)pHWMiDprX(biNuY)3Eux>?#j6T>BhMtzKmO1CC zcap?9<|V6o@1@3J1WyaDEhHWS&HMgB0Nvhq2!$kPqhKJ8O!~OJOGGT7uqpB4-_pTH z<4094X1k+gZ?Pa?Wc~haM)w3JZ$|1z) z8HC{9#KC`1Ue9m>I@Bv4UQvnGtgt}bnNFzdkcp1!KA|cbiZ-4QM<@t(z7z}>4|U!M zzbixEtZjI@-YZ?u|J@tl_zy-@GG?+{MLmq}F{xxI(_(?>4Kjx?w43BL#3juI>oIKo zBW@L^YP1y*%U2m#|B4df63b?%HkT)c_25b=;GNax-Wf;5Nb{)WG)Au*eBE`Cbx8fY zU^za-%W}Oh_+&IV;X_g)vAs-K5jyaY_?-BBgXW3x7i^ZB@nL^3SX%a719_#*=j^YH z<@5QUrg2&siSIvhrH3LpT2;3*e5Wqp(6CPiF*2M;4Z+1WyT-TaK54`SpphV_vsZiH zh<>9;!;^|^s)|EP2UAmssqhcFlwl|3gb*pBr`VI)nu`*xX7Lu#|2MHIr*b|#Fzjc& z`@O5lcT?Jh)#yvXuyd3D_2*hs9_$k#_l1$+m5DIG^U}AETfImJ3}l*yZ6tiKKy|&R z2x)afN%baTs}0U#mT4q!&Z1@uyso#jieJ4Y$z+o)^n;5@`@0jpX>d&IwNS4IA$sGN zxD{&Y$i^i6x`Wi2lO^5jM*jnH7n8SlOP^ke+Zs&cl!famMn11B5^xG+N=eXhyGZdx zZp^c@Hd?>Zx|x5p=I8E9JS?wgi7?bf%B%li=lB8U&qEgHj|qU3M&~lyL$=kP&1Ayg z(~^x&RJ6={@N^Ggf^+H`Uzy)pf1L4a>Yk&rKqY9nH^V#iKCgwtgSVuGdUMx>^h69-Mnaf_YI}Oi9?-R*VDd~;C^1ID7`4WJ$8pcp17#$53Zro=2SQw#&+bsRJgJtleLFnw z&q57`Lr5I%y8#g|mJ5spCCr>*n$37QP`5^PZ!mPkZ=o|p!-{P<&&I|V$MN`2z_c8h^#+DD0M z7t`q;W5Z;UFqL6DXd^rBrf6w0t~2&g230wx^TUR~@`c^y64P}HOo=i$)A-@#8mjXw z&jPyGo`mO*+?0y>$mDawqc%4*kD$>8s+e)y52?w$$WMQXDbo75y5e~MQ5#|y?muFH zK+36+S$551DW^sMmIE*{JpoTC1w3<8#>SYM5VSsp9j2IFJ<+0K((O zii;Sy4Q@$o_|$;XvN3C$56F>7p#&N`2Uk50a~VZL?M1Jm;$DAI$uDw-9KKU1tRs1R zuftYYs3Z1yV*O^1ckRR%aEZM0QPx;x?)LH6P{Hg%)Wh_T;$UDeAOe z>*LVm3_0|(79}0%)j@c6gdZV!z?Nq}vc=h)Z64t}c!>Cc_HR%xQleD{ibu=c$ab6v znY8#NV{??H8WRR@i5sf8c(E_cu_wQAAw|2x5Q5YTM=v9Ffc@qzD;%3hOO#L|L}^W( zC#mvR_%mQF4#8D6oxfC4p@Le_yUhA%Y6wzFHd3qn1oLX;s!t`vu0Vnby z;ne8DWG3`FuWe@)^8^rZ%YF0djkr^97OXjrmhZqaz$EGeY=Vhb%9DZZpeI3Cog&Y} z9s1$b9(oFN@k;FI%uR}sQhxDJX6!(I2r4%PYoSJ=A&95O`(h>|jxQZMn_w185c_B* z3SERgyAix?{R;bcQVV9aq}ZAf^!UmCjyDiizV%6n6!7I1--xbX5^H4{Rg^cX{r>QB zGM~i#n)nmRB%CR8y`q=m?*iat8+^mF@9wQE0Y`EN01%4bfYoui>$Z#3X)QlLuU+Qwvjx7ehhZRJm*pJd4;>T} zX5EOo`QUO0xDFE#?E3ecBJXcVCQyxaTvnJz3Iws3xcN5cb8;k&Tq;k5=?7zW9DPkh z#U+{QmnGC^)b0=^?k_hh3``-rxO)UJTlU-9*U@r!pZplkn~(a;)Zmjvq-gl?t+H`AE=&(o!Ipt^sZMUXnW4(K^PSTZ z*V8XAO9KI-^F4yNMK>u`(}?UQB(7LO%O@5%Y*)BRAK3S+HTj%M^iJlg=1Rd1QetN+N$ZiM?(eEK(b{y#q}hWN zdHrZ8C#fC0XudDgmQ*Y7oY|{y%ZilAXO5<)-3t>c&=<;57e+9pMe$HZvy+Cg?^mSQ z#%_)Zhh3Cv)Th{RM?Yf8%9^04axriZ(J3-mD_-}^UiN5Qi)olDd~POCWXbAIv*VZ? zP8%D+QBffH0K#3(#4r-MK03vdf(0m0(#Ih@D_?qdDQ{Ht2JyK=HDP_VtOZiofFR)4 zI25kMFTP8CU&^RBQoi_P#_h0lIHX*&bDeH3r<5v;0{%YGtD}rEdVGFt6c6``W%Mw! z%uiIKu^L376c?;T!L;w_q2%70(L_@AD&-uZ-^qWtxrZHmI zOKPh#yc0329+zH?rHS_FRSdgI35yY&%(#)k1ixfoFoE~FUVn!xL-&Dks>SJIb&XWB z8<9yO>&f!;=uEkv^=kyS^{>4YtMU01tF3u#Xm2^y5QWNC$~xgcaeoOn^EVpxP#nKc zZ`8lpUQzVwe`1ToXZG9GN+Uxf@m|k>$3t8%XLuUWlZ@v}k7RM06u!}H1|mO*{{7s2 zCZodfBpO9}Fpe%aw(!EuJxL@AMWWOiF&$_m-{H$jntkH@2cP2DrdY^~k1&bI&HP;o z}XR02wRW>L}0M8Idg)VHLsMAs^z*z>C(-bs2|=@Ps@ ztMrlcG_AaT^ugr#-1ucv>Xh!-DaNUQWAaX+bDcZZb*0C@qoEO8=DEw|Lg#zFiJQce zN-b&J65x`=%KbsHLwkQr+aA5GQmmgbY{us@$PGnP8Lz*Ab>)MuJ&zIlB=E|ITmD-o zb|ca0Vt|&5|0PKG{y#xV$k9WDp1BeEm~cLldyC%mO?@Xh-Dd@4OR`j3km8fy4p{gA zGt0YE4;rm8m5)`=Deno15U{t!VpVL}&qz+hl3vu`+PW-;k4{25XClP6!$Fy};F)21vAdzHYKD zLv)Z5D&EUu`S>ts>Rw0&59{gtHBs)ErFG2xVr!x?7c;yveC<@r5}~DwRnv>ccs%yA z3IC5Ut_H%fbHqZ@{JpdgsCpA^-bICOwyD>bsG8N!!f#dY>kJAy3_a6cX(bVfYG(iV zO9yI9MD!A%Yq^L5+ZqE2bM%lfD5J!^ou(>()BCvR46WJP$#353hvL?RarpB68&*%^WOoop z8E@-XwP*AbbR}?&w@&7FI_5E8%)!J9`Lfm!O1k}Ho%dy>V<}#!7qN>fz^AbGLawWf zdO_-9iU;V3`n`s)3>3JwKGR=HS4~YJi#<{FPgZ~{h5%)gi z`wbte^R7dBb7JbeXBrqDj;?0L1Qtc zBL!hrEi9&yCSMDy&Xv_g8X03J$#awbam1^)*DC*vnL+$ z3$A+b-#J9iBFTK)(Fw7p%|6vqQn`L1;;2LyXN8w7MH71x7CnIMJ%dn-7M6F2&j1@H z@a@Kkc^b%BJ*ZO7cpowuZOU34oZ*EXyE?l`y&rfT+61Vb-K1NzV$Is|tasntT??&E z`UQ#}k4P?lp;@a_GUYP^E$)6gyM5qsW*4_~mdq*u3l$0Yjs4h3n=y@4e<&|q4#T7A z%b48ck%c!KiV)vZ5G9tRC6`VwqqQuv*0R~-vcUuFrw1Wv2NBw*I*O+p3mP>mfo#%2 zTuMkY%pltj^y+~h6wFx?$Fs3hqD&FfX!ZuM>C}T#+HNv@y0|)h`CQt!llmhQ(#)IS zp4-j`dVP#JyMZLahanhs*jv%bkA5ZgbHT(Wf8UK{&4Bm2pSk>J3k1C{!~_N0#l?Fp z=?YhyNe=lNM*AnC9qh%{wLti>dGVK^1~_vkKj`yl=VgWl#b8RIM3Q^ZZ_A+F=uwZo z75dIDV}}g7Zo&|R&G}D}*tq6l%d}G`I0rs))2WP)nh0lRQ~|a8@LLI{riS%LVDWYwTe=Iqmn60#_`*_W07*yc5RL|lEg%L z-2>c+e&H1Fq0~x{^-C@~ghuqXBj48}6b`nT*`OA5zRB29AoU( zfyn;t^Xxk25y}MFms6$3EyownPITt^`1Du6e#a_NX%evD)>!Nh+<0pZlX4l*wfcZq zyp!TcuM^J}CSFuQ!zyVmD~X_bVrCV-y&HxB<-2kcx9w>;qzqc_?2<|`O-+QD_rfhd zskw<&L7_;CHJ~cjRP|!MD)+_j;WFRW-X(3lPa6Irzn1w&5=VDV&`En50=gMk;zJAF zHk0if!BO^s6e8^W%E58@Oj9yP{ap`S<0idwEXh6N*V=>3{#rVQeIfPTo%rpJLy((f zWe?Y25M&vGoIj+pj)M_^gY}G)gn*NPWFI#=Ap56)I6dfIJ80QHBcE2vICZQdb;?ws zB~_9(OVT9wIpaSODM3|$VH1G-tfsRX# zwu;$9Onx?u(@wJ2=w5|aS3n}09wOLdS3XM}`2%;iiYyquE_-7kMJ9ICBawecPzd1t zp)y5vuVgR-_>juU6>TGsIPGx`L7AZ>A2<$v6>M!!xq;riNzIUfAL*=t`zwMo8eh<9 z8T0!nz=}+qJpME4hJEe;@FHF?-~B53Tt^0eIozuv>gs>za@c z5T7Yprc@Ao{ZCDhS=C(t-Ox9G`OgE`l3ZfS$95}C%Qh&N4jBpHq4DW1+0Viggo$V4 zS!fs~3 zWevs}Hoy)9eQV^L(dOBzwhq#73J~|@>8&y1!M;tTY8BA~cQ{jk5icJVPsdfFE#3s}6{p)VY>qCM9<)A*}-QI4ds4zSh zXm}(3)Al#)1?0*UHgPAWSKZ`$PG1L==hO_U0^-;)^E3bC!_sJ2wGzH;5Dr|)i7m>%mKOA`K%s0lvlY?EUO{)PhJY)0v4wpR?`jq*R# z35AfyBaJd_MCRwUHv%--pqp92L@uNZA1^kQe`TP1gp#r$uQzMC z{&QQFwZp;B$u>`u=B=Av#8vl|n!}E7CzqWEWqqA-(&!CcUq6jX^n|dmQE;kcsGR4# zQS4VXCf*$5+6`3qdCFG%65IkdWk3EQ79a4u_&DCOQR zt@9cY^`A-j`A$DaCH$5`a*kRpj+m~E9<0#MwQUkgYDD9pV?#sAF6bmtRcDWU*v4q# zbT*!3t95(D;7_qcLN4HEq7Wp4*9M=p^wWhRA=h3aRX+KltX8H1PJXeW2oKQ+XDUlz zdvBEw9?4FO7QZk;nAPUeW+7>_@!9>wQg3GNGYYBBSgh9zCWSWCsl_s%=#OQUMc$M$ z1KG`H4!JY)lpfQj5z?S-KV3>z8OvK7=4s=q02Fl*FJRtC8-s_rTN9)v$}eDv9kp5MinS-zKfH4s}$ooRv7XtPhULQX8prh zD?^&A8qGp_J`L;OZ@~}8oJA_J=`@XYn=DhtoY?oFr`AA^8IvjVMwEmsw!!8D)~28X z7BPA+J81Hua|4BAZ%ST zT68|aCsizMqg2ZcsEU(cK;fHon*X6`4;fJWV8l1Wud_>bOYnf+f)$#pyi1mWd|7HQ zkw6uEMfNaK`46Qi@Q6f|D*#{N`?TQi9{CIGzDPc9 zOs)~Jz607VV|a270#!=P zZjA3T^Fgt4(PnE2Tu9(j3=lG%o_ZeSOyHv$^T96`j1`v^qRU+%ZIty7YOJeQ$^;38uUP|*e-rY|WEHByNe;0iD)_!hV^dl(@)$L$(?a~&e=Cw^GN%l`4P)0>;y{Gv! zFs}jsCF+%jiU`_-^Wh4`RsE|kLkx&F#S@;(riH6KCDkrnUokaX8ojcM2RCu_RdCk& z!DQ@<`&D-DEcLSps8T~fr`UbdsY)V%sn&~-y4#83DL#I#&yq(tlT9jQ3*MnH@YCAi zcI>$vc5&#jXd;_&*qpx?XTYpjcE>X%c>xa=> zKxp#7|AMmJYG@;a3j+A}ZAK3ABa5GNLXE{KLOy(knwP2p%VBFev9ulB#Bkhpl26=? zI`5^#B=aJb9G4u3fk6`WhJWh;sakhiU*#>EMAB6-Q#s z<$@lM*~!&z^UHB)BeMS8{mx$pbdIx&f%VwVE7*KQxA1C&-<{u1>z3fwQ8IJ_7@J;l ziB$weH$&gT6al39%nsKRZ&9f3zV|PsOI*H|G9h&V+pe{v*TRS30(OXMWjH8u`pcUr zXA%I0WE?lV(5zZ_GuzF-j3;4}Q1*`O`yE$pAr9r(#kDi#e;@SOx&Y$~aqUn-6Nf9P zvc~%cxhY`u@~)=>PF5ftu#zdPs9aU~ZuFoSm#9bB1S1b%OZ`RVRjYg9e8`zyubcT* z0M^GwgtXUP0mrv>w+uaeBYojEND=rfZ*rUhz0JoCJ>=O{>NSqUqOhXmkq+T03iK+0 z4KpD2HWKuPk%Y9v!Q~-|n~J$>k?4@=m0AwdR%OmcTmFJ?tnHy%y1l2->BL{Hn0DaL zq;_tQpRbc1D?bo%iGuZix0ApAsI`*&S6tjM*WEQ;^)mp)%f_ zvZXvo@my(zQc^%tI8=VI+S>t=Q_|FFi855IayYlRg{ixZ0-}4iEEI$r-FJLooT29T zMcchYT@fP@#58+YB$UPEM@ZBYRMYES2kZ+Ya{@2f?g~S(kc-|#V;oq$p4A7|g%AQc zu)WyOyfkwy{?5xk>{Mc+K#-znrJ@{>Y3FcgL5Nyw5e~4Y(KG(39{zUK(i&f|LXhYKDu{dL^$T8HqhME1_X-6Y?X238S?4F*p< zOdmm;on>R^#4(a@t$|iJJu;gPZnM-lw~cS}rAp?=WGAh%!exs+fp=JYmvc(wB5lY_ zW8un{PS==GP51=fj4o$9C;m?gk89B%O~tUgmZuMIKJXIONiN*!qG2ZftR@N6g^i~; zaZKom#ucbs3|2(@S^et9w!Vs_8X9<{8tIm!0>7e5M2Qf+z`5o96A!Z3x_}0Ig<|*p z+qu}4xt0j)A`B(Q=J*MZp0$;9kZ7yoTOTfG99^G{J*%3yr+{5Bn#Fjx)3oJwTB5+Q+qaR#M0ou(qd+9 zej!CGPLaP|Myk0B-VDAQlto!7Pm<+7O)|nv`*AGAz~mDpy9<#u8$n3{)?*^dg8XEs z5-uXKijo&dX+(D-AYUSnbN1J0aFpQJ1IJAE=TzvoD}+NilDzS^13{BEMuVhQP6t+! z*mFB_BgEKpI4LvuRfWtq1O78PeqCz12$cIz2a|W)U!m!zo{%iI+`S z*FSI2q;M%;^vq;dVdV#1?oa=BTxY;mI|n1-Vk8%H*^axmaKdJVItRlzi&c&JtQb$< zh=qdKT~6-6S7-TDmV#n3CWf0=X+cV@tD)q_50ght^WMOgd5nc6SJtmnaXz#hwS@_M z&c9g)z_+!=tZIDIeK9`T*UR;Vk$kLF{Vc-YVA-ki`Mb)_#2NKyZXLd_#l5~FPAu); zgO-I)%e=a5OT8`FUsX&dGhuP7$Wa~RR<+e7t6IH@xoYJ(gFZaWR>c1-Io4wMXp=DO zr?SO#u9;RXafkChOP}HzNi+?n?Nw+dL z$#2WmKZpjczFaA;49e}UlEKGV4mFdOPE|4GKM3`F#9TV%kw#cLrZH~nkRB))5jF^g zH4uZmD-e$H*JNUqJr;g=E;wdNfJ3#>)>Wk{jXl(`kG)x@nI4ZsKQsiTQZJC8O9^kz zYskh$9ZSXzVj&(+T9TGyBXi)DQ6V3fT6X@VcO+zH4efYAD+@)ELrH}>u7417GHuhZ zifts~BE=3IDj7r~pnEs!r8Zpj9iQsA^V2bqP|@fUEQMK1!qV$fS*c-75%CQWX6B_0 zcevz3l0*=S6oa!=_Kbz*NO{jP|6>MAL@#q$umKE*DV4Sxz)0WZ{I*N&I;L*V^)Uy7 z;_7|+9JNQ!3CY*QDDy}gs*ObHwgI-Mc|<{uNd|OjZmxZk{d}}ThE)>Lb4nP)z!qZ% zbEMShl5V&mdD6{9Un|m|{*upHS9OuV7Z_%y{pM4-H1oIM;ghQTq30o7HfT>3z;I$& zWjby_OqMrcb>yzqOt!WLtJ@oztJNH{z{!oaOSZQjv!RWXdsSwXwv}V%cQr{US0S|g zH9@e_=tj}zx*D-Z5!9ff+!(0Otn5cv+TkGbr@Go=(P_s=n3!{Q2b8zdNCqqKBdLIO zOo=2milFaBrjK*}Qcc%#WK=R9vx3x=;95%RrgT1$E-vboRCm7bVx80)fwI)CL{B^^ zFIGEgR@O_wJ1*il3M;WsGyamQtB;I1`YKLJigs|!+nD;b0@a?3<*IcA?ZqzvNkVn_ zYW{&T=Axj!$*4Q7zrQha<{k6h;3Fqw}Wo1 za+#xha=Ec*`>-D&2Mn5%&Nt~r!6VDGO!qx2?nJY9Ar<}2zl*o80)jKQ_IM*%ONIK1 z8P#D775J{v2;_4((vFwfaITnkBdb%1VzsA_hh-9#jnKnjbfDT*6!&G;;b>=M&zD?9{f1{&?`<#wI~mM z%6@Pd^7E-3rI*-S_Uw}R+Tuf#T6CpSmuZ9rYd%fvz^O}2zYe2};Eo-RF*WH8HRE(? zDsW}A*gRJs_3|esw7vLAkev7CpoAf{{C0bJ$T?b-K?GR@mI~r| zDffCVu=Wn1uMgMu8avOk1;Z+{1*3+$ z;H`cRN8)(5&5KLYw?o!}i#Z$K%$o3Ks~zujcyXmGj9;dl_$!YdPuSHMa`64)dnSLV z1_A~?|MW3J^fAI_Wjg5AB4lksKwAq>bt%kS*TcAe8O&=J!nJWee4FPYu=PQtDwd;F zy#?*2613PVk#RQA4yX{IUGRCV^egPN2YlCvgZ9Dhu)=Dy&{mphD~&Ljr?8kfG{9t} z4K>h)8uZZX4Nz-zXi#aO)`{p~LA}}lmB9w1GXQ%s4|nefyoZj%d-4(Z&OQzQnP=fU z#^L_Q5FURBo|Z{yEeU8F>@ZYmVXxD}(rAQ1Yk?=2M7C!fBPXB2@lSpQkAC@wIQPZx zWA9Uch~~Yg5$qg*BawlP&%TQ`#vcmM*9jmJ4$z+o(w_+;9^rcs4bdh;tWrb#0sG-qZZ(_B}UXOobom89e6cru1WN;-p%A(rI()tWDW*w4)2%0=_hdd=pLLtvIl1l7m$pG0u$FU-Cu$9RWQQg$jneWjg~BiM^Ej+qo?=c z(KGw-$eF!U>`{1>Ja%UCI=Id031#@03{P|3sRECl;&X6Y!pR9da&r8p zoIf#!hmVgII5vWFihx6gY&J~HQhxOdTqF>m=@Si15)tXO^@RxP~`+tx2a zQ^hvq+-5vE(1#zKI*TujP2#EkJ{;}i`46^X&u}~Tj&xw3LgD=P(w7|R&M27&(m`-S zIx?mYlV$AE9Fc4W>1)A@_Jj`|NyY;5*E{DYJVwN5CuNvrywkz>p}#eb-h5Okt356K z3vk^SW00Vgb)YnPRQTgx5iHu{Xi51v-;OlnpNxE@XN)4*0FpHj@fm3=weUIAg)9fw z`#FhMByQolk}V(^3NaBy7>h+njQ1iT`{J@fhJ#1RoG4^Z$Y1)NYe=#_3c7U4HnQI~ z#y{;@-d7%@WJ$&S6Qxsr7;-R!KK zqm&b3{UT+^zB0THlFcDm3?jtH`h|0sc@l3)JQX2P##s>_597O3fal}qwUX=w=^x96 zsMm@JW8ILz`yS;y$zqUU)H}6Y!NOw~OkB^X5ahiJvM%yiHE>(hJTJ!6b}i3Gf79gVmdJ36-#L~qxf{zC(NSA?CpNB|j~&~VW7p2rO6SZQSI@!bwe#q>EyRvZ zOHjOZ8A`XWLPg02R4IKjY(;(5b~M%QEc98>PzqgR*$t>9tDtRyu?>@I3YP zrJPrybb4JUO-J#X?B2PaY~=B5REFinS1B#w`S04KG&8kx$69QVj-S^oz#6h~qhu{C z#LB6TpI5J(hmC6%V)xdyP?Z+JQdI_5Llu1LI{3Bq2f>(h|VnEC%viUpjVf_MtcDRfaN8807jx)3gLJ(i+0( zY}&#YYmZ>8BZ_f>;}dPOkm>d)CZ?AQoiR*I(-p(`ucAASiRH626mGgHiHUQV%9amsA+4)*v$3KZbdhAp9&XX_Thv%QgS9?bB zoXv-`MP+zudpSP6tqh;vRD#d1*@Dk4U5(GoUx-i5nS*ENd<>5+cmO9>%){O-%dx+@ z2*=I!c*vo};|$!MrQP_F&w!V_I=o<4;S__nP7{Mzs|5kOg8`h2L9?597|?kUuz4Wu zqK7O-B&E3|T`ituQ2kxnme1=eaYnZro%RL_=&j*e`apP z$4RF}rPw~NWM2`#h@}CW@>iS$u5q7qz~~@Og;aocE#y(ih8eU+eQ1vQk&gw?5)Yy^ z5kgy1J~o7Cziy;68%9?yjBe6%4H4Rj2!^@Nfw&J(@ICkMir-o?@$15T{BEEEnCJ|AsCh#(K3(68-&DKs>tYlB zq0EYZ>#D?O8{6>dXgmIOuok~+_26%7ZTR~-C;o#v>|eQ7{F7CMe|G5bZzT?V+Ej*5 z`|I%O2`x?_ALC1B?JHBl;Jl;D*VE$!#{Fe`;>a_)8STp zx{mD}Zoxmdm*VegZ1{DZ1OL+E$EVbPzhOK7fpz~ob@Hb@75H?BZCO`~-}aUAUM%>h z3KRad(u)7=D8Z+_Vk4qhdaL8p!76-O=fdCljrho+!cnUdL)HS+Iy9(oX;4zA;X1EH ziBE@8pPuW#_`Zq?O zv|7?pZ_P!eO@UII8pRGHe0I(;n}s^TLS4W)XEni1J>W9xsqb~LPs5?ta4jf+T^qov zQB!xSp;f72(wkv4SfN%MVK6#iFD!+>p%c}cwxQ+ZMKqs(0Sy;kM$M@kDBE`h-m#PL z^zVhaVgT7n4{cgCvZAvfi_1oSNsA?0N45zX8((AbJ`uA}C>wk%pFMk6g z2QHzpe>415O>h^L!dv909pr=fHcOSygBnun_fjWt4iM=h@MWcFtSCdH`1pI(eNqp)T~c)uE31w2WH|Hy4vr1uz?k?x!=Uu7hQs3`eMtIV!=bH1IJRvaPVO4PsXd!;a_=Zk z3b|(^840q1=hox&G*0bVhf}+UC3#w~Yj}!NL3w8P`Ui4)_r3Wi5#>(p9C{!pcMRgh zcCu{%$H}pYejJ_XlcY$S&hc&i68EIDyr|=g5Op4BT>`1@@ji(oszpGs2LN3O_-ownqrXYgKduC$t6r;Dojdo#AbG@#z$WgA(MX4qW z&g@ud;+G?1CpPHMqChi;gn-8a^xP3r(n_ebDT)p^>&hjZ2Suw^2Iosq$cuw&(ih z3Jg$o*Z9!Jx?07*;$eM$V?J#hIVzl5G;$s9sP@o)E<+Q2qDr?;+NcrVd}yIBBEIv` zDt@S^KUGaXtHPy26>Z--Ub98~%O>$}pIA&dxQ7>zxdg|zpiEl_u)+Meb zz9AvL9dSR+^nWT@cO&hJ_A24q_|e6@?P8OFX$|z3glu8HHnvIBC+Zj15^bv!8y`fp zaq{}&KAP#%i8?yPwZ*1^@bg%%TDvvmFNuRii=c)A->clnBr9?oV9tCq&EUY>4u;(Shm7k14dFtn|=f*RC7?iQg zkV|7SlZIs4ikV1RIs>Wy1!*))Q1?N%Ce`VbJ=U>q9A@5Y}rw8$>QM7kApKW z7WSNIShFHwNDYIE=d;$#<~5)B92u);u}$-!Nn9c2FO(<1EsvM#vSr7>mK6g#anN9P z=CE#wcsR0n&zW(sq{qON8cD-B9J<7{&?N{NA)!r*fM$~92&hQ`^W?{_L}vJ6Brczg z_@%RuvT`1c>Ul_6H4mw)=Ocaf0zQXD(8aHXGd%(RymXW+vQeeVLyaaM^)#RxO=>jJ zsA{%o&}!A8)uu-q4J|<{X>kY)K^UhY)j}h%g~n*}Bo1QNNHk5y#<~T;bJBSlkB!1O zCJh2tfO;Uou6Yvm4n!s*Ty=ntjj9J zH&og&LN-=9u!;FbYh2h|>y{X+Eu4yPW_+wJ2;*BOsbN0B^z(H^*is*)!E-N-0G0NYy2 zStn^O=eYnPE*&?OV{2nM#_CHkT35_^z33};NFVU^P>1-H>8Q}>p@q)LV0973+N!X% zqXt_$YcSScg^kT+SYKa^;aVThd(kh-)9IU}x3UO5<%Q^>v)EngrevJ5tJsCsA{+di zTiT>(sNirj)yHXmDkQiwUJ}oPN&mt=eTim968ZoGoaR@L$#TX7UyBLMU5IF zq&Ti3m88NXevG5zV^pHlpg^%s0l!8LpE@6&f;%z0_B5UVT=He#1Zhf|g*;UaEQD9fVEh9h5wV$zVvDc{=*p2gC9VY*b}oH}%n(S`TgwG~wmuDqOOeaoujit1j`E|3!GC*o#}G zK3psIa2WbPF(=%$SUg2rXmYA;UqZO8Y|@58q)9>qHsPT~0I25hLWrM~rYZE>K%YT>-FaIRRnzBt$? zZt7vr6kT2q`iqLN!BL2DgA*t9cD!n|;xFtb{Ikal@ELrmqtTswYQVZ$$LocLv(8-GXL{&TKDf6H~}=Ujh&!8PD-xhDJ#*NngB+VWRi z4}Z$F=x1DOep+P25A16Em}BZEZX^Dx(1^d}Jo$+^6Mtz=$6uM#Bz|Vi!q4paJf~(G z%=kNwp`dHp?#NY6`zbv-n=dAN@Shr~3&r8kt>k3|*_y3bh zBYs@0!C!jS_*<`r^%(K@m1g`s&;5Okjd4oe=U;HnzGqS3Fz3QL&VyFYu?Df(U@t(m zvj8=2HR_7E?sLs=rajPVDL|_(AFaw9v{U!AXC>U#~!gH$kInO4blARGRI928Su zm#7ugqe>KNRPdS1@LL`5n4KsqEJ1x`6FPdwqsY&c=Q_T_FqBuj`OJ4 zbR7Q99kBYkA(Is%Jt_}LOJiu0M$$G*f;>GRPMaT%t-~1Gc^0Rxyp0#``~cT)e-9U* z{{Tl$-o%#82hiKvk2+rk>fAmwx{5dt+-P;XxK=o)XfJf3(^E)W!$VucOPj^VwZ~6{ z1o38kzSnJGK{mEhXRZa-ou&A(;2{Na&|1h>CJsOG17&j>pO6KLkCW6>cP3K z1Gq3ggbNdbLBivSew>%+!^MeSp6?;uxI`|Fcj4mJPR6@%na6@FJb!iKF5>t>T;9t3 zTUqWtE^QI8&IfRDtRukYb|Pd4E=aWF!e~3rkG4rnkN=-?Zc{7HZfwPwk(Mb=lT#zj zI62ZJacW~TPH$v7IkBG4VO=AR4L9P%29c))Cn=9H?Z{vq4))dJKu-adR-=&r-_Ti4;O{oC;F{_S{veJ>8ymSRs$F}BgR+En4f`Z62(ygD=+ zb5N&FL#;9y<+-u&rPGI@jbI3$gMt-LLA~l3=+@4LDQZ4k@k`<6IcwwsnCXL==*t<_ z&ViQa3rPN&naEl7H2t(EkhJVk#4UaZQ479`=tU19e)$vhnVv%Wsu{>$#eDQ9v+1km zte6E|^itI1r{a7|9e%KT7jAcRoHW#B#$43svQVYTM2$WN4d#5b@j5NkuT55kBwK@sxOD7Lp{r1b z0qXdT)wK5;i)l-3X8A^(GnWxK2uKX1b_T zT))4VP>ME;@S39D$@>;%MLy9+K|k+P)Gyl5%XM?O+{x>D=nr_<-XgZQ5Q8PO1F4HT z-6r-;fHwNL4Yac>)w!tEvo9ELqAlKH)AF1S?OYo>T=f08=61OGeBGkmdL9R8<9a6E zVr{Xh*oOsZv?xFKTS!<)PozO)FGW=5ktI~EnW@umKl!HjBxl;R>Kvy6oxPwuMen4zh;(X;0lA+pSl_q*^w+yGI?(qtS3DJ<>`^A z$cREE?^RHd!F#4NU6vY!(v%1kCx^qI7zSTL7`*Y6@$8#~aCoQTNeo9(;#yv34cogC z=7^H7`UFPSV+f+pNAG<|^&0~83XF2}2v|=K4eV}9fF4@` zdTE^X+5`V)VL;$eV~~d1APsB@#s};IaXxT7=+I)wNoUoi#d?8ThY=d@8)@W!5hFBS zMV<{bqSwdx)*y7RgIKa41k8M1^o%wbY zo3OLQjGd)s>?*Yc;u0c$mt9QTP2+tR4f36W`|^ph5@n>^dM_0=>=snov8U33Jyj$a z-&^IpOSKDoYe=<--;2ndbVKfy$gT>YHSgq$i^|Es44{5#Aua43d=ye|8c|NNIMW zL>c4dY@eVaCk0g!sU#hhvRpKi^|={1pB0ODsTaSeNy9s4B`!N{xK`hYXFL0GrE>_c z_HD$6{iFCnYd=1;6yfTcSiG<%1~*qm;^xxTxV>^U-dwu|Z$+%aorq<4DQqDwt(}Ww zQS-1jWho98#Nw1Q52q}-IA_YiHB&a;Wc(v*F5b{*;i5JN<61i6S~a?KT6Amm=++pB z5nWmnI<-R5Db*EVSd)u!MGCH{Qt**J9UqW8E+wuudU3qbk3DoYchRXFXa8=@O2VeJ zSZpCX*dHg%a=bt%_@ka$d{|e4R}E^sp;O~Mod(}D8SpKK1s@eUai^#VH*GdtS1R#! zSr&enmx}KdWa4>MCN_~S>cwVDK>(9ddb^>QPVAu5Kz&8WTi`HY9T~PW&880$I9}&4 za;zA!p5tXb$BGy)BZU^~ug|lI<8PGXQm}a%V-hxO=U6@H(&HMP@;6*6d{U&wcfA^X z?2_XupXq4WJosij1owyQ4xJY8Ih+xjDeU9R zs$5*+dU9T#iBnu(j^rg{TY5C=md$|c=`X|d&>v$sei_b~GjX#_&+$=(AMPH)clVFt zTL-t{{lj~4cAy926{Xa>4)oiM=r-}$k{+`TeO3eYyP5Nq^LQGY>{e_wP{+x&xLjbs z2Rbu;&S&&nwG5vs((&(Hi~f!J`M1>1zqKmyZx$K;&6J7X8I$nu#weZ-!++>k;y;Y5 zc^rn{86xm+1(dQ?_+8FQ{4RSH{w-$>{zVpne>P>{U#S0n+gO5sYbe9-imdpZMUQ{i ztMMO-eEg?IiBDZ7{DV=3pQL ztQIg`lgZ;`d`p)|67aD;5ufOJ9eoC`Bg1#~N_=0h!VmNX_yP5f;CmdG-{tree4p_j za=rf{*XtjU?{oZq$DEH(*p6@5^6+(gF23%_#mBZ>wk;Rmx8~u8b{T%?l;cNs!nXcM zpN&s+Ie4Apc9gR5HT8I5DH36Cf9B8V+-ug=Hswu(F>SBpqH39b2mf~=0HI8-G;doa)4!2cf zPhBx}l$GnA9F6&@)Y&X@Gl)IN}F{WbT&Ymlqdg;)E6i1;KtzS3KX%R!`gkD%iJ zm`mN|xX@LG3!T&8@%gS&ob4=;I4_QwPjI%Q6sOxtaH_2sXWC0}hR0{x18FB){W#I= z$FU|Kj&dE9Xb|wY-iIUi!}PB|W$ zt64r~3EFewaFt{G&&M|6?Un{SS5=JT6@@rlQ;36gMN=H8EtKr#aSv^Lw}$JJ66>kM zhfTTI>{MY-i50tpOvZQ6&fiFV*r!TI8~t7(M_KM*l?z8|Jvhi~?56#@wTM0mb?`c~ zjP>PVkahOz=*Ov2>CYvhU71W9C>=f83@N?OkWK$Bn=*_3R~G%RY^ltMvq176#2;Gh zXL}Fvc^s+Yj3AmldsCmUIxs8=BJ46uzoY=0-$MZqA~J>d&%WV^++H@OMr zgz#_ZlZf;o_Q?R-D)NbY5N#M^TSnOialfMN!(78Q((c(pA8QMJED4X1`RN1FcUxzr z9~WeZK4~v)@D8qBovJMMYYxYvjQuCaI|K6*~-}xRblf`7r7X%39BSov3f4k=A$NJ5$d9s zpdoe{8sk@>Ibk(glGmawEdrex(df>KL3eg6CCQ9IS9#B`iER}B!mY2#VtweiD7&-*0Yk3dhyq5@c z^Pam>dEd$5=pgNhYuR6G&=R*A&9SS{9K*6P?4KB>#jasmkoYk6+gdcntw96x)J82w z@ydDdlZx;qsETAeqgSAwbuLuqj9(;$W}cKTcbRP0uurniW8=MiE$$_$gtHQ z^5$ZTK1Yg+G%1~iRVuHcv-R@+G;4&d45XfT?trpE^f}W-r+U_1BF(bz$UVLP3o?S>re=6&rK?RIOKN6YKo(%sopijN{Wf7y z@Vt@~U>o~s8y$-Y);lg>nqV92-)bEe|#;in5)CwuymJ-Q%AB%yU zWNhI48k5ErohZhK*tUVZqyVxc49b!zlhL1-jNaTN^ayh3aA%XOM2T)5_v9usJ%z`~ z=*UcxXwOKb-b$bjibr#D92zBJ3EPw!izc?AIU^1&q%BB0bwfu+LV(N!bdm1NMD%2_ zUGiLvD)O*5FCEu2!tqi13j8QP3h&C3aY3Gg^Hv+qxP3V0^x=%ni)YP6cuVKRTj>hC zyfPYZMke6H_*8tHl8$dBC*h-{XnZ{-0`F5FzC~U6QqmG!PF{p#X^U}M6@{zLEL<_A z<5_(wUe>4J8^(0}z?gw=s#9^ZARULPFD6uU8WnVYb8@jhI}hu!Wf;oI$51Y1ZZ7p4 zbrGNS-s~v6S`d$)m^1K~wj6xdr^Oo$9$c^U;9Qv<$2c|)QXlS1iNS%y2pmn0!0F65 zT+?RZ7RUBS;xGLt3L>@;y+7?n6mz4)9q18-J-tZXd!6_5oQ_aeK2P}qk8g-{j`?fKbX?>(KAoS4 z1MK%fu9HoRA4Aow|BbD2^Kn)gjTbEGc)i?!588|IW?LCFmQY^qfE9c`k%0>7G*+Tp(Yd(ING7rB@oQq#2 z%){R&EW|I9mf~;HSL3I$IQ*FR{MSw${?2K_FZoRVUY3o2$VkIKCnw`yGg9&IT+@Ea z_51_c2(L!Y#%l?S@NU)`yiMNBAhad!B(KD+_+@w{b}3$tS&CQUmf=?NYP`mI^+rw< z-jT)QJ$Vw|RV3qGWis9=NXFaBB)p{%B;!raxi|BZrg)1w;vKHD@8)HZOuWthe^VKY z*OgJYql^q7kH+iyaU8>`csDl#@8xFUedc|iYx4Un`##s}_t`&!54bje$TeDm@ejDp zzsu+PmMR^0IR9>GQt&EyO`VK4RBRi0N0oy2$omDUET4i8sKef(UV14v6{lJMUPU&x zssd~DdXB$AuG0e?H~n14hq!)^@Z6RHuC>%Nkmf&%(B>1Z>NQ!1j#Q*p;;! zJ9E}xhiomjaU5;cCUcx{z2@4q#irq$l4G4J7en%F46y6~+b`(nJ@&B;ebil3uwA{` z3ABfz(3=^}c&wyjyV*bOv{l-a`DoK<(5f?`)9OZVVJUh`>d;ovjM~a}lvj4ZU(p3` zSvNezUGVsLT-Xe+sT}TnJDjO<*rHQl36F&{E*btz85;CX^!n*kJWzpumJ7g_diA8k-9=7*nYU@3Ei&Ta*PDQz|jWxRj<=V=LRa zl{#pvj`2zKYU%@~lPv}<#!a7R!mPzMi-v1hfC)3pP)`W9a{g@=b1bNzMA{yg2}g=u zIO2EVu-|zXp96=z4jl5>aL{AMfg%$Q6yD`vkr~HJ>^NEO!s!Y(PLzou2fBW3wWPK14Xz`!(oFT!@D7 zXHdU(1{%X>pgCeDTBBx>*^+FD6wH)p=5bRr;kicY)9IiZwHs z_6+^TnW$S6gz?(&IcTG<9?Ofzb&l=twAAA3RcyD%ilZhO4p?NgSM#vTl8c?@9Imn1 z*kvS!EbP>0V!JLK+cdlnRVwY3RP0cvVJFw#T|Bqfkd3|6UwbIG@!VKG=Rj68M!7zX zQ}2uP1MH8(PGP$XTVB}qx!7yY#U8TPCZlbeM?WH)>tGsnK?-#N?OJ6beXDrt2lgG) zw;9+Dwr7ViOOo3ucd(s;oo2R`bsj0w;J8;O-OIQxjXq(bR9>o+2suXmzB!mS&g)Ew zd%F*jw#$@*15O2PaM8Y8>AKtW8PYk?KO+5*o4yFy?~pT%I-K=w%#WvU7#BbmOCL2> zx({&=qK;kc-#x5Pv@vk+^bw34Cp<683%QH;v(KJSe?TGCE%J$SJ9yvX`dheuZ7vY^ z!u}Gd(|LdCESt$T(yvoz(#{oaNtO`tQTn!3a z7@y}xc_RBUS*m|Rm-)coOG1PQ5#sknXpZz zA0rV9u_<~9#^_j&#jn7YgjLv@uo_#F!Z4n?7TeRKu#-;TuB;eI?w}L6BP|j;=(ta^ zU1BY^#*6<6y;!PuXw_^CEPnRoD`}G6;{!mYBPY$1`u@ zT8szTk`RXVQOkJ!<=Dcy##17BjcE2^ti+Ct7`BD|nI3~ZbguW)p*|=}!C^%@jwmy5 zq~Kl-)2I?0qJbqLPYsYC;IM$lhvlq8A{j@Rb~HbYWa6kSi{#*FUJi~;B98NOr#L3h z!%+oM%6QFuLaEBb5j7<_tj@z>RW8YqI8=~54IV4=rV!L4Pn!Ua0$7fc1XXj0;$Q9S>7M0$er|3*(kR{E}4PWSuO} zV^P;-)_H|eaMi5DRm&s=xMoq~S&QaA)OgM;&;%v9@BB4h_nIhgCAI)pZLHI#z%@FD z_fmjo?JB~u4&4;bO~&n7!gk!pHFA~pUp6an!6?Id8uRCA_+K>UGfjyrJSWZzuJC?D zzDwpnA6}HmpW-slUtxO%=k$3vUXac)ACKMCE4#B}Ikr=AQlEo!Ryoe`9?njar;Ho} zhFqL5B;zMMm&Da=lb)U7`)Fi=lC2C6r^FdMtln*3wz0aO*Rga!)o@a zhB{G0U8v!B5(phupa`Pmalw6vG@>rR35`H0aguStDXoe+O??k%$XRlZT%_K5me;#O zr~D)K>-RJ<_zQg;exhf4vsd6o>I$6Wx^$fPdNgV|&aPdIYmv)vlk3s#lqkHG5sO=H~w%)zGBPhsPVM{zoJ30_t6 zI<^da%df(>Yi#&>l>_h9`tVM34X%0JoL^cTH7M9Wx!A+!vYYGE9n}$p2DR`aF;QKk5_!Y6F_XFXgYrOL-A^iDUBB>?GXIN+apGlbwdw zvr|b5-rzicGbeS5H|`+?ck+^POO}kA)JZQW67ak-fifO9Fs8e2J z|G!QhbDO&2CDwhFeSSukjiYkTPp;K_xW?~P=VGTu#(5#f0j(0pbYgrOa9*d!d5sol z)oPr`&%r_V=Yf>9IFPgwhf+AEGS}c3^~GsJ8qT?tIA3DHrE(W8mlxua&yF*89qW?g zAnk>HicIP)j-UJt?55n6mqt=0#J~F5&Gzo54%(d?MLkQqNKU<{NX3LQ6BC>#<0b>P zn5`JIx-e?@V1wO<0lOcaRzKQorD(QSqR~-{2B)9~&5kOxT1wEaccZ;PhxWWYv{E;8 z=44@jb9s}+j%}WD?5$|Sp}Kw?Z(5I&4eM~csuxFmP1tYoW3Sr6wrH?FPldyIobNI< zPUfo!=emq@Jx_t-d2;GLB2(amoM{T4Q%=HTUh4#P#7VV^HW1OUyq5J$YT7CoZ8Rh5NL3P>-QC|`aL+Yw&_cC-Iz{y2vb}4V8(LD%y?m1RRpZ;y_+B+n&sGIk;Y^!cDIZFZuLDhnwVv z!2ci&JZB;n)^A~1Gp-kjxD_|NHkP&D#c#(;ejBmkW%8N;kYuKzQbzl%UVj`X#stw`PiAV0J~BbO7ZPUbFnRc zHYVa`VSGCAbI4rA=g@zeh0(|v^iQ9{`miS@HmrRbBV^;+8Q4rl*FJ+yg6O&QIk^rN zB;XzP;ZMrl_@2j%ciA7;xQ3qBBypa_(}#(nPZULaBpe5G*5Y6`p*$oJjzihuIFcK| zc^ie3@>rZvCE$WK1(yx!xMIw}C4Cw$=u&Ww^_^8GN{G5e+C}QRi^g=qJciV}@c10% z8C^0?X%eM&oKVH%m@<}rRg5H$6~xl^W#4HMa9Wo{TOgVJnG%F?1Fy+CE?F~i*_tJ# zp9tR1ah5%)X5X{iX)W)Qb%^>Um`9uw^@?ks(k3#GKs>J$`a7a+Dbh7XKGBY&ifE}# zBHtxTChh$k`UAOB*A?x2FtO70ChI1!;uMp)@c$~mz8y7rI#%T@f)o0K@$>KF8 z5!buRX+GPNYSyVrVi{2`@qxdWga{EL#P5sHCPRonIJU2ti5)9uVJDsQJ!|ISVB{j4 zNLYyjlsi|?!S1km*c-6`2cj3_K+IAch+U3@aU`BjB%Sl4DPcIC8jj=X5jdVk7(YfQ z^H?&|@8dAb?TcK9U14*vedSDSTQ&o`c#XYl=ikE~vOApcy1OGNBj;gf)LnK*&&RH) z`PdOL7dv@wZ_Gj*p+kEjeGN`#uEmLrHEhpn97|h;!%54qFK&^Pf2YVFM3kM*-q=Mr zn79l_l2_nR!ZP09G8|5zlbpCx;%M?J-qUIvPomSDuo_3>SK){tb_EVcFUO&%WjGKa zU>{K)j9?#4<47#aC$Jw9*}i1++dDpU3$;myZ{XieR2#S-l!BviuDLoi?KuFPrEDn&}u? z40zQ_hj9{{3AZJTxNQ&cn%#icY&xRBYt~6rJXQzOc+R3H%x5*=4(qui$sjg?9(P#J z9Xs=}uG=hg+oHuSvsRL~ty-36T^80Eki;`p|WZDTucS?M5iY@g4evyv9hIURwsIk9+F zlYy74`M5#NjZ{AIau9mOaL@$MOR8p2(x4N=}i}xpe5nzsJc-J4enkiWw|T4Zcgh5OqRGQMI*vEJ0k`xfyqL>57@v-tt7Gvx`5+<@uZ2b6X4q=n zh+K^qsk?5lPu`G4;p^H2{FyloADff$zAgqY<}Af+^;&%B9l{G9f=#%VHdL!aW0cOCo2{27c_<;m?Xq_`s#XE9{5YGh*>kPBK2pPQ>@A7k^6q_Y+Mzen{u@8!4;s zO|CQFSv4C!SUwX!Uh)k7e9;X2aOoU;XXPS%7`YZ7#6{yB52nqQW(m`d$ju z!Sn*=4e+d5MO_!*d99kdOmhz}kQd1fJ$06j^GBP954EZIt|k_Lt_sKB>Z0&VV>Esw zUxSbG!f}UV?nYW9o{wFL8(|A^Yt2Hu8MX+ohb_iyWSv!199`I@KS&_KgF7U+yK8WF zm&V;2cM{wiZ`|Eog3~|~+?@d3Sdicz$S^Zk^Uqqf>b5S*&e`wY&vpdwEU&+5k%7b} zuys#v3ltOM?vL!XhTm-UCP&JwTihaFJUo9ctaj`vIGMiEth`ioMv5j7zAc}rgG7S& zrUy+k94=Z6NrR0~hVM^a9$b_#T>Qv7rGo|T`rK{6?C0_p zsW3|HSRmMmxS$8R|0%Heml_f;3VLxR3p}n75PMe01qhH5X0Q%NEKLB#xX{5cDmPYE z0(M~TraWjUA#>lC*$JhOybVWODQ*z@llfA1Ua}{Ji?YGyP5N6SNgTu{yFRTMd-OG* zGVbYgXEU+r@0%10{I9dqMT% z9b;arnm-uubg^ntJr1u4q#&#UPq)0H?NM#`#XKEz-LCGp+8L`PjCk0Si7yKBH|r;^ z{Fv_YRT=GKoPiibpwpx735)}SH5&%~;!svj`8GZAVYkH=JqFsL!ffnb4H4c^h)}_P z5RKfNw_zByLX90n8djWrOWRrO56ggwg4c1Q&6RSa6>f zltG?W&!1KsVN3)q?4d)a433vtn&opX#q+f0Z7g~#1jRv)9&VwIi$E}W6u{-w3(q2_ z?NiPTX06r+hql>B(rAoC?}vBgnm0xhbG8iw-%7|%0A;Jj`tiUDG+blINRHfwK>58p zKpf@`*9Ia@>$UG_su0#M-|co~iy1T84+;hl--cmST=5FzR1A+8)7J03l{34W91?t5 z=iXZ*Ln?Zau0J?fs86|mzh9PJB86tYM;tfDUW$ol~kaxNjXyYDHSDalKf z>ZZ@(Q_mRosyC-PBe`A1uUFGU)2vczzDS{^Y*@$Zv_8yc*;)6CbL`vU1G!#rI_Kox zq3rtmM}73maXfSM7X0POeCeHx>WWWrk$KWUOV~if4Fsf*0r4WVvTA^I%<=73=x5a| z2U@x96~F=iN9K zgZPc%#jQdhUEm%q1)K-{A(AF*+A(n0|Igt`1Y!o512=Uz%B7yy1s+5cO>y4s=>v3# zHcUAe^pXbMlZAUPbhlRgDg)5^M)55Ow}M}78$othy(&iX7l{L-hi0^`Ex%eT?fzB8 zWOx^RAJ;q0<*E!GA{1xW zEqHwaj35rtI3ESooIbcTA#CrxHLtNkH|mYot+IUAvLeA`i*oIFiD5K74#k*zPcOxh zj@1sV`ONxZw&^uMnLb2tRX_VaD`c%!Mj%~?5Q=NFt1q%r_&_W`!Y>s|8AoW};>P1m z_fkWAQ08yf}Q{BbdifQ z&+p=Tu$ky+K$%M1G}<%7R#2a+<9=^UL5n)OtS}R4CLx^l@94D%;M(IjxhkfSXa+TI zw61m9e`o=SE?JuPU|abf^NHb{M3(h4d*7u@mc0I=7)ac)eotlD;;08XAxGZkq89WR z_X5Uavg0@Cbr7OT4)G%$>B3X({u0}caKh1u-es>mgh92ZL|1RA+&%4HJV{fGsc|@Q zfX7%6Ev}Yh?oR;>1O$KwZo8(F4(&StC0pJy*n?gctY=)D9eU0EL#2TYh6@)zQtwa3 z(qJ$W&FIh^`Oieg&bu~-1uRY z1Rz|0BoK?QxA$bnv$vWnA=1C2ksY$JqzXpyrfV4Zlcuwp-h(5Ys%sYIEBwWUlTT(+ z=HER1pA2e1smC0(o$1A=^}`U1-iiEyAH3Xt?AM$GZC@>TEX2-T#bkdTj79W(z-jtu z3Co8NSn$OA>2lAE`>l3bu*qh$sAZrWm{}2nDw_PJsGJhaOr`4v?mCxNlRrh)aWXfu z2J_z8j>6PcLvKQwK;t8(F>@L-YJ){RG-Tx-tcf7z1)ySHga@+FE3BcZ&45N&o#^N_xInkJ?M2K^j^M^-@{Vw{nP>qi{!m7*n~I&pM! z_#ydl_Ht&#KH@W0MSAJm={?h^PFI=_Hq>^JrR3+Jfis2m=WWLH_}`BL6&gD|_5Tqb z&6@Jy?Pw-V$Wry96b`-JkIM6i#Iy(I#|h8!(*6uWeY{S^52pq~hA{Sj4cSYbvWOu| z4I|flq9$%cZV>BHB{nn@Z=(x`B8&zCq|W`O4;Slh8@5o#5zL+g9}c!eR;`dF?*PyPbF{=d3C8croNlm8-T z20P!mKIP%KCU*o$40CS$Ee{usPSAgs_VK4s+>}<2fyGcxndgPl(GGaF>X3JPk5~M| z`M-o`-@N;OLeIOHS#JOOF)dF1Mk?)%V3V)~rS`bfnH-F_}hXIJ^R4*QFCg(z^me~%pxOwyYoQFe59 zCp2B4%MK$SKpLf0v%GUry)S^%h5B5QVIH!nX{e}V*7NH7{Tes_h zD?*=_tpX>~zEKjvEL@|6BSQ>0E|wpnD>J6dLyyBRCNKem)h9zMb>PA(sCrAeQ-zZerSp z=PDZxKS2RLI4<9+8E`)2#JdG%DpjQIs~vLz$C47H(&Ri11QZjs`tu84@r52*>5QJH z2Mvx}Te1Ulb(j?ppjB^juqXz`wBwRM1^#a&0rub|dO}a8;_^RQT8H+P6Ntu~zxJyK zq_<>(d>1}LgrCp@m7FdZAeUMIo;O@16vQ*<3w{ZpB!yP5*v3nBS+G4z@%4!{?xV;k(dRJOJpG z@tE>e%X9Jpm9N3~J>fzI3?TGR{EGRqrk(1qw+j7OpK?WNJoK?oQ&6);hBZ6Asfu<#Uycz5|#GWVhk}&{$0$sd<8bhZLO^ z{Y!YIryPx3@2SaoBBH zMwTW=I&(X4!08s29vG^0?2yZ7B!M3me2FctGf}LABS$)&V{Ol5huc}XMD-Du0yT;U z9;$F|)kBY|0U5EH|FSyAnmm&4gET025C!Rg5N%E3dy>vlkd?d#x40Iz-!(9t_Zg;XS`ZtH!xKo!Op9@ zljkM+a4=o>;CugGY>hWjoOCmdb zh^KC~Ogy+2Y@PuT&g#M*geoT>CSf?wxqPSBPmL3%kxj*#=xZ-_TEer{ttC?Xvf$-7 zHcLh!=cOahrILk(ug9~dnjn>>sm#hMXyUk{@`K3gE~5n?IJeqmAiZ5|lWa8<{DJ<$ z{oi{RPp8qPV~Si)U0Blc^qsw%fLaW^3pIB<9qyS(X3H>hfKo~7ZXG^jNC)W(Brd=z zDAW9ob_z#hLI5qn9^IYiuZTZ%Ne6L8#rWsJhmOow)_kmicC_l=2b(tfj~hk+qTvKrZ4~3-w|^Q{-FyOw zY4gF~?;9xe3c{uLO_RRw6)8~Pp@POb@w0dN8cm-GT_ZBhb&u)Lp@f)O7nXj*PEdKj zQqDPGJ>YykBLI9iD=hJ=?2P^+Sq>3@vj`(TQFQ)3hEvJ+Gu~YY>d@hXL>&g@;-x>Y z?%&pa)PFqdks-fUV+-zecjXcy9!$b;3l^JH+UOFoM4?gHeAQ$P0q&RC!e|Xb^A|YI zp`-`WJ!7}WKfVy?X)o3_>li;1T80ccoyG^^z-uT+mvykrPsXD-#D2y`akQV-5CQ(; zJLUePtu45&Aj*EEC(68}KMFWjn|JWhgq~e`G|?Ut$IFN%)TM1$+AjRb1qCt2xg|Mn7sXo(Fbrpdj~w{Qwc$sr4<7SS#ZTal z{kZPvSlTC$)Q4x=br9>_JI1%U6BKu{d3T_670IpTuwWIyhN9n5sYGVVNh5zxweF@! z!3I#;BfO`2k~J20n^9oN83+W<_uGrGf~+2;f60-|lr>IEACC*Lr{$#3p!LnQG|`$sGZDbj@)a?h`8T>M%0S!erjE? z6d-Jm8!#A%V(mK;7IIl|R+nTHv$@cc;OHvxq?AAC*eRMBZo2=@!NhkwRPqYYj|v!s zyG;k}T~ESq4@8F@Q;M;E(U<*9yC?oO3@R&o^rKQYu?M5~Epcm*Lju0&%*Cl=cYWHIU@DQ$?wp~m zOf(K<`qfg%6^PBW!lkx~m{yks(!5jn%`~oqMq?mr(C2S{5z^Bj;h`z8u30jhOdPj- zV>d2vGnY)EUTWU>`5h#?_P^tA#uZbe{s2tb8^2YnNvKT?P6+{$tn%Z1V$GXX^Sz-+!>M~UVyE`%nWklj5jO@< zggm+7^MCLF)TPyvIkN)2xEBh|($qZ!5ax$of3hoLVCibOWf?(kp=D6@X5zv=W^SD) zjEsE5V~H)d0`A)vxkvyD1bkuR@pUWelaDQE*nfO8F<}dYy5nTn3Vzpa*OgEH$3}R( z`L-8`yA3V2S1!kg;mnv?tXsRsK*6L$gzp#FT2%DPf$7FI6?oBbSqW^$v_0M!Ns$fd za3|00GKn3F&4@#Wg2PLX+j#MBwkNrrqtE@iCz&vZ1aiI5f1n4=bbP`ZmQMX3Fq(*% zsr_IVD)+QbHZkG+xFzXy^Z87gAh3K9KS@G$K|u`0X+a8oP&YwbPhFPZ7GEorAEZc3 zfS2itVPUcH;=?U0Ij2{i-Rh^KTG~uCCRwpm z-?r-r1qh`(E`C+VZUD1`VuOstsja$k#Q0mnQ{Z&Jlji|V2_r9Z+ohudkppbGkja5| zoH|1T#3G^PPV;0{MP&VYn@jz2)%q--e$Xw8%k<)hVV0vH9wN4)4s%X?TsJUT{BkrND@S;8`UUnc{oaRRtUli1c)t*DBDca2lJj-ngP!p73Z=O-?XJ^1^<0R?di)@&o$H z6-0(Gj6?g=>@G+X_f63|;1!Uq2VE`l`lenm%;M5Ql1yxl;Zmy`LA=fWg8aC_XMx%+ zXbpWc^Pj*k!wa5YdA9<;f{x95ULIC1)^R~Q2k{kdUUL>AGta%LDY56a6|e>?#s@a& zriwM{-S6h6H7cyYzcbYX$Xt>^Z9i$Cl^ThhC80l5z5`QnaBUpVjkJ8#RDNrJdAIdJkHA}u--F=SG7St@ zXi~iSaK}=Kz@_n@4_%a{-IRqVn=f*Znt14|Tz~xch8L7&(L3H+xG0wBD+lr$vo+{6 zEFan*nh))Z|0CB=^TJ^IukByNRl^ImBE<{tL;hb>)HOXFw1UyEH;80qkk{siw*fY` zIC=G;D`qW3oPr#(O-2s&!E_pFoAy7wTyKOFRhY2v{P+y1WW&n&Nic0WCk`WJNOhtQ zm_#MBHZ|eegA=UOfF}JOngj{OXKi=hS##xE|D!bT+VU3Vv?y4L4kNgWYx+;PlOpzC zK(AI#dMQo}zC!hUoFDq}~6WfPt9$A%2zMkUyr6TPYNqH(rGwy(Xf5@J-WtXey`&7q-mW?NL zv$3_Rs}OD@pj;^}u+zgLILG;Q_+jm1vXy?N(C0>)?bwkXe=?K!fo5yuluZo*= z4VNT7ndg`%zJP&;6J^{@^Ir-kSmP`DGkFvT^bNPsmgRB2{P3;XhHjYHIPjTb{Lj2j ztPy~=b4ei_51NNya`q`r`4ZKyt5+YE&NnX<^N+&B%b(iuD%HHvz z^Cz6Nmik*1-tNeO2FLZE?_2s-3|rLpE3}lwiL7FOY}L zpQ!C-$-yQBU#F!nHrBQ;_Nt;kRI^^|721!!ZE2cv@uBSglD)|3O~yno07?B|37j=Z z=-(ENJ;!L>ky#IeBgN>`$4UB>Ka}s_@C?t$IZrx0dCts&bH0;k&cF}CACKe#@%fY1 zM>7Ty7~^hEyu-ji+ns2&$kZ}Lvg<>5r)gp;EfPX3ns4p!Zn4N|2}bL7R>BLL1SVz@ zM20JuNdxW_fq7Vi-l=anx-Z0BzqmofKPR>fSMEymssb)DLlJz~PEgXshnwYkjQN8U z6)2d}6ukbl*_wAmy!;F-p3HJ*b+#v0jSie_*-mE7+qPF7!PG+aHsWra8EkK=tqcH( zrXJ2WZe>btrG-03S}C|J(VDd|5l~;r*G`~8kPQSzeMO4YQjXV0gs=oW+~S=DcMpTE z{b8@(MhgaVIPE!_?;3xRr&0BHE@PTF4h?v(ay5aSHymed#4gD}G{(dx}~LeLofrh&c`C zRksS8kF2_4-G3JAxj@1PhwvZVHDe8~hP3w34L z0d|bkJZVPuP9J8Av+VB|w5w&cViaRL<^;|w`HE6y18mc=0ZXzs%PB&*PsglBu8kH+ zs*4=tm0oqKPKCI<^T(s*carhmc;>AOVN(E;cohG@VNlaA3mDX9l;0mF{37xEg*+mu0~{pPW;Y@4z)6H1F!-jTLK$dzR481jauh^3`_ z&k{f=PWL3w(O0(}MgA`M6c3%ilK)z*S#BUOATy-n+wJ*o(4VtgbJqeN5{mKbpSDXi(vUXW~JSAH}eo$e;JI0en>M%j8(8cIB zM2XYHY>`9`a^c(i88a4>Agk*sut?0j#y!!8n|~0%{_579R4>mBj;*Dm%Z0@)K08UHxVinh+#n)f`e@ufCmK4e4U?M z8`E$7@2W9Rc&P0c{(-Q))%1?Cb|ZYjfg6*~2Bz=Clit+m+^w3+c7D(%U@?bJ`;NVh;Z;fyh!mE%Td2SO$~!L z7vMtwqY&!Dsw3J6_kHKjU2A91+rSMYZsQ{)dnf1f=Jj`aGT zPqG;cHfH^3rf_~k?J)pLrYz-J7Q$_!G>Vs;AIY3cb39ze=z@)BpkL~PzzKf7QTNw; zD|Lsreyh%mU&WvMM=X==4n2-ocuK-vejS??bj91je1YY%R6(!Y`hVp@!pmrm9Zf^s zcX2O9S*1LJ5r6Os9`QSJ?s*nN4!-7%#Nxyu=pf?@jdXI@n zR~)5FT=9}I&Oz_09E*)&c49=owv`ljL=LRcE97IuJiBu8Y}yv~rBpFaJpqu^0}U7P z>@`Fq5>KdsA1Yy;gxcMnmAfxXLJ5_YAxj#|-RO3nAFwYO1^O~8=Imut7lvMWKRo$1 z7o3p==!%lC_`gw7xKH*saTYmDRLFI-?4)Fh(!IYUs7~|N=t?|OQwkmP$~bVHb+$#D z^cho83z1~kviPbXum6X+j^~o;Op)2!R(V7w1zk=h68nqzgk>x@^T+XM(;J)IXu8N6 zf}-v9M@9kuUSui9?EW5dUwvb;i_?!98WGY-Vg0htU(zSz$7 znSU533D~(yA9QFNqPpSmYMv<$EtoM-chW6dEtP1>{~;;UTMqYV6;MB8l+f`bA9q+c zV{(?Pub@Dw7pmpbv&b*U<4&jbrR&FQagV7*^w4S3w{nCY&zlePILT;Ec$apZN%Lvo z08TLVv+2wl$feAe7_xt0nYrzu^Qjn*K26zjHvVA{3b-rovH0WlSXA?d6Haza2bsH@&Wvr%n8Hsdy{)vz_DVdn z?Uj(oc6TSchQd5e>ZY#l3_itgoCw#-RO2dCSM|1Q`6T>a1^G|HAL>J`>SYuvTYt`) zo(+9iK#raKixis{A{J*SQC188209B{@{t1Q? zvN~Gcdp8U2hHIJk*JK;o!XtCZ4rE*UQ=Nse+KObfa(u`FLXv#i%0R22N5FEr1}Y*{ z4oOpNxh4O$>D7|7IuqnoXS;?m$v^a$l=0`64AEgB%%;sEj5Jb3V)ns7g=KvBfRH#Q zdcZsMWC<)xbi7@&kT00Ggu55tK0qU11jLL(;Zn8T{fN*HCvL%(AL?C6ha8{z;k}j{ zm+QY0d|f>F>zz-B({G(S8|#q{kx77&miyYaysGVBxUUjQBF}?cWBbSFnypo>Kf{R@ zr0xFktMWnOb}2sZ1fOb%`axpz6I~m6oH5uCUR@^#Pje5nm+#(`&bH!wyo45j-gne# z)G98uH7z9-xp!e5|J~j|!%rFcXJrq(6xdIGvn>@ZR7j!))$4+A@fXJy z^85ca^n6@22BXa?{!`jJVVY|O*r31pm(_f-C{&ai+HH!Y3*r?$gsN+^(uf)6Xdw-% zUomEu)|)l#Ig`jkAjbJJ!gJyj|pLe{)8#O&24siyw=~`1`bD?#%j9_JP-$)}oHhSc-M=H*T!* zW_S8Za}y@U-)yUgMFk&PMjK-?Fe!JbqZc^F*3w!q)w7>`u|qOe?6fHN)N-!fyMTba zr=T7uO#6?-|8PhXu;hG4nkX17e)A7lEjiVqn|^Z>I<6@pFgIB33DEEJ7Sokw8K@o` z`50#q8U3IWt%@pTtSEppPnDca9))fIJCvVEkaN)G!O?_#BJW3ZECHK&JxJD? z50AIe{58@2xI8_0)wrhLXG5SHF(c(WY0+-ZJMUhctYk~iEv_0%ZyQccXHPp+OlZz{ z?wtG<090>;5wj#^#yq}xw=a*o^vS!?V+5O`C*mcQ{ofb+s-+H>%6;LZCIJ$2Mi9&u#S3t?hGxBl0a6~2WM|(q zpVlr3oYL%okmp5}s8n-vuRiJC$Hgl`+e2`IW1sG&yT~J;zF{T@D8ay(;^S#wom)Kq zs+5CPcjnUSgI8SA@+mJ*24`!_#Pj}X7Pqux2K4LI;s!IV(6v!IMf9b#foLn#MEr+; z+}slNCt!iLNioRl<~b(mo^!yTo|r{;`_l>G1xZj?*#bk3ED|Fa_TqW>6s1Uu967-!KK$G=#ptoj$L+I z>R>Hwa#C7I1p&kkCrTOsy-+4ifN5y<6IWuKd(82uyLR$h;ddQdWWy#}1r#9_g8pX2 z8FL96*^gYdkm}O~#Rnp#aCubf&3{Ty3LkrTFDaUl7Z#X+>|Y}zX^Xv2&ne-^C+RpZ zWx0rrv53s89f??Zqgd&A^?4BihYO{R4T}We@(CNPP#JcJ_I|zRKTSii#q~hDR(Cru z)T3KeBK>{^)Bj3LkisP1)y;j3nhO^SqxitXwK-=4pUHLDbU$v|sFee&CJ41R{j>!0 z$-1XnG`atAV(~j5t~KfW$XQdVW@%A0Irh!qOVo^&v{$uBAD5Y-a1u#g^+pzUTW<;5Gr;nc8GR98PXuQ9#TtitmtZ_!T`4+k`Z#D2*+WqSHmp$fmu+9oX> zO*uY?#z5D++@z&YQr%jDHt*@Vs=BH8$MPu95exPe5SHpcDYIGW>{(Ja9nr@m>p4&RSbdEkg&PVcX zuJvNFlW#^}Kg%_GJbzm6c2L*dm(VH0N~e`!fCn-$H!C%V25JBPCvr%S5*EEN;xaYexJPye$@8*#lSG6q(Q-azCLRqj^5s%SvhrxuDQ z+{u6=P?OE5UUG{+-|25h^(qC4UWG`yZiK0bh)UK{moImc{HP;X=RN&Fxwz~k`@Y*{ zqdEZ;ck5i7$J2w~^djyosH+7jM8;V%af%BKTgYOqmCO=j!|ACp(jAZ-ocy&3v)AZw z|C(^G@H59M)-vRVLnDIAlO?x#d|hRRPud0#+ms%HywfgT%P+1>&Ibh(%t#KM6_PPV z$le8a;ENHSc;d)?qpHAgAv|oK!JuzyJa6U0-Sg*dPJ5J>S1U;%l-Y0D>=*_7mnigVli#I%#Bq_^&|?1KrQaJ;EkmcQYIt-`>-{ zX8|7Ps6xBdn9XC>F{bVR0MD2YeB^QqeU3yTK4@_E9#F!{ui=ZbmD!M2zGLr#ujwuIPWa?8JVPni=S5y2`{3(tVZ|aI#49!{>>qWpK+lQ*onQ|{L z%IruC(ehf1sHUT+6aMM=gIbX@+^;nuSK|7DQ`_q-w6_Oq?FnZuM@hqsxt#p4jP)Qg zeP-@}U(1$gmxWKhGZc@ju5$Q2`)wHLY0%WXnAK7mScXlj)9O`SB^;Wzlw^qe1|nY6 zh*~saJR43JH^jPB)LwcludKgU(kun*;Lr29E2ZfX7S&hb0fG`*B@AhV0!T~Y6r)I* zPwFRlFQu-XtOGyzZWL$(mUZ^-P`=W-8A$W1Q_t3n&FFi`p+^R zw8UkiQvHXE?u`I+?ODyiDWpI<%8&F3y74}zx-m$Lw+e-0+%d8FHGy}&3nkgdLncYl zX-oTi9Vv6@Ee9JpIF)NusmYp}m~n75(jvZ&eKg}XIKJ-Me1e1c%7U5LHgKbna>Jhe zkG@{a)(NSbS?fFcb`1E{ch*jz1;2@K$VYY!lP&&8=59HlJ@g}+axJ8bHB6wl3X7iK z6aL`#ArZ56_tRPH3*dHj#YE}2v7-)Cm~^dgT{B*HHj(9E{eZ7zsZ_F#iEzK!GtG)V z6)$bS43d-oQO}(vw^b$gClDvGRA3dy(mV$Aoso?sva^yg{&J2%W3RYn_B;8Rim%HG zUys*;Kw><4VQ|9Xh1HsG7lC2$nv+Jj_xGUF&_1C<)hfDji zi}Q4LwZOu<I%AmZ~!vLn)4TgzUQcEk3~_S8w(3fY;(T-E}-bkBgoW zr{OBHhAHtx?9+tOZ@H!feCtIyF$`4l$3|lAD#w=H_Wi*V&4EK*_dJaO%b6&s>_%>L zY2$zU#Tc(&1IFcbs<3r>T*{;ir%{&yhP8*H_8O-P8fr%xlD+zhe@)1pB?NQ5kx;j8 zuzUT}(lg&gekm1fl9Qm6+Nx3vjZwbq+zxrP8d^fO3PcmEAeB2EjUpV(`h7kn%#)O+ zVDjpkT9)$^yJEo7rnY=6QALoB%0`|3gyXozaKJU*d<6^63Rdgo|6K6e)aND`Slv|% zW)kvI#uXD-S`RU?Bp5^@VaNS3*VwaQNi-btm}sJM!Plj)m(f?G8CodDPA86g=%Jzc zsUk1Wx`^`Sy+^dj?Vt6h|XXa#NzMOha%e8sd#2 z$8OwAqA;6*MY+hyrZ^caG$g+Q1>B(Xvy z4*n#W{v@%;B!;pU

OKA5%V*1kI@T2~x09&cjj!Mz{1&B!f6SP5@fZ&a4BLIZl-i zK3SMD_{hFYzuok*c1y6?E^ySQg0yoqhD8>DEwv@utr8dkC>X;`LMJ>2%-M13w04Zr zUd$L{-XtgFGL`2y#Z3!QUPKbsZ)`Je>^7cqG%YNy09{)l9r>#a8|whiL-=U+@> zis>sn1(+%*K&^uW{og1_8AYJWJ}>;E3b;UHA8ObMT@|KcITqN`trJ}eQbt6=G`M4i zf{YwHw{03PCSeLRqo$KrYoOdpvq+V3>QtUzle3LET$lN$T9Fg9q%&%(9&<2F!sE4E z)Kr3;aE72*E!yaA%oP7Pwz4l_o-{b@2dgPg9qg$KVm?)CuOBgA?huo5K!V4w2btkf0|@4(({en<6?zMQ=~!bx zE4t74ynP@WyFTE@0=Ww3IflGviBlRKAJ(o__$gg%9Kq6?Wli>$AC)GUI9B zf;Js1kF@i=)Y}%6g^!5UTRU@dwN4ABlZU?T{`*p~2&o(3eIw{(x6`|ljyGt%M9t5S z!K}wRm|`8*NEgTp!+|BIr(@J9qVbcV#eB9 zJnSq5-U?53;qFrf+^aO;yAlxYT3GYeU;dbBzk}!Y;zcztu2N(~0|LbYEG?VF*>L16 zR$x{)4!Lp03D-3lu+30EfybLvf!8Byf!9@P0U@|OStdW05tt2HpXr;c#c;t_@RJ^s z^_TleBltz@kCkvBrkxU65jC;}8)JA|=O?~)h$Jq(YEQR1}`hDvgNe zMQ^(IF~6`^j?|E;l*4&h=X8vwP``CT1kOI9(4e&nMWO-wcy@24^F?9rXo7RPOD+p= zw;GzL_m{0_ln>yk&%rVg;eYF3#bOZJ8i7`1*h;j%=1~~*SAnR&7pJ`C9RFP=DWOqkM$9$=13O?)>gVkN51gx&Y0Sh|- ztKKN5{H?In1I$yRli`7KOzk%uLF4E|0Q2|$p%0+`PcmZsWu$$YGw-U*Hb_NuJw3=b zo%G;IQelLT@um#TJEb~t=7~|q7WB^xkUp01h9Q)YF0@~o{F{A}zOlV-0mcmK6Q9U? zaawEwF|G?9QI}c#(bt;d%zws7R&l;d*A=V=$Z8W_W{+6+c+;|!SvLYV(~osl>(~d- zba{UrKKXR1$81G#IbAT$j(An~4Ts_ouJAaE-4Op&AC;vNr$S$U5LoqS-dS)gO~C92 z&urR;)vO}OWufV|FT6F~z=t%CzqO_Prj7s5boJ}~odqFO<3Bx=^Mo0X6v@Q4f0+Ew zt5bcR{^V{~ekf!zwH--rCPs`?GHjVuaODw-`ri@i0<~ka_McL7RE+2exOG{e)Mx}d zHDv6ePy*JWNnXcB7Fwhx649&Jnk1dInA!u4v8cqa+`;&xK^=wL&m^9qq8&xsw@j@Y zCZQG!*JDOL_=4{Ulh-^@f0N54E&rfI3ZpmQb|-!XtjxLnC3tG+0S(%UOaJqrEPh`9 zP$}X`-j4C1(1GGxZ7qRcgp7LgS+-;my&Y+n{kb~5-In(eS@@47GoQhotIK?*B38$* z64t^gFDm-*>XASX{Cqwg7^fvI1@8*%OAtn1aqR$j&-y`2hWJ%lFF_9AoC)BIe%y!X zo3vri-NMK0w!%W|A&s|rp>4OH(RDV|7kdczm21w#6C;b@m81giLna80Ue4qf{F2`y zMFkmO_t_$sPa?k0jHp{gRV|`k^RUo{&l@^~m26_tdxggd4FRmnUMyrZcyDDfZe>|- zqu<}k0h0WM|6(i>Ca{fDJ)8uUW~R;lVU$pi`i)nXV2wldr-u2!a7@tPtc-OZZm1vm zqu!tAzN65&lAJZn*^bs3Lax=?aFSbW83dMoMjlUgiJ8XOI@%WbwtIPdw6zN5?L?vV z3f8aePnRX$TX)JlWlB@m^SW6yhaXU!uJTIqnLSVM2CTMQCf%e`D4(8E<>A0Lgd44m zgzZOGrMdY){4e16gt$OwiS=`?U)a)QYWc2T7AE*DJWs;bSau$#;25hSoEQ`!m%M2! zV(bQJd7W3Otc7-CS;nII^}D3$1fbjF3nSiDk9dOO&E1elBCGCi_afHGQlbN$w+b@wLpk3X})+bCA+CmWX>UI=c($Q@9Tq@NPrc8J;mmC<^Xy(`+Hqu zI+`luG^9QddtI^&z0CzvErEPjqH z5!{rv`@4*pY9|#l35waulHndc8mO&&<86GZ#;GE7^ zA`MNt*PVgHY$1MQa4-I4Uh^SyK4bB&u@p&fF>f_%l zJb1;$k$h5uD-~QGpU}oD)tIWuD$UnO)=`(1R29K^4Ho`_GvMawNSi0o9vdko&J(y7 zQ&qq)={(w{JpaU2JD2;?xM6I}fTd9eP5-WmA{i{*O z=rBqcqQdw)BAcewptJOYrnLPkc;w~5?zzjLBCM}`!uF$6XNJ)l@-g4Ks*8A#utZZ< zFaF5=fB*fvQIM9G+ADm#k(8Z1za9{3vtb&%DeQ z_;~_Cz%diZVkC;i46!E~Wl8;2Eo!)l4%APfEj%$SmbBaV5^E%?3qG9K6@3 zFhj`d4`e%F&xw+$A++#1b)d1Kr{bf=OtznkR!+be2#8Y!Nh!;U%*@HZP;udY0%s9@ zX2y;YWRy?0{j8LZR%U=vxA0%y#K+zZbjxIXSr9%Q2!o)3oS*>k1e`b~6zKmi-;yGE z1=glut)fZ({YShE0TJpHjz2givGZ->Z$@R)E)fbu+pzNbZSHjvjnFPh@>ciTfjvF+ zU%ezQhQjycS^1mUkC?E_Ogm5Hi>FB*>9A;lOJ5{dF18p+@(4^Wmy4v&vvb1EEF%R+ zVn2wZuG5(4x6ftz{C{QUzwhS%W9L(NtUeaunT?xU)ebE`uz<wrFk5D6Ff) zJL7=~+nM=zs(YsuwzQxF0Q+ycF8l1uQU1 zvCp9Sm(MK$5>@Y%K0H^Jc%&${`e>IVw0bWVxAkJOI`i6L!kE1vc1x1=(_xy-Vc)Mu zl%S36O*rJDQ%A?HQukj!2t94g{o06J{zD*y##`xB`BerWsOUJMVXTELPQC;?=1N=E zDeUP(#ZOpbaIKZelEzRxso8C)`fBcna;T1dSb~eBOPVLo?->z17Vk~-b5TD%DG|wh zF0-2pk=at~Q+hV!u~xc%88v+gBcb<`Lk=ktf!=>LmC(V?JdZ8pvY-Epz4!ixvt8TA zBcg;6y$m8IqW954l#J1PuhA!rPL$}vFhmK_A|%mEFj_F82EibrL>ECsCrb4Cy|drF zpPgs#_g(Az2Yl9=H9s(G?(;s+<2cT8U31+UaXJiS3PkV24monr4=PCX?x*Nn(_IT! z=_a_7D46B>Qs7B+tT(|rw-7QLx{{stEn^VoK*f+fUu$T;Mx1n)x2iYDynNGM-#dC|TIo~QHStwi3d!^sT+rL2mp zOhJni8{DvjZ{dYk`OPM*Iutu6^bJvcWT}3&ISlT@^NspW?PL{%MbbQJL%HeQ_MiP- zt58xnymxTxqBl^uvP@o4i)RC-*kf|gL1dw(BZB+^VUwNC9D5$4!*P%n&9UdJ&AWMC zbAE+XM7NVYSUK>B?Cd=5ic@vxb$CeGihZuIcp3{7yu(S6cX#%v@1AWN<6d|oyX@}P zdx-m%TR!dJe(Gmb`azk4Jp^g|9qxd4W{{)?(xKW6qZqpPreyfBi)f&luV`ze%qtNXBM&N|LeK% zW0pNqx^}3SxJ!ae*f3aRNc1t@Ng7}Gb`mXvSq(GBi!M9KKQ>JuLeQ5#<{g!eUgC{} zq~hu!oWr2;_fDnH3BjWUcl(ch-q#WqnekS(7F?T_>Z{5rBH0Y~;c^#H)UAE-OUng% zH2*L(nhbr}!vP=a8G>9g}b(wUm~ ziCFPIc+R2m)d;+>%m7JkmlG2o4&i2b_MoaKd&!?VNKu@|b2CjGe01jOvP{EFTBjGa zCmuI}NdNjEQJldqG&vKbrAFU9ewn99SfRhhR21c-#zfX6Pz80{uYbEtVzWaJ>-0~x zWbK~%;rGeB`D#LcCMwEa22~;ZtL9_JJBNAUXIVu?UPqSWgF$DVk@& z`&(WN1)kglS)5S7ja#1mB;Cq&n)UK1nfN3oO{;8rd)2W?Ge6dbZ(}HZ=>%w6!LaT){3XFLpXcULj@k@FH3k z={H+lb_9{>t~?#P?MezqQ;7y+q^A7=44HN9U#gf=Wr%dgnvxgXsh5`-oESL=N9w3u zXBvm5YG41tk}D~*SEtggS<=UelW%g~I-MrH*PYhU=Wzd3%fQ0zNZXKY|G>gkkgAnI zgUR6?w-h}&4Lz-!x|ZvyAxPc|ekIA}%;vnh>rrD(+NCx0-% zaj!eD(#~0;&V94Jj{kK!gEJe(>ONClypPK9&)dBO;LJGfH+J8ueBZt@2=U_WVmD*? z@I%Z@sH)&tz^-4K6G;N~mzKd$F4&QMQtw%~ULC)T)ozz!5AXi|^&{7>neMvy_%FoF z+Hs=RypvG91Ps%UE;*xh@C33+nBTw>t82Mapk4$g+8eaH_JaRpq}ynTbj zwP5by#<h&!{365p|B-Trm)G5Xws9_1!Ia|N@v z#zYmd$1acjkZh@b-o^G7nqqD>I~lccFZ}nm>78^wpHd$hS@nw>Na~on!5oEyWyf?4 zxWw;>Chb8(g@fDlPQqv(`Yw6tN%_t05vaRxao6QexIb)En3dF3y_fx}p?bm{6(w67 zTZif>PvXjvGd0(bJ~_F4P>UbZ%0j0uu&={267=~-BeU<$7{L~{=3_MUz*%ydJ%2ne zvOkR+1<5?mh6$gm4i!Sb=@V=%{O3HDj{jwRr@Dh(Pqm~;i>>Tf1izBO9#2`k2|Bfu zUe$!``rRsc!d8n*yIg2G>hg^1YF4liHEULLC_VA9W#Z#3NODpW^^eU{KWD<1DL?vI z-M@CP!+uH!3sz_@9EiHfC~~m-i+w1n&`IJx-c3H*Sj-MuRSiVP!>L7ged6n-mQhv7g^nH!RA9_58~9SCUsmQ#xdx=!uwB^&(yhjOVnJ81+aOAUw8iV z@Z>(afv!i@wmr;cmg2YOOX=CfooI8%1eDDUZ?s&LU2i>CV%*+0#ghf?w%xIP7Y42G zVcq#A`mH(P@tf=0zE`S-SbMNso%S7>DGDy4D!XL8b4sW?MdD0;8do#PQpl%}iQ-H@ z+3F`*#TkCiFR}`1-WF%#LS=$%QS&U8uYOz)I=H$>Dxb7|xD%APd^I{AJrJHrmZh2r z0!E=WdX@!uZ1Z4AR`rt<3R8&mlpIa;|Kbed$e!(Sxl?Yp2dxp$bLb3?G`YBk^V%Kc z4XX%7*^LZdOzG%5h0blULx6LmcTR8D^iX^!e?}W?Z&zTw!yLh%nSe8lea`%jP(s^e z+ns#k!O=#?OFYR_Lk3Ue~5b1a7+bH~EVM1)ImyHr&%TTGxx7*ng;6it( zhAW>m?Of~hgY=-h`Os|+)Wic~9A`e3;p0+!3XQuk@ketIRRYmby9AiSUt`Mp=xZh@ zS;JL8n(?bO1+>13A|M$;Bmdv8dD4!7i?yP=p5B7eT4GHC{6PXYgMO;+{pTSnRgdOf zo*Kq3vAV1VO^A6Oee0u}%bUdGkO2Rjc1gG0jVE*joJlCo*m9(a&IYw~vQh>m!)_mm zchEQYJPG`UAnqN1Lui@z>VmFACX)=7-%r>p2#h%Zvs65iZDIzRdw%;r8~8uUdRG(u z77P9eL}-9;7D24GL)X#l4!yRR+P!V+kvISDHvj~6wVL}`DF6igUlALK)RsG^k+5n) zFP%{N6=)Kk)BNWKdg0*YwzB9h?Vk)!671(iZi~~(lDY{5(S0=_Zt4;G)e79g_e_GL zjRB(V$$_q&N$q>vlaKX6FJ}?;%bMt-a3%m(bAY2~ZPS0eafc>ej<@y*o%5rKT6(rk z=Kd$Rs=%iXn>ty6SOf^>NPz#BAV6p?y65BXRb;;{XIKm=RZ#R?=@O9u@_Z=Z%fMNLpIJ<(Te6MQyLs7*#?VaBeLB>HOE$<2`t=tO4|k|Er5_4%w3XDd zt%<&*Z|M;_=73wjgW!HJf%JEuT02C^b4C33s~y$OD`=st`Cfer!NvBU&aDdSVSc)t zz)A1Qdo(a{|;cPo_fL3vT+<(cx_JL@3m*-x^$sJCqZY+q6)Cc8twUW#}8 z$OK(#xAu5k5_bGpY7d?T3P_Wq%a;HPTKcy)hOIgO4|C`vzi{5j9dTB=?mze+R4hdIXd#28YhJ!{bJ|uX?|!uv-5aqf7JSh=%SkHXeoRS%g`Qn z%lk^}$(19~bmgYe?PUV;3l7v=3t-0Xu>?4Lw{{>j8Sl_V{MvJIMy?`vQH|OE8_%lw z5@4<@G5}Sb%fHFMn=t>57Y6={Jo*ZJmAhz=?{h~9>hPP)BsmoS%gc%;WS3q}-pT>K z0zBLPH!@!R4>HpDUdNKZ5yP8JXNLsGhMm2bMNqg4X#n`s*|icC)bz;hCgV$?ihZE1GCWCeY;!pgTYI z+@aC#!q;XIN1>Yl&fSHA<}*PF1b|cpq2@1upv_vRBX-Hqr$CH=@G_;{pGE&SPJq9( zhl1ZUKhioO-a~~5UZ=dR5Isu|5SJpN1skPLGX*9b(}B&`BhsiZiX0+*4 zHjIa^0$+b=67JkYhhG0lch+Y!XD+g1>fr@T0?ZJ)m38hR@$3A`(Y{;I!MOXi-r(Ma zTLr(h&PCwtg*&u~XEFXjx_bn{6_4>>_#(b5cOzF%fQyguj8!X&$14@k4wV$&1fLR@`?q~dWs5^Wx0B~Z>tMp zY!y3mZJVt-%{$|1Q)5UJ6=QNA26FS%nJYHZ^2g9A#>O=AIMpkWHeH$~zx0Nh^1c*( z$)P#hJz$4~il}lVzx;Igx;CxGQl7iOttT<8@Ksi`>b@D78#IrIocc$p4Tn%G7S z<<4UUg~6XH@$Q`^s|ll`64OAfcvi?uae4F;r3ngAmJT`*#NdU+B;~}CRgGOp19y8m z=pq{?$pO!1M~M$q++reSkD!nzh5&CWcS?&Hs4UxZaC*=#ZP&&E|T zH<4R!om$Y^K~2mAuI(^wKYSs?50*MLheo?4eXQA^noSc19~gl#Of6eK+}pCTh?P68 zJx?|-RN)hk^u5&4uG)Rw2)|>F4cZybr$!*kZiJA#SiCi)m=?t%a3*Hrtd7PG?6wO0 zkNLno-2EQAzn;HOrN-@}js}T#evO>T@}uDgD@bKgSEfa?adw@YVcSh&?sallR_!XmG(EC!4{J*-$AR)K z#Ug~lqpTcEyAVQKjRlg(qj}QH;7r98Yvi*Y*7m4EEWA-OsRl6!M{h}qVQmLTwx%Dw z`}Q!YwlTlhTsYk&kmq|k$X=Z=bi%qg3Uo2uY$c84i~DB?h#^`>tKCYf%@KNPGszHq zP5#hX$Ln+fChY{VbsjnX8feQ8_I3{<3(3!N+6y}`#z>}XP8A2Y`|+nR2V0x{cpcv! zHy+dSgF}P?44G&1S2%B{gJ2l2D83!k+wmvQb*n4(iPm*4#5D+tFUUjJl@0e%Ycy$l zNoMVMnao*VfB(FEx-hs5f|BIuu#`bm)*uq&d$w1df+YjxX2xe@U{gtL-nV?z3E2=x zw;tG^j!{=|1`7sO2|8n zdyKJck7Ty@uYWi_KZBu=wUy`ip>vgAh#AD+{JfP3tFiSnZafE$O=*}tQ{J<(cT6}o zhhB^C8!YA@|J>T22AXQR7k3=GQt~(zaVr@wV8U8|ET+v-ov<$*)XxvDX?3-O9*H&B z#eBR~TJ<n3CK+PMwpBB+# zX!p`U-)EOFzF9ufgfb6S01ACK`hx7Nba+>=2yd38LwTN>0Y2vA2LsLOK^h1K5acRa z^HdybTZu(X{3- zpGks6kWFDG!`nt&I=91)0t(C>LYlp(y3~CTZ)&{?V zY^9^L$-gwJkw|dh`#OF3`2gYl5`iY2YTf^tB)W+&N7POj%cP)_18Go=@zo#%Ckca@ zvDQMua5Nw?r+_CZn8g`lsu*N>#p#s(ZPxRDoApl8WX0w>J>OJ&vNeqcl&Vf!UzOg5KfPw1Le-O4$bDmY7oQ# z#LS>&V;5t4L}ZL|CgFr^E+1}O!Y9hkF^@CzXVg%HnyTt()_7s?UUr*-6bD@Segx>b zhbRY14oM77o~KPX2(c2OQ~1lJX{@C$bkyFOLlN2B4gi}SKLgkV0sNg|Yo4VKYz=%b ziKN(YyV7L%At5%*swB*!6--VX^r3?qPM6A*8J%~lum(u?|EM9S~Pt+4}qPy5Yx@RxK@!)=#Ax7jU%AVZRk8uWFl z48|w73h|s9R{0q|vJQ@=fl7qIS94H3&lE4{K(~<;So^_jtaW{7`T;5HplebNrML-- zaAqt1zI@!fY^NUUI$L7keN*7=ds?^wK%JjS8~k8-ASIYXH{K4WT`E4Uy7Dh$B0h%y z!Rr1td2;o7>mfP;0JT7tsr*_l$vkl+v~4a{xsS4Mo|?UU6WM&r=T}0%^)(O>)AsTU z^LOm1Zy9a5lS!~!$*{)J4ubydG*CvGThbY@F9=O~@T6^ngB!r4CYuR`9dre&RB!#P zXRdW~1^Bp#2NSZ#x}hRKgD{6u=q^k0e1Rp1;je(+z5VZi7QF+~_w-UFBzrO!Mh^aD zt|`m{2i%U{^8F&}2IQ->G!R}t9hs6kp+1oGZv(2dU)fe4TuQo~=Ie|GWe}4vf%dau zjkSbiW0iodZMl@tYaquSAh`gFP{58VXSg!8rhe+=gypRB8LJEba*1`|UzVse{h=WuA%K*_(b-0zUcmji`{9(LfUimaA?U8GEz7N;nF@c1C39;LvP1%)KX@+f2}etj2nqH=GctrLKW; z3E{S2BbkE>X0s%JgfB=jzTiZ}z60KuiJ@?jT(VqV??Qn@Izz)AkQ#`*^czTW?D z)tO;PZbSA1K%ev0K+jdS>5wzkm>W(|06;=Ufbf8lkYNpi@^yCYWEBOHp_$0WdaFgw z3?uA!qJBePdprw{ZDwM**0dg%CH1ch5qnab{-cyg0!j%;ZUqq{+s}8tckkY^oC(L+6_3uABApWYt7VrFJj^n@|K2`k}At;95{1Nfwzao$? z!}f2YaQ@{zl|ZFG-1pZd6A%7G@L!jNY=ZxA!S%nsWlH4#8UD}m;s1I3pGf@w4V612 zSpyDdyjm`Ykk9JB;jMD-PfAnCkdb=LgXgY8AKRdIkW^I-Tt9pQI8t)hD@IPu@TxcZ zhWizd?d@{u=FF|0?wVEX7&{L~H_)aQ*EBS|iF~W#!UHc4W!yJJd55}r5OZ+`F7s$ub-@}!akQh8WEE+8PXh$akcc)Q~Z>Z_yJo*MF8jT zi(gDHYDH1O}t&W?6kJiKuE}DEY9SQ$J>Q1}s+NRj$=ZvSV zi}P@iZGYjC#Esa_38{6-bdf2QxXahANC_1!=Xvgi_4L$zy~9U`m=08Ur_-SOiEom{ zcI-jj>ol1c$*k`}vZG9PNAdM!?GVpeevEW5otXp%x@h_&C&E63fh8hh^uE zLt2a%V+ns<((OeN5nQDC-oCG6VNHX8Ma)h|)bRhI+!~Aq#)WkmpGm1c!_g+Bi}U@V z{eFzJp2Xm$DQGx}i{3lkhPL#!>)*_15>oh;zvw^d<+siCiv%6GJ^v)c{Svq=mYP$_ z?J2b)E?eND6J`o~2EngvVR)J3|3$jKYg@R+B-NXcO+%Mbnp*#|xqtZq4qvnW5t z&cMkB=%MO|2%6k6N8apBT3j+eTqIbDZ^j{#bmE;3Rlo3n{PcCO!Te+Ju1wPSR*$kN zuI4izBX#F)$_yjN#oaZDVS*bGcgS~+U)%pAU+`(uNWsh#KmAkpImkfZ+_C+{HuI-J zqp4V5<+R*yj=D&7T9PQ0G@B_eQMK{$Zf-;+y>|yqDj2GOhQMh`4!DIQK$MN`+=`aB zCeL2tthh42eV-B^nTM4|fMiGdcOEC_L%r;2o2EhrJWF5qOtx9zn`+#8&Y7ib+fyQx zmFhj?m)LrL_hmP7k|yED`&YNrOC9pnm$czOAHDk}?O0#8bN+0R$`b_Z~$IAMP+37@!K6QV3jMM$HgI zMq{smc_dpNu5Es?y1RI!soWs@#6kTbjv^ieo>IXL<{qvL=JP&6=NQTp%H=lRN!WM~ z66t!8_ozH}y5VExtnq3?kGv-)_*3Ep<~4ud?2Uwi%)aN;&u+3`mrGJ zml7J|(NX|!d9DHoq=Nr57b%;Dx*5e;U9);S=Yun$Q^I@Gis}P;G@3oIu`AlhD;e`) z4hR8~rIeh2W{EXd3+4Uk7Q;~Y<2ef}%wvK(gi++1SGjJ!!866Z)QcFV^+9SZm9E&G zkg;C>Fh&<8(;_)K%Wl`yg8DqrP3(#PN1jh6M1yqKEpc;-qXvc&l#^T*jyEQloemxt z8WU1wtm(>H9!P_6R;IC3(+#A71zUcBR(k*xo4NSy zbAI=pQMtQT1!PH7u>%4Ig?%_lB&U<-v|z6JCN zKLvp^nu;wF6I_b;AMpn~iqUyrrC1eHI?_#pRIlq-Qk*E&yQU5IN~}2lDUe|t)=O(x zJUtSvRAFMgb8I#W7;2zx;w{;zs8Vs_x zA+X9_|IpacyroW+qwT|hzdD?@_Urt{_+n38Wf3~eTX1v2nr|(_z^M>UJ`iS#89z=}ZUk2*1!G|^zF|&1;{(~? zJ0kfQI@-QW9lE9pP~y=-vDL9B+XK(L8Ru!zuc)OMI2CASmgCYsF%=AfLb9?G+pty4 z{=IG^uQJ8@X4x&PbtDxpq+WARi3$Icc(mq$Dd_1VTz8<<-$ zVs<&gCxor^sCh@$8W4kXxgXtAsFLX$$CPdV{GfnQ?g@OCMG-}J)b2tK0w<-FI3|r( ztZvayDT*7j4s1AeJR0@bjRN(ISR~QYQg8l37B1&Oe`F5@L@ucC<3DT*7~4}5Rq(I! z`Ym=`vdIhwr^B-dev>!uu|fCZ5uJ#hU!V0uvS!;Yd~1eX^4qpjgYEPAp@(Q=uQYp7`j}Fdvdd z4JYJ|*?b8>Z8X=#C$@bv>v&0vd&gh2Nh2A&d%M=&;QTq3hEi063)bv2TQ|dN+MSVE zsw--8VYXlHYb1(Wrgke)Tr3G#wfp7~j8<=5P^E#Eai_$2CO$h$P2+ikWqkO&;h}D= zKy=+HxJYy~XX1=6ims-fH#LO}jHb&os*b;_Yxcvvb0PXnBFDZ-F1fa|_xt09g9r22 zVj;VG3d|AGXNnO1aoA%U%uT2Z@fR^eKBaS8Vp~Y7=P=E#J zu~j?Tg@}eAqP+>~n0uU&>xx?QHHZLmO0z%$GuO!B`sypD0rb#GuJ{pxn46uCoAwP{ z4;jbgn>+WoQ`4SI7GWgv)a3_|G#F$ejg{fTor!L5WLIM$jeoK&FU^TjDwkz~m!3Ex z8vB+3iY#utr{~^yHS3@`?XiApSh(Rl7I)&m_LJX-=tnlvMr;j(5y}YKb}NA|HU-&P zCXLo7aF#go{KcPfL5Ud}s|Isr2 zPMx-Soe-2gA7>(C%RW101v8Tj=U$1ymUAbUWr5T~QW;Yq7ZA}*i@?!zE#s9XS}E)U z4_it694)sOGC*LB_8=p;dbYq!_Xo6-fg(5!&AZ`W$Q@&7?xZW#X0$>=zuSwP7v>Eq zAyx2s_i*9bWP@r_tv5qrRE%cV0%MCILDCq-)MJF(O3{{c*$uOz`S#aiPar6`z9{0u z0S`?v$vhkFmMP`u>uhu_9T(!C?ti{YWQROv)RC3cz?1z7JX{olVt~FnyyN-hLj%ny)6AXV^h+A)3viZjV8{B=pzvr9L zr?@$0_3^tq!pZ^Fg-5!L4Y)SizKqqjFL7^l(Y>^(80*)vxN?`d<)LcW79VPF>Be(u zH?O@7k{&O#nXINv8tSbivgTOB$qiFYskD zaQ3e~`4rVUN{O;*mnH*PY)q+5T~xZ^YcA}@`yW}l_wH!4{s@>|ns19!G@V;U44g(l5Io9dKxVMU?ZF~i#`_}l(7d0@pr^sQ2H=4DZ;^Xwv&hUu4j z!T>dI#`wz;72eg)9~-4b%e)>fKHi&X+|kdJkk=*lIWt$T3Na@`gQ}?9E)yH2_hP@* zb16$8sRD}XJ`#aEN(_R=iIBGc+EPES1ZDP zdc#m?F~USZtGYDw4G65_^yjd1m}1~oBmeMx!jzJ~+~C30>|LkM`qKKT=C_QI)!~)< zAIrtY-`8fjm?j_ODAtvJVu02ZekPfSk^j=r?kxA{#2{9vr3uYKG(N%nSv3r3 zrD*Y&#YgkJ^MlR$JuvW~m>n^f090Mr*w-k|hATyW6~fGN1&S9&(kxhC9BZAO|6{8R zFhOxOVZk@GAL<>!{;ZTAm!LqJ;*7hiQxoTbGS0GGYMtxU;*A82iWp!Rm~WK0b~NgZ z${0$KILAE|U0cQpd?f~c0zb{Zz;+!zR&;h~eDcX`VTbNRVi*PY-)QK12cbh-pCo`N z=1$3Coz&VGImhq*0-`AwexqZ!M``~f+ojp`{q^5uoO|<3o^Ui9b+Df%4}q7)_srd2 zcgW|9sU57RTe46J5G(3Tj}b6x-z=5(FRrZ19ooqWfj!$LS*-bD2!VOLpxq}Og~Zg* zD#X^Ej*T3#)OfU7-~43$jleL1x0<$1bNem@9dr4>+?Iy(&yLsUMxNxIf${T4lNa)Y zWEBAvR?b(l&*Ibc1q9d3b?Tm|d^xbRF(|11$N6g9mdK9nx>v6m8er#B=|mJ*UFIBHe!I*7bPdc{0ZI%Hy3E& zSTEgrewQ!53%|65xyJ9@N~GmOWNp|6p?22Hmt18#Taz2-7kwIs3}Gp`3`--4!UR)l zxWT0JR|UKjhV&v@T_!s52@w84$p={=@Wxa_e{4I*^w!Z^7C@WfPh2h?%B0g66QUH) z1H}pt3!Kxr@VH_M^7-)qvD<(d-jCKlSZC0gA zE6lS7P6t~Co;hcCeKyekg9wzqQ+@4@#d9<3|MEy31+=*Q$CyS*B5d?*O0>B1$ztsr z%Q&;4)aSt`$Wd+arsCHxNVT<{jp+%2_N}y>Vr)O#&tj#A1WtGu#|(|&HklYV&y^>1 zwA%B>)zK^PEhLE^x_`@nz}eR1yIyd?LsX8$85PqUOC&@?9j0Az*(>D&6Tc@4g$b0i zC(s|ogpQ;A_kRwfjlRy3io~&wW%oybO3D=t?DM=)p|b9pIW?{O(Wq~P4YDOl&%OCL zRIAb;@M~tP%~Db<<2lmE&{^o>g12LrG>3_Q#0P!z7bUau)O|XIcbBA?nwoBO#*j+o z+uWxCN^U{pshBcaz=;GDRfL~=cS2n-;xw3hN`i?I=|;c~-v$8$ZZer=g2WLB$eu%$}epq1$RQ6O*0I5pX` z@toX7j?ufcgu8==EJ@t~TEYP>cha3mewGN%bwMAdXJHMX%^tBPUt)ss;e^9oe=IwS zIO@EP{y1D_9@cc9epT63CdSaX@#VoM`L-DJik8#&i#Ur}>E;bJ zw?5YKH9U)jBA>5OX_27Mx^$!#N0@~hG3N(^wj*i>{90w{e5RIx*TJGGin|mduZgbp zR>~b*Er)KT2HRtR{eR6>>yyAKMafshSv{-LGV@O z|5hs}$slxY_;Pw8@pvSp%BDJxgHO|zBL#TF-#DhupSq52`!nfab7>T*-_5HUgSMA{ zwb8rURP@C5Ix1N$rL`w*AR-}fW~3^PqL6%vB9CP1`)Nz5gK346fP8I8#Scj;X6Uu8 z&`*wt_4detR{nP_CQ}ce^$v!K*xlixasAobeP^R(eC)PhU@k^Tu841t-{?a|K=YO9 zO58WvXrlL|YpJtUW19`Cg}<&o4=TGh-QZ)gm!PSRRSgqJ13AYQbR*Fqal5-AYN5%J zW|mG7AY_S`x2KAdC~Arqj=sxmY%r@j>5%pz5n@Z)A6*=hr_yp6Gv+c}o^UP3i{#j| zl!YA*FN(KRJuL98bDn)G)OyGOO+0w=C)MD3Q6Sw1FlS-+_nxDPSe8*|rbU7yu34=1 z=y~F^lL)RRFqa9&vb?O-+%&6Y$r}tbyK+S!LuV#tOUS0;{wv#1EE}HuEGb~nV0dDi z>7lte=Sx&@pstmEl+x;zXx$cfN?Y({3gua|_zQ^tjn(B(iIB;sCouvQ+ zo@md98G4uHNYZHWlx7(M=Xexu>44wMfg^F-5qWH5+k!_q$!z~&`E4hc9>|07a12E0 zs4#lI&A2pxa+YgCSUGth*QL4s3y__prHau=RNhb(0gXI~7$EOxl` z>?Tcg)6}76omEvrLiR!#Z^<5|f0q=$(qwp$pL}5tyr4z$sAkLB!+Pvgq_4_+o`GVspRP(xhy2diS}A!99WK;37_PS{pNVocUA7Lg!_UE>Vad8&Si1 zebTt#QsqFagIk9&v)=QvL}<{R>wm0d{X-w`1kEj{)!O33%!Rp@242}I5R@G9horc_ zmDhdN?2+}X9eD6D?5>NOAR$?q#mig7n$W_uoFJnc(y(=eXm7Zd<(=Se^s8bdCw+BG zt$EOGa6t8U!HDS?lBHdJC}L3dR?h)bvhIzuuenAbYGA!M<`^ILaxFM^;B#!r^yc)# z^kfgRZU{W_caM;|r4Nj-jXJ%b7e1Zw;5VaEM(Wm^US8-(+DEf*#J^S=DKClDS$Pqv z6t>U9TYT-{9_5lxbWQY4&smPy3pQEo-VyukPyA@u<-=|g=NF3NjK(w&s|X@q9^f&x z)v{+O%hEj`Q<4^Y;r`^b^K9IfCKk`@!@oCj=ni12t6=^e0~5!L`V!1$um z6lQtUC$DlHgk>$#ryx0ybIZk++M){0H)t35CM=`Q9vdFTa^)(E$!0oTZYVCMtaP{b zymBOKrES#(ltmok~AnV)eP??=jU z?|pphsk(AM=p~9hQevTY6`yR)jun^bN+eH#>g7Igtk$vJlrSH9b?;GF8Ra6iG>%fU zg$c98vxiW$GRoVGvG=klLgEI^)Z~hYgMSe+n>|T#T&lA_XHg`cNZFdcoa|}r*7fGh zro2qddC$eow4&#q+GKqCO{?yiAQcFX=DI$f^y%y~&q)Ve*SCl0u=iW5+|yPsadLSd z0yGV9gC%B%c)olVa+9A-b+!Z+}h-Li2 z@$KLo#jDK}BR>>JKMip~8)JruL)n2H5Q#8&Nc(NcHd90EOr?8oO(_bq3!058Oq-sI z?bPkF@jA2I^3H8g8q@gNM(d^7#yPsm_DHu$VQ=2*)}!j&3cFL)EdNLbI66Ir4!Rlk zY-t4?nKNBl^{uItM0jdy);<4;=5b5>fR^xJMali|KrOW?XX*RB>HSrIC1=W^&GZdM zU^K3qy=K&1DY^1IsvrbT&$(nD6kE}-^Aq@i#Wytv`jiN-Xy4Cs zhG$CG4`pm|_me38ChT{}!17v_9ERCiyB!vm#7UQPH=NihAPAk;l@YHJU3e7hd>DtO zATF@Jm@?B^j5)`o>em#t1z2Z~Mm@DK^=ePf!B=Pb@z*BZker0~Z-A+De$Xif?x|yS z=wEEYJ84O~uGye@EuK3U7z;Si&(MaJqd|~$d4{hg?dIljLv=r2%M(_OTI1$u_6@fh z4t5-A&TTTkj7h$Ck^$9qkIwc~K`g0|TJFlPf#GFR-uq)k>h&G4D?mqOT9}*nK1i_6Xc5o?O|!cr?(bqM{;>fr-&^~JD-jK zb+wB##KKmpyHVP>S~}-@;4C8qo<7I+fIimd`Z$5(#HKu@AJdj`$b4c$WTA=W`I?%6 z0Kek%gY%w&p5ew84edTMk%U{L%eQK_^n9&2B|7p}GSox@LsHKq)av)yWjG=v(G!amG=Ma5@);7^ZAQHP%qvX}0Yd+j7cJgx$L-H~>s!1S=gmi~8|Lj;$Py!i|K6 zlPR6C8r44&uR_Al#MClBPbW%v(Q|6&5MayveIUk5Z(|?-o{U@KKrK{Iuet-rzB=R8 zfaF6W=C5Qg)`BJI@fW9~Ht!+k?jnd8uZ@#tSq43$f#PC6*-wnuOKbZ-tO)*~1>{c_ z9+!$Q*v>O^Oiifg>Vuua`)_O`sN zMUy;X7OF3y;B+_oRNVi$R*O|7t4v5FHwE|UU1P4mnIt+R$N+b+Mcb@HH`lYF90-b> zj8{$feb148SoQYw8o?%)<8H36W%(ny7w>Q^#XKz{NdqI!V9s8*-(%;Rqv}A1d?y@5 zIn#S!967W_p6R4p>||QF_EUME30ttG8rBr3n1gZFj^b*xuC{u@250n(4Nf_Gteekz zr>0TQ=EpdMybFW5Hv$X!xpBKQWFU6!We)7=!y6dTW)yYvV zDKX(OH6Do8cH?JzKP*Gf$$<3)X{6`R@Zm)2?Qp}c@UhfsS%-J`BI}r;h})biGM#NZ z)uk&VogbH6C+c@~>zaGVGHW7ZWSDiD-PMJ4rt5a)S+r5g*I2}vqd>z0l8u)X$(^hLM_VQ3Sx}7 za~EgP9;Y(qgV_mN96ybNmcjp(lTo&TO^I1LC7~lH6}O#QoN&6hY=#=i{7g2^EpuID zt=0LDR;M0hCu=kZ;z^S;hsfk4yR>rfo_`^#6PrBXF?Am2Aii+J<-DjOyZIbU4&}%H~l8g_NN|#axZ8?N>k+Z0T( z!eR_il4G2jdWT<1H{CM(&e}wNA#14l%esaEI48q1ilkF`%F2ZrLr)Ukl90pC9PTIr zfhUvim&QDoxW8+LIrv1}!0@4@>9pE=wWb|p{@4o=pp=J;tc3W$3CT`(+6!Cc;%a0S zqs3)|#(jE!t{Aj>+WBkiHLVGAMS%UeUN9%1uAj?J_gnnjSb=QOspcjR%Gcgt=V#YU z;m5xmC|AsQjGgzlCN&xm zS+iVVi>;N@Ae}s+l_n*WjrNS%aX=$Qq5k9^tQ|L)mE4v9?XZ(q*JN}wc%5AIN;5tS_dVQOQ zl4{12Mir%cI_vL;N@9%h}h{PP8F+;fs%TmQ$eNS3wBge8i)_~>=+Y$wU`&jik zJHt@pTa_qac|B&yFgqZatx48&i1U$E)z#zCw%xW3M5o2T9uTx^l4}HS9?Gidy-e>|WUx#zA+n~%ayaqlY}_FqxoXl}gr#?tdaZO5 zs)dX{W0BHfLiqtW)@L^t=gn@{m`s{5i|3wQ+%+7v#g(2L-596J>AV4)a%jM0aa3M% zhGyEHREnVE)=If4hdNYFON$3W6Qs^R>fV5Sh`Ub}`yc7*V`OquF`UpG_+>9J0%bCq za=P<0ZGj{_`l3UT|S!~dijydYR6`(k?7|9DzBq%Y=Nwz(Yg{dvhJVE3X zi$9{hy_VR<8Pm02oB2mdYT=4UnY3Klapp&Ih1RRoFV4#7*9}2wUaG!BCAKXq25SCt1%#dv^*Y3hMCg9WmD1=PqnbMkc}3PbPwy8qJvDwjot*=fo|0Lq`9#NGht@* z3fMv)KA8CMv0e85kL`yt zBr#O+&pKT1#l)h#U)LUyDNU10A$RC=i&#JHdqCchKTwmzJ=j>|h+}DVsGgjc0 zr!75E^~x)&)nHLmEEeLWpR8*~j%^m~R#9pM+CxHNUUEGlXU1;E8aLjETbM>f=Qjy% zs6gO)HTD$vPqjQu_*Nwu3+7M$Kla`#F6yoe8@?6kp}QGC0i|0~7`jusTUxrM8wQk+ zZjlBl>1Gg-4(X8YZg~HwcfG&+IsCq(_k;r(nH_7dwf42HYwc_FkXInopmbKTf*Au{ z)WW@d#u>F!c-v`;Zfv&6h%D-ztD??53I8gJ4lR$!46W#?@0-uuAobGNk{Nx&Hu2ka zRuueGqI*vUxk_Y1X6>r;plvM*1JN^665&Rk)d&rS)nP7(ORH=-Gj`y_mjBkW;e`S$s!6LA5Y!cNGc_h@P|!XVJRkqi)RV z@lVJi{bQ>4&4BXtd=Nv3alVOMnJ6T%R*AcXha*t&KTb(o9uC%8chTd3R>Zx_r|%Ht zm&9|5YtZ94PlRWsIEon|>6CHLltsP+|%Mp`lj4wZ0nLl~>b=P2NRL z<8n3Jr>_*0bcQu1w9h6KW**=do5>cvVsfJ^d--ipKDbj;g-lx94I2N}j>wux-Nzq) z568WSrkRH@1KJidpdC}_e&OfL?;*^%dE734RKr{^NuN^ul&!CfuBPUP6h&-VZPkIR zcb<1QB&U&gD%)qc8089gbIU5gdf`x!y_4|Cvrb}VT&Pw-V^_2hKjF0bJJ>jAZUQB> zY)j)I!dtWzSQwQB(q@7bv7jY_^A`TV}I0@xt+oVs%Z$g{wLT4F|w= zs%re0q#igEJLQRTv6EbSC*Pm05jdPTWrwG>wUCerC^5dj88F1mn2j^KyQ)B#$v&w) zeUJCGNHi^nH3YYl-2`cZO4q~M?Eelk5a}Qge$8l>m#OaLlM7`$_?Rj9TiZxdwBn8X z>M#FNu|QyK`ZY-qpPdb>cv0zaoO4RH4d0=W9hWrs`44rMKG0{jx@yT1DEP%&bw1>A zd8d?3C2X}?c=%!HgKE>MFvs}ZKQQwZY!JiWnyrilqx7Gw6z`dTT9E@~9Cfm(4)j^> z=38bvh}p@}A2I~ZUbBY#7u>KbM^Y?&p4B6CdGKMD(DX-E`>>6)taa&&^tYL9HNLSS zS>t;V+}moW!rnTlT9|CPXx}8h4=+J8X_|FE!y;0m&rqX7U188HriZl)XMt5>oh}y| zcn<{J>C~M*l$X7zym~uLQ&+ubvUHFpuFoSP5ZH^-67le0 z5PoieSCLaWKc5ogd_Iq5X*!m!4ANFujh**LUfhwd<<{!)DnCXxgO%sO*#tu(_o%E^uoMI1x~q5#_rEM-L?w$( zs2i5PP7F%GI_-^yQ<8HeiTuc^^`c9VTbIkGYBk&X?XC3K)pLig<2TknHVrjdzpSnV zk)4SW3Ys8K5Y)@cs7nhM#7Hpi6s3V7eNmULO79p)i@R623Bfja!Ju5Se~2Z_hci)# z5Y{+cTQF%IO>SZv$k{|4tDO}gvXy#PHn`es!B9Zay#_MqJTA-*|O4px+chf!3qVLV=4&Asd{RCu{=MBv4h?GiB zmXz$qFSw+~FU(OF)S_6S5hyYhI)ZMV<=G9aO`c_%c?B9uLG^M``%fF}?C}+);Hm&N zFU8Q8MSplr7P@2E(on<9ek2adt1!(<@AU6Y$?$6GQX4@m6K2b=)mUf9H3&r~Y5Nf6 z6O+VGwb!qdY9R>b@ZyHSr|HYe zr!vFPtX&_?tZ6~$E49HlCEpzxv;4yIwQ$i1qn5O$r>qJiC*>qM{jzn%)aVjo`1C$*ExDx{;(=!aIf zW<{C06(Lo7;C2{%zn?@-jhAt~MQEcwYlD?EmsdfuneH0Ej<)Rm8y8Ch zE01U3yj5Ub*gvyg2pP&WAmTEa4Oijo zDM3a6f-e|u3Cv|is(e}RmM}?P!j81Id#bgLNz2c!k; zF|P_|R~FCtVf!pLu7iea)4%q)QZ}!N@yJpe?Dwu=^a_ z{&|0NzzTh}(o9Xv)eCpIy_ilcmbKg_6P1=VX~)TCo}$a3W-j?lopsIuKm*-)S@akI z5BsgfRX8qgpM{1V?qwSLnD!W9P(S|O9HQM7tr0LTH!N?D-;WJ~9}b>0aC zVdti-#xAD4{@nNFa8dVDrKYw;E!$!dsfe17;-eb_rcQ6Mt8RK~*U3?%wyK=x#!=)1 zHL=Qrf@a6ji8vakwrtpoX4X{7CeWr%$(Gf2UA(l7uK86S+T7LU;>IhXm!}rPe1z76 z8>S}2ivS`z^fctOL5DPDrv=b;#{R3;8wfSf5;CErk&=7?dw~>&4tyF@B$V$TGnPU^ z4hF+n)&d8TW&>dL06Ltyf9kRSpNi|3GU@*d-JE22MHZ<$L|`9Oo(y=i4AuvLHjdju zCpqM6rgz!uxzVUc6!QJo$5s7n$E3iGYOn!Gh?Z74!1!+s^#eGv`5(#is3B)?B|RL*#0{^iibw#$+aT;}Xwb^Z5l`vU*s3KSNgBseC|V9cSaC6S;00aMkfu zVz5)p-P2jX57Ox=hjepY<5?#qKK72eC?mpwa>njSGE}-GH=9##q+D*t6m=7s{(1L|H+d}Pat@{lOIF(VnrO^KeW&KBjnA>mNwm`Tz=+ClA1IUQ=uFZS?#1SRt?UUa zk*HO$Zi9;yZDv);dpA|FZ(ciC&jIc-G51*3Ydyir5z`}L-uk!{=su0>gL*8}4>*!zc&U4M8rZF zQ^62aDN$Hvg&x3uWBoPTz~6A`CcJTd#2h9{JaL3SOrS;VH@=Fp*$Ls9|u z1)}5tfA{!;h!y1Rb3jp3?as316m!n-MX9#SO^5nD>fji=iLOJW`1|G3a3khMP9{P! z-WFTIr`k=St1kiJT)^oKBj$8V^@*xD{_Fh2?5DwdwncVF5B1>+SHGWPEM17N<~XSd zc+sm~M}DSj`3%Z|te&N`3@7E|g#qj_$nuo*yKi5_YHIG#c~>oaPzGQ+xXi`kH!jA9 zJbMw(eG#dJ4 z>$cL8bX= zuCtZx;?*M3^<8O>il;-u&7j(P|HDMU@?I7RyA~Jz2J|ckpY~jv>G@#nnk2 z%=XfU997R(W_w`{J2P-hge^(y(ay^S016} z^YdG?{=)D=r1wx8y^e-LB+VKlo6vNART>l7sB;`oCA}tZc&#sExY9jhQhZHczq?jc zkUp=xpjBJ%As##Z$aQ@%a<4UjGdb#&l{f`Tf;>FyQu-e%m=9iUNsikn9-U1F6WY&j zIA{_cOp==E(~4X?FDxI;rX?`l(#8Z8oQ~n#WH8@Hgt*^)`O1LF0}XBV&;z1v9HprQ zS^n_1dlo?2qN+QV+{WJUElFG?NyL#yV5D#%S6sh^PGTxePQx==+;Y;E=f{>TuIN}0 zX&BKIFZ$V&drD!ihnTsO*?{A?rhLSBtfIC;S8N=%Y1>%D7y817dlv5mQkXvrr6MB{ zjl)n=hR`HQLZHGIWVU*=QB&rmmu|$v=Bih;NHUBlrp9HDQ0jJrKmf0&J(|yu8=_rm zbp>xIJMHyuV49uzF~Wzap7^^%Q;mjY73&;yZM@zVihi)pwFm-pp}CoKzH4T{f)o*( z+q2j*Vj(H~PU}*8-0fafiWI!7k69OV(BRCcpQuSQOf6azp7bWfM}+g#;QkDi*1sLK z2h5b zGTqo4FTAG+#l-L-k!2faYWG-&6a`xW>f6N}X13hUx z(%leHI&#)kAgLO7v}T(!&M;*FcHkQlH5*_Dd5rR|R{5Wd}Xe%PVq{F}4RH@`l zQuhgcy|i@3_iMRm30Nj*k@IA^3*R^ZbNX!R^$AyO){e1in^RR8JB{*boTFM z2HQC%EdvlDX<-A?rwY)!C=(u+6@SkbOoTLYCoHnaexd@=knpq!*{`Jy>n zNyY4R1IUwQ2}-vx)Er;|fHIp#cr?eY+*_+<(>4L1n3vR{co_voc$CkJ7nj5&h!>{c976}EM&Oy45yT* zaE7*64L2iRSOMGmsE}#6-N}69-uwV<^?0_%_o;qjCuCLQn7}~*umOZj+T>e>?}v6WZnYk> zvPzQf_4+)VPOA*L`{cLwcOC}^4rpyu0f6LXb`9EJ21v+et?W#ItMw*U-TwsPm@sYCx}lg-W*olCSXZ3nYznLcL#j>Gj$K->f{Vb#(?NPxR@ zG1~kgfA3-SgixNc9uHb(oxi@?J5+Uh=gAc@46G=X7GFRosvt{tyD^!3PRqc~8y;E$;NC*Zk)(Z|7q*A??&;q)C+UQMxcsh}? z8Ge~ytx_bJzF7HQG8E;ZM zT+2o)ZDdY}B%YS@F`Yl@;G)?0j601B307n`S&SCuP+#stJzos?08}f-P8X^qOOZrO zvKrY;?1vvimz<>os_?U>CdAH5u(mEgVY+(}-6x+k*uQWxHaZi`BnV;$q2mO8m80+Wr0~t z>~qbNjUv%;#ERYyjw6Tfi3Iw40XyVg_&*dAfXUe`qib<4(G=JHSX&%7JPxz;7N>^wf`W~+g$a)kd2}_g}7i) zZ+XAO)9`w|A9A3>lktZmpOngndmpcb?}ly9-qLBE6!efBEW7csgnHlQ@#Y7S=co;= zSdb|1jJza{=>b6y?w2|6Pk)R|RIK~NX1Yd>BBPBLF0a>iDa;sP%+PR|Xoee!_sI=G zg*&vh!$~(jZX;IrAbpE_PLJQQmIYCn`f zC<$+jVlgp*VMcm2iLvRx*#Xtw}X&wx@Uj)MU4ZS z*yG}M+GOPWgW>K?z5O@F92^MpJljR%r>mF6)-uoJ_%6qPfJ&qaml%wTh1(UGkb(k+ z0F?(KoXPvbi4@jr1lVfC0!(>yI>M|7C3obBTHBaN1Bi&!R)$e*O1f1$fHFAk<|u_@R_ z2Y|}_y|w;s?qDhjqhz7Lg%fhrL6{nsy&v3J|1N!`rm+~>UHw8+?>=Mf$ z9%jPceVbB15c}{4s2|Dzv4v571k81Gt8SRw0wBL-5~|af$G+XwDW-X10`)~qX^@Qz z#(cigHrp>L1t7$X)<+4#wx7S4IxQn+nH3q`qg@?PV|~&w7zZuwn?WL4s=awE z2>gGSxILEpwZ#72qKqDmh=&Qzrte8Q4}iTgX#|4d(YyW_0vn2=eoV%%--bGXjYO)y z(FC*xFEkq9Vr3AZSrsXA(Na8z(1;n19ETyC_%Ed+h4(!G?QnWBFQCj%-xhvt`GjhgU> zGu^3Vew2#gSS>%d)A!_qXVOLE?*l}NQ-V?%<6((-B9M9`W!?ClTs~4XOLbn${jUjC z%b^`ta$lgr)o7xuj)|alBUd; zQ)oY37kLbgF5`&PpHnic|@i@$(DnIO89 zMQQX6hk`g=R#C__>x;s{zU9;YfHp!$EhJc+Swxz#@R<>_R1wl&r-h6nv)2c`>Zl?!wM zSVE_S`#t~#3TedK#1Nl~-Di1QeZx`7xOUH9Lsqd~wSfIa-aQHdO+Wil#=cqZe}B=n z{e97uh6D?Eo<4d4NC~Ht!#sEX)QAJoXmiG4 zg{$hc=+~<+7BPKOTm!&1uiR9Hx#350Izu~yA$u~{V zHQ3mRo;2!gP&T*EtW=(1x~I86d6(_+>43CZe3X%15x>C%o?0yeu|iK`;Hkvy6B$%= zZ|mUKE4<3OK}=eiuy7`kn-j!zh!=ty9eEj{H7_-VT44+?I(&Aw*z>F-t9*rzFLK=c zx+ig~(aS`mNy4-3Z>5(VBxnE?$jh{)&09)H_c2mPc3*rI!@FYkntaBS0xdF~QM-7k zF!jgU3k^sxO_MSoKmj(|#%dVCOAcMB$;rEY3Dn*oK z)ZGqgA5p~RP7Zh7vN?5FRXttD*ww_SJ_O%^mXs;Aw2MK0#Wfy%!F9OKI3#QZmnF5E zRb?JRg>7m!Q*-)OK_IE7{vKjBy3)~vliB%XAY8tAEgN8#7R|jR!MUnX9(VR(XQWRp zD_*5zcVHQSa5}woUXtBu*Of)czy{w8FUFaQ;$`0Vuj{n=EqRat2MnyCCWj51a2<43 z7?c974Fpch`5q4P&m5T5kMY6KMay8WA- z={X$)5NE)=aXun_V4+4d-J-^2SyrYDzZ-)c2#?JwHkU9T+SBlu3@Ylr-%)4XeL<)- z%$t28f*>4cd&C+HLOU|ON}nk}S+|9*LxrD<$86-H zTE0$VLg@I_$6$pH=t@O7sT}t3J7q8Wv1|lesvRIxsE9m%A9>$`5^5sy>+1Io5PQkV zP1e|?lum4oao**t<`XtRs@$Z4ORKRJ090cjS6OxIW-H10(kx zD+C_*#cm4kHfp(b;D>b($Pg#4i8UV1v1fr!y-31GT(*pN~N@Ld7o)W+MoKoBv|7mQImx+^rGp#Du^CONNsXn1D`$ndHpCcEs?Z1kpzJ0(WC z&$SpJy$VUy_V*C7smdd#aWj5sgwN3Tl5zts#Bf1Fk=(

Q}`gh%x9~I<=N_oOv)3 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%0AwQOYkqdi8Ar!B4Rya-)>+L5lE~TQ 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 +

+
+
+

用户登录

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/auth/profile.html b/src/flaskProject/app/templates/auth/profile.html new file mode 100644 index 0000000..c4593f4 --- /dev/null +++ b/src/flaskProject/app/templates/auth/profile.html @@ -0,0 +1,100 @@ +{% extends "base.html" %} + +{% block title %}个人资料 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
个人资料
+
+
+
+
+ + +
+ +
+ + +
+ + {% if current_user.is_doctor() %} +
+ + +
+ +
+ + +
+ {% endif %} + +
+ + +
如果不修改密码,请留空
+
+ +
+ + +
+ +
+ + +
请输入当前密码以确认修改
+
+ +
+ +
+
+
+
+
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/auth/register.html b/src/flaskProject/app/templates/auth/register.html new file mode 100644 index 0000000..8e27cd2 --- /dev/null +++ b/src/flaskProject/app/templates/auth/register.html @@ -0,0 +1,112 @@ +{% extends "base.html" %} + +{% block title %}注册 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+

用户注册

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + + +
+ +
+
+ +
+
+
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/auth/reset_password.html b/src/flaskProject/app/templates/auth/reset_password.html new file mode 100644 index 0000000..1dfcfc1 --- /dev/null +++ b/src/flaskProject/app/templates/auth/reset_password.html @@ -0,0 +1,65 @@ +{% extends "base.html" %} + +{% block title %}设置新密码 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
+
设置新密码
+
+
+
+
+ + +
+ 密码长度至少6个字符。 +
+
+
+ + +
+
+ + + 返回登录 + +
+
+
+
+
+
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/auth/reset_password_request.html b/src/flaskProject/app/templates/auth/reset_password_request.html new file mode 100644 index 0000000..f937c65 --- /dev/null +++ b/src/flaskProject/app/templates/auth/reset_password_request.html @@ -0,0 +1,37 @@ +{% extends "base.html" %} + +{% block title %}重置密码 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
+
重置密码
+
+
+
+
+ + +
+ 我们将向您的邮箱发送重置密码的链接。 +
+
+
+ + + 返回登录 + +
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/base.html b/src/flaskProject/app/templates/base.html new file mode 100644 index 0000000..9aed83c --- /dev/null +++ b/src/flaskProject/app/templates/base.html @@ -0,0 +1,155 @@ + + + + + + {% block title %}医疗问答系统{% endblock %} + + + {% block extra_css %}{% endblock %} + + + + + + +
+ {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} + {% for category, message in messages %} +
+ {{ message }} + +
+ {% endfor %} + {% endif %} + {% endwith %} + + {% block content %}{% endblock %} +
+ + +
+
+ © 2024 医疗问答系统. All rights reserved. +
+
+ + + + + + {% if current_user.is_authenticated %} + + {% endif %} + {% block extra_js %}{% endblock %} + + \ No newline at end of file diff --git a/src/flaskProject/app/templates/chat/list.html b/src/flaskProject/app/templates/chat/list.html new file mode 100644 index 0000000..2a7fd8a --- /dev/null +++ b/src/flaskProject/app/templates/chat/list.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} + +{% block title %}消息列表 - {{ super() }}{% endblock %} + +{% block content %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/chat/room.html b/src/flaskProject/app/templates/chat/room.html new file mode 100644 index 0000000..bc436e4 --- /dev/null +++ b/src/flaskProject/app/templates/chat/room.html @@ -0,0 +1,94 @@ +{% extends "base.html" %} + +{% block title %}与 {{ other_user.profile.nickname if other_user.profile else other_user.username }} 的对话 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
+
+ +
+ {{ other_user.profile.nickname if other_user.profile else other_user.username }} + + {{ '医生' if other_user.is_doctor() else '患者' }} + {% if other_user.is_doctor() and other_user.department %} + - {{ other_user.department.name }} + {% endif %} + +
+
+
+
+ {% for message in messages %} +
+
+ {{ message.content }} +
+ {{ message.created_at.strftime('%H:%M') }} +
+
+
+ {% endfor %} +
+ +
+
+
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/main/ai_consult.html b/src/flaskProject/app/templates/main/ai_consult.html new file mode 100644 index 0000000..426207c --- /dev/null +++ b/src/flaskProject/app/templates/main/ai_consult.html @@ -0,0 +1,143 @@ +{% extends "base.html" %} + +{% block title %}AI问诊 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
AI智能问诊
+
+
+ +
+ {% for message in chat_history %} +
+
+ + {{ message.created_at.strftime('%Y-%m-%d %H:%M:%S') }} + +
+
+ {{ message.message }} +
+
+ {% endfor %} +
+ + +
+
+ + +
+
+
+
+
+
+{% endblock %} + +{% block extra_css %} + +{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/main/index.html b/src/flaskProject/app/templates/main/index.html new file mode 100644 index 0000000..c8ffb7f --- /dev/null +++ b/src/flaskProject/app/templates/main/index.html @@ -0,0 +1,124 @@ +{% extends "base.html" %} + +{% block title %}首页 - {{ super() }}{% endblock %} + +{% block content %} +
+ +
+
+
+

欢迎使用医疗问答系统

+

我们提供智能分诊、AI问诊和电子病历等服务,让您的就医体验更加便捷。

+ {% if not current_user.is_authenticated %} +
+

立即注册或登录,开始使用我们的服务。

+ + {% endif %} +
+
+
+ + +
+
+
+
+
+ + 智能分诊 +
+

根据您的症状,智能推荐最适合的就诊科室,让您的就医更有针对性。

+ {% if current_user.is_authenticated and current_user.role == 'patient' %} + 开始分诊 + {% endif %} +
+
+
+
+
+
+
+ + AI问诊 +
+

通过AI智能问答,快速了解您的健康状况,获取专业的医疗建议。

+ {% if current_user.is_authenticated and current_user.role == 'patient' %} + 咨询AI + {% endif %} +
+
+
+
+
+
+
+ + 电子病历 +
+

在线管理您的就医记录,随时查看诊断结果和治疗方案。

+ {% if current_user.is_authenticated %} + 查看病历 + {% endif %} +
+
+
+
+ + +
+
+
+
+
系统说明
+
+
+
患者功能:
+
    +
  • 智能分诊服务
  • +
  • AI智能问诊
  • +
  • 在线查看病历
  • +
  • 查看就诊历史
  • +
+
+
+
医生功能:
+
    +
  • 管理患者病历
  • +
  • 查看分诊记录
  • +
  • 更新治疗方案
  • +
  • 管理科室信息
  • +
+
+
+
+
+
+
+
+{% endblock %} + +{% block extra_css %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/records/list.html b/src/flaskProject/app/templates/records/list.html new file mode 100644 index 0000000..04c1230 --- /dev/null +++ b/src/flaskProject/app/templates/records/list.html @@ -0,0 +1,104 @@ +{% extends "base.html" %} + +{% block title %}病历记录 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
+ {% if current_user.is_doctor() %} + 病历管理 + {% else %} + 我的病历 + {% endif %} +
+ {% if current_user.is_doctor() %} + + 新建病历 + + {% endif %} +
+
+
+ + + + + {% if current_user.is_doctor() %} + + {% else %} + + {% endif %} + + + + + + + + + {% for record in pagination.items %} + + + {% if current_user.is_doctor() %} + + {% else %} + + {% endif %} + + + + + + + {% endfor %} + +
编号患者主治医生科室诊断状态创建时间操作
{{ record.id }}{{ record.patient.username }}{{ record.doctor.username if record.doctor else '待分配' }}{{ record.department.name if record.department else '-' }}{{ record.diagnosis[:20] + '...' if record.diagnosis else '-' }} + + {{ { + 'pending': '待处理', + 'in_progress': '处理中', + 'completed': '已完成' + }[record.status] }} + + {{ record.created_at.strftime('%Y-%m-%d %H:%M') }} + 查看 + {% if current_user.is_doctor() and record.status != 'completed' %} + 编辑 + {% endif %} +
+
+ + + {% if pagination.pages > 1 %} + + {% endif %} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/records/new.html b/src/flaskProject/app/templates/records/new.html new file mode 100644 index 0000000..8b7d5e7 --- /dev/null +++ b/src/flaskProject/app/templates/records/new.html @@ -0,0 +1,117 @@ +{% extends "base.html" %} + +{% block title %}新建病历 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
新建病历
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + 取消 +
+
+
+
+
+
+{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/records/view.html b/src/flaskProject/app/templates/records/view.html new file mode 100644 index 0000000..37a9894 --- /dev/null +++ b/src/flaskProject/app/templates/records/view.html @@ -0,0 +1,125 @@ +{% extends "base.html" %} + +{% block title %}查看病历 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
病历详情
+
+ {% if current_user.is_doctor() and record.status != 'completed' %} + 编辑病历 + {% endif %} + 返回列表 +
+
+
+
+
+ 病历编号: + {{ record.id }} +
+
+ 患者姓名: + {{ record.patient.username }} +
+
+ 主治医生: + {{ record.doctor.username if record.doctor else '待分配' }} +
+
+ 就诊科室: + {{ record.department.name if record.department else '-' }} +
+
+ +
+
主诉
+
{{ record.chief_complaint or '无' }}
+
+ +
+
现病史
+
{{ record.present_illness or '无' }}
+
+ +
+
既往史
+
{{ record.past_history or '无' }}
+
+ +
+
诊断
+
{{ record.diagnosis or '无' }}
+
+ +
+
治疗方案
+
{{ record.treatment or '无' }}
+
+ +
+
处方
+
{{ record.prescription or '无' }}
+
+ +
+
备注
+
{{ record.notes or '无' }}
+
+ +
+
+ 状态: + + {{ { + 'pending': '待处理', + 'in_progress': '处理中', + 'completed': '已完成' + }[record.status] }} + +
+
+ 创建时间: + {{ record.created_at.strftime('%Y-%m-%d %H:%M') }} +
+
+ 最后更新: + {{ record.updated_at.strftime('%Y-%m-%d %H:%M') }} +
+
+
+
+
+
+{% endblock %} + +{% block extra_css %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/settings/settings.html b/src/flaskProject/app/templates/settings/settings.html new file mode 100644 index 0000000..21aa996 --- /dev/null +++ b/src/flaskProject/app/templates/settings/settings.html @@ -0,0 +1,41 @@ +{% extends "base.html" %} + +{% block title %}系统设置 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
+
个人设置
+
+
+
+
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/triage/manage.html b/src/flaskProject/app/templates/triage/manage.html new file mode 100644 index 0000000..69c03f8 --- /dev/null +++ b/src/flaskProject/app/templates/triage/manage.html @@ -0,0 +1,101 @@ +{% extends "base.html" %} + +{% block title %}分诊规则管理 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
添加分诊规则
+
+
+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
现有分诊规则
+
+
+
+ + + + + + + + + + + + {% for rule in rules %} + + + + + + + + {% endfor %} + +
症状科室严重程度更新时间操作
{{ rule.symptom }}{{ rule.department.name }} + + {{ rule.severity_level }}级 + + {{ rule.updated_at.strftime('%Y-%m-%d %H:%M') }} +
+ + + +
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/app/templates/triage/triage.html b/src/flaskProject/app/templates/triage/triage.html new file mode 100644 index 0000000..823d094 --- /dev/null +++ b/src/flaskProject/app/templates/triage/triage.html @@ -0,0 +1,153 @@ +{% extends "base.html" %} + +{% block title %}智能分诊 - {{ super() }}{% endblock %} + +{% block content %} +
+
+
+
+
智能分诊
+
+
+
+
+ + +
+ +
+ +
+ + + + + + +
+
+ +
+ +
+
+ + + +
+
+
+
+{% endblock %} + +{% block extra_css %} + +{% endblock %} + +{% block extra_js %} + +{% endblock %} \ No newline at end of file diff --git a/src/flaskProject/config.py b/src/flaskProject/config.py new file mode 100644 index 0000000..f645452 --- /dev/null +++ b/src/flaskProject/config.py @@ -0,0 +1,19 @@ +import os + +basedir = os.path.abspath(os.path.dirname(__file__)) + + +class Config: + # 密钥配置 + SECRET_KEY = 'dev' # 在生产环境中应该使用复杂的随机字符串 + + # 数据库配置 + SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') + SQLALCHEMY_TRACK_MODIFICATIONS = False + + # 文件上传配置 + UPLOAD_FOLDER = os.path.join(basedir, 'app/static/uploads') + MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 最大16MB + + # 智谱AI配置 + ZHIPUAI_API_KEY = "7dac79af6b3a474893d3c5aac13c087c.QJBPxMxLIaFClkLx" # 替换为您的智谱API密钥 \ No newline at end of file diff --git a/src/flaskProject/requirements.txt b/src/flaskProject/requirements.txt new file mode 100644 index 0000000..54b4ca5 --- /dev/null +++ b/src/flaskProject/requirements.txt @@ -0,0 +1,36 @@ + +Flask==2.3.3 +Werkzeug==2.3.7 +Flask-Login==0.6.2 +Flask-SQLAlchemy==3.0.5 + + +SQLAlchemy==2.0.21 +alembic==1.12.0 + + + + + +python-dotenv==1.0.0 +email-validator==2.0.0.post2 +pytz==2023.3.post1 +requests==2.31.0 +urllib3==2.0.4 + + +cryptography==41.0.3 +PyJWT==2.8.0 + + +python-dateutil==2.8.2 + + +pytest==7.4.2 +pytest-cov==4.1.0 +black==23.7.0 +flake8==6.1.0 + + +gunicorn==21.2.0 +gevent==23.7.0 \ No newline at end of file diff --git a/src/flaskProject/run.py b/src/flaskProject/run.py new file mode 100644 index 0000000..3536bfc --- /dev/null +++ b/src/flaskProject/run.py @@ -0,0 +1,6 @@ +from app import create_app + +app = create_app() + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/src/flaskProject/scripts/__init__.py b/src/flaskProject/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/flaskProject/scripts/init_db.py b/src/flaskProject/scripts/init_db.py new file mode 100644 index 0000000..3882090 --- /dev/null +++ b/src/flaskProject/scripts/init_db.py @@ -0,0 +1,158 @@ +from app import create_app, db +from app.models.models import User, Department, SymptomDepartment, UserProfile +from werkzeug.security import generate_password_hash + + +def init_departments(): + """初始化科室数据""" + departments = [ + {'name': '普通内科', 'description': '处理常见内科疾病,如感冒、发烧等'}, + {'name': '心内科', 'description': '专治心脏相关疾病'}, + {'name': '神经内科', 'description': '治疗神经系统疾病'}, + {'name': '消化内科', 'description': '治疗消化系统疾病'}, + {'name': '呼吸内科', 'description': '治疗呼吸系统疾病'}, + {'name': '内分泌科', 'description': '治疗内分泌系统疾病'}, + {'name': '普通外科', 'description': '处理常见外科疾病'}, + {'name': '骨科', 'description': '治疗骨骼相关疾病'}, + {'name': '妇产科', 'description': '治疗妇科疾病和孕产相关'}, + {'name': '儿科', 'description': '专门治疗儿童疾病'}, + {'name': '皮肤科', 'description': '治疗皮肤相关疾病'}, + {'name': '眼科', 'description': '治疗眼部相关疾病'}, + {'name': '耳鼻喉科', 'description': '治疗耳鼻喉相关疾病'}, + {'name': '口腔科', 'description': '治疗口腔相关疾病'}, + {'name': '精神科', 'description': '治疗心理和精神相关疾病'} + ] + + for dept in departments: + if not Department.query.filter_by(name=dept['name']).first(): + department = Department(name=dept['name'], description=dept['description']) + db.session.add(department) + + db.session.commit() + + +def init_symptom_rules(): + """初始化症状-科室关联规则""" + rules = [ + {'symptom': '发烧', 'department': '普通内科', 'severity': 2}, + {'symptom': '咳嗽', 'department': '呼吸内科', 'severity': 2}, + {'symptom': '胸痛', 'department': '心内科', 'severity': 4}, + {'symptom': '头痛', 'department': '神经内科', 'severity': 3}, + {'symptom': '腹痛', 'department': '消化内科', 'severity': 3}, + {'symptom': '骨折', 'department': '骨科', 'severity': 4}, + {'symptom': '皮疹', 'department': '皮肤科', 'severity': 2}, + {'symptom': '视力模糊', 'department': '眼科', 'severity': 3}, + {'symptom': '耳鸣', 'department': '耳鼻喉科', 'severity': 2}, + {'symptom': '牙痛', 'department': '口腔科', 'severity': 2}, + {'symptom': '焦虑', 'department': '精神科', 'severity': 3}, + {'symptom': '高血压', 'department': '心内科', 'severity': 3}, + {'symptom': '糖尿病', 'department': '内分泌科', 'severity': 3}, + {'symptom': '哮喘', 'department': '呼吸内科', 'severity': 3}, + {'symptom': '胃痛', 'department': '消化内科', 'severity': 2} + ] + + for rule in rules: + dept = Department.query.filter_by(name=rule['department']).first() + if dept and not SymptomDepartment.query.filter_by(symptom=rule['symptom']).first(): + symptom_dept = SymptomDepartment( + symptom=rule['symptom'], + department_id=dept.id, + severity_level=rule['severity'] + ) + db.session.add(symptom_dept) + + db.session.commit() + + +def create_test_users(): + """创建测试用户""" + # 创建管理员用户 + admin = User.query.filter_by(username='admin').first() + if not admin: + admin = User( + username='admin', + email='admin@example.com', + role='doctor', + department_id=1, # 默认分配到普通内科 + title='主任医师' + ) + admin.set_password('admin123') + db.session.add(admin) + db.session.commit() # 先提交以获取用户ID + + # 创建管理员的个人资料 + admin_profile = UserProfile( + user_id=admin.id, # 现在可以安全地使用admin.id + nickname='系统管理员', + avatar='admin_default.png' + ) + db.session.add(admin_profile) + db.session.commit() + + # 创建测试医生 + test_doctor = User.query.filter_by(username='doctor').first() + if not test_doctor: + test_doctor = User( + username='doctor', + email='doctor@example.com', + role='doctor', + department_id=1, + title='主治医师' + ) + test_doctor.set_password('doctor123') + db.session.add(test_doctor) + db.session.commit() # 先提交以获取用户ID + + # 创建医生的个人资料 + doctor_profile = UserProfile( + user_id=test_doctor.id, # 现在可以安全地使用test_doctor.id + nickname='测试医生', + avatar='doctor_default.png' + ) + db.session.add(doctor_profile) + db.session.commit() + + # 创建测试患者 + test_patient = User.query.filter_by(username='patient').first() + if not test_patient: + test_patient = User( + username='patient', + email='patient@example.com', + role='patient' + ) + test_patient.set_password('patient123') + db.session.add(test_patient) + db.session.commit() # 先提交以获取用户ID + + # 创建患者的个人资料 + patient_profile = UserProfile( + user_id=test_patient.id, # 现在可以安全地使用test_patient.id + nickname='测试患者', + avatar='patient_default.png' + ) + db.session.add(patient_profile) + db.session.commit() + + print('测试用户创建完成') + +def init_db(): + """初始化数据库""" + app = create_app() + with app.app_context(): + # 创建所有表 + db.create_all() + + # 初始化基础数据 + init_departments() + init_symptom_rules() + create_test_users() + + print('数据库初始化完成!') + print('测试账号:') + print('管理员 - username: admin, password: admin123') + print('医生 - username: doctor, password: doctor123') + print('患者 - username: patient, password: patient123') + + +if __name__ == '__main__': + init_db() \ No newline at end of file diff --git a/src/flaskProject/zp.py b/src/flaskProject/zp.py new file mode 100644 index 0000000..41f6b32 --- /dev/null +++ b/src/flaskProject/zp.py @@ -0,0 +1,25 @@ +from zhipuai import ZhipuAI + +def extract_content(response_message): + # 提取 content 字段的值 + content = response_message.content # 获取 content 属性 + return content + + + +def ask(conte): + client = ZhipuAI(api_key="7dac79af6b3a474893d3c5aac13c087c.QJBPxMxLIaFClkLx") # 请填写您自己的APIKey + response = client.chat.completions.create( + model="glm-4-plus", # 请填写您要调用的模型名称 + messages=[ + {"role": "user", "content": conte}, + ], + ) + r=extract_content(response.choices[0].message) + # print(r) + return r.encode('utf-8', 'ignore').decode('utf-8') + + + + +