From 63de68bc476b3ef4839dc02a6b1dba294701be23 Mon Sep 17 00:00:00 2001 From: JING Date: Mon, 5 Aug 2024 11:46:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 6 +- pages.json | 11 +- pages/index/index.vue | 42 +++- pages/user/index.vue | 224 ++++++++++++++++--- pages/user/photo/detail.vue | 106 --------- pages/user/photo/merge.vue | 203 +++++++++++++++++ pages/user/{archives => portrait}/detail.vue | 4 +- pages/web/video.vue | 53 ----- pagesA/color/index.vue | 140 ++++++++---- pagesA/merge/face_1.vue | 2 +- pagesA/merge/index.vue | 25 ++- static/img/index/loading.gif | Bin 0 -> 8766 bytes static/img/index/p_bg.png | Bin 0 -> 8870 bytes static/img/index/upload.png | Bin 0 -> 9417 bytes 14 files changed, 553 insertions(+), 263 deletions(-) delete mode 100644 pages/user/photo/detail.vue create mode 100644 pages/user/photo/merge.vue rename pages/user/{archives => portrait}/detail.vue (94%) delete mode 100644 pages/web/video.vue create mode 100644 static/img/index/loading.gif create mode 100644 static/img/index/p_bg.png create mode 100644 static/img/index/upload.png diff --git a/App.vue b/App.vue index 1bdb42d..f66b000 100644 --- a/App.vue +++ b/App.vue @@ -65,10 +65,8 @@ console.log(rs); _this.$user.session('userInfo',rs); _this.$user.session('user_id',rs.id); - if(!_this.$com.isNull(rs.token)) - { - _this.$user.session('token',rs.token); - } + _this.$user.session('token',rs.token); + }); }, fail:function(rs){ diff --git a/pages.json b/pages.json index d25e3a2..485261c 100644 --- a/pages.json +++ b/pages.json @@ -37,20 +37,13 @@ } }, { - "path": "pages/web/video", - "style": { - "navigationBarTitleText": "视频", - "enablePullDownRefresh": false - } - }, - { - "path": "pages/user/archives/detail", + "path": "pages/user/portrait/detail", "style": { "navigationBarTitleText": "面部档案" } }, { - "path": "pages/user/photo/detail", + "path": "pages/user/photo/merge", "style": { "navigationBarTitleText": "照片详情" } diff --git a/pages/index/index.vue b/pages/index/index.vue index 40d7a11..c642f0a 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -115,6 +115,9 @@ // } ], + //场景 + sceneList:[], + specs_list:[],//证件 album_list:[],//写真 cartoon_list:[],//卡通 @@ -134,7 +137,8 @@ var _this = this; //banner信息 _this.getBannerList(); - + //场景 + _this.getSceneMenu(); //热门 _this.getHotList(); //延时1秒请求,保证成功 @@ -144,16 +148,26 @@ }, onShareAppMessage() { - return { - title: '智能拍照合成-首页', - path: uni.$u.page(), - } + var _this = this; + var userInfo = _this.$user.session('userInfo'); + var str = !_this.$com.isNull(userInfo.invite_code) ? '?invite_code='+userInfo.invite_code :''; + return { + title: '智能拍照合成', + content:'证件照合成,换色,AI写真,卡通画风', + imageUrl:'', + path: '/pages/index/index'+str, + } }, onShareTimeline() { - return { - title: '智能拍照合成-首页', - path: uni.$u.page(), - } + var _this = this; + var userInfo = _this.$user.session('userInfo'); + var str = !_this.$com.isNull(userInfo.invite_code) ? '?invite_code='+userInfo.invite_code :''; + return { + title: '智能拍照合成', + content:'证件照合成,换色,AI写真,卡通画风', + imageUrl:'', + path: '/pages/index/index'+str, + } }, methods: { getNavHeight(e) { @@ -266,6 +280,16 @@ url:'/pagesA/merge/index?id='+item.id+'&type='+item.type+'&ilk='+item.ilk, }) }, + //合照场景 + getSceneMenu(){ + var _this =this; + _this.$api.get('api/photo/scene_list', {},function(res){ + console.log('场景',res); + var sceneList = res; + _this.sceneList = sceneList; + _this.$user.session('sceneList',sceneList); + }); + }, } } diff --git a/pages/user/index.vue b/pages/user/index.vue index d71ab02..467878c 100644 --- a/pages/user/index.vue +++ b/pages/user/index.vue @@ -28,7 +28,7 @@ - + - - - - - - 一寸照 - 25×35mm | 295×413px - - - - - - - + + + + + + {{item.specs.title}} + 25×35mm | 295×413px + + + + + 排队中... + 生成中... + 生成失败 + + + + @@ -162,7 +166,21 @@ - + + + + 提醒 + + + + + + + 取消 + + + + @@ -210,6 +228,17 @@ export default { //分页 page: 1, dataList:[], + + //弹窗 + tips_show: false, + content: `

分享给好友,好友注册登录成功即可解

+

锁新的面部档案,可生成他人的写真集

`, + style: { + // 字符串的形式 + + p: 'font-weight: 400;font-size: 28rpx;color: #555555;line-height: 60rpx;', + + }, }; }, onPageScroll(e) { @@ -223,13 +252,14 @@ export default { } }, onReady: function (res) { - + var _this = this; + console.log('/pages/user/photo/merge?url='+encodeURIComponent('https://resourcedev.aicverse.com/ai_tour/spot_template/2.jpg')); }, onShow() { var _this =this; _this.getUserInfo(); //场景信息 - //_this.getSceneMenu(); + _this.getSceneMenu(); //面部档案 _this.getPortraitList(); _this.tabChange({index:0}); @@ -242,16 +272,26 @@ export default { }, onShareAppMessage() { - return { - title: '智能拍照合成-我的', - path: uni.$u.page(), - } + var _this = this; + var userInfo = _this.$user.session('userInfo'); + var str = !_this.$com.isNull(userInfo.invite_code) ? '?invite_code='+userInfo.invite_code :''; + return { + title: '智能拍照合成', + content:'证件照合成,换色,AI写真,卡通画风', + imageUrl:'', + path: '/pages/index/index'+str, + } }, onShareTimeline() { - return { - title: '智能拍照合成-我的', - path: uni.$u.page(), - } + var _this = this; + var userInfo = _this.$user.session('userInfo'); + var str = !_this.$com.isNull(userInfo.invite_code) ? '?invite_code='+userInfo.invite_code :''; + return { + title: '智能拍照合成', + content:'证件照合成,换色,AI写真,卡通画风', + imageUrl:'', + path: '/pages/index/index'+str, + } }, methods:{ getNavHeight(e) { @@ -385,6 +425,11 @@ export default { { rs.forEach((item, index) => { baseList[index].id = item.id; + if(!_this.$com.isNull(item.model_image_thumbnail)) + { + baseList[index].image = _this.$api.ossurl(item.model_image_thumbnail); + } + }) } _this.portraitList = baseList; @@ -393,8 +438,6 @@ export default { }, createNew(){ var _this =this; - console.log(e); - _this.current = e.index; var type = _this.tabList[_this.current].type; switch(type) { @@ -421,7 +464,55 @@ export default { } }, - + viewDetail(item){ + var _this =this; + var type = _this.tabList[_this.current].type; + if(item.status != 3) + { + _this.$com.showError('照片生成中,请等待'); + return; + } + switch(type) + { + case 1: + uni.navigateTo({ + url:'/pages/user/photo/merge?url='+encodeURIComponent(_this.$api.ossurl(item.merge_image)), + }) + break; + case 2: + uni.navigateTo({ + url:'/pagesA/color/index', + }) + break; + case 3: + uni.navigateTo({ + url:'/pagesA/photo/photo_1', + }) + break; + case 4: + uni.navigateTo({ + url:'/pagesA/photo/cartoon_1', + }) + break; + } + }, + //显示分享弹窗1 + showShare(){ + this.tips_show = true; + }, + open(key) { + console.log('open',key); + }, + close(key) { + var _this = this; + _this[key] = false; + + }, + submit(key){ + var _this =this; + _this.close(key); + + }, }, }; @@ -485,7 +576,7 @@ height: 50rpx; padding-left: 20rpx; } .mright{width: 50%; height: 160rpx; display: flex;} - .mbItem{ width: 80rpx; height: 80rpx; margin: 40rpx auto;} + .mbItem{ width: 80rpx; height: 80rpx; margin: 40rpx auto; overflow: hidden; border-radius: 50%;} .mbItem image{width: 80rpx; height: 80rpx; } .nowENV{ width: 200rpx; height: 60rpx; margin: 10rpx auto; text-align: center;} @@ -597,4 +688,77 @@ height: 50rpx; line-height: 34rpx; margin: 65rpx 24rpx auto auto; } + + + + .popupBox{ + width: 600rpx; + height: auto; + border-radius: 24rpx; + background-color: #FFFFFF; + } + .popupTop{ + width: 600rpx; + height: 140rpx; + background: linear-gradient(to bottom, #D3D5FF 20%, #FFFFFF 50%); + border-radius: 24rpx 24rpx 0rpx 0rpx; + line-height: 140rpx; + text-align: center; + font-weight: 700; + font-size: 30rpx; + color: #333333; + } + + .popupBtn{ width: 100%; height: auto; + display: flex; flex-wrap: wrap; + justify-content: space-around; /* 使子元素在容器中均匀分布 */ + align-items: center; /* 如果需要垂直居中子元素 */ + } + + .sbtnBox1{ + margin: 30rpx auto; + width: 226rpx; + height: 80rpx; + font-weight: 700; + font-size: 30rpx; + line-height: 80rpx; + border: 2rpx solid #4D94FF; + text-align: center; + border-radius: 44rpx; + + } + + .popupDesc{ + width:560rpx; + font-weight: 400; + font-size: 28rpx; + color: #555555; + height: auto; + padding: 0rpx 20rpx; + } + + .popupDesc1{ + width:480rpx; + font-weight: 400; + font-size: 28rpx; + color: #555555; + height: auto; + padding: 0rpx 60rpx; + } + + + .a1{ + background: linear-gradient( 270deg, rgba(46,87,241,0.15) 0%, rgba(131,88,246,0.15) 100%); + color:#7A74F0; + } + .a2{ + background: linear-gradient( 270deg, #2E57F1 0%, #8358F6 100%); + color:#FFFFFF; + } + .a3{ + background: linear-gradient( 270deg, #2E57F1 0%, #8358F6 100%); + color:#FFFFFF; + } + + diff --git a/pages/user/photo/detail.vue b/pages/user/photo/detail.vue deleted file mode 100644 index 04aaf2e..0000000 --- a/pages/user/photo/detail.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - diff --git a/pages/user/photo/merge.vue b/pages/user/photo/merge.vue new file mode 100644 index 0000000..ebbcdcc --- /dev/null +++ b/pages/user/photo/merge.vue @@ -0,0 +1,203 @@ + + + + + + diff --git a/pages/user/archives/detail.vue b/pages/user/portrait/detail.vue similarity index 94% rename from pages/user/archives/detail.vue rename to pages/user/portrait/detail.vue index 661126c..c836ab0 100644 --- a/pages/user/archives/detail.vue +++ b/pages/user/portrait/detail.vue @@ -58,8 +58,8 @@ diff --git a/pagesA/color/index.vue b/pagesA/color/index.vue index 602d024..481f903 100644 --- a/pagesA/color/index.vue +++ b/pagesA/color/index.vue @@ -4,10 +4,20 @@ - - - - 点击上传人物换背景 + + + @@ -17,35 +27,17 @@ 选择背景颜色 - - + + - - - - - - - - - - - - - - - - - - - - + + - + 保存 - + 保存 @@ -99,10 +91,18 @@ p: 'font-weight: 400;font-size: 28rpx;color: #555555;line-height: 60rpx;', }, - + + uploadImg: [], + //颜色 + colorList : [], + selectIndex:0, } }, + onLoad() { + var _this = this; + _this.getColorList(); + }, onPageScroll(e) { if (e.scrollTop > 50) { this.theme = 'white'; @@ -135,6 +135,68 @@ yes(){ this.close(); }, + + // 删除图片 + deletePic(event) { + var _this = this; + _this.uploadImg = []; + }, + // 新增图片 + afterRead(event) { + + var _this = this + console.log('event',event); + var edetail = event.file.thumb; + if (edetail.indexOf('http://tmp') != -1 || edetail.indexOf('wxfile://tmp') != -1) + { + + //上传 + var upData = {filePath:edetail,fileType:'image',scene:'user_max'}; + _this.$api.ossUpload(upData,function(res){ + console.log('ossUpload success',res); + var d = res.data; + + _this.uploadImg = [{url:_this.$api.ossurl(d.file_url)}]; + + + },function(err){ + console.log('ossUpload fail',err); + }); + + + + } + + }, + getColorList() + { + var _this = this; + var post ={}; + _this.$api.get('api/color/list', post, function(res) { + + var d = res; + console.log(d); + _this.colorList = d; + _this.selectIndex = 0; + + }); + }, + selectColor(index) + { + var _this = this; + _this.selectIndex = index; + }, + submit(){ + + var _this = this; + var post = {}; + _this.$api.post('api/color/append', post,function(rs){ + console.log(rs); + + }); + }, + + } } @@ -151,18 +213,12 @@ page{background-color: #F5F6FB;} margin:200rpx auto auto auto; } .uploadBtn{ width: 100%; height: auto;} -.uploadBtn_img{ width: 100%; height: auto; text-align: center;} -.uploadBtn_img image{ width: 96rpx; height: 96rpx; margin: 160rpx auto auto auto; display: inline-block;} -.uploadBtn_txt{ - width: 100%; - height: auto; - font-weight: 400; - font-size: 30rpx; - color: #333333; - line-height: 44rpx; - text-align: center; -} + +.uploadBtn .u-upload{width: 400rpx; height: 500rpx; text-align: center; overflow: hidden;} +.uploadBtn .u-upload image{ width: 400rpx; height: 500rpx; margin: 0rpx auto; display: inline-block;} + .uploadTips{ width: 100%; height: 50rpx; line-height: 50rpx; text-align: center;} + .uploadTips text{ font-weight: 400; font-size: 24rpx; @@ -202,11 +258,11 @@ page{background-color: #F5F6FB;} border-radius: 50%; display: inline-block; margin-left: 30rpx; - border: 8rpx solid #FFFFFF; + border: 8rpx solid #E7E7EF; overflow: hidden; } .on{ - border-color:#E7E7EF; + } .on image{width: 50rpx; height:auto; margin: 12rpx 0rpx 0rpx 12rpx;} diff --git a/pagesA/merge/face_1.vue b/pagesA/merge/face_1.vue index 7c9461d..753964d 100644 --- a/pagesA/merge/face_1.vue +++ b/pagesA/merge/face_1.vue @@ -227,7 +227,7 @@ uni.showModal({ title: '授权失败', - content: '请在设置界面打开相摄像头关权限', + content: '请在设置界面打开摄像头相关权限', success: (res) => { if (res.confirm) { uni.openSetting() diff --git a/pagesA/merge/index.vue b/pagesA/merge/index.vue index 9783de3..07f3469 100644 --- a/pagesA/merge/index.vue +++ b/pagesA/merge/index.vue @@ -148,9 +148,14 @@ - - - + + + + + 排队中 + 训练中 + 失败 + @@ -528,8 +533,8 @@ { var selectList = d; selectList.forEach((item, index) => { - selectList[index].model_image = _this.$api.ossurl(item.model_image); - selectList[index].model_image_thumbnail = _this.$api.ossurl(item.model_image_thumbnail); + selectList[index].model_image = item.model_image ? _this.$api.ossurl(item.model_image): '/static/img/index/p_bg.png'; + selectList[index].model_image_thumbnail = item.model_image_thumbnail ? _this.$api.ossurl(item.model_image_thumbnail) : '/static/img/index/p_bg.png'; }); _this.selectList = selectList; _this.selectIndex = 0; @@ -538,10 +543,14 @@ }); }, //选择面部档案 - selectPortrait(index) + selectPortrait(index,item) { var _this =this; - _this.selectIndex = index; + if(item.status == 3) + { + _this.selectIndex = index; + } + }, @@ -711,6 +720,8 @@ } .imgBox{width: 160rpx; height: 160rpx; position: relative; margin: 0rpx 0rpx 0rpx 20rpx; display: inline-block; overflow: hidden;} .imgBox .imgBg{width: 160rpx; height: 160rpx; border-radius: 20rpx; position: absolute; left: 0; top: 0;} +.imgBox .imgLoadingImg{ width: 60rpx; height: 60rpx;position: absolute; left: 50rpx; top: 40rpx;} +.imgBox .imgLoadingTxt{ width: 100%; height: 40rpx; text-align: center; color:#FFFFFF; font-size: 24rpx;position: absolute; top: 100rpx;} .imgBox .imgSelect{width: 40rpx; height: 34rpx;position: absolute; bottom: 0; right: 0; z-index: 5;} .a1{ background: linear-gradient( 270deg, rgba(46,87,241,0.15) 0%, rgba(131,88,246,0.15) 100%); diff --git a/static/img/index/loading.gif b/static/img/index/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..8600a035638ebfeb108e83edb46f557a88500794 GIT binary patch literal 8766 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 literal 0 HcmV?d00001 diff --git a/static/img/index/upload.png b/static/img/index/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..c7fe3c42209db639805a8715d1cf2743a4caaa24 GIT binary patch literal 9417 zcmeIYi93}27e7Asv4uQY!-$e>l`Vv!ER(Wl--?o*EMwoLh^A2_hRTp_kQ)0~DBO4ea?Bm&g;DHxz7`GQzLE;5e^Ut#0@jP zZV3W0Ab?*Am=*Yhe<~^-_{R`zX`~OT8aPb?-Y^I2!>qx;D;n(a7zBcVVAu7m!}B+0 z;}D|6nEBs4SH!bw!P`QPC1!zuxRdlPfbDXk9H2sgu*UoSjvLI1jCJ5PO!k0E(a8 zWQP^@EI;&Yo((dq*ZMTQ@yvu;1?B-Y2+Sywnm58|bbt6$ZUjcLLMd(78WgCIi=db{ z&(d$spw2Yc)Y%-azp3W{U9`!5w|eF+L+w~d#QA;&M$pp?v!#cPsak@YU<4-d0B%r! z3e^5lmXtZr8EF?EZR^6v0s;|z6?3#sI@Mqvx87Efxe5ZIP6XUb9t=nT++c?drdP>< zpba09nT=JIZk$Vd*TX@ecVgMae2&(Ui9pea6K+p_;Lrq$h7~u)$_-J2i zM@Ep4R+}8G5wlsbBQ+-kY7f__HNtlr;ZA|#KLpdnVf7i2av+eqXXLY2C1RkV=IOo1 z%7Y9bT;7D#BQhf>5`Kl?Uq4+m#{p{JCq=>>L7+}v2!Jm}W{{gc0I{23UQj$c10(37 zBoqWX#|#FwCxaM3ul~2_e<}F?1qE64Pa~P)Ey8zdDT{q`#~C@rIkEE2t@5~5+2y69 z=!3KuJ|={XthqXZBiS#icyS(a;+Aphi5n@H!o3YqQXhling0+EhWG_IWfy46Xw#&W zO~ zTU$BsnejeqDvwG1{JGgkxjTuo>Ay zVcW9D#c@-s2-cP&iMyQA;cZXYNkwh4NAeiHr+k2gpXu}4^jt??%X8k4pg!{9S<-|N zE#`gv4+smembG>R>wiS| z*}FkLFqo!+(N6@xmx+`SyhQB1wVd`Jx4ab)h~>9yM)K)SXYX)IZ-@HLZoSmaDWIED z!WfG5;~`cBu@=;>YF2?I{kW&j0{5J}A$R)PsJbmvV8mHw@a3QDa`+nt&lM7V%2-d< z9S$BFH-!VvB>Xr7MX*;pQ96HS$ff!6p~o3v`|%co5{)-H1&o*0RvUi254drh#jE#- z7t)g)=h~<_<-MYScuIgK_9+(RwC)!c)$<9RV`P@vJE)GDwQapq5B>Uv^`ui+kQMch z>u2pt7f&;T4Ohzqi;s7&ck6pYe((92%+p^}W=4X{PN1KGI(iP5(kN`MoQ(-0#t*oq z3BSA4FIc8Wf(;)7$F5RBNz3Vy>gG&ODifIF9-#Id&a{^T+yCUf3$lFh`e~dM)04J< zg|Eu09}gA5y&=v%kd73doS$lp#ykv(Z=)!})huW3p;?ey3?FTn zf^=Oqm5$yBVELetbC*}S+p*nP9ci*#WcLY`5*B>K{Lrq{CnkO|R!2xbVj0^mohy*cO{ zN87l;>zvXxheOGfXF6w(Fnd7N@6eArExhPf_`#c${ljae2@Ql%O(hf%grpSoqP6S( zpFi_}lLz~$#f2IT!L!%+@u|8KKX-V_SQoDjJeKDY1|o{sK1=EqtXJv-%r6k7-%g`nK}kmOZV%{`X|0@l?^sUS#m=^_>~{H!E=NF+d#@AWG`jjb zHCCakjLg@5XUX9wZQ+W5v*;W)((*y79aGSN&ROROW&fi14j{Mx#2w@doI3q<8sL3XBH?#3M2S`lMUGD2=pnrj5xfk8DA}8~& z-4Cp1VAZPc{<~mVT1A|(uvfx*t;l0(Rk{OJHk23r6r@)kJCoL?4Xk&zW9nT-+j^xy z?g3^_5n|2)8;?(|9EVOJVEf5y}KAjY>>&iXL@8;*?+M8kqjj|%2RuP!S(+vPq; zSnm`uZdSmV#{X+#*C|J_^5!RKm>2gFhqIlru&wm<^3Gpv9Nuysp28!Hq?Uld$!Q+r zxIKT;%HWNF>1kTsx!(cDDSo)VoMNgno=}1R(qGYc%{A`x!#Mj+k)C3L-!zA`0VlJR zYN$RH;$&}}=ZPcjOs=Q4#2sK9LGHS2c&j1N)&ZW#kve!q$RcE6rdj5UxWPbMNz+oxX z?-q9UFMdTppi_SXr7G?|*26*v^4Ea1<@E1kg(H;->$riIC(tuM)f<`MzU#tL*BWA1X6?Nt`9tq|vK%dRGAOX;)UKNqhsgC8vdHrVv_|Feu? z-TuQkYbzuURA2C69jXs-id{ZV`IqM6o%(wi)`vu+|F5uj=HNHf#V1Zid?9BJ3j%tI<|*@_zo_sgzsER3(AE1^lVK1&_0AdikSS=&}Pu zsL7q2?cWon3#8`c?`T+o9H%M*KBphnlSOnzY8ov6w zp|%D>2dIwVp9~~APs$9GTiSwqiF_#FiE{r0TyB)j|G7?t?ceSNw3Paz%g(k!+Q9ny zBDr)CV_)tiF#}Rkh_fUUnAf8dk4xZv%X-qDNh8phnqg)TAa(I3(13qDV#4=E71wW^ zQbjyoj;h}2{Mr7tL5Af~Dxe-_0-@BLy)+Ty&)btUv?xcA8JJ6uA@Qb0bP|OpPPHZ; zAUTp$+u5UAX}@}e7@2dGj|!lV&6$R)=j3oi!J>Ljp;PCquHV-_dPkY$4ltY<=w(vi z=lO$+&0*(;U%fA}MwH%|l{xyO`(~PB(jXo(;u3B^U6;c92;%0g=7+nP+b??l)V}f~ zg^eZHL)h7_=Tlw)f_@-V44)0$7=@lVjnsjKyKxOMc1-MNl~b0<=pjbf1dHlZfgUA^ zEc&0>n6}&P=6_Y$V15>TrOzd2+`l~G=1pUGoHg|T&a;YQ!~=b3y(P%NA<8;(U6#BT zRGrXr99F#?giw@wDh$ZAH8vtzDaJ%I*#DCPpbBA|>X#%@`!tu1(?Ukf;IDJ;X0T_` zR*@TtA6PCgiS&F0PV9!TSi@&gqg@u z&P-s{pAFH@bQZ&SP>1S|j6VEFV#_8b$0a*!i@ZENLI+weNxXIeI^1cBQpW5 zt`udk2do$X6z=>B5#8*$mPMA%lIttW^g8 z-l{g%{NHfXx}9wi(0;{7MZ{Yz?;COFb$ld`*Un9^b|*mwT>gk#$-3r8L6VGiggz?+C}M;!3dpEZ&d{)r3&-& z58U0|9}G@EPzf2--ZMs;qBOBTOC=ly?<9`9|~el%vCr z!S7PfuAUSg-$tq^D`(9;O1b);rnR&ap?gzvc_*U3zu!P- z;Oo~%$5&8_&P}5uYGdB2e!jjd6w*j+{ruwMJ0OiOSClWRt9zc%7qkN##dASFPL87B zbGiHUuGKIRnYFbwWJ}RpS(z+wUUF=ZbN%OHlbl0;#Cc9m&KNO0Hh9RMi=dV9`Z_N=eT6EhA?;Znt`?|k`BSn9SxZJ@eVO=qXA04&!?JKpuK-&NP z^KCs~tgY^!;z{3f%d%1cP?3>Sx-~VUk~X%s{p4PVE>klf!(~v4{@eG7t}{7qetwwu zvD0WHBl{D)^~yn7?7dpvAzEhdU8-q%!P`r{RnMjaj$;Ce7S#lrX4(dpWij(GufN3g z(Da@4g@d@Y1>@=k&kOq>Y4X{9_l`AeZEdgB2Zx4^RmX)!9jAY}yF_f+A&Z0-mTmyI zLDJ$3mmx_aZ!f8;j;TTuXGOEJvfOWTt^iT!`$zz9w8F%zqV9QnU)Wv=LnOwf#xi}z zLbG#n>cwIR-l}c1kyGADWLR}#Vao3A?vTi%HEQsntzym*%^;M9sjjB|z}40wsgKcj zKM0A6`=f1;gU6kni3b6Kr=O&vz=)?$L|a#xQ$7CdEDK?6DzF>7VNqg=Dyg@v!!WF6 z$C7Vx%!$*vg98Ip^5EfNi#PVQt8VZ$zu7=rcvN-Kmqf{|L1O5y@3}*RZ$$Zi>33%s zYsMaiFU|Lhtu!33?KX*IJUWK28(|%8H#&_2wMrPgraP!!YT?v;is59@w5gPx$F16= zJEsrAmLF>T7F4m@5i+bdBnB?VhUsS*c1eV_)YhKqotA7?6sf<-5%9c`P%ub5LWL5+ zn3}3=H@MAc1f=5(P^YU?XIH)XO>3qv?TY{#D>eVIx3{-v+R5kL@B@HCq&}7KbG?-= zOj&3LaS1S-l=7Mn#>cL9OT@Lz-};seywj{V$;OAX=zVvYHn`s@YK|60Re$g zU$xs8Ue>Yb1Jr=A8ChRnuk-Kv^5shp6$&sT&Sh`#Tw#7b#g(?Sv{ZL-O+{N91JGIA zL~y>pL8$G=CyS3*b+_7?PR|JQL00T1GIejfHJ{*vY;wi+PEUG#Fc;?HtsaZHybe=t6ZVc7|*c}KuQd6mu>M&~>PTS@$>cN@7GkbE8V4S#?&Km7!2lv(f`CgXuE<%yaQ2?ouM&4sT zd>9VZMCg(2qK;ZLVJB)bC3JOO{FrS>1NA<3X{rILq|ItWJ~A`O#Zk|n_Ek+XBUDS2)_(3G}?TjQkz_9;Blrzwd_H#)y=ZhAiRvI*lo3N}-oS*UDLfA;0 zPE8hwwox~W0V9~jqqp>egK7ziAh^vIq$+j6RFSiQ=c2zzhT$R#J1yJYzdV{DdS_f? zx^gYjOD)gA!C}>FL4N`rpP9!h(-7>fA`)xP%(=Q7IZMWK_&Zw5NtXNbw|q_Iw6`_i zbn4a)E4G{zm_zLq=H|je5KLq6G6 zj2*Ux)=c-vzPv$CPQs1q1ADqePM&!l_i@s?(P{3Ir*+ZrmQj9a0h(BnP*_kfSLe40 zDc(_S7WR4n{(UHA#iFhC=g#@Gjmp05T>&7RoE|_lOjXcwfN5vXzkhc zn_CM`ra%M!#Rv~v&1g7t+?yp63h1Iz0Et0CmxjN*?JS{zgQ*m+RI zxrU;h++5)}wzdx+e$qpGbvYkNt9wCltAc6y66uoKhSK+s(MLAE!D zzaGfn37gAZ*<@Pcc!$!e^v0G0Y&m3--ITt?_0TgI1IQpiU^=+E+5)`iI7#4MuRxpDR;0{@Al7zIn zlBH*1t=8QTse3b-?P4FQs;bJJ6pc(3ABS%qCj1pR{2PF@d2r`W2jx|Vk9LFd&#X-q z8ylOD#n0?*LYpP_!k_$Y*}1|#P^KBn2y1k78tNl+^H3#WEhgph?&U7r%{RhJRbj#{ zy!K9TKu_WUVN*Ub^B_?oik8<=DbOitHWL~DIbHillKk_QwteD1EHWaf(-$( z1#t1?Q9Ntv!>}8XuxWp*@9H8MpJQ4&2#ytFk(;6?3SM}ss;U-av8ub2>gM)+5 zIlA1LAxLU-h&Rx&{`OTt!6QWsZL>K5qLl}<%j42XXBGMICl0-$;_I94xSnjSA9$Pu zP*KknWYt}BqHu}}wIMHDstHFLU-E%Q?KkqXoBdG=CuHv!0KItl0z-)jI|Rx&vn%9) zvGK@Bn3he>;D&z*Q%}*~O8WIH{-IGM%GuqN7&3JfXqz;h@$1(w>+}B{Di$0ZM4+xl zTn;l@U9~oyfJNgT8vWWNuX;Nlg?O=aNrk^C1Z0W;^nEF6>IuKhs5iE*f5Ay!0LbrA zuqV1g#x-nOBdpa0{z6AtS-D2<%$WC>?t7!DIb>$VPKZman*5bS%<%$ENZ`+=$DA8N z9=H{kC7pH+N!>GBtY(Z5Qf*+E7jE0?zS-}|q1IBLK5|q)V-@A1)kd z+;KuQ^sSUwtcln*hBeQM?;3i*Cd_AQXiu-XmNvVY1}3&v2E~jaV=7yl=M3>}uqi2D zWVFuA+GdNnmB{qTmdHEA^U`Ih?C7feWzo>&C1fZW#eXQfD#|Bkih_|#9Qp4HY}RbT);eR(bFVdIQFY>Y1e z404OM4sM(&(c)QZ%M7ssfqpKTAYWvmG5(cCXT`*4|A0VW+e^?=v7E{N^1#qVVIMG! zg16zk{_YebXysc#jB!F^O`U^ep+vtL1L$k~JQcyH!25pIUsuUN5){8t0L+)bnFW*k zzee4>8Ndi?@V3IsX#P7HQdMcjb0-P7;*Y)h+BxiB{isY*{uJ(lG62atPK{x2~#g9B+Oi?u`|>4 z?LoeScj#%_ydntt2=y{VzVg?w?6B%E5a=Z4hoi~eWC75+q33d_y%_AIxFzre5}0Z! zKv1HPI#NwoklPIErTWXUhxmoS$P>Jta>koEluIz>@ope@*Kg0=Tpx2u>bk^cJY@4K z+6nKsJ#e?p*<~$RfCKb&yrjkEYe|dAtHNx!&B0`>#QrhUt5m9}oj`#S2zbE^Os`kz HyCwb~C+c>K literal 0 HcmV?d00001