+ 䬺小二北京涮羊肉(湘春路店) +
++ + + + +
++ 商家概述 +
+From 37261c24571e3388b07d25845e28d0420ee5e8da Mon Sep 17 00:00:00 2001 From: liukunlin123 <2358524838@qq.com> Date: Wed, 30 Jun 2021 08:24:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A9=E7=94=A8=E7=88=AC=E8=99=AB=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E7=88=AC=E5=8F=96=E7=BE=8E=E5=9B=A2=E5=BA=97=E9=93=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webspider/README.md | 6 + src/webspider/meituan.py | 260 ++++ src/webspider/proxy.txt | 10 + src/webspider/shop.txt | 485 +++++++ src/webspider/shopurl.txt | 4 + src/webspider/string.txt | 9 + src/webspider/stringTodict.py | 19 + src/webspider/testproxy/first.txt | 348 +++++ src/webspider/testproxy/hhh.txt | 1 + src/webspider/testproxy/meituanfirst.py | 101 ++ src/webspider/testproxy/proxy.txt | 10 + src/webspider/爬虫成功版/README.md | 71 + .../__pycache__/cateId.cpython-38.pyc | Bin 0 -> 973 bytes .../__pycache__/common.cpython-38.pyc | Bin 0 -> 3080 bytes .../__pycache__/config.cpython-38.pyc | Bin 0 -> 2069 bytes .../__pycache__/parse.cpython-38.pyc | Bin 0 -> 1093 bytes .../__pycache__/token_.cpython-38.pyc | Bin 0 -> 1484 bytes .../__pycache__/visual.cpython-38.pyc | Bin 0 -> 3158 bytes src/webspider/爬虫成功版/cateId.py | 21 + src/webspider/爬虫成功版/common.py | 81 ++ src/webspider/爬虫成功版/config.py | 111 ++ src/webspider/爬虫成功版/meituan.py | 67 + src/webspider/爬虫成功版/parse.py | 28 + .../爬虫成功版/requirements.txt | 8 + src/webspider/爬虫成功版/token_.py | 62 + .../爬虫成功版/utils/__init__.py | 0 src/webspider/爬虫成功版/utils/br.json | 87 ++ .../爬虫成功版/utils/cities.json | 1205 +++++++++++++++++ src/webspider/爬虫成功版/utils/ua.log | 1000 ++++++++++++++ src/webspider/爬虫成功版/utils/uuid.log | 1 + src/webspider/爬虫成功版/view/FZSTK.TTF | Bin 0 -> 7574196 bytes .../爬虫成功版/view/__init__.py | 0 src/webspider/爬虫成功版/view/db.png | Bin 0 -> 83790 bytes src/webspider/爬虫成功版/view/demo.gif | Bin 0 -> 5024225 bytes src/webspider/爬虫成功版/view/key.png | Bin 0 -> 79868 bytes src/webspider/爬虫成功版/view/pricom.jpg | Bin 0 -> 33336 bytes src/webspider/爬虫成功版/view/qin.png | Bin 0 -> 112110 bytes src/webspider/爬虫成功版/view/ratio.jpg | Bin 0 -> 38388 bytes src/webspider/爬虫成功版/view/title.txt | 750 ++++++++++ src/webspider/爬虫成功版/view/top10.jpg | Bin 0 -> 60283 bytes src/webspider/爬虫成功版/visual.py | 87 ++ 41 files changed, 4832 insertions(+) create mode 100644 src/webspider/README.md create mode 100644 src/webspider/meituan.py create mode 100644 src/webspider/proxy.txt create mode 100644 src/webspider/shop.txt create mode 100644 src/webspider/shopurl.txt create mode 100644 src/webspider/string.txt create mode 100644 src/webspider/stringTodict.py create mode 100644 src/webspider/testproxy/first.txt create mode 100644 src/webspider/testproxy/hhh.txt create mode 100644 src/webspider/testproxy/meituanfirst.py create mode 100644 src/webspider/testproxy/proxy.txt create mode 100644 src/webspider/爬虫成功版/README.md create mode 100644 src/webspider/爬虫成功版/__pycache__/cateId.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/__pycache__/common.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/__pycache__/config.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/__pycache__/parse.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/__pycache__/token_.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/__pycache__/visual.cpython-38.pyc create mode 100644 src/webspider/爬虫成功版/cateId.py create mode 100644 src/webspider/爬虫成功版/common.py create mode 100644 src/webspider/爬虫成功版/config.py create mode 100644 src/webspider/爬虫成功版/meituan.py create mode 100644 src/webspider/爬虫成功版/parse.py create mode 100644 src/webspider/爬虫成功版/requirements.txt create mode 100644 src/webspider/爬虫成功版/token_.py create mode 100644 src/webspider/爬虫成功版/utils/__init__.py create mode 100644 src/webspider/爬虫成功版/utils/br.json create mode 100644 src/webspider/爬虫成功版/utils/cities.json create mode 100644 src/webspider/爬虫成功版/utils/ua.log create mode 100644 src/webspider/爬虫成功版/utils/uuid.log create mode 100644 src/webspider/爬虫成功版/view/FZSTK.TTF create mode 100644 src/webspider/爬虫成功版/view/__init__.py create mode 100644 src/webspider/爬虫成功版/view/db.png create mode 100644 src/webspider/爬虫成功版/view/demo.gif create mode 100644 src/webspider/爬虫成功版/view/key.png create mode 100644 src/webspider/爬虫成功版/view/pricom.jpg create mode 100644 src/webspider/爬虫成功版/view/qin.png create mode 100644 src/webspider/爬虫成功版/view/ratio.jpg create mode 100644 src/webspider/爬虫成功版/view/title.txt create mode 100644 src/webspider/爬虫成功版/view/top10.jpg create mode 100644 src/webspider/爬虫成功版/visual.py diff --git a/src/webspider/README.md b/src/webspider/README.md new file mode 100644 index 0000000..397e46b --- /dev/null +++ b/src/webspider/README.md @@ -0,0 +1,6 @@ +# 爬虫文件 +**meituan.py**:爬取美团数据的文件,里面爬取了店铺名字、评分、地址等信息,修改数据库参数后直接就可以运行 \ +**stringTodict.py**:将字符串转化为字典的文件,例如"{key1:value1,key2:value2}"转化为dict{key1:value1,key2:value2},和json.load不一样,改data或者headers的一个辅助文件 \ +**shop.txt**:存储店铺html的文件 \ +**shopurl.txt**:存储店铺详情页的url文件 \ +**string.txt**:搭配stringTodict.py使用,将需要转化的字符串写在里面 \ No newline at end of file diff --git a/src/webspider/meituan.py b/src/webspider/meituan.py new file mode 100644 index 0000000..68b04f6 --- /dev/null +++ b/src/webspider/meituan.py @@ -0,0 +1,260 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Oct 23 09:38:28 2020 + +@author: 坤林 +""" +#this is the version * about successfully get detail of 25 shops and all areas + +import requests +import json +import traceback +import chardet +import random +import pymysql +import time +from lxml import etree +from bs4 import BeautifulSoup +timing=4 +index_url="http://meishi.meituan.com/i/" +headers={'Accept': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 'Connection': 'keep-alive', 'Content-Length': '408', 'Content-Type': 'application/json', 'Cookie': '__mta=217497129.1605576012299.1606050406017.1606050988411.60; iuuid=61A29DA6726853A9CFAEA2909BFE7A3B399AD2E666AF89BEEE2D9E25D8151EA9; cityname=%E9%95%BF%E6%B2%99; _hc.v=543395d8-e443-3414-9405-504128fba3b1.1605576012; _lxsdk_cuid=175d3c9b0bdc8-0b981a1d414f9b-930346c-144000-175d3c9b0bdc8; _lxsdk=61A29DA6726853A9CFAEA2909BFE7A3B399AD2E666AF89BEEE2D9E25D8151EA9; _lx_utm=utm_source%3Dbing%26utm_medium%3Dorganic; rvct=70; client-id=cec617d4-b199-4a30-a095-457fa70e339d; uuid=dacd6749-edf1-446a-b70c-bc7871bd99e6; IJSESSIONID=1qgg0q4wqsn9b1kixeeefcho67; latlng=28.234713%2C113.007334%2C1606050355118; ci=70; meishi_ci=70; cityid=70; logan_session_token=3edh2pxhzgqdvgx8eq6w; _lxsdk_s=175f00f9b75-78f-829-745%7C%7C8', 'Host': 'meishi.meituan.com', 'Origin': 'https://meishi.meituan.com', 'Referer': 'https://meishi.meituan.com/i/?ci=70&stid_b=1&cevent=imt%2Fhomepage%2Fcategory1%2F1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36', 'x-requested-with': 'XMLHttpRequest'} +data={'app': '', 'areaId': 0, 'cateId': 1, 'deal_attr_23': '', 'deal_attr_24': '', 'deal_attr_25': '', 'limit': 15, 'lineId': 0, 'offset': 0, 'optimusCode': 10, 'originUrl': 'https://meishi.meituan.com/i/?ci=70&stid_b=1&cevent=imt%2Fhomepage%2Fcategory1%2F1', 'partner': 126, 'platform': 3, 'poi_attr_20033': '', 'poi_attr_20043': '', 'riskLevel': 1, 'sort': 'default', 'stationId': 0, 'uuid': '2e4de9f1ec744a9fb36b.1605626652.1.0.0', 'version': '8.2.0'} +proxies=[] +def get_proxies(proxyfile): + file=open('proxy.txt','r') + for line in file.readlines(): + proxies.append(line.strip()) + file.close() +def get_proxy(): + k=random.randint(0,len(proxies)-1) + proxy=proxies[k] + p={'http':'http://'+proxy,'https':'https://'+proxy} + return p +def plist(url,p): + + #根据链接读取美团移动端 + #url="https://meishi.meituan.com/i/api/channel/deal/list" + if(p==None): + resp=requests.post(url,headers=headers,data=data) + else: + resp=requests.post(url,headers=headers,data=data,proxies=p,timeout=timing) + try: + result=json.loads(resp.text)#字典,将字符串转化为字典 + except Exception as e: + print(result) + print("get shop list error",e) + return result + +def shopdata(shopurl): + #根据店铺链接读取单个店铺的详细信息 + headdata={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': '__mta=210687658.1605577786961.1605961346402.1605961415001.24; __mta=210687658.1605577786961.1605961276456.1605961301918.24; uuid=d8534775d38547fb847a.1605577694.1.0.0; _lxsdk_cuid=175d3e36e17c8-01633738a10df2-930346c-144000-175d3e36e17c8; iuuid=44343588721193C3A0F12E707D0D0797385C06FC2CE3FA10A9175C2100CBCF5F; cityname=%E9%95%BF%E6%B2%99; _lxsdk=44343588721193C3A0F12E707D0D0797385C06FC2CE3FA10A9175C2100CBCF5F; webp=1; _hc.v=8603bfe6-42d3-0a08-24bb-d4c8b9495adb.1605577787; _lx_utm=utm_source%3Dblog.csdn.net%26utm_medium%3Dreferral%26utm_content%3D%252Fxing851483876%252Farticle%252Fdetails%252F81842329; mtcdn=K; __utma=74597006.1199398655.1605577785.1605581851.1605702245.3; __utmz=74597006.1605702245.3.3.utmcsr=blog.csdn.net|utmccn=(referral)|utmcmd=referral|utmcct=/xing851483876/article/details/81842329; latlng=28.234696,113.007313,1605702248066; i_extend=C_b1Gimthomepagecategory11H__a; client-id=f25a6222-ad55-482e-a20f-2c54c8e25049; ci=70; meishi_ci=70; cityid=70; logan_session_token=yeo5wu3tkknro0rn94wr; _lxsdk_s=175eab20f38-3bc-24-ec8%7C%7C14', 'Host': 'meishi.meituan.com', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'none', 'Sec-Fetch-User': '?1', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'} + loop=0 + while(loop<10): + try: + p=get_proxy() + resq=requests.get(shopurl,headers=headdata,proxies=p,timeout=timing) + #print(resq.text) + #resq.text是字符串格式 + + ##BeautifulSoup解析文本格式 + #soup=BeautifulSoup(resq.text,'lxml') + #shopfile=open('shop.txt','w',encoding='utf-8') + #soup.prettify()是字符串格式 + #shopfile.write(soup.prettify()) + #shopfile.close() + + ##xpath解析 + html=etree.HTML(resq.text) + datas=html.xpath('body/script[@crossorigin="anonymous"]') + information=[] + #print(datas) + for data in datas: + if(data.text!=None): + strs=data.text[:16] + if (strs == 'window._appState'):#查询储存信息的模块 + result = data.text[19:-1] + result = json.loads(result) + name = result['poiInfo']['name'] + addr = result['poiInfo']['addr'] + phone = result['poiInfo']['phone'] + aveprice = result['poiInfo']['avgPrice'] + opentime = result['poiInfo']['openInfo'] + opentime = opentime.replace('\n', ' ') + avescore = result['poiInfo']['avgScore'] + marknum = result['poiInfo']['MarkNumbers'] + img=result['poiInfo']['frontImg'] + lng = result['poiInfo']['lng'] + lat = result['poiInfo']['lat'] + information=[name,addr, opentime,phone, aveprice, avescore,img] + return information + except Exception as e: + #shopfile=open('shop.txt','w',encoding='utf-8') + #shopfile.write(resq.text) + #shopfile.close() + loop+=1 + if(loop==10): + + try: + resq=requests.get(shopurl,headers=headdata,timeout=timing) + html=etree.HTML(resq.text) + datas=html.xpath('body/script[@crossorigin="anonymous"]') + information=[] + #print(datas) + for data in datas: + if(data.text!=None): + strs=data.text[:16] + if (strs == 'window._appState'):#查询储存信息的模块 + result = data.text[19:-1] + result = json.loads(result) + name = result['poiInfo']['name'] + addr = result['poiInfo']['addr'] + phone = result['poiInfo']['phone'] + aveprice = result['poiInfo']['avgPrice'] + opentime = result['poiInfo']['openInfo'] + opentime = opentime.replace('\n', ' ') + avescore = result['poiInfo']['avgScore'] + marknum = result['poiInfo']['MarkNumbers'] + img=result['poiInfo']['frontImg'] + lng = result['poiInfo']['lng'] + lat = result['poiInfo']['lat'] + information=[name,addr, opentime,phone, aveprice, avescore,img] + return information + except: + print("crawer the detail of shop of %s"%shopurl) + return [] +def get_ALLareas(url): + loop=0 + head={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': '__mta=217497129.1605576012299.1606050406017.1606050988411.60; iuuid=61A29DA6726853A9CFAEA2909BFE7A3B399AD2E666AF89BEEE2D9E25D8151EA9; cityname=%E9%95%BF%E6%B2%99; _hc.v=543395d8-e443-3414-9405-504128fba3b1.1605576012; _lxsdk_cuid=175d3c9b0bdc8-0b981a1d414f9b-930346c-144000-175d3c9b0bdc8; _lxsdk=61A29DA6726853A9CFAEA2909BFE7A3B399AD2E666AF89BEEE2D9E25D8151EA9; _lx_utm=utm_source%3Dbing%26utm_medium%3Dorganic; rvct=70; client-id=cec617d4-b199-4a30-a095-457fa70e339d; uuid=dacd6749-edf1-446a-b70c-bc7871bd99e6; IJSESSIONID=1qgg0q4wqsn9b1kixeeefcho67; latlng=28.234713%2C113.007334%2C1606050355118; ci=70; meishi_ci=70; cityid=70; logan_session_token=3edh2pxhzgqdvgx8eq6w; _lxsdk_s=175f00f9b75-78f-829-745%7C%7C8', 'Host': 'meishi.meituan.com', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'} + while(loop<10): + try: + p=get_proxy() + r=requests.get(url,headers=head,proxies=p,timeout=timing) + html=etree.HTML(r.text) + datas=html.xpath('body/script[@crossorigin="anonymous"]') + for data in datas: + if(data.text!=None): + strs=data.text[:16] + if (strs == 'window._appState'): + result = data.text[19:-1] + result=json.loads(result) + areas=result['navBarData']['areaObj'] + return areas + except Exception as e: + loop+=1 + if(loop==10): + try: + r=requests.get(url,headers=head) + html=etree.HTML(r.text) + datas=html.xpath('body/script[@crossorigin="anonymous"]') + for data in datas: + if(data.text!=None): + strs=data.text[:16] + if (strs == 'window._appState'): + result = data.text[19:-1] + result=json.loads(result) + areas=result['navBarData']['areaObj'] + return areas + except: + print("crawer all areas error:",e) + return None +def shopwrite(url,shopfile): + loop=0 + while(loop<10): + try: + #将美团移动端数据写入文件 + result=plist(url) + #print(result) + totalcount=result['data']['poiList']['totalCount'] + #print(totalcount) + totalshop=result['data']['poiList']['poiInfos'] + break + except: + loop+=1 + file=open(shopfile,'w',encoding='utf-8') + for i in range(15): + shop_message=totalshop[i] + shop_url=index_url+'poi/'+shop_message['poiid']+'?ct_poi='+shop_message['ctPoi'] + eachshop='name:'+shop_message['name']+',url:'+shop_url+'\n' + file.write(eachshop) + file.close() + shopdata(shop_url) + +def mysqlstore(url,number,Id): + #将读取的信息存入mysql数据库 + print(data) + loop=0 + db=pymysql.connect(host='localhost',user='root',password='lkl15220319',port=3306) + cursor=db.cursor() + cursor.execute('use meituan;') + sql='create table if not exists allshops(id INT(11) primary key,name VARCHAR(250) NOT NULL,avgprice INT(10),avgscore FLOAT(2,1),img VARCHAR(360) NOT NULL,cateName VARCHAR(100) NOT NULL,url VARCHAR(250) NOT NULL);' + cursor.execute(sql) + while(loop<10): + try: + p=get_proxy() + result=plist(url,p) + totalcount=result['data']['poiList']['totalCount'] + totalshop=result['data']['poiList']['poiInfos'] + #print(result) + break + except: + loop+=1 + if(loop==10): + result=plist(url,None) + totalcount=result['data']['poiList']['totalCount'] + totalshop=result['data']['poiList']['poiInfos'] + for i in range(number): + Id+=1 + shop_message=totalshop[i] + cateName=shop_message['cateName'] + name=shop_message['name'] + img=shop_message['frontImg'] + avgprice=shop_message['avgPrice'] + avgscore=shop_message['avgScore'] + sql= 'INSERT INTO allshops(id,name,avgprice,avgscore,img,cateName,url) values(%s,%s,%s,%s,%s,%s,%s);' + shop_url=index_url+'poi/'+shop_message['poiid']+'?ct_poi='+shop_message['ctPoi'] + #information=shopdata(shop_url) + #print(Id,information,cateName) + try: + #print(type(Id),type(information[0]),type(information[1]),type(information[2]),type(information[3]),type(int(information[4])),type(int(float(information[5])*10)),type(information[6]),type(cateName)) + cursor.execute(sql,(Id,name,avgprice,avgscore,img,cateName,url)) + db.commit() + except Exception: + traceback.print_exc() + print('Fail,',Exception) + db.rollback() + return Id +url="http://meishi.meituan.com/i/api/channel/deal/list" +# shopfile="shopurl.txt" +# mysqlstore(url) +def get_alldetail(areas): + Id=0 + for areaid in areas.keys(): + regions=areas[areaid] + for region in regions: + #可以发现“全部”爬取的店铺在其他分类地区也有,其次全部上面所显示的数量与移动端上标注的数量不一致 + #而其他分类地区则表现一直,因此我们只爬取其他分类地区,跳过“全部” + if(region['id']!=int(areaid)): + print("正在爬取地区:%s"%region['name']) + offest=0 + data['areaId']=region['id'] + totalcount=region['count'] + while(totalcount>25): + data['offset']=offest + totalcount-=25 + offest+=25 + Id=mysqlstore(url,25,Id) + if(totalcount>0): + data['offest']=offest + Id=mysqlstore(url,totalcount,Id) + + +def main(): + get_proxies('./proxy.txt') + print(proxies) + areas={"149":[{"id":149,"name":"全部","regionName":"芙蓉区","count":2226},{"id":4822,"name":"马王堆","regionName":"马王堆","count":145},{"id":4821,"name":"德政园/杨家山","regionName":"德政园/杨家山","count":100},{"id":4823,"name":"五一广场","regionName":"五一广场","count":499},{"id":4824,"name":"袁家岭/火车站","regionName":"袁家岭/火车站","count":111},{"id":6020,"name":"晚报大道","regionName":"晚报大道","count":20},{"id":6026,"name":"湖南农业大学","regionName":"湖南农业大学","count":113},{"id":7161,"name":"八一路","regionName":"八一路","count":27},{"id":8051,"name":"人民中路/朝阳路/融圣国际","regionName":"人民中路/朝阳路/融圣国际","count":59},{"id":8052,"name":"司门口","regionName":"司门口","count":25},{"id":8062,"name":"黄兴路步行街","regionName":"黄兴路步行街","count":176},{"id":8064,"name":"汽车东站","regionName":"汽车东站","count":54},{"id":8067,"name":"五里牌","regionName":"五里牌","count":23},{"id":8072,"name":"芙蓉广场","regionName":"芙蓉广场","count":80},{"id":8074,"name":"韭菜园","regionName":"韭菜园","count":36},{"id":8077,"name":"省委","regionName":"省委","count":2},{"id":9026,"name":"古曲路/浏阳河婚庆文化园","regionName":"古曲路/浏阳河婚庆文化园","count":91},{"id":9244,"name":"定王台","regionName":"定王台","count":57},{"id":36483,"name":"万家丽国际MALL","regionName":"万家丽国际MALL","count":10},{"id":40199,"name":"万达公馆","regionName":"万达公馆","count":3},{"id":40938,"name":"旺旺医院/芙蓉区政府","regionName":"旺旺医院/芙蓉区政府","count":22},{"id":42376,"name":"万家丽北路","regionName":"万家丽北路","count":256},{"id":42909,"name":"梦泽园","regionName":"梦泽园","count":26},{"id":44332,"name":"火车站","regionName":"火车站","count":116},{"id":45708,"name":"浏阳河风光带","regionName":"浏阳河风光带","count":20}],"150":[{"id":150,"name":"全部","regionName":"开福区","count":1643},{"id":4825,"name":"四方坪","regionName":"四方坪","count":201},{"id":4827,"name":"伍家岭/开福寺","regionName":"伍家岭/开福寺","count":77},{"id":6019,"name":"中山亭/乐和城","regionName":"中山亭/乐和城","count":64},{"id":6021,"name":"松桂园","regionName":"松桂园","count":43},{"id":6022,"name":"湘江世纪城","regionName":"湘江世纪城","count":199},{"id":6023,"name":"湘雅附一医院","regionName":"湘雅附一医院","count":115},{"id":6024,"name":"烈士公园","regionName":"烈士公园","count":65},{"id":8060,"name":"世界之窗/国际会展中心","regionName":"世界之窗/国际会展中心","count":19},{"id":8070,"name":"月湖公园/长沙大学","regionName":"月湖公园/长沙大学","count":156},{"id":8073,"name":"八一桥","regionName":"八一桥","count":22},{"id":9016,"name":"开福万达广场","regionName":"开福万达广场","count":89},{"id":9087,"name":"珠江花城/万国城","regionName":"珠江花城/万国城","count":61},{"id":40190,"name":"山语城/金霞","regionName":"山语城/金霞","count":14},{"id":43258,"name":"北辰三角洲","regionName":"北辰三角洲","count":80},{"id":44617,"name":"兴汉门","regionName":"兴汉门","count":87}],"151":[{"id":151,"name":"全部","regionName":"天心区","count":2225},{"id":4828,"name":"天心阁/白沙井","regionName":"天心阁/白沙井","count":61},{"id":7162,"name":"坡子街","regionName":"坡子街","count":121},{"id":7163,"name":"解放西路","regionName":"解放西路","count":102},{"id":7165,"name":"新开铺","regionName":"新开铺","count":90},{"id":7166,"name":"新省政府","regionName":"新省政府","count":61},{"id":7167,"name":"南门口","regionName":"南门口","count":96},{"id":8055,"name":"贺龙体育场","regionName":"贺龙体育场","count":10},{"id":8056,"name":"黄土岭","regionName":"黄土岭","count":77},{"id":8058,"name":"识字岭","regionName":"识字岭","count":36},{"id":8065,"name":"劳动广场/书院路","regionName":"劳动广场/书院路","count":143},{"id":8068,"name":"摩天轮","regionName":"摩天轮","count":5},{"id":8071,"name":"人民西路口","regionName":"人民西路口","count":3},{"id":8075,"name":"浦沅","regionName":"浦沅","count":29},{"id":9017,"name":"铁道学院/林科大","regionName":"铁道学院/林科大","count":111},{"id":9020,"name":"天虹","regionName":"天虹","count":3},{"id":9031,"name":"友阿奥特莱斯","regionName":"友阿奥特莱斯","count":101},{"id":9176,"name":"侯家塘","regionName":"侯家塘","count":107},{"id":17001,"name":"暮云镇","regionName":"暮云镇","count":12},{"id":34832,"name":"中海环宇城","regionName":"中海环宇城","count":1},{"id":36481,"name":"悦方ID mall","regionName":"悦方ID mall","count":3},{"id":36738,"name":"云塘理工/环保科技园","regionName":"云塘理工/环保科技园","count":109},{"id":40141,"name":"药王街","regionName":"药王街","count":1},{"id":40142,"name":"太平街","regionName":"太平街","count":31},{"id":42529,"name":"芙蓉南路沿线","regionName":"芙蓉南路沿线","count":553}],"152":[{"id":152,"name":"全部","regionName":"雨花区","count":2451},{"id":4832,"name":"雨花亭","regionName":"雨花亭","count":185},{"id":4830,"name":"桂花路/车站南路","regionName":"桂花路/车站南路","count":59},{"id":4829,"name":"东塘","regionName":"东塘","count":106},{"id":7164,"name":"桂花路/左家塘","regionName":"桂花路/左家塘","count":81},{"id":7168,"name":"红星国际会展中心","regionName":"红星国际会展中心","count":131},{"id":7169,"name":"高桥","regionName":"高桥","count":211},{"id":8063,"name":"汽车南站","regionName":"汽车南站","count":63},{"id":8066,"name":"武广高铁","regionName":"武广高铁","count":85},{"id":8069,"name":"体育新城","regionName":"体育新城","count":171},{"id":8076,"name":"窑岭/长岭","regionName":"窑岭/长岭","count":101},{"id":9025,"name":"喜盈门/喜乐地","regionName":"喜盈门/喜乐地","count":124},{"id":9028,"name":"梓园路/省儿童医院","regionName":"梓园路/省儿童医院","count":37},{"id":9029,"name":"民政学院/香樟路","regionName":"民政学院/香樟路","count":126},{"id":9030,"name":"井湾子","regionName":"井湾子","count":55},{"id":9560,"name":"树木岭","regionName":"树木岭","count":128},{"id":14689,"name":"天际岭","regionName":"天际岭","count":61},{"id":14699,"name":"环保学院/科技职院","regionName":"环保学院/科技职院","count":49},{"id":19726,"name":"运达中央广场","regionName":"运达中央广场","count":33},{"id":25094,"name":"德思勤城市广场","regionName":"德思勤城市广场","count":25},{"id":34708,"name":"人民东路","regionName":"人民东路","count":1},{"id":36482,"name":"保利国际MALL","regionName":"保利国际MALL","count":""},{"id":45727,"name":"狮子山","regionName":"狮子山","count":3},{"id":46302,"name":"井圭路","regionName":"井圭路","count":32}],"153":[{"id":153,"name":"全部","regionName":"岳麓区","count":3310},{"id":6027,"name":"溁湾镇/新外滩","regionName":"溁湾镇/新外滩","count":61},{"id":6028,"name":"河西大学城","regionName":"河西大学城","count":561},{"id":6029,"name":"汽车西站/达美D6区","regionName":"汽车西站/达美D6区","count":197},{"id":7007,"name":"橘子洲公园","regionName":"橘子洲公园","count":9},{"id":7534,"name":"咸嘉新村/商学院","regionName":"咸嘉新村/商学院","count":42},{"id":7723,"name":"市政府","regionName":"市政府","count":39},{"id":7776,"name":"奥克斯广场","regionName":"奥克斯广场","count":3},{"id":8059,"name":"麓谷","regionName":"麓谷","count":143},{"id":8061,"name":"观沙岭/茶子山","regionName":"观沙岭/茶子山","count":167},{"id":8953,"name":"含浦","regionName":"含浦","count":293},{"id":9015,"name":"涉外经济学院","regionName":"涉外经济学院","count":384},{"id":37674,"name":"梅溪湖","regionName":"梅溪湖","count":175},{"id":37675,"name":"青山镇/莱茵城","regionName":"青山镇/莱茵城","count":60},{"id":37700,"name":"财经学院/西湖公园","regionName":"财经学院/西湖公园","count":12},{"id":37701,"name":"渔人码头","regionName":"渔人码头","count":1},{"id":37702,"name":"润泽园","regionName":"润泽园","count":1},{"id":37703,"name":"银盆南路","regionName":"银盆南路","count":1},{"id":37704,"name":"金茂览秀城","regionName":"金茂览秀城","count":1},{"id":37725,"name":"步步高梅溪新天地","regionName":"步步高梅溪新天地","count":45},{"id":37726,"name":"河西王府井/步步高","regionName":"河西王府井/步步高","count":7},{"id":38365,"name":"湘雅附三/肿瘤医院","regionName":"湘雅附三/肿瘤医院","count":4},{"id":40547,"name":"王家湾","regionName":"王家湾","count":15},{"id":42374,"name":"桐梓坡","regionName":"桐梓坡","count":243},{"id":43783,"name":"新民路","regionName":"新民路","count":11},{"id":44333,"name":"罗家嘴/阳光100","regionName":"罗家嘴/阳光100","count":128},{"id":45015,"name":"银盆岭","regionName":"银盆岭","count":613},{"id":45159,"name":"咸嘉湖","regionName":"咸嘉湖","count":23}],"3491":[{"id":3491,"name":"全部","regionName":"浏阳市","count":244},{"id":9525,"name":"永安镇","regionName":"永安镇","count":4},{"id":15561,"name":"浏阳工业园","regionName":"浏阳工业园","count":10},{"id":15566,"name":"天马路/将军路","regionName":"天马路/将军路","count":20},{"id":15569,"name":"行政中心","regionName":"行政中心","count":36},{"id":15570,"name":"淮川街道","regionName":"淮川街道","count":31},{"id":15571,"name":"集里街道","regionName":"集里街道","count":16},{"id":15954,"name":"大瑶镇","regionName":"大瑶镇","count":2},{"id":18488,"name":"洞阳镇","regionName":"洞阳镇","count":21},{"id":39702,"name":"汽车西站","regionName":"汽车西站","count":""},{"id":39704,"name":"观礼台","regionName":"观礼台","count":""},{"id":40763,"name":"集里医院","regionName":"集里医院","count":3},{"id":41215,"name":"开心广场","regionName":"开心广场","count":""},{"id":42796,"name":"百姓广场","regionName":"百姓广场","count":4},{"id":43385,"name":"体育中心","regionName":"体育中心","count":1},{"id":43671,"name":"大瑶通程广场","regionName":"大瑶通程广场","count":1},{"id":43812,"name":"永安大道","regionName":"永安大道","count":10},{"id":46005,"name":"美神广场","regionName":"美神广场","count":3},{"id":46407,"name":"步行街","regionName":"步行街","count":26}],"3493":[{"id":3493,"name":"全部","regionName":"望城区","count":596},{"id":20717,"name":"望城步行街","regionName":"望城步行街","count":27},{"id":20723,"name":"太平洋服饰广场","regionName":"太平洋服饰广场","count":4},{"id":36943,"name":"正荣财富中心","regionName":"正荣财富中心","count":28},{"id":37381,"name":"长沙医学院","regionName":"长沙医学院","count":77},{"id":37705,"name":"月亮岛","regionName":"月亮岛","count":237},{"id":37706,"name":"郭亮中路","regionName":"郭亮中路","count":10},{"id":37707,"name":"正荣广场","regionName":"正荣广场","count":21},{"id":38360,"name":"雷锋镇","regionName":"雷锋镇","count":34},{"id":38995,"name":"滨水新城","regionName":"滨水新城","count":8}],"3494":[{"id":3494,"name":"全部","regionName":"宁乡县","count":278},{"id":12349,"name":"沿江风光带外滩","regionName":"沿江风光带外滩","count":1},{"id":12350,"name":"春城万象/步行街","regionName":"春城万象/步行街","count":55},{"id":12351,"name":"南站","regionName":"南站","count":7},{"id":12352,"name":"东站","regionName":"东站","count":20},{"id":12353,"name":"人人乐","regionName":"人人乐","count":27},{"id":12422,"name":"灰汤温泉镇","regionName":"灰汤温泉镇","count":19},{"id":12651,"name":"一环北路","regionName":"一环北路","count":24},{"id":17337,"name":"豪德","regionName":"豪德","count":9},{"id":17339,"name":"金洲大道/一中","regionName":"金洲大道/一中","count":6},{"id":17341,"name":"大润发","regionName":"大润发","count":8},{"id":26795,"name":"玉潭镇","regionName":"玉潭镇","count":1},{"id":37540,"name":"黄材旅游区","regionName":"黄材旅游区","count":6},{"id":40304,"name":"沿江风光带","regionName":"沿江风光带","count":3},{"id":41189,"name":"宁乡大道","regionName":"宁乡大道","count":4},{"id":42271,"name":"金洲大道","regionName":"金洲大道","count":12}],"5894":[{"id":5894,"name":"全部","regionName":"长沙县","count":1355},{"id":9035,"name":"大众传媒","regionName":"大众传媒","count":49},{"id":9036,"name":"泉塘/星城国际","regionName":"泉塘/星城国际","count":234},{"id":9037,"name":"筑梦园/中南汽车世界","regionName":"筑梦园/中南汽车世界","count":53},{"id":9038,"name":"星沙一桥","regionName":"星沙一桥","count":152},{"id":9040,"name":"星沙通程广场","regionName":"星沙通程广场","count":40},{"id":10429,"name":"黄花镇/黄花机场","regionName":"黄花镇/黄花机场","count":65},{"id":10430,"name":"城西安置小区","regionName":"城西安置小区","count":90},{"id":17002,"name":"榔梨镇","regionName":"榔梨镇","count":56},{"id":36479,"name":"黄兴镇","regionName":"黄兴镇","count":27},{"id":36480,"name":"华润万象汇","regionName":"华润万象汇","count":25},{"id":40181,"name":"长沙经济技术开发区","regionName":"长沙经济技术开发区","count":412},{"id":45590,"name":"卜蜂莲花星沙店","regionName":"卜蜂莲花星沙店","count":52}]} + #areas=get_ALLareas('http://meishi.meituan.com/i/?ci=70&stid_b=1&cevent=imt%2Fhomepage%2Fcategory1%2F1') + if(areas==None): + print("get areas error") + return None + get_alldetail(areas) +main() \ No newline at end of file diff --git a/src/webspider/proxy.txt b/src/webspider/proxy.txt new file mode 100644 index 0000000..3acaedb --- /dev/null +++ b/src/webspider/proxy.txt @@ -0,0 +1,10 @@ +118.212.107.154:9999 +175.43.58.35:9999 +218.66.253.146:8800 +115.209.125.144:3000 +222.94.196.39:3128 +106.14.214.136:3128 +49.75.59.242:3128 +171.35.215.2:9999 +113.195.153.46:9999 +113.121.39.225:9999 diff --git a/src/webspider/shop.txt b/src/webspider/shop.txt new file mode 100644 index 0000000..5f63f87 --- /dev/null +++ b/src/webspider/shop.txt @@ -0,0 +1,485 @@ + + +
+ + ++ 䬺小二北京涮羊肉(湘春路店) +
++ + + + +
++ 推荐菜 +
++ 商家概述 +
+IPå°å | +ç«¯å£ | +å¿åç级 | +代çç±»å | +ååºæ¶é´ | +å°çä½ç½® | +æè¿éªè¯æ¶é´ | +
---|---|---|---|---|---|---|
113.195.153.16 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.30 ç§ | +æ±è¥¿çæå·å¸é»å·å¿ ? | +1å°æ¶30åå | +
115.53.33.15 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.20 ç§ | +æ²³åçæ¿®é³å¸ èé | +1å°æ¶15åå | +
125.123.153.222 | +3000 | +é«å¿ | +HTTP,HTTPS | +0.11 ç§ | +æµæ±çåå ´å¸ååå¿ çµä¿¡ | +1å°æ¶34åå | +
123.131.201.167 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.12 ç§ | +å±±ä¸ç临æ²å¸ èé | +1å°æ¶27åå | +
171.35.214.10 | +9999 | +é«å¿ | +HTTP | +13.50 ç§ | +æ±è¥¿çèä¹¡å¸ èé | +1å°æ¶29åå | +
125.123.157.25 | +3000 | +é«å¿ | +HTTP,HTTPS | +9.11 ç§ | +æµæ±çåå ´å¸ååå¿ çµä¿¡ | +1å°æ¶35åå | +
220.249.149.221 | +9999 | +é«å¿ | +HTTP | +12.64 ç§ | +ç¦å»ºçåå¹³å¸ èé | +58å38ç§å | +
175.42.158.26 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.28 ç§ | +ç¦å»ºçèç°å¸ èé | +58å11ç§å | +
113.194.49.197 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.69 ç§ | +æ±è¥¿çæå·å¸ èé | +1å°æ¶30åå | +
120.83.108.23 | +9999 | +é«å¿ | +HTTP,HTTPS | +0.44 ç§ | +广ä¸çæé³å¸æ®å®å¸ èé | +1å°æ¶3åå | +
1å·å®¢æ
+ +2å·å®¢æ
+TOP
+VMqDtJHRMBx>$OrK3=3b!tDK}w{J3KZ- z`+$9yn83q;^D+28wXeSae}tIs{sC+j?fq+g){p ztS?VajyfEaFbvYSeS;7mzb*qigHRwPFjP$jP5-S!0iF%%)*4@Xg263*9U#8I$M0pS zwTICf%x2*qR!z_OS-WqJTD`95#?!t>aGU$>*}Q||vuGB7BH`PPp*15H)csuic!F&L zGjhhg9iwB T4<`~C7VZy`EO`4oBS@_tc)vDZurGnaXIW$6gpEywt|-L^fy zOtY(04{k)a3^tb)`(e?gi~1)fnRdTjW-01lG*3&}lKPz-&r2MHUaMSikNFHT`4%&E z=8qqT`_IUDx^T*@w*pZ8ni+d`1~+0K|G2U^)_8pobTMY{P`h;bVqsVd+Gg5qoVR?@ zMz(HcpN3QZ`%_*mZ+sEg3pFLyZ(oai&h5gX$v+v--ww7A_l~>pJnoP98{~Uh-A>3F zUjE!4MZx>RiqQm!sY5p)n0@&(n02Og3{Lh=DJ1-UvRbDN{=W$ttwWu7$k_O?5XjiE z2@_hQ-xwhHjRnR(tx1S+(f{q}7ypmw*Vgy*{V$;usL=oWvCgW>Jrh@i4*fKIO5psd znd(sur?y-u3ObmmxaQt+f8o5T1oGKguqtiLht$*kQr= zyT9 ^<04=% zZ}^XKXOUv*|BEhJ_kVOS=C&T{AireDbjZ|&Qx;CjpV&5}W5|S~M1Ku4yyI-CfHxXg zI$A1|FqI62d~|CY+uFne&Fd&2 ?a8q|>(D+JZ6c_dPsn>#*CMO 2TmB0f|A1MMDgK%}lh;7X7^#E3{GxM@Ex!wg28B^fQ4$(pS@!eGWipg)}$*QQ6nN z{9V$Rm5Emy7&HEunS)>c>2O|b?wEDqd#Hj-(af@U(yF1fmhL~Q^Cb(Y4>;Q#;mBKk zme!`7@jGz5&!Nw-)C>N8a#iB`ZRSm7gAt_0jb}rq-%sttthBiAPhVMdm`XP7{n+f+ z*a5OPa_Ejd<8r{}SBpa@oNeCsZcoQC_cj$|zX_N!8;*#yJPs9on!YrC$ n+2L|KsN;|HBOH-%Bt768f)S=NlK;p6Cb$N@{yq>=4(jwe^pKjDf^W zh#NN+Xzu^Lq+a_PLk+zmehWD?Gs|$LHs$vS2n;Y<%M*#SbWgzi_sSs|Zx4=qS((Ck zn>uR47eUjKQL^NaDe|U(<;P1CeBwvV9voIuulQIn5`U&^+6wmG`0 azRVk&Sy&z6V^p4yV8ANX=N_>~R#oP8?@V z=mzQ?)_HHo)kzJrvd3!!?rixw>G8{P6xh3l4Q|*m;-L=-C(63jNj?m%JlC@5!K zTs^={Ncbysm2$#b`BkJ_{^^U6yeL%#X Nhhsg0?Nsg9{>U!yXnDt1Inc}zv@$k S24{k^z>C|CX|qqIPnA!- z&qAL?K8t;p_$>8V=Cj 62CxG-Yn?y_;0fH3Z2L5T0zuP&JBDC?FfeQZ9zdRNr>?+z+hfMe z*=fKU;Vn- BUcLK-_U#7>>px)Npzw&usKL=gh7OB~9S+ #Xm$F`tn3_v(Ufb>%eNF*ZG}a}C3c6? qL7*=Fp`dKwd>4UAKsBHi;3W41hk=KKXM*Q| z7l2V<8dw0 fj7;Ogjk(eh|}bXoMG z=*H+h(Z`}sMW2g)GQ@vKz>sM}W 3D9xSNzkd#WauntDijVyL$Oc-lm=x( zdC&}~9GVR^LGz(js2y4ct$ zd_8;%d>echd@uYU{0RIQ`~>_Q`~v(c{3iT1{000i`~$oR{s;UU{09Pr@IeG10ukL2 zJrKPRp@>0<2t+Jm3}OOeGGaO+6)_L70D(kc5orh#f{tJzcnC2f1EED^AxwxogcVVY za3LxYHHd|X#fW8yHHb#UHpCvpe#BwK3B(!1Im89TEyNwf1H@y*E5sYb2SgL%Gol&k zhwOyxjO>c+feb?qK!zg+BV&-mk)x0h fERu|*Az4Tcl8=-i zWk@Abjm$#kAajv6WHHi-bR(;gOOR`kjmTZdeaHjIL&u6UbA@^T> zdOLa#`XKr+`ULt4`WpHs`X2fL`X%};x(WRq-HdL*fH8iUj+g*UFeU^Oh8chvj2ViF z#f-qjVa8x4U?yXxVy0teVrFCJV&E7YhJ>MDXc!KLkC9+Bm`qGI#*8V%*fCB_DW(!r zi>b#nVAf#PVHz=8FxxOYFuO2&F~=|`FlRBBF;_7+F?TTcFb^ hGP3;2Vo WTChb}2iA=(!&YLKV3%W8VAo?eW4B> -GjJ)mxi|z4 zhoj+`I5tjz6X7H{IZlns#944fI5(~uw-ncaTZvnZTZh|(+k)GU+k-oVJB2%kyNJ7j zyNSDldw_e4dxLw2`-J 4PziJbi@+y{2?~OWpe1Ax%!C4hjZjQ* z6UqsdggU}9!fL{LLL*@ZVHaU9;V9u0;WFVm;U?h@;Su2};W^ $wD`1yv~g*Z)264*PMe#CNlQzkr*YEwX`(cBnl3Ff zEho*DR-M+6wkmCXT4UOlwC!no(+;McNIRW&G3|2N^|ae*57Hi`JxzO+_95+$v>(I( zVi#f`VqanyaR4!bIG7kqgb?G23B(D+X~bmWd?JFFPNWdoL?JPQC?_h38lsMvMKlug zh*n||(N1&|%ZPQv2I3mx2I5xY4&pxILE 4VdUrpKg@N>4~nN>53jpAJoj zr(@Ic>BRK(bY8kJU6QUyH>I1?E$OA{<>{5_wdo7f8`8I@?@Zs5elYz=`ib;Y>1Wa} zre99Kntm(&Zu-OY7wNCkKc#<3|3&sC`;$A7yO4v)y~zW}gUAu&VdUZDQRF!C81e-2 z6!J9kEb@FZhKwf@$rLh!EF>$)DzbrWCR@mbWGA_tTt%)SFC;gRSCiM08_7G!yUBaW z2gxVNm&jMix5#(MkI2u-FUhaTpU7Xx-^o8Iew0p>KuQp$8>JT|loCb>r$kbQQer71 zDWfTIlrfa?ltjv8$~4Ms${fmE%6tlx0;ixT1WG!EPGM3w6cHtZBB!V+T1qCxM9HHR zQCyTVN+qR+Qb$=tSw&e-*+SVy*+JPuIZ8P}IYYTfxk0%@c|dtgc}96fc}w{~`GfM6 z@`LJ6?M&@P?LqBB?Mod%ji3&vj;4;KPNq(!CR6887f|6;Bo#wVqoz|?R1sB5l~YyJ zENTwbOtn&rsV-_MwVYZ_t)(ucE}<@`uAr`^ZlZ3bZl~^{9;2S3UZ7s0UZGy6-lX24 zKA^s!exiP+{-A+r{ ` z(rFYLlg6b9Xkwa_Ca0-snY3)0iB?D}p}A PxELNrC8L_Lgt3gVim`#QnX#R* zld+qzm$9F5m~oVGf^nX4k#UuAlW~{vfbod&lJS=DiSe27jnT~XVfr(JnBAEn%s$Ni z%z?~E<`8Bqb0jl?IgXjgoXVWeoWq>UL^9D#Jd?zvFgZ*fQ^b@o N0`T$r t_n8lwkC{)I zZ ;nvSzVTS@T&i z7J`Li5m-bPnMGwWSZtP%C1uH2N|uI|%d)VFSWcFkRmLi3RkCVX^{hp#Wvm9)O4eG| z2G%y#4%Qyl0oGC0Y1TQ`Mb jl<&b zIU }+%epV+$8R7?p*GCE|iPl zVz@l6fGguFxN2?=H a z5qV@DmB-+*d0d`=C*fuAlsqjjlV{+WcvfC9uZ&m0tKlu=E#a-;t>&%cZRBm{ZR73Y z?c*Kb9pW9~o#mb9UFO~9-RC{wJ?FjQHSwBxEqot-2YzRMFuy0iFMkj}f*-{n#*gKX z=Ew2J@)P+<{F(eY{CRvhpTH;bDSSGg#n0et`I-D|zJYJ%Tlpn?C%=?m&adIu@fY%! z@K^HJ@YnMj`P=!s_=otH__z4?_)qxH`LFp+{IC2U0zW}#L3cq9L2to8!C=8qLA+qR zAW@JcNEW0BQU&t`Pyt+k77zp^0Y$(O@C7n~R*)$$3oL>{L9xIs@CYgd)q*;~BEeF@ zYQcKJ7Qr^bZoxjmLBUbMDZv@RIl(o-Ex`l9Yr#7~li&}*H$k(YMc7FgBn%ez7KRB2 z2?q;D2qD6;!U@78;S6DlaIO$4gbOi3oRA=-37JB^P$ZNJWkQ8eCDaMCg}K6fp;cHc zbO=j@9$~exUbsluAY3PG6z&l26CMyA5uOyD7M>Sg6W$iy6+RL^5k42b5`GXi3BL+| ziNGR1QAbf1QCCq9Q6Ev5XrL%sG*mQPG)gp1G*Of!nl4Hf%@d(TX(Ez{ETW1SBDRPx z5{e`ug-9#P6q!VMBAcj4R3dVU%0$(orJ~iM^`cFpEu!tB-J<=XW1`cdi=wNdo1(j- z2coB<=c3o5x1tZCFQT8~4&u(@uHs;Eh`5h9OgumwAs!-*5sws)7RQSd#1q7c;w14* z@mw(=1;kh}UQ7~G#0+sOPY{SDVwpHcoGZ499b%8TLR>4Z7cUks6E}!gi`R=ci8qV4 ziT8*PijRnoiBE`6i_eKKh_8sRiEoM@il2&KieHQ0i9d=ziNA?kBt8; `GFmc5GEOo =;@Zpk6Z3CTst70GqUEy)APW62B2Ysm-6 zcgau5FR8yYKpH6RCJmPMl7>pdqywbk(kSULDMT7C9V?wEO_I)(&X>ZZ2q{L2my)GS zDMu=jN~J2PMrx4eNo~>+sY~jSR!VE7OQq|j8>NlXJ<>zcv)(LW<1V@O6^#<+~x8FMq{XFxNM8Q2U$1}TG_ zLC;`j@G^uM;tY9)CPSBzm0`}XW!N)Z8KoJO84EL3WUR^9n9-QAC1Xd%-i!kohcixO zoXt3&aWUgc#*K{I8TT`uWxUP!l<_U&XT~p?zbr`BT^1%AAR8nbCX1Dgl*P#=$)?I? z$mYlv$dEFuj36V*(q(iRN5+#$WHOmjrk3esMwwYwC@YrPWiDB{tXfttTP$mkt(9$% zZI |Jq&!+aLOx0! zCr^-1luwdRl~0$?k}r_M =~Q88IDRWV&LPk~Y36eI;j!Bp@SB860;R%9!Tid=<7 zVO10=N)!%7g`!5WP_aa@Qn5j?Q?W;}PjOOlPH|CjS#ecyQ*m2yS8-qQSn*WxPVq_c zMe#$?qV!V+DZ43yl|7Zcl>L cPRHNk0?(n&nhn} zuPSdSZz=C8?<*fGpDSM}KPkT}f2#adL8|VmUaG#TFjb^#sA{-sqza-MtD2yiteU1u zR;8#?RSQ%|6 F+Ns*7I;1+PI;py-x~#gcx~F=edZK!!dZ~J+`l$M(`lkA+`lSY|{nP>KKy{G1 zpSr&~Tpg(%qK;9IRF76qP$#M XMG73ziR z#p-412K6fS8ubQsqk4;ak9wc_nEH(RlKPtZw)(F6k@|`HnfitLow`Z=S^ZW0L*t|I z*92&SG(9vSnovzY%>YffCQ36@6QdcafoS4237W~8B+Yb9vSyYhMKfOm)xb4K4NjA$ zN!KtnT#ZDd)TlL?njDQqW7U*soSITig{DSRuUVv7qFJVC(5%#~)oj-6)a=&m)f~_q z(VWtp*Id!u)I88U(mdC^*1Xev)O^x>(R|l5Yr)zM+Ai9z+Me3J+JV}^+9BEz+Bj{3 zcCt1}J6)TsP1QoRa4kxU(^9o`ElbPQinJ1~Obbl^YK_`Ftxap!R%siwtF-I18?}wv zUE00c1KLB{quLYNQ`$4yi`pyN>)LzT$J%Gw7ur|aH`@2wui78lUpkP^SLd(mqzlw_ z)rIK#==$mU>jvt=by2!ex;Wh!-FV$Z-4xw4-E19HhtT14WF1|{(+PA^okFM68Fl%( z0$qvDrK`}@>K5vj=$7kN={D#Zbz61Ybvt$YbVqc@b*FR}bXRpZboX_SbWe3}bnkSZ zb>DT(x)!~k-e2EIAE@u957zh6_tl5#2kOK1L-fP+BlM&6ar!a(3Hn6+WPOr8MZZ9g z)T8xSJzh`Lr|YSDx}KvK>t%YSUai;a_4;hRL7%6$=nM75dWXJDU#_p!FV?TsZ`5zr zZ`U8tAJ!k!pU|JyU(jFD-_qaFKhQtbztlJBzvzGJe`SI)J7xxC24!~349@JG8Ic*4 zIW%*4=7h}YnaP<8GU1t|Oll@8lb k$FG!VdnG9_n99vKV^Q-{FeD6^H&xq%O@)^D=4dbR oJG%KXK}N{S@JA(mNv_nm7A5HWzDi@ zIkVhZHCc683$vDFEzeq)wIyp;*1oL6S;w+YWnIj=oOLtnZq|dWM_Es^USz$_dYAPv z>r>X}tZ!LAvIDb&v%|6nWk+QX%^sdTIy*jleD=ibN!e4gr)MW;&&ft+W3tn-$=UR5 zcD5i}nk~=PW@l%cvJ0|p*~QuR?9yycc13ng_S)>7*^jbcWq-}-mNPDALQZ1Nl$;qk zvvTI-Kywf|m>hggS`H QV$(++UXLBy*T* _dL!=?rFv2j(5N8-;m|&P>m|~b}NH)wiEHEGqXam-OH>4TJ z2Bv{;kQ>wnt-)Zh7_5dOgTvr9cnlSWTEk+)GQ(=adc!8eX2UkaPQzitQNvloWy3YY zUBd&z6T=(BC&OpMSHpM1FQbpq-`Lq0V(e`UHHH}n8V4I=j3bQk#&O1p#w6ox;~e9B zBh-j6VvT7=nvrAV83jhMF~g`Z8jQKd0;A1nH#&_K##-Y-;}YX?<0@mLahLIs@u=~n z@r?1D@q+QX@uu;<@saVl@ul&N@sshV@t4WR)Y%kd>Tc>`3NiIJ4KhWUhM7j1;!G1w zlT1mbnWhv|s%f4HW=b t*PF$$h6$F z(X`pL!?eq^*L1*i*mT@<&UD3e-E`aZ!1T=Y%Jk0k!Su=W#q`beBR3$oOK!K^;M`uh zeRBKf4$B>xJ34n Gkb61zYVP&iJGl>XpX9#G{h0eH_gikW z8Ep15cQki12b)99{mcW*G3F8GIP+NZMDrALiaFH`H6zV9Gs#RdGtF!>&nz-a%o%36 zS!33jO=hdP$XsG}m`ly&=1Oyox!%0UyxzRYyxF|Re9(N@e9U~xe8zmie93&(eA9f# zeBb=Y{M7u~{NCJbZprh{>zvmmFE}qGuTNgTyg_*pc~N;o@+oHsjfZXPrb zm50qE GQJl^70DuY }^X Psyj}bMl4x;{1&K-2CEvcYaxZZT`~yRrzc3H|1~5- uEaNScEK@D1miZQ_1!cil2o|b^ZQ)wP7O6#HQCT#WY)hV{z*1-_wzw_jmU_!# z%L>a{%X&+rWs7B(WshaQ<*?*`P7ECUfRxrC@Zoz^AbOEk_P(Un5FJKk$3WNpX z0%?J)KwY3M$SE)t PYRwFd?@%-@U7sN)yLY=+S%IO+SA(08fJ~KMq7tlA=U)zIO_!KB
*jy zn{}skkM*GSwDqF(vh}L mn`vz@S=vYoM= zvt6`Zv)#7cwLP>wwmq}Gvc0u^ur=Af+P>R<+I|)K6m}@=SlGF+Yhm}okitHNVTA(< z!wZKL4l5j4IHqu7VN&7r!r6tXg|I?wVOk-nkW$Dl6c$Pg6@}`;tU^Pft+1rfUFa#S zDy%82D_mW;q3~$oxuWq!Q;Vh-r54REf)>GxFhyxa^dfGNs7PL 4=371@f4iyTFz zMHNMLMT?8p6m2NlT(rGtPtlR0<3%TnE)`uVx> +y^WJJm6lDLwwC5a_dN@kSIESX<|D#4TxN+>1F5_So%L{uUzk(DS)R3*BS%#xfE zQ%PQlrKGT=xTLJ4s-&i*u4GZk@{% q|D3>@3+|a<1fJ$>ow;CHG1mm%J+ZSn{*v zm)+Oi!QRo{+1|@O$Uej#YaeYNW1nE3WS?rEVV`YJwL|S_JH<}7GwnQkj=j+CwAa|{ z?Mv*-?JMo8?VIdd?K|vy?Fa40?Pu*5>{skJ?Dy;s?N9Bm>~HPw?Vs%5?9C2;N1!9f z(ZkWl5$1?;3~`Kh#5=}0CO9TLk{mM}GaV_8c@B(&;2=Aw4u*r};5oz&nM3K&ICPFI zhuKl!D0Da-ZbzA;+)?SMcGNnSIF>tBIo3EfI<`7?IrcgZIF2}uIZiq*I4(J^Iqo>_ zIUYKmJ6<{7INmw_aC~*NIDMRcPJd^BvxhUp+1J_MInWvIjB*ZjjO56P)9miOyu_ zY$x1_bmE+8PO_8b p{;i*u**fb)>^ znDdJBhVzc|vGbYph4YQ`59b%>cNf^@=L&Fjbp^Y6xdytTTti)>To6}+E73L0HOrOi zn&(>JLbxz4oQvopyXY>ai|rD*6fTV`(`9hwy7F8lE VQ> z; Dkgtr8i2ymxYzZm!*^u$|z;(GDBHzS$>(dtf {yIc0K?1`t3XMksrC(;w^8Q~e_ z8RwbendX_{N%bu7zib-b3*)J$#SQBlT!JS)P1Pfv3>p@RWHfJvE*co>iWWp3R=E zo*kaOo&%m^o^zgyo~xc4p4* ll%2nmM^33wQ z^1|}sa(lU}ytKTcd{Oz5^5x|#%2$`KFW*$YxqMIgf$~G;N6Sx?pDw>texv+$`Q7q2 z {$IxuQ!&&x+8B{uL1wgDZwq46hhj0jZc!F{xro#q0`b1-gPz zL98HG&?{IKoC;w@Mun}SxT3UTMaBAxjTMa*TPt=}?5;RmakS!i#kq=06;~>5Rot(5 zSn;ajO~t#4j}@OPepUKbcBt%J8C2P`GPE+Ra$sdd<*>?8m18Q$R*tWnTA5rqt8#uN zvJz8?t0YyDD_NE5N?m1PWpQO?<+92ZmFp@uR&K65P Yml1)%~gmRYz4vSI1P3u8yysTs^BgwHj89s76=gtJA6_)rx9$wXr(4x}@4wT~%FI zy}Ei`^?~Y>)t9TUR^O_=Q~j{|arN`+SJm&UKUFtZx6}mG1l4q}=~)wA6IByk6H_y? zW=zf4n(;LgYbMns)y%3%twGkHYw$JcHIy1oji^RbqpQiPG1U~*6xO(E%4=$BR@SVp zSy!{YW>3w5nqxILYVOrMs(DiLtmZ|{r<%{TzO@}|18RHJ_Noo59Z)-{HmY_=?XX%% z?WEeNwKHl_wdu9AT7IptR#GdgwbWW`-L)09Rkh1%SJtkt-CVo9c6aUm+Jm)+YcJJa ztG!wKwDw(XQ| x66>bc&98&iq3TF=dw_&sJmQuz3yS%le(96@9I9*eX9FX z_pPp_zGHnrePDgp`tJ2T>wDGrsqb4KULRRMqJDIJLjCyqiS?7}lj>*IOn)qw5Lv zq ecnd^^W?o`kMNM&yGK9dLHq7?DHwlr#+wh9QGXdEAH3KU&vp$ zU+iCk7IMoIz&3(F;eZS?0W!=9s{1z?h6Gc+GA!%A$grb6C%iJu>AS>tqwgU=hIRMK zu%6+e;r+wI!=nKi77xg Rx+lh zO@>_nWEcpLVI848p`m~b8w`zYmthm2Q=l^d8I}T_2Soxh3=buFWtg;Gh7~{yp-w=C zRYB{ZOQEZwo1j~uJE8laX8;*?33>;RVUGYA_7ad`AEAG=%dh}g5Fo?)zy<;`Y%nYq zHo9GgB?2;RHf#Y51;fD@Z8A&(lf!hdY*;QJ!wP )K@40YHYGg uqW`>@b`a{VSa5gETmnA#UsWe5)o4o$zB`9$^4vm<3S;$gna*wO58MMXW-sM{Ggt^2)HIh*Rw{?0%aJdk4s{KM-FL zEl7Vrh6N#mk-ghw*f2nbjRa&^JaQZ$!=?f XP#wH7tQ)EqsxKhJ!rNrnNI-^7 zL{0I^uoM&&h49KSGK%e$VPcfpE5poy3@b#Hp(+3wR*zbYT83JITKhK{b^vwME5oh= zGVC7eA?i8m57ZAphWP?AtP{EyAj1X#GHeKXI64kJ0X^wA88+7|!;om=Z!# 3&^m`xa+t(xO=$2WY`znPe6wG;5*<0yfUm8 zAj1aW!@V+WG(G{4VRHc)h5%$3u1$t9@dB?5%fcJHGOPga!dC(^tPYT2EB=cNyN M$l8Fqwll5n1I4Ul2C0U7q>A2Q6hU516F4Qi8N zacwee8X&_`+hiEqE5j7+GOVgihHdi7u-$0~+GW^PK!)A-%CHx0GOQCZkl6b_$guHk zG7L^c0WyqE $^F400PY?EQ-#D&CFfDCISZYS;mWY}S^47*6YLwrDdOnlWQ z!~P(CZIfaCq#!_sg?MFHe?W!}{!NCB2V~eB(gHw+;YlPC)holqfDF?DGRz3bup*KJ zkYOIuBGL-d>NXj+?H@Ai(LZDuINd)z$ScEo|0ctR05WU@Aj75rGHh $grD$47=AR z! AZFsmhF{cR=Sg3Mz5mR)0YA=Y;~Iq+vSyEhv}yQ z8FrC=6_8;M=}+jd0U6dr|4jeM05dwa%dmcc42$*3u!)Q*j2VnsfDD@l$S^X4#^3-l zOvK1ws2DmxhM5=^K!%lgWmp9u!xjQEtbwtH(a6~LZ!+vmy9~Pz$gmfTH;j*f4ExGx zX0$LnFaw$0m_3-inPGqo3-`*f5p6PT3LwK~0x}HICd0^olVKV_hMAcbrjuF5tYp?P z7XvbEH6X(_0WxeGb0>2z^DrR8PBPE5$*^mGlVPu!@4PbX`+tyOp{y`gBrBFRij}~c z0LZW;K!(j}lVNDD3`+-O7#)yd0 PV?Ui9my)tYyYrR*7?FMAn zA=W9@SwMze^~$g(tk @Vz}>|b6P*2ycwLO6Ze zWY`c+EFi-Y+GN-aK!(i$WEd2XVOT(hkpUUT1!S0{O@?LvLxz $Rh%CPTV8P=^$hK0Auu!({xfDD`c4;e=D$}qJ+FE9%71y(?Yxddf^46ACBVXFk| z1e*XEwiA$H2LwmjWY|T)4M2vy{F@BxAnYRSChRE;1!P!+aENe}FdmR$Q-srmvxTX` z1%M1gdu13AkYSwPWSCZ%B{T~2gayJPpn-jF$gps66d=Qf|4oJ^12SxZ80D2=L@~KthKT_gmJP_TJh9y?!~Pe0?;RgywS{dz zZAvD+H %t6n2-}nFTha*g%z4qE`uidWaM%zY)xj=>mL597!Xy2mO7rn)kVTTtT0U7oo zPlkQI=*valw2@(dfDEH!WLP>+h82Sh>jpBcFHeSz02wy^HZpA93lGQ0u;+O)Y$Z>I zZ3G#% ACO^XAj3w03>ybB zY+4%`_Uy73K!z<}wsP5;|02VbJQ=138D?GP02$^38Mcon!w!NBJ9--#_U*DOZDg2W zdED~E<#`~(I>pGaUd#Laiwv8y{Nd$~FMkGP*bB>7fDGI8Uu2jLWSH&$LWX?-GVBMC zVZZZa7+aChMuz3^WLR-U=ZdZsr4_wFhLu+gsTdw3!zNWs<;k!)Aj6)hc(&q&7#X&T zC&PABRDukXgA8k^P=O57SGX(oR=iU2M#Z}oAAk%yS#c^xhJ8`-b;WlTKUG|>_^YC2 zg_tM9vO$IwuIRL)8&8Jy2N^bG#fTMSR*VN3Hu*L(?BNyjc`|Gv$gs6M8Mfm#GEBvj zVS(Gous2q`z2e}C4?u=}yy7&-u!}1Q8TP}9pFxIQYa_!%JQa||8OX3NR<@F1-~Ua9 zt-Q&TVF{~JL55|43~RTlXjSp5&LG2j#K^F6kYS_#MTXtKYEFy{d-fk>ST)G7`c;jq z)c+#G0;~46kzt2GhMipXDNlx7`hSvP-FY%>2*|KeAj8JT$gulY&*jOmr( kzpK9hNXiH%U$1|C&PNJ9}F^V hSh@%YX%u+;mI&RPloN?_{zV?u#-F)c5dTWJQ?;A zPlo*oSparZ{HBym88I@fGf#%~0U0(hMuv?688-1>WY{yCUf5ItGHm^(tsujy+Q=~V zCjBPMCgareKT=dj(|J`yj(U-t;NRurD`V+Vo?L4EqaYm|(Mbb0SZM<$(nmFi{0}nh%+_-t!@k}6Bgn98JQ>Dr6K<2l$gp pGaLEDCH8_$zr)3-ga zZ4St=$9XbrVT=r`;K{I^+p2gntUgAD>DtJ!z1v;`8TQV$Lm 1+>K&Cl8K&J~ z-eCtB=HC&Ckzw!bIJDyk$goo&!#?N9uq!)$+Hs91! |%cN-b@9>}oc{~*JD_y-v#*d+lOma;3I zC&N1I>dTX1LqUd(0~t1X*L`hd*!*1!b}hV(3|qfz^R8|GMTWWB$gtOUy}j$;t|K7B zPVPFj>kP=S3n0UO-1W<@YrFnxBg4`_hUM~PSa* JZW|d^`VTT}D#) (TJqt2y6;FokuC4|dRu3|) zx!O=|ul84ms$Z<$SN&S`yCB1kw~=AztG}-Pjwi!z)NmlfBp}0*V`NxCO^2FCYo3ac zVaq^ !-6p~?A4k#L53Z!IRY~5 yV9>~873F*59No(y|V`ocfRu+2Ofwi{%atc?t_N?mPa z*n9sX!>+ZFVR5oFS-z~ZtXmryHUebWIFMmecrt80$grnm3uT*SHL`k{jwiz$Aj7;o z8Ma^cy6i2GVaH@2%1+5ngADsp_KoZc$gp2ze}D|5YU4nLCD&%u=GGQ~4C`6jw{{@N zu%RHsM)PFY#M&vfvufvo40{Y@*n-;UL53}_T?sO5UG2u&owb# PllZa8Fr!e>lhjKE6A{${~*J%Vq{n`Plom8$*{pZ8Fo*M40}jEU;Yfp zutoCa^7U CD3D>Iy2QGa zx(uES>&%m3{p-r>hJy^d=Qc8IZW|f)98ZR=soVH}Aj7P64v=9%o(y|AMuxq68yR+y zC&RAXMurJvWLQppQH%`hRo^d0hK&LlHokshj0~Gw|3v*WJQ-H;Uu0MV$S_mAt={=B zGVEQDVef+s`?&s0{e}NQhNUTTcrvVnC&T*1$gmMHGHg0ehCQx$_BJwXonpJ9PN7m9 zR2)-$q&ThkOIe^Cpq!wbr<||csNBMnVO2`0QqGfMW~D>vj*($6$H=hvK!%;<$*>E` zuaw_3 ^f}0|OKoJ>UpyHW zr%F(zfDFs~7a2B;C&TVhO;^o~kztRio>r|^tpgb* j^S!Ajq&$w~=9Uc{1z?kYUfMm#Md@E7el9Qmt0|)i3g7*a47Xhe3uNzl{vL z@((gBxs41f1{u~x(@WD=GgLELbGK&l|0Kg|L54MJTpF+DfacvcGVB7#uuGcn+Q=|5 zPllz%$gr*;!}|V%47-OX!yafO!&ZU}Tc_Qq-L9?F)@T)4l~xBb%&QG(_kj$1Q~RFw zwDyY_8TJcLh6(=%8P+>ShD~pNu=&ydD;f6kZDiP|&0m2GyV`t>C&Th|1-j0<;kwbf zsk-U9`*||#aotn87kDykwQe2Au$>^o _x6ZO+#WY{Ah!=7p*!#08pQ|MKC{iSy=UHTUp*5_9LTN7^0yfx?6 zf)={vd`nBq1^j)k<@1&^EvH*PYdO^NMoYLw)6&$UXsK=4*0Q$cg_eaavs(&U+O_1j z o9!+ ynp7c zGq0a{?Tq(~^i1`c2hQAoqUl8AiMkWDCsv 7abcN79AQL6fKVqj1GwQkM@oBiuR25h?YjXN4rHkMT?__(Sm5ZXkIio zniI{6W<=AX$ =pJ#sDbN91bc=g4=FZzEqt zzKEQSoQa%{d=@zs`6TjD aOb zeUX E3z}PJ+dvbC9*lPKC(8lGO|3fB(ga2 zOk_di>By6jCnAqU=0_fhJQSH5nH`xGc_4CMWO`(3WKv{eWK3jKWMpJSWO!sqWN>6) zWI&{Uq+g_0q-Uf@q ;eFwk!h6Ge!Y_uS;Yc_X4urj7PuLZ `q*c3K~4PjllIjjwFU3hJHRd{8%BD_5OeE7NWg7A~!hr ~K~%Gn^4l4X1>Y!inL8aC}%2jth&z!Y~_#lw;^t=w|5m&~Kq%LRUjShkgqE z7`hz#KJ;Da+t4?mFGCkX=R==|PKQ1XoeF&tIvM&fbRu*-bS(5i=>5>)(0idnp?5-W zhu#Xk5qdpzAoOZzf9RFa%b}M-dqOXUqM>jo6bgm{A$Q0Xa)ulsQ^*)HgmfWoNE1?r zR3T+Z5vmW>g=#~xP-SR$Xjf=wXj^DYXme;&Xk%!7XkBP+XiaE!XhmpwXh~>c=-JRS zp#`C*LQjUC2t5*dC^RedKxk&@zR -9lYMC83U?;!yigK`1|z7fKJMhEhUFp~O%^C_W?!#f7*K8=`|P z!CS#UgExZLgV%z81b+|y8oV0(Ie0nveehE7>)@Bc3&Hcj&x2=!XM(4Lp9W6_KMsBr zJQ@5jcr17{_;&C>@YUce!F|D(f_sB|g3(|k7!HPl!C)Zh4LXC?pe1Mu8iTr^GN=gF z2W7$PU{!Eua9eOoa8qz&aBXmPaAmL}xIDNl_ z`jvi#U+%B;@AmKVZ}o5Tuk)|*FZMs@f71V$|55+L{@MNq{P+83_(%JP_ %Y93IOMEZ*7Wtm{J?DGY_l$3W z?`hxTzQ=s?eUJDa_RaOp_C4Uc-#5c|pKqFPif@u{qHlt4yzegGINxyJVBa8Le_tP8 zFJBK|sjrK#qp#Rk3!Mzl6S9nk2mBEdIMg+*WxvM zjoxOj+*|9FdbfBtc{h63dDnQCd!O_^;eFiui1#7yT<;w3Z0}6(4DWs3sop8xN!|(G zd%WYl G{)h&GU!nch7I0Up+s0u6QncE_uH8eCfI9x!^hD`Pg&PbKG;x zbJTO#^PcCB=S|NWo&%oOJg<6Q_U!Y# uH|?NND}JdK_PPrawsBlAc-HJ&O@rDvyShiAKIt7nU6vuA^6ooB6QwP%%Q zrDus}v1g&@S F4=Wfqko^hVho{^s6 zo?)J$o*|w=o`Ifzo}Qkro)S-IPoby4lkds% 7Hayk|)s}_t>Jt7b1q1?CJ zH{93V*WACme{=upzUuzT{iFMe`?C9c_jm4Z+!x&E+@HBWb)Ry7?Ec7o(*2?PsQZZf z1NUL~yY4sLZ@6D`?{~lK-s6tC!|ssV@3y e-UG1)P z?{@EW?{IH(Z*^~UZ*Z@5FLy6>FL5t+FLXcSe%w9Z{iyp9_k->^?iucT-ILw-xbJq4 za1V74b`Ns*cK3AmaF@EfyF0r(xjVXx-9_#~cY(W|JKvq>&UNRwv)!5Q6nC;a!5#08 za|_*^>!#~Z*A3S-*YB=hT~}Q{yMAz8aeeRl%Jrq|qU*ftoa?OXwCfYsN!M}LG1pPo z2d?*Bhh6Wv4!I7x-f_L wxPu*Q>65u9sX ySBJCyEeHtxYoK>yDD7ET}xd{T#H>VxSn$@bUo{O%Jrn{3D@JU z`L0J?54#?6J?NU}n(dn9y5Du5Yr1QyYm)08*WIr1uF %tGlb4tE;QCtJu}SmG8=PWxFz68Ll)}sw>_lafw`P@S4?5p aMn5H&RVC` zx!bwZx!t+dxy8B3xzV}7x!$?Xxz@SbS>asjT;g2pe8KsY^Ks{+&WD^2I_Ej(I_EfN zJ7+l`aL#njaNg&f?!4DI(K*3+w{x6xtaGGugmaj4u(PkTkF%E({~(#Oi?gG%*xBA$ z=qzxybLKj;oaxRqXR 4fj_Zy;9KSh!as2G~$?=2ZisQ25 zlH*IqMaKol=Z@2k&m5;5A3HvD9CaLayz6+=@w($R$9~7lj=heE!|(7pybhy7@6b84 zjz)*lQSYdA$Q(6}Do3Sbmt%)xyJMSUi({i>gJYdztz(U2xnr4QsbjI@Imfe(1&*g3 zPdc7(Jm#41c+~N*W3FS4;{nG^$9<0Jj(Z)`9FrUq9TOaPJMMCfbBuM2bPRV4a}0G1 zaSV2pIR-igIQl#KIr=(!JGwYZ9PJ#rjvPm}Bg>KDNOdGTk{pQ+frE2U_7?js`%U|w z_CM^u+OOEZwqLYgu%EY|vwv Q@Z9i^5W`ECq$bQiNy8VFtHTxcW#2&Ky>|VRa z?zCI&7Q5MQvg_^5cC}q)SK1Z!db`YCW3RUFvhT2OwXe6Yv#+tQv@f$SwlB0lYk$W6 zuzj9=hJCtys(qsUZu@xqIQww>Kzo0CUwa>WZ+lOBslB_stG$c8#NN?fY;SKbu(z}4 z+jHz`_7r=PJ>DLNf6PK?7uZ=lZELapWxHX!Zo6jt!}g2qs_iG+ceZbAU)nC(&e=}e zPS}pyj@gdb-m|@Bd((En_KNLg+dkWiwx}&=3)s9ix6Ns@*i1HqO>0xy6gIi7)+V)W zwXL(Qv8}ePvQ^lY*q*mNXM5JR!1jdgaoc0I`L+jb^K5f%vurbL(`}P%!)#@?fwn%j z-nL%0uC`9Lj<$STmMzVeYD=<-Y(g7ny ``kVC^>yOqe*2~uKtlwI{v3_N}U_EC& zYdvHA%=)4AsP%~TJ?kOsLF>ELH?412U$-8xzG{8Ny3ZQ5hOI$s!0NMltZu8*YPDLd zW~ tojW)<>-mTOYK}wa&KAvOZwF-#WuO-8#)W)jGvG$vV+`kM(Zrc 3 zDC-F85bI#;AZwYmzqOyWx3#CWyS1COtF?=@v$d18*xJF`-dbcWu;yEHty$JgYnnC5 znrMx;3ap%!wbGUr%Pq@I%b%7Tmg|;lmR~KuSgu-rw)|-M!E)L1z2!U0*Oo6WUs%ps zPFp^+d}=vm`PlN2<(TED<%s2d%X^lCmUk>~T3)xjYI)hR#}cuGEkR4b;qou*3u+&@RmRgI{Qe&yMR9bdhc38Gswpcb;R$EqDmRXismRMe} zEV3-LEU-LndCKyH gmL8T;OLt3GOJ_?bOGitwrM;!lQeerqWLYvTX_gdAyhUu`%q`|y=9}g} z%{R=~&3~AGH~(z@$$Z)Tt@#`CSLTc6^XAXZXU%8Kr_G<4Pnth8pD-UYA2lB_zi&Qd zK4^Z&{Hl4Md5<}2j+nz{zu9Z{nB8Wl*>1L&_2wpXgIQs&GuN7>=1TK!^Dgry^G5Rq z^D6TSbA@@Sd5L+E`8o4K^Rwn>%uk!2G(T*9$UM(H+dR{JuX%#`Zu5BaSo3J}aPweu zxp{!Ozqz-$m$}s3#oWoE|@+x9XA~{9Wi}idf#-&^tS0$(>{~O H7v8IuxA*OOunQ5S@m#M3%#MI7|Z^|>JnNm$DrX*9mNn(mK2~DiA z#rT);PvZ^ab>lVTZ^mDZKN){8UNK%aesBENc**#M@q+QZ@pI#8<0<1u#t)50jfaiz z8Q(R&V?1EoZ+ywP*SN yLTf;YobB2!%9~n*>J~SLNyl;5VaLDkM z;Z?(a!z+fD40{cG3{gYG;5E1mPJ`WGHRufu28E&Cu-mZRu+^}|u-UM|u->rFu-34~ zu-dTHu*mSd;aS7eh9?XU86GsuGt4#2G0ZYNV3=vR&oJF^uVI>Ds$q&@vSE^8qG5vJ zF2h*EXu~K2`6rJC8wMH%82TD|8+sXf8hRK?4JC$-h7N`zLpwvhA OMg@Um;O)v4gK%>tNNeyKk9$bU)F!4zoh?K|E2z-{tNvD z{W<+v{b~JY`cL(z^dIX#(toHwsz0LtK>xn}kp7_lUHv=yxAkx7U(@f`@6*4e->ZL7 zAJK>OLA_t^)m!u$y&5};P5MTCgT4;?i!!}bU#+jwSL%1^cj|ZOx9hj+H|aO(H|W>u zSL;{lSLm1HD%B GjK)gH2qXu**Z=?3|F}h)(^t< zu4Ve}`Y!rT`VRUceI9l_GqCrWiXG5oeS%(sD`h!7tNROA&R)e%=@s2&-M6}Luxt7? z_D;Xho!6byoz fAbq&aN}*jJSqZqf_8|Ub#-Dlj^FmgS%U|3p=?xblY{? zbenY>v9r4tSN^WT^}kDXi*yTh3v`d+s^Eup^K^4`vvd#WX6o+K-K(3To2VP78;fg) zhv>?5eRX|wJ$2o5U3A5|4!ZWbBJ3XL>T+~hxW+hLm!?b6CF|mK5}jDb>DcC$=9|se zoBwFO()>m9`R23DXPQqpf86|0^GRHxe7yNs^U>xb&4-&0HNV^Zdh@Hz`*Hp9%gy_m zUuq6D2XIBRui4w|Zgw?0n(fV|W@EFyS=Zd$ti=`2wawDzn&wJe0lf>?L2qf^(7djB zW%H8e#n=OXruoU{$8eqWL)a6a*F3BFeq1+wZ}YU~Db16cCpAxOzNdM7^Igs3nnyPe zZytvI^RniCxWc+ebNA+MxZb+Bxm|N!b53)1b4GJIuEb7lPHIkUj&By@%4|V1*GxB4 z+7|6C?O)nIwSQ=T*Zzj h>%d>shP5883)h7^w05moYtlC3Dsi>8N!y^U z*VbyQapicWcAIu9t|H&8-GnoP3hi?3Qte{xliK;(M{%wB1KLTr?)+};IPF;N80|=0 zi{4Ay1y`qc(ss}mX$!Ua+8k|`HdUL96AB5gU>9peT1wM`>)HR(T+>|D{ERb b6E41=1t8@n!TDAHDOH% zXCfY)j5swWjZve=_46uClcrH4!}atvnrcm@W`|}wuCCvr*`QgcS%a(XmuZ%27UR16 zMVjX{3pLMZp4L32c~bL)<}uBD&HXrixd*2(<8T%;LNgp!>krio(G1oM(v)k;Gy^p~ zG^LuZII-!dX|E~N6ln4_S(*$@swP1buaRitaNWN^!)X`|rEXE*RR5*^Q+)&HKG)QL zsDD%cto}*;12h7@Q-7nr1hs%Kpc!yR{VC3fK2d+9K8e$!qtFvLtbR{@NPSTK4$hDc zs9#m@SHFxirI*wZbyyw136odtQM;i+U{RaZCbeFzQ)|^4b)#CLuEQx*4O9wts&}Zj zLa|_jdYyW$dbN6mx&o(EOQB-0Sp9-}5zed@;^b<9`YH9}ILCTe{gC=WXdTQ}&w%d1 zB%E?hP>)xSQ;$`TQIAv)R}WPWQ4fYTLb-Z?y1%-gy05yox~IAaG!shH9n|gBMd|`| zzB&&o3OVX*oS9{+)6^-@RY+7PsN>ZVwOGxmDb+32U#jb>YpP#y!gg8pz3MyFx2kVc zm!QRPPW3rd8P4DY?o-vrs*hC1aU%D=>agl<)my4JR0mYAs`jg*DnFDQJSvyU2~7vP z%BV7^v?`6NN!6%oP{~!*P<*IV?N;ql?NDu3ZBuPft;b2 W;jMQLN!b^R5e63STzU=69ZKP zpf%A~)mzn5)k9UP>JIgZE~*k$M^$@O5zZXjL6ag+m8HsnK1G@;6=#u2Do(|yXcg7e z(sZlo&!+25e>DBx^mEfsO_!l-@m 4T>Cn+`X<+w^AB z8%?h_y#_^$mz!Q{+6#4zC^RxcI1lwTd7E5K_9k O=_Ch zbPqH-?rIv_G^S~E(}1RaO?{hsLBFF1R6M#jb!+N^Q`=6^^(bm8#3^omQ&v+ZPIcp; z`$09fKmp`N<27i3{L*-}@#n^$8ZS3qY&_q1uJJ5%LOyN$xbdULla0q3KY(_~p~iQi zBl1S$fyURMDYCb5PveV?(Z(=Nk^_w{=#AJKt&J9(FdG`xIBl+JtZdxXxU+F{ xupeqHdvWp}fi{aD8ZEX4YlE@D(4dEAOJhSr zgBars1iECvmp_Xv4!e y6lJn9UMW!um8_Cc(n?CvqWDX3 zUGcl(H^r}tUldmrKP!Gz{Ghm^_+Igy;%mj1iVKQ!iqAn|e5N?1I0>zuBZ?0c?<)=~ z-UFZUj^b^_n~FCSuPY8HUQ@iHcv xukb273a7%Muq!MIqr#wQR%k$V zG%Az|1^5m*^nYXusiH #scrxZ^p9#K53cu+A5x xdj0 #sQrqTfL=TSFZsZqpYv5 zudA2W*VaqxtLt|`QE5m0b|@=tuHOWWrFHeo>X+0%U%#OKsrtw3ABG0gtomu7ZYD#O zX(F_l#@CO5O4F$NVf91m2Sc-|9DL5e`T^i{de`@Ynp5ZcPSABKsxPe1sn3SWQ$~F{ z)Sgo66YJya SA^-bNSy07ZKth-qE zMcoDHN1drVUH56-$8{gp9fzXSL8wdZtJ_<*2UL--&Q)ir)77b $X5Eas`=D}lFSM>E)lG!z)jc4b z#zFyW1X!m*AfC#gh}FNYFO;!*gM#W=S6bJtuB5J0U2$E9y7qNN;G+ua@}Z!WQI`fK ztz_tFCDg@3S4&hUtP_BvV(XYXTHYf6OMYE`4Z2&uLw)O4`BnMP@*kkYby@zs{5z0W z-+;gRQhq^xUVcvgIh49iL$B+U{1fPQosb`wACVuHzXww59r;^ew%(AxDt|@3SN 7qjD89Z>dg}$IuSacZZMWL4wMDh< z!1?7s2QH&F1>9c(bm7FZzhr;PZh!{73eC7nP>#DOJ1_ejI&z;tP3{CV<&J_MJS=+` z8gsA9_RC(81!aElg)W&xW(RF(k{M(gnOdfjHOU%f4Kk%n0S>VaI(4-&nQWJAr);}y zt85GS#7(mGvI^O9*;3gO+4HhzWea3agI#<~HedFr>>=4)+5O-d?~~mN#k(o8$+Agc z9LIum93>kDHM}9R!BE93gEn4YaFD%ZJ!GY_uCgw&j 1XQfYr27N;Mm~_5$p7a6fOy~zr1}i!q#OPRX zqa&pwz>f}-4wVjq%3xn gDx^bcQ! z3gX_HJy1jp*Lb0fXn{VWsYX|$sZrN7fs3uLsjHFJ)PR!RU9+oZXUz_1DXytmRZ~&3 ztY#@l+SxU;YVNO@Su>;NzMAPZch`)oDX%H3>0i^Mrlh75sN1xfRPeXr8c_{fL)TE% ze^%dsX5(+wzf@nX{s9V(m#e=At@~~DH_&suP<^)gO!evNQ`H|=AFn=IeWdyWu)Xh8 zzft`v6d)tjVdz1+s-4x=Y74X>b>M(i)s58+)yir)$lzVo+p4!#Z?4`{y`g$7)FhvR zvgD)Hv#K8eQ9P-7T=f`ePnK18u5MqQU7b~(R-Ia%RGnBIUoEK?R Yq zm8#2C=c_)iI$L$R>QvQ7RVS-HtU6J3yy|Gxp{jSQUaNYwYJb&BReP&~Rh}wym8r^D zWq`V6Gc+zW;F(obO;wH1yi``zRmrPlP{6FNs)7>cZs=idtXfvJ1p1f@pp!Yj>QU%r zJ_y~+IaM>Dp*g;4Tvb_Buc{tZovJ!kb*L(;iih$hU3n8qoL4J >&lCj7eHj6 zg<|Is=y$$Xd7yGHbUi~*`BYUZD;1UX;Ja%pWtCEBfL22Zba&-0D1z>&++Mk*a&zS- zD1@#75563Fp^GY?2Os`a<^0Nrpd>n{awc>|r&dm>oCJ;0@s;B$$5xK491h*lA(ewG z2SJ6jPi61QUeF`$QCSLI(r(ZvEw0S1%m$a9TA5OrT$xlESIJe zp6{DXXJ#+Mw(UV4x89icjdFdmi50}m@ol`oy zbXNB_x{q%AXEh-lcIUr49=PLyJ07^>fjb_! fjb_! fjb_! fjb_! zf&brlfThF~L*-C3{$)uPtl0fjcgjtDjK@@Yd3pBz)B{v^59Q%MLs9)H8I@0U#CzGo z?5u2|sH96td0BZm?)V2;*;yi?sH_}sbt&mV;a{huXpxAa8JZ$bXqI6(aU8?3X;eZY zO(!NkC=n+ni8z)Pic^x~QbZ!5kYj}u9nZ$aJ(fT-l0 !k8!_^mR0uJtkby|U~w-Xr+UQItr? zQB)i)E}$ruriCJoqB*XU7_Y@KxdI_WbrR5&M9ik5*6 B<51Z6w{OH z#n2mj(Va{2O#v-rX_0{8I`Th2X9&u U=TZcvs@Vk0Y?wEh2ly&c8Q9s--` z3 8;Nv&cv {7A}Y1Cyw3oN9n`IFFOnrB_(s{^-$0$q z@GV4bB1ac8Ofk)Mr`c4B?bWxmjHL$j8HjJhQ5&hdsMo3C@Fa upBZB!y)6Mv!MG61#B9N?~0LNg>fQ*2-yNnL*k1Q3K^OcGbu q-+Nf#7|;%Qcp%%Q2{(PA_$L4U+(fJDjLaSx@W zW}+vebxX?2v*cUi; bRq zR@?dKB^k)C6eA+JGbgnhM`z|!f<7Hn&`iV|f~35ToS;a6o`vB9Jx9P5aKgNdXVC5F zG?FZleAt2 ;*6)7gC5LHG+1aYW69G{y`Tufq%S^;~@VJ|TQ(Mkdy zlZotXJSColh3G@53oOOszrD$Oo3udsDB=tJ$E4sM9e@*wFdq<#m^g|RV}wdcPDw(i zr>OY+WE9RMAv_Y&Q@gR5SqzB+nnR-}6rf{}|1hVbv*TzEodGYvNLHL!+)*S! p zq!%+xZfZ9HJD>;2 X&J!Rj z yZo2L`0G6y}`>j6n>YMsr 4cF zva6BPTHCg@T}4RiZOsUmAYHV&D63ar0e%&8Jq+jFkV=JO0Uh5DqhVoQ7FkZJp2Fo1uB!uBlHu7KhC_2rm$n0WLl<^&xu+D&0QmoUQOjyot05ruIjE;mao z&O;qL=EaG#a{Dpa*({r#(=DH2@^i>AK_$QsB*ybF$s)N7LD3q-BvFtCXf+0NzE%@f zU??q0#Lxggpf+55W)CJkyC=u?8X#f26mx9H;>pQF87fUALcHS>LLoZXphSx8(v4xu zG1)07Kz~HZ=`FXYKGYKAc{1lGeTfvz-*+i1PGIOnOrw&>J#v07lNe9a@riSpM1Ea? z?+aSKgYTALOv>fIPbQ}%nzPXFNF>L8DJPMkGU8#YP>4~9BjZOR!;s(1VG`TZWO#z5 z$irBR%;R5ALj1xnEcGT<6zEOp`)C#sN#9)(d;;WLy&e-Y!9#NyPQXmRmlYuLF-lNl zC^fa3pJB#EHW7STp4GTZEZ!v)@_#?ik8*wg9_u71 e#4KS6zKIR zOYqPfmJ_h|PG>ld1P|I3y<5i5?MQo(5?ULKG?0+Q5o*rI6YgO$ZhS -VB{@h{f_!)kogfjGky+;_m{)hj+>P&3qyfluDHb`XS1gwJDEm9E_`rtICADy3 z5>`rdd> 6?+!O-Sdb#;36C_IM=e_=1vn zOhShXg|jD;sW+2F(K8+s3dfIUnUoZYE$uI$C0sY89!Yuuh9=Th6lJI6h#rz7VPqHL z##W!9sd0l3@p`NOkn|B*vA OE;TU`c}Wm2NrlZ=f}!t8 zIu!{d5{%0k@d+u(y^7+{X#@<@;~q36n}n?2BMZ|aDp8n;X|a$bOfIP%)@^yY_~kxi z2tsruW8LmVHqVE(WZWe47h)IhT-epxYcMp4TIV$-e0!4`z-G9guMGx2c3xkO%5Klm z?Gw9Z#iw9RE= 8XPKhTXmq6RiRm=kc_5}9G?SW o0yn_ui{NIJJM0L$ZdRPYxO7J__4<3dnc(u ziCAz~w+sx|_;GPkO8WsEQ(j6IXiNfrBz4GyF%vl|lME~v_YyJMkLb^`UC0CgyADim zd<`uQ4_V=%Y^odakBAJ@ZSl{~a_}shZ$r`>h)2-6W$guMFPJM4rX+VBCgh&Z&c%S5 z&Mo44F>F^<74KnERg&0c9Um}sB0s*dV`il>XskrR6TJqaGt!(eKRdkx+{bZbPKsPc zg%Mk%tw ?VmWCcVk^1leOl6bpPjWhE1#l;nZ^Bx zo0uM%*z{o}U5fbuPQs6K6o=rUQ)zL=PLxh%Vv?PboQRBuu~CFknPoFm#i*CKu&5}5 z `|g-6zb zOgjG-#qJPd&m*fd+{jQ_j2Me?*qU8LLK*WPu0)KnEK!u4mVjl0sB1RIV3o-gVj_m` zGihw1B%TCHtbSb)!`Y}GX?HldbzM#3ptUxn@FcRP=QsagA7;*QD7_1t9k7#OdKD$6 zCbJlK6B)KJ30sBy$h96>0UKq+Q>_h1`UCm~dL{2ClvJMeJhCE&8O+U7Q9Hye&Bad| zh`xzv?O!%2JB5i8qZov*K#(ZlBpt`Ibh}i1tRt}?mJek7+Kdm4SSygY=6ipv4y~<) z)_?`1?aFp0Q*jge_oV5p1c7K2Elh^zFmxbrNCJROFew#Q(E~9~QnI*&wEVs)3==Qr zgoE+2I59Cbj>B3vp&))x0_OVoI>lypOfC>({o9%u{HTA2R bk%`$fc(@uJiHsv1Iu((fK!(nNnP_n=;wUDW z?OsTRCbG@;IwF z>B%@@w7(-ARD|u8P=r9 aI-+VZ-`U#gf!+kmNL-S>7HidVA*?1| zBy%3z^Pdp%-o)Re*5oF~kKupVi3ug?S+E*gDWsdH31}{B6ekp8k&AT?hB2DKu!t0e zeLS>$_W~-nJTVPl!RQa)3#bG(p)e n~yQ$v$5q){KIbq@3{!^XRy~g9Y^93_$|P&B)~3_|Z7vKrSG;XlSogWE^a!pc^D$ zjLA&u+LsfS^%K!pcB7|a1}%wsYae=I7k-T4{X(ond=Oh;Lu>RC58`>uf7$p5|3VRm zj36wEFU}Ko=9tplPMEi`2^e*SN%4{n?O{v;)_oM4GNKe|uxln=fuV>=LD>{7DJ)^T z#*wXQOs-i$R$3w}Na}!Dtb|D$j=5<;J4~@Uk_aVXB*m Gq^56`(|;t?bRikO2>6lP{63B++2f7yhL zPH=E*_SB=zdXk9xyWWUon1nHd_y(r%_q>-{vlj7O2HAS#B=HCr(s@w5ZY610tKbow z%*0_Ci>#TPQ;N-dmYQ1}hZbP4b%`z*pPru62}@aVQ9{Q=2Hl)AE8D5CYdo5&TT*-c zB!6>bubpov;*QoEu>>}dRwB0HaXHCL{B07cJcCZ&9y3l1%KXnH^(#%ntQWgyNTX#i zj)lcoS+bl&*rzWRns6H?O-%nWLkHt^7*Esvreo`pJi=PIg}Myy41#w^Vf-ytFbYMW zkaUieNxB=kwVFw`hg#i*`$Z`v=1_WKP6pQX$b0=n*lt8BCKKPJ3<=KRFxyQO& EB^sLL7P}qQA#INbwjUX}bM` zgGb<3Nlt8Ci}52AjNuLAje^JiQ;k+1lGetJyiTeUt4!;3kcltMjFWT_ktoBa0rC`= znaVQR8JMSHQbXpxh_##yK`G9-;uGVzyi6_=b7Gd^B-nFL%1w<+&PB@$ o4m$b zjC)e6sfBsin@8}8gk6(pbU;BICJE>Th2*#pBM>F*G(D>uEWsEr;)=66Co>G@Sc$Zt zD7k$OHjt6tIAIr*Op=WXC6l#mESI%*&wtoKY~q_b<~QO!z8|gXFb=5}iyJznv;aOr z3zA)~?A{saTtRYPW)4nRGepT5lI(o4u}129*A{HraPdfC7!2`QQg EHyTjKSbqEdq!d`#a=b`Vn|9M%{5Y- zogq#Va@YgkNF^jm1lY$-z}8vouEz#y8I{GacFFRIpP01%&8KNJK3*hITegtO%o#wl z{c|yaqp KenZY?JG)@jAsZ??v zTBd7mdSUza`PiJmD2aYrgnfXrGMY+BK!9U~p3ZVzyTe!T9NFbrhg~` z6H69efxEht#L>gE()qJoAx9_YW7O%@0jGe1!Nbc3V-p@Z3nK!}VCS+I)}2_PbVJQr zXGhx*$@$pbiv2pt?xX=wE6hq`&MgzQCNfm;d4w*KWb61ri7+3bQuBteg26c%=tFdT zhwd1nJ4*SDeon}C%*#)ga1;*Nuz2ZT#xbcm(~FsGfv{^=1TsGnMD#4-_hn-il%sYi zm&^oWwfnoSLgA2JNDeG^&oXlIa+qEva2q>n_` zc9{r0THLuS=^R*j!F4#e#GLL7Jo7wSrWa|O)~G}45UXHu%pzj(f7+?lQQ2jSVTk}M zT*NyHM-(UY9)!UysdFcsd;v`;#9l;MVH%a#u^Y>FEtriX5^Q`jl6ZPJlfZDIT#75k zxP _Gh25DBXmI=@*~Qq1@$dGy`A>B6**9hk@6YnGWQs!uMgB@h zbn-bIyB6e^1nmm2!-D_f#SB-8(Lu 9WuxwsZZW v5)-l$v7n+8GR2)yUIJQUE>2NJf6otZD=$`B>xvqAfwT#q>!*-%G58`%aVp18 z|41M(T|1M`MF3I7Bg9j%J16|8$R$B*$LSN zzw_}+W?Q5r*n*hgYfYkoKQe X{f 7T9jt8B;6#~ePxro zi3E~#0Y*&{b7X~7f^!a%w|I+q3t=fNBR1pK1@?%r3q?vMUlCx}g*+w(ZbNRwsXR(c zPR`6s!wEt>osb`&pMsro{
y*yq>!A?umwU%3Wu{(8Y^E>T269OI>Y96 zh)d)UF=A0tqPSBA26NPvrnaE2T~OD*Bb->xw=`