From 3c7238a45c4456299bb43d2531ded2d9c0c1effb Mon Sep 17 00:00:00 2001 From: yvan <8574526@qq.com> Date: Tue, 12 Aug 2025 10:30:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=AE=A0=E7=89=A9=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✨ 新功能: - 创建了4个主要Tab页面:宠物、助手、领养、我的 - 集成uview-ui-next UI框架 - 添加可爱的宠物主题图标 - 实现宠物列表展示和管理功能 - 配置微信小程序登录功能 🎨 界面优化: - 使用uView组件美化界面 - 统一的设计风格和配色方案 - 响应式布局适配 📦 技术栈: - uni-app + Vue3 - uview-ui-next UI框架 - 微信小程序平台 --- App.vue | 3 +- README.md | 88 ++++++++++++++++ main.js | 3 + package-lock.json | 32 ++++++ package.json | 16 +++ pages.json | 78 +++++++++++++- pages/adoption/adoption.vue | 41 ++++++++ pages/assistant/assistant.vue | 105 +++++++++++++++++++ pages/pets/pets.vue | 109 ++++++++++++++++++++ pages/profile/profile.vue | 157 +++++++++++++++++++++++++++++ static/tabbar/adoption-active.png | Bin 0 -> 4357 bytes static/tabbar/adoption.png | Bin 0 -> 10356 bytes static/tabbar/assistant-active.png | Bin 0 -> 2599 bytes static/tabbar/assistant.png | Bin 0 -> 4902 bytes static/tabbar/pets-active.png | Bin 0 -> 3347 bytes static/tabbar/pets.png | Bin 0 -> 4993 bytes static/tabbar/profile-active.png | Bin 0 -> 2544 bytes static/tabbar/profile.png | Bin 0 -> 2889 bytes uni.scss | 3 + 19 files changed, 630 insertions(+), 5 deletions(-) create mode 100644 README.md create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/adoption/adoption.vue create mode 100644 pages/assistant/assistant.vue create mode 100644 pages/pets/pets.vue create mode 100644 pages/profile/profile.vue create mode 100644 static/tabbar/adoption-active.png create mode 100644 static/tabbar/adoption.png create mode 100644 static/tabbar/assistant-active.png create mode 100644 static/tabbar/assistant.png create mode 100644 static/tabbar/pets-active.png create mode 100644 static/tabbar/pets.png create mode 100644 static/tabbar/profile-active.png create mode 100644 static/tabbar/profile.png diff --git a/App.vue b/App.vue index 8c2b732..50fca5f 100644 --- a/App.vue +++ b/App.vue @@ -12,6 +12,7 @@ } - diff --git a/README.md b/README.md new file mode 100644 index 0000000..350267d --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# 宠爱小程序 + +一个专注于宠物管理的微信小程序,提供宠物档案管理、AI助手、领养专区等功能。 + +## 项目结构 + +``` +pet-ai/ +├── pages/ +│ ├── pets/ # 宠物管理页面 +│ ├── assistant/ # AI助手页面 +│ ├── adoption/ # 领养专区页面 +│ └── profile/ # 个人中心页面 +├── static/ +│ └── tabbar/ # Tab图标文件夹 +└── uni_modules/ # 插件模块(需要安装) +``` + +## 当前完成状态 + +✅ 基础项目结构搭建 +✅ Tab导航配置 +✅ 四个主要页面创建 +✅ 宠物页面基础功能 + +## 待完成任务 + +### 1. UI框架安装 +**推荐方式**:在HBuilderX中打开项目,通过插件市场安装uview-next +- 插件市场地址:https://ext.dcloud.net.cn/plugin?id=24021 +- 插件ID:uview-next +- 安装后需要配置main.js和uni.scss + +### 2. Tab图标获取 +需要为以下4个tab页面添加可爱的宠物主题图标: + +**推荐图标资源**: +- [iconfont阿里巴巴矢量图标库](https://www.iconfont.cn/) +- [Feather Icons](https://feathericons.com/) +- [Heroicons](https://heroicons.com/) + +**所需图标**: +- `static/tabbar/pets.png` - 宠物图标(如猫爪、宠物头像) +- `static/tabbar/pets-active.png` - 宠物图标激活状态 +- `static/tabbar/assistant.png` - AI助手图标(如机器人、对话框) +- `static/tabbar/assistant-active.png` - AI助手图标激活状态 +- `static/tabbar/adoption.png` - 领养图标(如爱心、房子) +- `static/tabbar/adoption-active.png` - 领养图标激活状态 +- `static/tabbar/profile.png` - 个人中心图标(如用户头像) +- `static/tabbar/profile-active.png` - 个人中心图标激活状态 + +**图标规格**: +- 尺寸:81px × 81px(推荐) +- 格式:PNG +- 背景:透明 + +### 3. 功能完善 +- [ ] 宠物详情页面 +- [ ] 添加宠物页面 +- [ ] 宠物记录功能 +- [ ] AI对话功能 +- [ ] 领养信息发布 +- [ ] 微信登录集成 + +## 技术栈 + +- **前端框架**:uni-app + Vue3 +- **UI框架**:uview-next(待安装) +- **开发工具**:HBuilderX +- **部署平台**:微信小程序 + +## 开发指南 + +1. 使用HBuilderX打开项目 +2. 安装uview-next插件 +3. 添加tab图标文件 +4. 运行到微信开发者工具测试 + +## 项目特色 + +🐱 **宠物管理**:完整的宠物档案和日常记录系统 +🤖 **AI助手**:智能宠物问答和健康建议 +❤️ **领养专区**:宠物领养信息发布平台 +👤 **个人中心**:用户信息和设置管理 + +## 联系方式 + +如有问题或建议,请联系开发团队。 diff --git a/main.js b/main.js index c1caf36..f61b3c6 100644 --- a/main.js +++ b/main.js @@ -1,9 +1,11 @@ import App from './App' +import uView from 'uview-ui-next' // #ifndef VUE3 import Vue from 'vue' import './uni.promisify.adaptor' Vue.config.productionTip = false +Vue.use(uView) App.mpType = 'app' const app = new Vue({ ...App @@ -15,6 +17,7 @@ app.$mount() import { createSSRApp } from 'vue' export function createApp() { const app = createSSRApp(App) + app.use(uView) return { app } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f1da83b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,32 @@ +{ + "name": "pet-ai", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pet-ai", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "mitt": "^3.0.1", + "uview-ui-next": "^0.0.1" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/uview-ui-next": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/uview-ui-next/-/uview-ui-next-0.0.1.tgz", + "integrity": "sha512-CGK4XPt1lYhCb+7aHgMpp6/VV1owOH67dPz52ypJ9dcVs0Ixgl5/PF0xajlel11R2yRhtRydLu6nIXs9eDZSBw==", + "license": "MIT", + "dependencies": { + "mitt": "^3.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1505158 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "pet-ai", + "version": "1.0.0", + "description": "一个专注于宠物管理的微信小程序,提供宠物档案管理、AI助手、领养专区等功能。", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "mitt": "^3.0.1", + "uview-ui-next": "^0.0.1" + } +} diff --git a/pages.json b/pages.json index 869105d..36e98da 100644 --- a/pages.json +++ b/pages.json @@ -1,5 +1,37 @@ { - "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + "pages": [ + { + "path": "pages/pets/pets", + "style": { + "navigationBarTitleText": "我的宠物", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, + { + "path": "pages/assistant/assistant", + "style": { + "navigationBarTitleText": "AI助手", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, + { + "path": "pages/adoption/adoption", + "style": { + "navigationBarTitleText": "领养专区", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, + { + "path": "pages/profile/profile", + "style": { + "navigationBarTitleText": "我的", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black" + } + }, { "path": "pages/index/index", "style": { @@ -9,9 +41,47 @@ ], "globalStyle": { "navigationBarTextStyle": "black", - "navigationBarTitleText": "uni-app", - "navigationBarBackgroundColor": "#F8F8F8", - "backgroundColor": "#F8F8F8" + "navigationBarTitleText": "宠爱小程序", + "navigationBarBackgroundColor": "#ffffff", + "backgroundColor": "#f8f9fa" + }, + "easycom": { + "autoscan": true, + "custom": { + "^u-(.*)": "uview-ui-next/components/u-$1/u-$1.vue" + } + }, + "tabBar": { + "color": "#999999", + "selectedColor": "#ff6b6b", + "backgroundColor": "#ffffff", + "borderStyle": "black", + "list": [ + { + "pagePath": "pages/pets/pets", + "text": "宠物", + "iconPath": "static/tabbar/pets.png", + "selectedIconPath": "static/tabbar/pets-active.png" + }, + { + "pagePath": "pages/assistant/assistant", + "text": "助手", + "iconPath": "static/tabbar/assistant.png", + "selectedIconPath": "static/tabbar/assistant-active.png" + }, + { + "pagePath": "pages/adoption/adoption", + "text": "领养", + "iconPath": "static/tabbar/adoption.png", + "selectedIconPath": "static/tabbar/adoption-active.png" + }, + { + "pagePath": "pages/profile/profile", + "text": "我的", + "iconPath": "static/tabbar/profile.png", + "selectedIconPath": "static/tabbar/profile-active.png" + } + ] }, "uniIdRouter": {} } diff --git a/pages/adoption/adoption.vue b/pages/adoption/adoption.vue new file mode 100644 index 0000000..eeb5084 --- /dev/null +++ b/pages/adoption/adoption.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/pages/assistant/assistant.vue b/pages/assistant/assistant.vue new file mode 100644 index 0000000..bc86fab --- /dev/null +++ b/pages/assistant/assistant.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/pages/pets/pets.vue b/pages/pets/pets.vue new file mode 100644 index 0000000..1e1dba9 --- /dev/null +++ b/pages/pets/pets.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/pages/profile/profile.vue b/pages/profile/profile.vue new file mode 100644 index 0000000..66dd0b9 --- /dev/null +++ b/pages/profile/profile.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/static/tabbar/adoption-active.png b/static/tabbar/adoption-active.png new file mode 100644 index 0000000000000000000000000000000000000000..9dc248c14dc10671931d7d745763eacdcea915eb GIT binary patch literal 4357 zcmV+g5&G_lP)l$4Z|l$4Z|l$4Z|l$4a6f=syu$k80=47AFn zHo#h-2G|IEn)}(1XbW@%S_4hl-lh$?v=Z1{HtBMd;{oUe3 zuK}}xg+SJgnATJR1AqgOHuXl@*eT$;ZNSG!dln&WdLCHfO3-pq2^B&PNNv;al}4q9SQ*<>gWS`vN7yDH+99R~^2Uz}QSMe? z8L$rc68HjHJhjaI><(0ikm(6v0y3_|Xg*Ek^;@0k2~}YJLu!N&?mhy8&~s>x2h^V~{Oh6f^;jL>7S? zEM#~G_@+g<`v4zVl(!oAGw@yHC5VDHz{$W2>>h@h$o9D`9El7=egZB7E=1lam$U@V z0X__nX9F{K7wpTR;wN362?Fa;0k2w zG0A!t((z4@>B*FDW3H??^$Z$a5t&Ud-ZtQTmjYyfn+%m_kv;3)E(HidKVUv)nWq6y z`~3Z7VAt5C_UCY95onV6QdbrK)~C|Pfex-JE|KQI?F28VylD#Mf9p;30A9i@d*ma* z1fR-oAOYJE3ogN~SD;qWq^K&1iShU^UTcx|HWVs> z+tAyx8Q8zn3I+n33>92aYT;$#4D^Sf7C5?$a)l)W+=|{upAdX1X{0IeZ$rVimLzid zIgK43f;!}Muc1-_{2jfop2+>ZXntoXa5}+i&W6Czz%#&;h&HdG(;QK;YkhW3v4tIk zK1|LdI#q5;^mIhGxmXKyvn`|o_?J@1X5{c9CE0urebGMEwt%t9#ZLB?DbBbay$|;Z zy0AH7r{=wI4j~s3G13yTLK=t+cTuiWs*v;hZvj0?{xsMO(ad`Lac0nkVQ{)i;yGSB=RHlzC6(HB5m$}*r}M|ITw2) zloydV*OqUf-wQ3RA(@)P47#nxbkhaNd`?3sOuT6_ z$y13Br%=u<7>rD{^YE8q5wkc<`U#t~8hN`->`7@BzgI-n$cU%}{!5{pzw~Bog4nfr zGmeQ%QcDiNtjpgDEI{Vwm4-Z7U>5qDS_!=AbKR%8vKRWuP=_oOlf*?7%K5H0(;-Tx z)x>Yn6U58tH~w~Z9M&q41>9mo{t-&qCmZrELZ*fMUC?gGzFNyaqr^5wO=oob!X4}* zf3IY?Csr|o*#rHC7Yt{4bV0WhykE)tl#*`&V#;ko+i%z9>P-?aP$=im^E14wWJucK z$oUk?IG14k#1E9~HnO9hpcVRC5@c*yjehS=wQN&dXw$&+^?z(f;heSw_m;fHatnox zm|$^T23V?GyL(=qfy&<(TFUhc<=Wp^UK=Q~ zxQIf>(hreCuX+|Du?F&K1)LX9b|2t4<@cJbQl$ew&SV$F0q@SGv< z2IOehOHage*`(Y#C0F)H;18Hp#+O9b+(_AvLRmis-Rd`qPcX>Q>j&sJ-Zow6Q~p&Y zmOY>3+6wfhP~I;x$OF*KlerqvXvM*!eWyK{ZoI)L+9Imw?;~xkLc-?EMq&)b6%?u`^773x*&&zI+ygbcXlI7~)6>DDKVhCSQBDgfNEi z?bEiWQ87}f?`4pMmiG_Zd3hA{N1yZ8AW=sSK@=+wD0#BvonR%D4EpI{eRQv5fWv^R z(RCV|k}BHR8qUWim1^=2L;plSxIhA9xxGLE~jU@JGusqCo4@52`3! z7y#_$NC?eRX0{=3HupDgXg5uZXG`x~d3_PL>9)w$u!il6yG2MqsO2Hb*G8uoee%zu zP;*#H`%GkzK-OMfsX_u2X4%mupdYfeSs$?=waV}Ob^~4o73B7=mNY}wGe1Oj3B}B> zi;#en)7WlO6~qSRcYgl)TKlvzN~I5lrfpl0a}+=t>zyBtav+FiNU05jAYMOOFeDpK zpIwlER%?{&!=%N)L}ZKU$7to+_c5!7A5!wW*a@7Y)bmIkE>3Sy>G&rSImMkpCp z5?u(?dOBhDx|xNsaZ>B&8mkv>tuC*aF#O+m!Jo@}S*{EWXAeN5^L)Thu#|dC?RU zD?il$Kc&!~axnHmroG8Uw9nI(dX}PCQ)@A19&;d2HRezzrnC)N$a(2ZaIot2z#YhG zoVMuFXphY2j}zRPcThM|+J>adPt$PYg0E?M)pdrZD%^@}ouZ}{x&~598_*RgJ(flL^rm$*@0jnL+2RGk;rP1 zK!}=&bqD-Iz}`pn8p9#@k2X^&e1nG~qo`?0c^!9ZchJvW-t@ab^S;@FU7Y<==!-lI zmm#a{QJ5W5suAUic0)HJrdzIPf}Bd49)fEP*L6fj*zw4^VKneHhjM~w6t!~~-&lxk z(d`2sbt!3)T#J75R}(>GOiNBdAKtf-j9`-$=sS(MSi~^6Ot~r#E4Xz3QUS3msFw0P}o9|C%hTN_(Hqk<0BK-o@VI& z3$rPIT%Jzo5lJ2?gDl#ae-`*vn8JFXH*70#Yy`p6z%GfL}bKs5wiK zA&b~lgw`<}YbbOR@y@%iC^Fm^WBox?qnoK;6I1=iqU##IBmy@-Q!M(m#1mz^H~MPZ zrQvEA&ZAJqPjEj)9f$sLtZhW})sRZ`bL%W}AaYU^mH4392EOgM&MWDQFvpvFA%BT$;gX}d;55g2m8{WwA?@9`4lb&YlqV;gcVpYE78BvoYj0L=F`0Tg|!wgCy@kgS*Btag%ivlKYEPf16pSg@0~$N z)Q?k<2X-uCHr|hLLu+4jW0ft)-aUxc_y^AT3`d7=F87VSkVcsdO5Z~4=ROK3rve#9 zwZos~h;QLD$W3aA9AkGuoJhLl{lEUF&G5Mi(Pu12G?6QEKlA@zgIM2;L>?sVfu2mT z{X}o%KADb==OXv%W5eGQjm?ui%%YsV2o467wDcjt+rPu`cVN8_`;juS*vxG;AaS8 zL2L>LITINr*I3Bc;Ax7#OZPgG;b9XMuFp&wERB63)Top@t~iwFltxLS4dPR2YFCtY z6AhjqOP9I0_oj`K-iSTEsXb9!PBjWzqq|wvr_Zrd8kL*F*$I?8uE-$szUdnRHMohR z6BQFME34|)G$|HDp)`t$}GB#=f)6iTBw=#B(kOpJ1;G0_d(FR(tnPkGIv zh9IYOCi$KuftEWBjUc7bddj0TN|ie?6Qne{hIo`lHp-n-Vvu8}BuHsA4Yyk?8|9An zO@x#P2~rxpg&U<&s@zEsHcF#|BCO9wxs%i{hBjK_QX2Uwcj}OkuqkEa1l%Z%Qsqtq zVi3_Pjck-VaRz`&v7j^3(SAy!{ubrziyo3LU%6APKSD}OG{yhJ&+G9ImwF#PC}5{DFs?`dWhScn$W%R<$d1vpImrOWeYls`fL z){=jZ2kn2MfcNVU8)gPX@=TkXo8RD8tt{J*)E*cbJF~sW>=F`|O-MNRcNt>rET1JO z)=bXRMuz~OWVeawu4ouAFrRTdDjXbAc8y+Fv){ow zx<&t(r8!bJnu_h_MMg$SA2@u;R`j#shc&WyTm(*r5IzgQi5>msQy00zFts~=?6tTc zIj_-jw}fRSpaOC*_x0;n+y3PSwjlfUN*@(wM+iP$TpbQ12^DU;4ZP&JUF&YHoO``y zX!Lhh@h-IzgXZhRdU?PHQ##O}rLdY?P*Bjbdcrxc*BOF8++JEw>BsG7%DMKwdHM2X z$fc<$!Ti-DUG$DxssoS>@rG1}#NyKF1vq54T`8@Ig|l=&>Q9})Oz9mwZ{NOM0;^)_ zv4vRIY6ND=p3zPLcC@G1Fz>XQpagUbS0#qX9^&#a0) zUJiC_K6&VbfaB@`8vAZ(wm}hW>F|rRwvpgSY2*|6-+~dT^&F zD*~vL@T$|vzg$s8ImtE?-T7H1%m*ADA6wyS#;*enhqoj3$9BybamYclYj~_D1iuP7 zfp$E_l%kAAR##WU9}zFY2iJje{=(zT!)m>x?qq+Z6HXw$De*R3J7?>w4y(`W0?w-@ z+Zfy_tHb>esSK6394|$3uP=cGxdiOAB-#>|HM|f5jf3)=<*8fr0$nREa!tk7kw-_- zmpW3q-EeEw5?;TReyCjRC?OtJ*-3@yD(8L~8%iRt(!mC2Dsx2;EHqT%V+NVL;J?$X zoA-c15ODz_sJw29ZGu5o@!>7hk>rP;*W&DSO|y#cd!u^H7_hzBX3zKlAoGx^uR6+7 zUxg3w*T542UvQ;`Rc%CnbAJgAFW1Eypu-7v7Fl?_BM75EAih1$R*RFJlwv@I?4^Xgo#t*<|2!HcV(AJp2d)j`{k zmav)rRPH`L_H>T#%G`~mng;m`BO?d=7kPrj=)HK2a=9YWf<>O1#D z{TY?p)|BI-4q;iVQ|61*z8Wf=28#}Ip4Ye509z%&f9li8e6E3fA8)?re;Z_E)aRCl zHAjYN;B&B^w0L{*2tCTlqogF3vWg17;X|@V7Ae))`%Ew|-9U&;o?CY3P@QuXh#4B+fo*UO`&U_cU!yrOi5r0+ zD25&czn6IuO#^NOJt}LP{A>xeGTQ?`eTL10=aw zW*BCbtTu&_NB2-YRYNcUZ`yR4CsKG=?7{nqattWN6WX5lEnE+X{yIM1#M=7e_RWE3 z212RW6$!vMwx4e6Fv3BIjkAxtynuj4K6uKdIL$m86mks}T{_eg?MlP$uG!WBbN}xup~$bl6B@oy_5q+vC9R#o&r&sjY`F;e2b zu3I!X^@cmp-rdWKvA(wUgsn*Aj66Cz`kcx88oFq3-%u?23W@u*-l7AG$~j2+ttw}P z6kHa?CrxUV;Z4p+bM>2S41nV~$%VK3s$Z5BYxJyqG^Ocb5WrU5^46w|PW<@saHz!e zj1PC(xIQ8c!tlWFwY7Sqs9UsI#Zv%3RsNK0P$?t$-AWs_J(JHqyWAcQ{#VHMLK_`a zP%#^4ql_}y*2C>_Uqs96i>28#`WMXX`PmVA<_kQAivK}7O53b7y!`ymEZ)9YcPw5# zTQ3dqR$+$JHZ;so%`!M_YN3PPVOJD7Wyp$5^ZdZq;3@pP+wAPX+JshJrNk;N@+dJ{ zblkh%2@Ol`(IFZyS|!=tp`k>Chld|G?LvzP?vGcie5YMY1n_8NK@7~Ea$=A$_LdR> zN41NRS~Cdbp!V|M-If##iR`v$6w!V6Zj+rHTY|-N^&|$jt@U&MiR&XicbC5W`x7dZ zLOGEHvWfSvphQ-D+)5hH9cacmMLZ$4Q#txx*tKF1V8IB#7~c%?M0~tVIk9)x-15H4 zRi-a9ZycqFk8QI$8=0PtiW2PlT6IgJHF)(Vrer9XYk2JmjSQ9jSh8T@V{;{yzTc8$ z8I$d7=9P5}5_6Eq*N3agt%GSva4=pWtvxcmuZz|&Az_z_XoLOq_2Z>t8adCsAE5;@ zUSUfeGRn$4emIkcEdc2_?ScwP`{teXv>!7bNq8)Hu^5KrO~>SYuHx6JHownxDM zG*7!1azQUUG7rWQ&-X1jQX*OdSP%vCYMF;HTpROc4l;T5Oem%? zk7$Z4yoTN>{rU4}c8_;^`ujhkJ9~R=o>_}loj*4qqINSc&sE;0-#qkGz3277Bg=|v zV_lR_pm0X1I=&j*`x~iPBiXPmKY5ew?biceJKMLtuZ&!mK`=ShCeLR&ujL-me@}Ua zjbiK=n{q|F_)OIQ{e^Y&wXzx;29cN_|9X97x7g#z?~-LvP0jY}2=y}_{qVp<;6qSxadGMWFV(`Kc-EFgH#({Z_2V^eB0dvQK-*`!4f`Q^ z>D*5NAi?tDggy|x2a&ns?*1C5&o*oSfo9D;v-mzI&_3qN)X|4fJDia>sS)nJ{uTrp z2;kdoIYm`g%mdjBwVP-Rm^T*adXQA~Q482Z7VZPz`wrV37ws#j?z=F;7c%d2;YWaJ zpfZbib{&0%cxVYo+osnwGiW?`m8wCr(OrFkK*o@;3BpfZ6}WFSZFX^Fno$w-icqnz z#{>g9fBBDErFUkTfp)qLFWhOJtF`UNqx|d7$g7I*!6l+zjxd?Vt|_8NTknFK75KUV!*#jb)fZ^e8ZS- z(ItZqM(?nouCNP5U4qw90jTu{;xU)hTg79PiZ1QHR@TJ!8UZ!=q>cKYw3q%Ja<%Avnu8UFu6}WAQ`Nz|-;`wDGRF(HfbMWdD@2f4+@V};LUG=#< z2sd>_fC0P{z0(vJkSILJPvu{3-wet56J8ffi0Yy=WEcNtF#p${Eh|L@?ttWtV&lVn?8++Q?O}E1q4$t{&-~I&6jLWbl(e=-%)HW5 z`ODm7DDL^^Unp0ugXp+sdT?+?8i>^)VhyE9ms^_Nz5Dl&XCaKVdUP8&N?3l4UC;IU zHDG4;tz6o2>5S1635bkN)uDGt(3xr1ti^Fed_*&x(Cv&$#hOCCw`QiFAG-VCqj~| zI?N$l6&M3Sl4>%sWzrSBL*HoA%k|ltRf9zo82>-a(!qdW7&~GPx8`z1axDE-BTGbbc`RDUZz^kYn|sQ}12i zdF62_R=Xe>2<^6vLMw6aaosgm0*9=wm;&M9cm^Fs)p^YXeay_tntY}8y4Vv#pvi7+ zeuGvrENE@A$%-xIxUC;;@y#s24M3fJ+@Bm78mg&B2YoY@54a`6G|z@?&LgTRis8O6 z3e05{ch5pgjnHl?n>3f=Jd=QE@4T+9g+A7YS5}1a8h@6%=+Yb~_ShPIFQbRg{r5u< zAluH;GzpCy`Ne`z46;9Kz7w~W_ed4q4OU5H65?2ROvOYj&Ha~>I2(RG`(nU_ci?n5 zCBQxiZr)kU{d;LaD?0iN1DLiXCM9({AD4hAgs$zfoW2B&eUiYNOkQ;mEc8nY>!CQv znA{bLs)WsXHZtiXEZ2Vd^5yx~(=f9X0OW&ovnHf1g5c!ly&L*q3_fvDEvKC9c-ItZpK=@e>H$@AdW=9{YhgAZPtEh^aCw2VD+XXJ}jxBmD84Mnwf&OV~-;vPB(dYZQ6hu1>k zXFpzZ8R=3v;#eW>S$m?;xtWwN3CoJ7>-Y31xhngHKw07dMYW==% zz(bvY)?RMreSw{3oxK(!b-CwL9l=LZQZgiIG_hH%$fhH~j_-?=z9iHrNt) zEL~Vqvc!YC-jcYdz%-8l92diTK7(o^gWe2)Glj5k>wt2i6l`8~AM(pwKs)&4i68Uvx~ za3$`SJrqgG$pqHPz6@j<$1oIMKSi2YOw?n3xwG|c3Kl`7m89hjeeFqFY4g7rbjWC65@(zMBx2l3Rhk`Y`8P7#SlB_N z5T0x;@}3Ils4nM|-PXdC5 zGK7GAW<0TBt$xBc`jd;C@4`U(e3HsqlZ%|SrAUgwuiW?V--LrQV-&g_gG-Ks{ zN*N|C<53aUfntcYo7>WZ!w7Y7p*UYIZf?~lgb&?a>=Y&>6{@q|hu%DJ`^14XJlEFN zmK9p$nKH0sWN$($_IQNtjorO^;^WBOMarRG9b?e2G}xXuai`^F%R;2# zRc%6h6K!CNtF_6%nd0r7u$9td-|^}N&QOJ%x(|8+B?BDDqtz#zDD{7j9Zm`hzPwH` zaM@2!PiJBO(BE2(>(5$Ee6HQ|^PVq1%wVE^igvbL_Q>5HI$Q2(JZx>8oh)D!+HA08>LTQ;=4aVj{yrft~_qq4#odweg{$?IfRx)4whyeF_%L z1b6#{IZI&ea$z6wP!*^Ch&VvKp#UgSBLFks=NE<865>KNdYr5LmAG$H%_=`pUu6~B zw|8)uIRhm~k?fI86hD4urFr^hslxyoDsbIpG3Aby*sds0TU+b>X(4d!P57KW{X~5` zC|wMaZVPms3BUN9DCUWO=sH|%lAYwbIAs2nonwL1h-={=NZE>D!ClFgcVa*M=eA}W z2raTQG1=*%t(;nxo6-nt7$G+OG_I2PFe5QMkpK3rk6P=;gkabD$-(9Ib%)OsLFfh2 zFkP^{bV(tPR!B%gE`~&FGSpfLGBkjFj`ro`j~_o^$vpOBEt!We*5q)f%&5G~ejKX- z2^%f7?*j)5*E&5|0j~SAKPT{@qeJu6WXS2;NfV$R=A8e%(Fsu@cQ@dQGWR*!!1(6q zk%Ti^ndcet1S!C*E+MVv`K7FXcJx)>d+toRTaSY9X$0D!Bv7(s5~Ix}inQh4#v6_B zjjt^Yt_o_Y)dHp~T-x-woVs0>RS^q$mU&Rilf3v&}Wi zu)Qe4WT)J|<(_%U-B1xMdl6l{cot(r;8s0xTI+{jYqXIt(Aqy6uzwc=@@^Npjeky{^xg{yC z`GO7-&w?v808TJvJj(o_ssx-1{~pe%=u;n}tahIjdqkb#iv{uq!k-(+Y$vZ0PyXX_ z&EycyxJ@v1XvWOLY*Csl`ov8R$QF;0WQ{~UfM7U`q? zK;jct?I=%!5z}ahj!g}W3273;&8`4JHkYN~97jILqQwH2je4N#EbK{2_G20`&7%^yAv;T#yL$|rLwUNvQN|xfC@{ju{IvP^DXDv zU0=oim7y8EqCp}^)g4I|mBwijC=CZARZZlPX(N+{nZdxysJ`8UhhsN3F(H{nH#8#G8Qw|RJ3IZh;` zgDbA?TXL8TJ2cnUhY%{ZkO#ER+^4wJjH^xRNr0OOOJTT(vh%9!ahDGx6nmV-eGpeg z#Of+A%^Cv5=Nl>uqRxX;*eNJ|co*PxS-f2Dqp|4Fv0$c3m9&wT(YgrM^8#?XBJL@O zG^OC#D0d8%+_nT?`))n>Ae0L_aFqJ``aqS~eQMV4tWM(P9rewSo`kky1nQAHc^6%kB2_k&GQ|`p;^!2#cWi{updA z&9U9&kf0!LKg36^1)=m09$k6&{v1O8g_A?jznosmo0N$YAgE}DU6P7Q7#KF3?s#1; zNDUkRN1+r^>Ogt3ec=g5(X>0_V}rTVH>S?UCj{SM+v9WyM5(2ysHo7Oo&z?xEBcEC zxUfYpAyjAtNZdQM|3cB=FZ31Y3dBX-_xJZNazgZxQWcv=KI$g!wuodb%!0=J0O*=1 zh}u=nvawv4v2qnz7UZV&SL?k(#B~H;JwM0|jG%k=Y(GDdGqA35?)C>EH@@>{JmkqI z(3$bV_6mYUJx;2>f!kBTu{ZovphVEac@qB8q_WaJa=lAsB$n)mvlrWS1ocEFqk&kk zX6cL^?LDW(c?dV_Y+o}udKzRrbUA$6Pi*O=Vw6}kKi|EQd%fKUp{Iz-TVTJxcKkpy z-)1ekZ1t>*!X?os?mDWA?ajLnC9L#6w+z$;JG391yN}ONJ>UiYlC2m)m(~Gvwm(%% zB)hSo_8SSIMC{6t?-e((g*MUe>fA-C&1Du6Gq)t}HDXtwKmd|0tJt0+0nKuEN#?o` z+uUXkUtSZ)PsbjsBZ@uL1xXTVS;e080?t5`o$5u^;%-VrfCNXG3;agN8|=mOWYi4?y zd~7laO4A|veybo zzMAQ(NzG%zbRVVX;7p99Zj3I0G(KaLjbA&rL1kAE$gR=+_rdd5snPf`|GS1>UaOp- zzqFR7OeMC!_mjEJqN~=E3Cb&k;}cLWbnu+S6~|lp~%9R_1OsiX!}-oP=L+mcyQOsDF%;IxB9TXW!!f%k(24Y zhyF^cU|vxnaJ>>!>Wat}3e5Q?QdJQ^;m8CaI#DV$S7u3|$ywb4B@TMjQjha35)oeA_ z*56K#LCdFQwK)o_#LWx%3*xU3mZPjL?BC}_@bZ#vQA_clCuTg9L!HkYTY2Qm?Tz^O zNgQ;ijrV=E&_(j;pt);|Zs^!m1Q|86g+2ovm?gThQ2$J+hYzyrzl_T8nHT`ElnEb@ zm!PSolQFQQ0nJbS`H0w$dm6U2pWZP*O66vW2O(K5w0mZ)=*xUr2W9@=`z^3AN{ok2 zF15DsW!^7!LNs8+_*`(Nyi_7$mm_wibp%|Z;L`Eh1=%ONy#=p=MAI4 zQk5~K&4u2(`}-A4G*oT}i4EZPo?G)WmxO6ssBy&GN_|)_|K?96`l0?WW2CNRQk$zl z>-P35&=VMs|1TKb6KZf-Wb|Yhu^r8qB^r~fBvy?l>XRK8ZDo~XJq+Em>Sw;!VFWY! z4thhk3|L>hT$6m+siqg3-B#m-XnO*BE)~1>w4; zK<>%_cg1MbLDxr2>3O5N8<$V)d_^xkZL666cygUAx~y~rQ3Ymu&_Oofz7ETqM0*1R zNkysRUYKc+{kNuW$pWjibaZFKBO?k^4k8(SkqL~}y896STu@sAf+;$xzn5RbqMHaK zl#{>SSC6$Cb}i*EP5Fd|9%upKEh}xxs;YL|DRy-uNp~CU)=s#z^!0lRd`sX+n^Z7L zs~EAl%A4#(G{#xHx^6P`MNg~E{yg`cfoovK8ug=EqJ7ZF5SDWGX}sS-A9J4u?=>s; zg4*8&T=e_wI8OZ`!NzBTWv%UaO&W|Q!@IVw7k|4fDwCq? zeFGEOYQvn*HDB+s4o1X~+f|##bhNZz$aT3U*;jMvq*2uQ`SRa_-@RhAItPQ>(~Yg4 z*S6s4y(zX}rI^eO`A?zg%l{Jz6>0yz8PO@DI%o;bBuU^T=THg}IngvM-@gkg;WSX= zT|9XqO`1ey^bt2W*MWlw2Zy{KmkJyCuF?lYHFN2NWqlqVo*s+icjw2>j!Dzk8j|S} zNA)f1_k-Ez&e*GD5llDxIayg*!&|)*mVeDBYeZRzEr5B&T|k}M;dLZV3S)d3H3RCf z`U9!l>wfhS13U9Q8=lAAILHA{#L8V<8@MQyH~)O1Id#sJTK*)pz;+^`ybJXuIT2 zt^_X>rt6?c`%Q~##E)w@^`Qz)ZLMEX!tmfim>IG!HdD9363Pw+0@mmqooGJMSI^J% z>e@@$FX3Lnp6a=IX6=QCa-IhaP}`;t-{&vTsK%rQn&L(imhU2Xp4PI(B`mY_@Xu`) zIvQZEWfM5$wqrMrK0!LZ?d|Qo@LDi@mAd`&#;wC=uDHj9#rNhMpDqcee?eK9q zhM1kOTy7yg@@(UT*_3D1y@fYlj8VN)Myp zVDj~n7)`_X6Fz7|8g9}iydxg=Y@GfZmEHD8cTL;rD5VkM?vE#kV$k*!)r+L1MMKiC z2+zkBfy`%$DI^2=ooka;tYU+3f*`2Zm)cQCV4d+Zq7!UXFA-Z zK{ok1S-B+om(SR&|fJLjjC|vY)b0t_e)5BvEF;*MVf0LZHU_rYujBGI;e zNOSZaz-ARouKoQR*^KQDlPy@YWvNqV%DYpTTFuu%5Bbx)O1}I^<8XHAxnGS$*-Du` zh}IEyV!M{eFqOQ4nXfZ5?XqkMe?Cy!w|;NsvBr0bT<9N;h3OY;gcA~f_CY%1ZtJ2eWVb|Bo8$a0Yv&+ zk3DZlLRx>T8`j!*9 z=NX3HF1?iDdB=A>;%8yv7V^{?V!#tlUcTc!QyY?R=VhX0t@H_R zw-8U;8`<^mqnwbRST&-Y^iLpa6UuO&dOKi=lU>i_@% literal 0 HcmV?d00001 diff --git a/static/tabbar/assistant-active.png b/static/tabbar/assistant-active.png new file mode 100644 index 0000000000000000000000000000000000000000..64a015e22c228411e59175313028d8f1996e404d GIT binary patch literal 2599 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 F{|9pI{)GSl literal 0 HcmV?d00001 diff --git a/static/tabbar/pets.png b/static/tabbar/pets.png new file mode 100644 index 0000000000000000000000000000000000000000..ae70e665638be4439ca1e323c52ad99c7080069a GIT binary patch literal 4993 zcmV-{6MpQ8P)NC#1L%LCe~Ubjg4B2R;p18Mx{-N7K0EG6pG-BXB1HoQ270J z|Je5jm&-jfbIzS}?(cEGYt7=vI(PQoGqcZ}nLT^&5mlvuj*Cw97NCLpqM-mC91R8N z;Akj72S-BzIyf2%(81AAfDVq%^%fv4M5G&VHgGa9pj7$;TY$HKw}EBAFM(%NwW&^` zwh2gEF$9Uo@xY%0=KwtdtE~p60(YwFqP%2l%V_lqAR>K$$-qT5kl6xE0{%u-H$@Sw zouE}KfQVcI+yU$viR4n?QdON9iC&vWt6c<&$gRK>;tf8)0l;(-86A;kn?|ct01=r4 zOw5V=uE10g`Lmqpw<)x`Pk@Nr2HaEtD+Ml4)rSh;)oRhI6hK5q0y6*!tg;Ar1$Yza z0t^C<0{RBl{}33is>{+z+K!;At)c+Effd-B=_?NapHHB(3vfCxE0EUnK<9e5zi$0r zZvn~%?%{yJ+6r79NUsZUPoNUqQt$THtF($wfQTFp{ND4k4}kMkb$UwL*I_mQ*MfH) zFhEt;r=gv|uM2QAa3b&}pdY4;U4YHN9AGx^f~wA`m0!)Mw+5CJ@B!R!=xShS4fM|h znmjyisId+E0^h@wDP-1BU@kBg*rjfL-wFo*Kx}Gvb<|Z6_)PKeSPATwf$m@gU>T=AiT#GE*AR^;|=Yaick*f@yfZKpaL}ZspH2tXa+rKC7Z}Y6k{CZ&PiNvWm zkj_L0jTq&QjxqzBjC*x{e@td-tNh0tKN%z<2f1j7$Th&NG3Ba)YfA@Vxuf0+@Hx-( zg*oti)$=@2CJ`Bf|1(mKX5fE->DY>YId(K1g1bayPzqj|P;UkJjOY1+9C-Q^psGwF zvKMeCVP@)uz<6Mws-CE-Us2T~RdqkidueI_jjq6V1AbQ<>bwS+PV#qfO-?)qI(RB@ zdqTaRdFmNvR)F^$&koFkVQG&&!10qEWD=1fz^NXxSE=fg8AbYg>}((jJ+L!{Tu^TX zSmk&&EGM1^U<<4yRLb;C+zY=2z|XS^qvp2mn+49yO5canaRDOI6|;WrhIQm7V6kTN zzjrA>PZ8;-X2FYz&w8F$%5kWGYSndpmwRTUDpkDv+wK6Oq?R{_MpvH&`&XhR|^SATSKf^=kx*WEF_j!2sEBo!Gp5LZAJo3mj)xqauayle(3G_Am zr)R!01L*JI(Y@5Tr24NC(OnDM;%#v7TTt=)DW3N2A5pd&J-mA5p#VEA0!5^gh};hR z6zEp@JSDyiydolFt36cJkAUAg>JP=x9oq%CJ3yx8K-Vhu7Zx!nz~LVGeweEQ0ACE~q>Zit0QSKgI6{=* z@hbK23atAR0(J&KFU(~tgyxkAG+dvJ4Mf_S;rEIjmA3-?(j&nC0fz)O=0^N3*b1Cf zQLj6;?F$*O+1Tma?p65r2Cl<@)Y?)WbF}5hp1KD`di$FlJeq;Ma#H}{Q~0OfQ&JK= z3yZsR(R{8-y(37s4%vvs20npp;T8w9rM$fD>RjOKp8A(X7=Xt;JRZ$!@LLq%Y>xm> zXC&;iqA74fm3o(@7{FS}M&Ni)8wPr4tO7n=L+791q2CM~k+%Z;qeqAl83_wERl8_U zNvL}nVV{w#OAqoQo7tsZ3k1U zfs1Qs!}vfxvw_1Cl;~U7A~l50W&(FzF%-Zx&Hf+)gM&Sd{f9t0`(d$juLO2tGw^HR zDxhbLZRm#iD26KBhgiVp94s!tW#y|ZTY$5R7<^SlFe_M6N|lFI_1uJKK@brE){^W1 z`k1PYN=fqw{Fy?ZP}MiH%3X!$7cj$;%bl!NGy@l@>VttY^~Bn)*i8POW{9JlL$Wr$ z8EKmNm4nAiMQMA4c3kXeM~vdMD_};W?_i&rYU`3_>`>`@z_A2aD#33B+$TcE&2-R@ zdaPQ265Nb?XOp#DlfbVNX7vnRKkV>w;o0tjKhm}4?-6D&Nur<0&=knGD=-*yOt~EM zJ-84%`{+l-@ox&c=Ony=S;|7-%mhAX629hfm4`_%Sb^=;U6p6nI0!vG^dE{e*aNY* z^M1@HaXJ1s^8V2U`9@3~SPsL?q$e$BP`}7Pn4+egKJJ~~w@-h|}vS)xygRpazZ)1U^vw_zzSFZ`! zXX5}I3o|TXMohz3wemb=vrhT+>2u4PlwqJo;C?f=0-s7b&CkfWgQ}HHz>moI5(Ktw zH_T>GM0>{Xpa3NSZV#yVQ=m(VM)?}_>lC!kBV7u%Jj#4>3fIQGszT-13_OTg7e@o5 zfa`%@5cVnjn374nT!5aq&B86^Sv*rBmSn-_gsH$e0UfhD;Tb=RC>u%eAgW>TF9_tl z0sF+bd>DoTPX*ArV+RE&RsM@WLDpcdStqbP;k00Z7Z(L8(n36j3Sc<)9j*7ES1bQP zgkTLU`geH%zgfV6fi$~f@fI$6?*d(SNEKU3bNUi+DB)Ovy%qgQXC@u1s{fw!P(;3o zE%efwUYjt((_$=(czIci?f(Z>lo6OWQd+!&wc|G#>H;7llQ9=I7aj%9)f54^BC;>= zBJQ}tG1auE5B9Cg^X>VWM}vK?Sk=lKST>Em8Q;XCfPcpC%2rv{Q{@COkY`W)r<^m% zz60~cUVcBR;@ zyOw}0sDplYPhURes@yAOCxn#OfI$wP2Lta1(t4Xfx2}wxC%`p?ALag*DzOC~9xr-m z-V~u7|LdUtPRJBBl{kkVGhNz@89_o1JfbYX0y{9xLiFEK&>i5RwT3t`k&_)f)`k)p zK{|71dHE3dD_~a#{m!_Lj9W_dEm&atyA!?@9Un;Zk3DpvUJ5Ai*Vg@7^ z{z+ATT!b(oP|FB*A$C&e!Ud(-EeWo^e?7He)iDkWJx{{idcH|tz`vIG6|MA2H_U?Q zJC1$}=#fzWSx3E>BgoeSze)bcy37Ej)Tj60zsc)jjc{8?9#Hc*zS8rv{@5&64X*Te zhl)tAOoDC4HQ0SdNm!t&FV*W4Fdl!tz8h3^Wf8(;g{nS^*(6-}dda1{60U3V1UqQU z1Q8jG|9s(IfO<@whv2ua&7|PVlWJ(sXYgAu7f@jb!5mdxbso#o2UsRl-wmvrf!?ZG ztO8(DzVAxcO{9$9t9QXXj(xj=2^DpE;13YJHKiPf#f<^~ZnII*(Sm>JMn&VElfSvnV^Y z#O^2Z4OkQQIrs_{p9JjW@;cJpUATi2Zjl}2ONFu(_*}gQvc@)sL=lgxs533a;4Q@h zUSGk!^J()Z+`N;_1$E5%0m4nL_W(v{XXnx^=4$7Ml;uyx;sE}Tav-yms&^3<(J8&~ z8%&nsa1v=t1)J7=DQO?CsPiY}6K~j3rjV40rGO5Z5+GpaETFBi;68(IDd$(zxgnH)lV5Rs!WXGGUgYeMO^lm|RN`=P2{UxYlB$m2Bd zFL4h(n7ebkAAA6{gipRpC9f^bnuR0k3{bjWZazC-D_4%^u^hd%-nG|eAR+^>6G7L# zK=ZH+riJ=H#GV1}!aew(U^jDgn861q&2~3=el{F);wTi+W&ja69SaF}VWO%|h{CXq zK}0%XIfbe@hqPcF<_^BL7^xyDK&f$avDIo4UIm7$>L)cbY@-m7VOaFF>o)Mos`{;h zM2hwa7=?TA6`T4y?BD~a>H^^Vo}Y~qk)*7u(Gg1lF7!OVM^$G<;?>r18*aDn-LSB+ zLQt~;h)54C4m}CYSfYmpfYL1ZBhSx#H-0MF>&zX`qPo#d79K!cW!!LsWHLO^n(RMC2sk z8OKlNs%jxKXU#K!s;4|MkSCki3-BgrZ*u@S*9M2WIJfaZ9atP^x?FL*qY2Enit7OUhD8T1|CyD6)!!Up+WOfe3^zUfI@ z%hrS~*qUK8c0>A}mOUc*w$_|a0+f`j&gj2DbUY>X|*nzP~Z!G)e zP;A>b2wN*OW80!-Sg84Y;5kjmpivKq$R5CHm`i*=>~_w6*eB`jva$epR#i9GNmMWD zrT`7J4%GX~m$hX{4loxIbiAk`PID&c4!;#*z*{CmGAcQx7Kr0GRqcV5cUtM(7N%OjVkPR&-4dcqUGiH1pk@1L!n5{XnxD7;Wc zSXQ4;3D(XgYq)xVA6d$^eN&fNoy(=CJsV(3pL+`StpqWC3hs0ZmtJyISM(O=kTX*IL~wxH2eSSk5Q7>r zMiw2lf?Tx2O(bv+B^VE&sE;5{`{67Pv&|q*kSuE`z)8vod2hz}4V{pN^|D!N2Ic>H zMpJ})TwLYziooJfU;O{TCjT#SH~oy?@+U_0gEVtI-S=1u5T6G3%A5S8;=;?RI6M>5TEY zYB5+KwVjziH!uYV(Qz<&g3qi9nm8B$frAs4QlQ(~cCoE#ipPCma8q54z_DteL*d^r z7`9ur57D+Y8NmDxBV5i?*ZZfsLm;)U$gR2q#-i3g*2mHFc>s#tm?Vp&zW?Ltu75}g zf5jay3ZJjahFwNj{paNddHoCzI{gZ>>%%s&#k7@LcrABwT6-hG!uEb*91N5A{V?I6 znI{cN4W%eRoMzrVuwq$P=VYJi<3hX(|l?D^~`qx6p#=0N1_+7{mFr00Pt(C>C!0BClNbIX1B9#ERAd5KsxK)6{uo znPz&()#Y}Hp|fPxZMk(euaL}lr~Sv%d~gax_m7;0S1mW|um_+H!s6O?QO!SP1}T;*)sDwJAuvaxu&MBN?TAn8B{euqb~CVbiD zOW~F+;SYp_w;av`^D?6JpQ8fxKQQC8BIfpe*B&h%5Dq@3T}JIGPrlMoIF?LNCgPl< zpp!x;8N(E_QL@;D&e)C8v@!$Hy(5mWD|)M{Zr8sgTSFhSBG}!(vsxVI(!td*Mjm(t zG3}Zju5t9Y8Y!CtxbD;v?&vnWh0N`K0My@p!r!jq)Plwv6lVeMr;vU67q0uHfmof5XT)k9aMTaN6s9E3yQvZ zrtQe{F80o3#lzX5@5enA>U*l)iE23;0_kX}Z_=Ae{@yJ0*Jrqnav_O1t%@%uzvhs; z%MvYKx7E&dchm5y!t^a8X&1R@I}1LGcMZINI9nAx=BSiDGzrHcE2p93f2G~%Pw zQMAdV5%tC@IYihw|PK@4%FMCS9}Rx_`jgTjeIQy`w)b|)*J z)V7J|%kQi27ha(ppRH_psV9D3NCb#^M5XRQIkUC}snfDme%`0fDl&IyCf+E4jzP6e zg@@|C0*q%U8(Fu;g{zD0vV82iaU0DzwYNf)F2)NvIn%wq<*lbw{BOwinA{iv`ji@b zQ1AT`h4UiUxr}wgt;GV7OS%ikHr=fn&jsYa=%9VMuaU*M)uV4(uu2~xl z^uE8>^v?pVf}9ii-KG#{6!DC`giqpis8;Aj#)-hrO4xoU`Fp#4AZ%9>G^Q#XDMXOr zdEGj@#>t-4ONUZtQ%!|^Z^aG5K$3OG!s9x$*Xl-)-x`-QbW5;MSa(UXXCCpgaS8J8 ztn(2&WroSHV`Z;Qe6SCtO92@lc+Z%I zVpjSeEs{n}t5(`whI`fM%(rWt_vbHo-+*ms^PZS_29NYxg2|d)3@92}Z5#ml48>vB z-i2SPH(|_FpowMkjOn2Xrxdl%=}k2+4i&Iw%Y4oU>7F&-E7oZ?ocqn zVKhpk3`V$%-n4O{)jP))PH8dEDv&ZrD=L<9+)fuK+)7epf_wBz z&8EhIacO1B`!8AJbbP!WM@GlhT~Q|z3<>Ei_-PBV-z&BI>DXTgm)m%L{lYhn%X2J? zGB!WvbUdk88e9@)!g7xqAL_jO)Je)Pw*VgNCJtSti9l92yX>ezpy_+<2X7ut?`U{A z>_|UwFrn#0p8{b@)(9BlIdN+IIAJaRS=1EEZKl4no!gwNo=PA6I{F uNNcG6!vlA(t80A>+^4XpU-)o_q^{p&pAJw_os6m?_dp)f=K}Y0En#(&Uu@u|3Xr9 zJFkvs{@y0h2#l?(q@?6Wq2u^=3A$wC5di=|w|AgYK<{PEn(gM^NUJlEE@A$WQRl+_ z08vpnH@K`u*6_-Rwt}&Z0%0kpK@@-JG;1^c5^@DLGb*?%loX4@A(UU{sDnO z!66qz!!BJ8kBGcNii(aQU!}xdqsAxD66s0FDc4hPq@`!v%DjCii*ff}c1~_yenH`V zW>IlTDXXl!;=x09W!0m{)irhX4UJElnx8&vX?@<->O3c-7g}{kpfWe_(Lv4Uhl! z-SGPlBOgb{1fRwyK7aW-IrVL3c79=T>HG4^>W{UbzkaW8{Q0{{|Fm`x0Fd}%i?ei9 z+&j>Yvr89B-H1yeZL7iE`ZJ z^o5xZfu2|-x5#l~!tQWqCqv)P|TvuP2{Sk~_f%E*Xpx4MN zni$<}xie@0Uj|h*Nixvf6|NkF$h}S z(T(+Li!>(C*T2Td%Yh|(GG|i_yg&CXNGCV*w1~B4`yEovaO{p}!u%#)$U+AI&3f&T znx)yHs)W2N9gxNt~Lp+pjEa9 zl&0BV*Sv{WvS;K}|J<= zRoo?d>v#8z>C7zff$?v-UrKYh3^JQ)nIqY}>1`Z!1nSnRSspO8f3qx!Ly)3-gef2-H?2|(kg&qZv-Ot$u`}-cedERn*vxUe?dTu zd3I`iO1Jp+hwNP!Yzh1-vx=it5JryfXaF1cq+4}dtI)r845rM&8D*&r)LH(pSBRrz zjyx}zIdR7?OA*u{JUFmQ3qUsPX_KSRIwMdDu-axdDYKhSj&C*V7A={AtY0QZxSOKR zS_sly^NZn!flFS!1D-~`qSEfjd5Wy={5z-VJS)oJc;lC>%UE)hO!9k~krg_Yt2~9M zHvyZ<q?GT-iF(Hi3A zrg$vK#f0I~8G&Dx!&f{~2m$vWvppqHM3_0&yxpnPa%cS=7TK7F5rpm}GdR%zyVuA@ zIgF#BVgQq0o`GR_sVwuz66fW!NO&D(%xlFo_7FZM(U+yH`lc+66Rn_CwTxUdNL)uD zy74)dHPRPV`8PReamMrwxjax!9QYNuLZ|5c@cxuBj*9CQDrNwdY9@XZUhkASTViGG zYV0yssYD_7D0-QB_(dj*A%*&xn^rq=cFX(x|v6vOaq0j+jtGz;c~JLtf;2<#&^%$mHhAG^M9cR<-|rv zl5IWta_I-G*+0bEB`r7!6J*x+oF+7U=p{HJAGbFPCicL5NKGEH?mV#W0FbHe<~#^w z)%V1YA_!n>nof|Z5@@dE?1$P-fT=#a#FlcP>m|?EnA-T2-=H|{Znr;sR3d%-YLCS% zGd$Bj7+}w8T#u&)*rpRy=3%* z#R(A;t%@JnFxrq$S#us{p|ksZm=JtyraY?McP3Zth7K&1*hL>962PKMupgDlZ$n|m zL)ANiK=s*liEFD)RUrns$THy`m<)ys&-LRjK0?l>B3<%V!bNfeJ5Q7ZqQxPxM3UHW zwAx&ZO5_0uoI*q-Cc%w1^a(y{kd1|6p@>oGn>jGS2MA$@mKTY@BnIci2;*4TWIc;B zm5|H6rLl#RzG}&R-0>a(g-s4!0EBvFB16 z;XQv9buXvHX;Z=LUo9MGP8%azcIz(t9PZZkqE;Nc-5Do#YV0`ktWdj#SahEfIrnyf rI1W29wM%yOihZFm<&0w7&Xz5p=`j3>L*WqZ-v`Fl$^rKX