+ case '301000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => $info ['author'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '302000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['article'],
+ 'Description' => $info ['source'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '304000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => $info ['count'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '305000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['start'] . '--' . $info ['terminal'],
+ 'Description' => $info ['starttime'] . '--' . $info ['endtime'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '306000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['flight'] . '--' . $info ['route'],
+ 'Description' => $info ['starttime'] . '--' . $info ['endtime'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '307000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => $info ['info'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '308000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => $info ['info'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '309000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => '价格 : ' . $info ['price'] . ' 满意度 : ' . $info ['satisfaction'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '310000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['number'],
+ 'Description' => $info ['info'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '311000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => '价格 : ' . $info ['price'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ case '312000' :
+ foreach ( $result ['list'] as $info ) {
+ $articles [] = array (
+ 'Title' => $info ['name'],
+ 'Description' => '价格 : ' . $info ['price'],
+ 'PicUrl' => $info ['icon'],
+ 'Url' => $info ['detailurl']
+ );
+ }
+ return $articles;
+ break;
+ default :
+ if (empty ( $result ['text'] )) {
+ return false;
+ } else {
+ return $result ['text'];
+ }
+ return true;
\ No newline at end of file
diff --git a/IdouChat/Controller/WebController.class.php b/IdouChat/Controller/WebController.class.php
new file mode 100644
index 0000000..fe56103
--- /dev/null
+++ b/IdouChat/Controller/WebController.class.php
@@ -0,0 +1,14 @@
\ No newline at end of file
diff --git a/IdouChat/info.php b/IdouChat/info.php
new file mode 100644
index 0000000..dc6c639
--- /dev/null
+++ b/IdouChat/info.php
@@ -0,0 +1,71 @@
+
'聊天机器人',
+ 'bzname' => 'IdouChat',
+ 'desc' => '微信智能聊天机器人插件,可在微信端开启机器人聊天模式',
+ 'type' => 'wechat',
+ 'version' => '1.0',
+ 'author' => '艾逗笔',
+ 'logo' => 'logo.jpg',
+ 'config' => array(
+ 'respond_rule' => 1,
+ 'setting' => 1,
+ 'setting_list' => array(
+ 'can_voice' => array(
+ 'title' => '是否开启语音聊天',
+ 'type' => 'radio',
+ 'options' => array(
+ 0 => '不开启',
+ 1 => '开启'
+ ),
+ 'value' => 0,
+ 'tip' => '开启语音聊天,需要在微信后台开启语音识别功能'
+ ),
+ 'api_url' => array(
+ 'title' => '图灵API地址',
+ 'type' => 'text',
+ 'placeholder' => 'http://www.tuling123.com/openapi/api',
+ 'value' => '',
+ 'tip' => ''
+ ),
+ 'api_key' => array(
+ 'title' => '图灵API KEY',
+ 'type' => 'text',
+ 'placeholder' => '5b6d54d86d958fe4fabb67883903dbe9',
+ 'value' => '',
+ 'tip' => '
前往图灵机器人官网申请API
'
+ ),
+ 'enter_tip' => array(
+ 'title' => '进入聊天提示语',
+ 'type' => 'textarea',
+ 'placeholder' => '你想聊点什么呢',
+ 'value' => '',
+ 'tip' => '用户发送关键词进入机器人聊天模式时回复给用户的内容'
+ ),
+ 'keep_time' => array(
+ 'title' => '会话保持时间',
+ 'type' => 'text',
+ 'placeholder' => '300',
+ 'value' => '',
+ 'tip' => '在此时间范围内,用户一直处在机器人聊天模式中,默认300秒(5分钟)'
+ ),
+ 'exit_keyword' => array(
+ 'title' => '退出聊天关键词',
+ 'type' => 'text',
+ 'placeholder' => '退出',
+ 'value' => '',
+ 'tip' => '用户发送此关键词主动退出机器人聊天模式'
+ ),
+ 'exit_tip' => array(
+ 'title' => '退出聊天提示语',
+ 'type' => 'textarea',
+ 'placeholder' => '下次无聊的时候可以再找我聊天哦',
+ 'value' => '',
+ 'tip' => '用户退出机器人聊天模式时回复给用户的内容'
+ )
\ No newline at end of file
diff --git a/IdouChat/logo.jpg b/IdouChat/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..13302561e2759249c6d1f20323ac9be89e0c05de
GIT binary patch
literal 2611
zcmV-33e5FKNk%w1VSoUD0QLX?BN-eg93UtiAuJ*#FC{23CMq;4EjcYMH!UzZFETze
zGe0#sK{Yi+IW|Z;H$gW#LpnWBK{`e~KuA79N
E2iQ%X%$O;A`*Qd?40
zURGIeSVVVSMS5RFVp?5%Vn}6QVP{}tYGY+?XK8O~YjSICb#8HXaB_Ncc6@ete|dX`
zXi14{OqF#|nRrs7epG^deyD?1t%q2$i(0#pUBQ)K#+hKtonnQ5frf#DiG+rXhl!7g
zi;;_sla7#
FV
z$H>ge%Fxcw!q&^j*w4|=(97G?)zj42*4NSA*VxzC+S%IR-{02Z+u7va;NRfi=i=n#
z
*?(5?C|gJ@9^*N@9^*N@bdEV|Ns900000000000A^8LV00000EC2ui
z0Du61000O6fP8|3goTEOh>41ejE#
g~0_Uh^Z3M*mojqC)0ppQTX6h4@M5yM7~!!%;R
zEct-~0|9*yg4h9gNREth0`3iH2gc5xlPFWFJZT5axB=-1$dJQPkR2H?uMHT{WX{T;
zKvT|XG9st70WvniGlBq}0v~dMN}ak#&JP74tsyYdj12~K5SrwnN>*wfCKAwLV53Zl
z(FFcQ%F3OprwBa(1C$)wa{`@;sB;4cm7@Zmi9N*RT)6gNir~jmrz`+q4+G6$X%F0$hR*c1NHXq6q+jEXU!6
zMuySJ5k?wmd=UU;dci`F04k8^9eeAEV9kfGL~+glY{*F5cM(Fdq5x660)jOs`2HAO
zgnNX+0fGv)GRHMvC^_7EY_I`G7)?+nz;db>aid&mKoLccB$^>a5Mul^2aN>oApwFd
zu5zRRJdl;f2I!2?S$Z0A)*@^usv{q@;ue
z4?M8I0uU_FKm!aw&_J@(RyzR?yq@$TItZv_;vR&8Yr$wmtg?bNJ5U9x0NtJ>hdGp*
zXU+imWTg*2*2IX?o%aZkfl6%@8lihIuEM7PwoN660Rtq7QU(D)fD#AS{vfChf*1>c
zV7~wqkkS
`X#fB6np)`jSomCL30ty^(fC35dj5E$X`K-O7ny|vdrXMN2|b8ImMr7DR5Cwq86
zZNMtmpvl@-0ql%(*LZ7vch^{1GuN8}6DWn3a9e}+Y7`4#z}I^7oj2o1&lS~%O@l!yY)fwcMpTrl1f}sRu3Rr~&tTD1Z)S(JTNT34WP?jCs!v*h)
zAo6bD0E~fvENW1o0+A2~J!~in2(rK`Okj;5q=XC_R3H}6x2+H0K!VC^K~4&=JE~YA
zh2`_Y?3~sE1dU)7J+MX!QlbSMmQOBXIGQyM;DH#};DtF@-V8!OKfFYNEOsy=61qSj
zJ>a23JXpmOtl=t@6fuQJsKQ*ta3OUV1sw;VLRs{HL-IkPP?Hfrg;en_Yjoxeb?ic5
z
$T~cR4M5O90s4hB4g5fE
za#6!0^=E}O1Z)jNAWbVgM}m~pp@`(W0v%X02NY##k#n&F7m`puBqYHO;Ubs{TJZ&>
z9c~YJh=V7sG?g(#hznc@92F=j1y|4`VJOKKHG}e
0jA;b+9BoqJ!{yCL7s4Z{;0|P#P2n#e^BUlXm
zi5
qA)PB5*;48REX*aK|k0<
zLQN
)s{p{Pc%@VIwI(W65I43YYy~#
zconD^6kstD^kPcZ2wsV*YO=x>wg)RZ#|nHQ274@EIPPo%8ro#CG3)^h3pq(|E61J<
z!C?c{8Nd*J!32A3fHlZuLmcXPA26^X4Q~KLtnkCqhNxFoX#j!&cJl>b3@flHu>;i{
z0xmi9C=ch&gC5M#rhvY74|fOy7!JIi{sm(%uS2*%a1%6#V3^<>j715Mdh6Q`bGX9_
z2Eu8pgMcOs<12d1RAie3hAM3+4_B@3iYZ53!pxVF16YAlgt1zoj5ZBB%#scW5P%HG
zUpE_60yhQGyaqYq5sv{VzyT7NAO$NxK?z8(0Se4F&{ziR
z5O!>gCRpRUDB&n|i|{LptpE){z(B^TBc3Z$Mm%#y#|3_HXJ!1r8aj2?S;GK@5hDl#
zBprkurtkv}w60(0$OkD6uz?+zM1j)F(9RDs4X!DSz#g44K%EewUnmp-2t3dMqIKW{
zB0xb56|M;%P^`)CfMEx
5}o=AgH
zu6zy^gd5
37M^5sRoBZS`
VPr1rh&hnPK{N*r@IXD6V06XQRbCm!9
literal 0
HcmV?d00001
diff --git a/IdouDemo/Controller/MobileController.class.php b/IdouDemo/Controller/MobileController.class.php
new file mode 100644
index 0000000..d34731d
--- /dev/null
+++ b/IdouDemo/Controller/MobileController.class.php
@@ -0,0 +1,50 @@
+
display();
+ }
+ // 功能演示列表
+ public function demo_list($type) {
+ switch ($type) {
+ case 'basic':
+ $title = '微信交互功能演示';
+ $lists = array(
+ array(
+ 'title' => '回复文本',
+ 'url' => create_addon_url('demo_detail', array('tag'=>'reply_text')),
+ ),
+ array(
+ 'title' => '回复图文',
+ 'url' => create_addon_url('demo_detail', array('tag'=>'reply_news')),
+ )
+ );
+ break;
+ default:
+ # code...
+ break;
+ }
+ $this->assign('title', $title);
+ $this->assign('lists', $lists);
+ $this->display();
+ }
+ // 功能演示详情
+ public function demo_detail() {
+ $this->display();
+ }
\ No newline at end of file
diff --git a/IdouDemo/Controller/RespondController.class.php b/IdouDemo/Controller/RespondController.class.php
new file mode 100644
index 0000000..feb2c2d
--- /dev/null
+++ b/IdouDemo/Controller/RespondController.class.php
@@ -0,0 +1,69 @@
+
'单图文标题',
+ 'Description' => '单图文描述',
+ 'PicUrl' => 'https://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png',
+ 'Url' => 'http://bbs.docuhat.cc/'
+ );
+ reply_news($articles);
+ break;
+ case '回复多图文':
+ $articles[0] = array(
+ 'Title' => '图文标题1',
+ 'Description' => '图文描述1',
+ 'PicUrl' => 'https://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png',
+ 'Url' => 'http://qq.com/'
+ );
+ $articles[1] = array(
+ 'Title' => '图文标题2',
+ 'Description' => '图文描述2',
+ 'PicUrl' => 'https://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png',
+ 'Url' => 'http://baidu.com/'
+ );
+ $articles[2] = array(
+ 'Title' => '图文标题3',
+ 'Description' => '图文描述3',
+ 'PicUrl' => 'https://mp.weixin.qq.com/wiki/static/assets/dc5de672083b2ec495408b00b96c9aab.png',
+ 'Url' => 'http://alibaba.com/'
+ );
+ reply_news($articles);
+ break;
+ case '发送模板消息':
+ # code...
+ break;
+ default:
+ # code...
+ break;
+ }
+ break;
+ default:
+ # code...
+ break;
+ }
+ }
\ No newline at end of file
diff --git a/IdouDemo/Controller/WebController.class.php b/IdouDemo/Controller/WebController.class.php
new file mode 100644
index 0000000..a1a5e4c
--- /dev/null
+++ b/IdouDemo/Controller/WebController.class.php
@@ -0,0 +1,14 @@
\ No newline at end of file
diff --git a/IdouDemo/View/Mobile/demo_detail.html b/IdouDemo/View/Mobile/demo_detail.html
new file mode 100644
index 0000000..1e64115
--- /dev/null
+++ b/IdouDemo/View/Mobile/demo_detail.html
@@ -0,0 +1,38 @@
+
豆信功能演示
+ {:hook('import_css', array('weui','font-awesome'))}
+
功能演示
+
回复文本
+
操作说明
+ 在微信对话框发送关键词“回复文本”
+
代码实现
+
reply_text('这是一条图文消息');
+
该方法用于当用户在微信端发送消息时,被动的给用户回复一条文本消息。
\ No newline at end of file
diff --git a/IdouDemo/View/Mobile/demo_list.html b/IdouDemo/View/Mobile/demo_list.html
new file mode 100644
index 0000000..fa849b0
--- /dev/null
+++ b/IdouDemo/View/Mobile/demo_list.html
@@ -0,0 +1,37 @@
+
豆信功能演示
+ {:hook('import_css', array('weui','font-awesome'))}
+
功能演示
+
{$title}
+
{$vo.title}
\ No newline at end of file
diff --git a/IdouDemo/View/Mobile/index.html b/IdouDemo/View/Mobile/index.html
new file mode 100644
index 0000000..efb3c2e
--- /dev/null
+++ b/IdouDemo/View/Mobile/index.html
@@ -0,0 +1,71 @@
+
豆信功能演示
+ {:hook('import_css', array('weui','font-awesome'))}
+
功能演示
+ 微信交互
+ 高级功能
+ JSSDK
+ 微信支付
+ UI布局
+ API开发
\ No newline at end of file
diff --git a/IdouDemo/info.php b/IdouDemo/info.php
new file mode 100644
index 0000000..f96a299
--- /dev/null
+++ b/IdouDemo/info.php
@@ -0,0 +1,22 @@
+
'功能演示',
+ 'bzname' => 'IdouDemo',
+ 'desc' => '豆信功能演示插件,演示豆信框架封装的微信支付、图片上传、自定义分享等功能。',
+ 'version' => '1.0',
+ 'author' => '艾逗笔',
+ 'logo' => 'logo.jpg',
+ 'config' => array(
+ 'respond_rule' => 0,
+ 'setting' => 0,
+ 'entry' => 1,
+ 'entry_list' => array(
+ 'index' => '首页'
+ ),
+ 'menu' => 0
+ 'keywords' => array('回复文本','回复单图文','回复多图文')
\ No newline at end of file
diff --git a/IdouDemo/logo.jpg b/IdouDemo/logo.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7053e8e4614d4029672c840c51eac4e54eb309e2
GIT binary patch
literal 40280
zcmbTdcTiJX7%v(upm+e0-bCp|K$Id~y7b;cQ;?D%AT>{*avf{(W*
^Mn-;*oQ9m7hL4$^neYGe>*g1L`rfTiw?5q_;Q-vC
zCb>;ba?=K22LMR!5=Z;rfdBW4
uNY
zUVOestCWyi@%ujKOT&FSJI^6
dA?t}kI`=6ElzbowD|6i5;pThocU3kDhw@HXM
z?>03+0kAhPQ*?C1oKnvm0pV#Zi>M%h7&|l>>CR}&ZK{#afau{eL+}TYg%M&=PgcKX
zVR~_^&wiBoqn3iJG$j_1pW}2uy6R$!R>~Pevk5FKVs#fTeymA%_w@AA#hK4gc5YP=
zQHlsx778iiLCgj0iTC`d)O
fl)d<6X+
zy01Ik*9F%G7+jLJpaqqfQoA14i}c-H`zw>Al3pz
{Q+8^Ec_
z8h$+1hr)!7RRxte=f!?0?qzK3B}&dBmG8sNafT2b={C6X9;_q%M3MhhM~aLLZo=wi
zsN@+ZQ2{O@&LGk0w-5SQjsLhv87?xsBkU-xA5@R4Q4mJO9-
`{Sl_WSH(T-Ii`%K?Mv8>PU0tw@uBs
z^KUGs!FkH~g&ZRNXMuwEFvkh{KFb>^6sSSqKF5@=a|X0N1FlU1i5
FJ)_aWzuycahAAu**x{HhVTIr5QF3tp#Vj
zn?9Oj_UjK|>HImo;O|C)R|;u3ya7;MnsnX(9M7|@3Y2n86-n!W8$K#Yo<=y@z5AIjT=EWG=!yCfF
zrjlwdM+=e8M^;PjGve@Oe#0tPkunbD744;KoOTqOY5M$f0&RCg?F~So-I6|-=4Y7a
zAgRKR+YMl`xaLz8ja*4|bbR)Mv$<
dCKHo#
zu`x*v?_sfL(Nilo05BG2p7MJZ)_Pr7u5j>WNb0%rhvEs@Vv#cxeC52)|Gh^(mTyll
z01_>4w}ZI-JLhaeN8^FUY+`CEqOoP?3^9+Z9;!|W>lHgIVB1hv)?k2gSoyMPX-}$c
zDpLUgS12>AtjeX9t4wh6P&%qxJwdB>XyA%8?$})F*F(j^KT~gHcEon(gy`8{g=^6v
zPm4Kvh!hfpclsXN(VCRP43$09u%}Lb9_YzjvIX}xJ8kERwcWE{LGuj?q>y8F8og2S
z!I>H@fkU#kKpYotmr1jFn$p9VPFH#yy;aY}{6+6u5~QbJuxAggQ`oAeK7)wQ`(-CJ
zR;W0P5tB2tmN=BM^VLWCI8mZCvKU8=
X4E+RJLi@f-m2{|VJF|=)#pA*P%)(`3*VG3Ud~zDRg5Yn
z4uM0-7(Se77GeSE2O=_IKUP>&rO1H3d~3YP@sCG1e2~jV8muEnqKDDda56I5gAp9m
zfaw;sq?eWk?4eKbDm#DW%08H*ksbI0R`3|~rrodTm}TW
4AXJJz{7I~b*1Rchbs
z)UT3xfzo#ypd+@W#Y;qXC6%){4O*jSHf=xONAD;5tGioCnwdIcKUOnBlT_ZaE(&q_
zhzmSj{geS8ec1gO;si_OzR;tSRv(8$Qua)8rDLOljf{R_K^6R~2-PjCLlOy?oq8f@
z3GT@YjC(uM-!S-WPuSEyVRB^m@
SVajs28j=JabM^$y=8i-
zE*LK&SF$=s?H7Inuxapj=P_Lf-sIabcI@xzxB(9P^aRr#fc#
z$hd*+4l=~=|0<5rP|7
r^97;+BmM9NqF6qiX64i^
z1g#1wv7G4G5j?&DI22Pzwo5=fOGPW)?Bi=kydH~7zl>rtghE
zAB#(@b(k*pzbKj9+i4#yKwTf0L+Wn{!x!(kOHwqf-2kA)yy!0-MVE=PRln}+Tw+9w
zOv|>Bp#hrT6oADUO`}^HS&iV1*3KEI`^A
quAsVx(3zwXd=QKI13@;jpb7&KOY8A8el
z44*n;L!Yfn727Y|@iYYrjZ|
j{fDFm
z4a!ly8^oU_%qi-=@Cs}HJL;Kg>6H7-LiP=yqRin+$cuLQm38(u7CMz#3^DaKt2WYE
zDXk0HT_|Fc4YFhnIH$6Wpu9%%!A#;)pf-y|4R0r(}$d4Q*8#q{Os
zGxyW{zO_QLnLS;#`H@31QAc@=lIQ#b;)c{_JL6KN$lc^OFkd(%ZAVwJM(mi)h0?By
z^M1zAit&0r+;
#a{s(Q+G4)L-
zAIQfWfLNR*OZrObKG`d=pPt+5XmLN%dQ@9`T!C(~YXMq=TvKNR6HaSr$m5R!*n}rb
z7CzbKqfL(Vkj^Gk1-X@b`M*GQcC%dX5jv3LvX+t=8_qP2qbn9A$#G8R-4`+WIB`bD
z4{NI>>ay$nF9On|gfk~+n)ix__8W($z|^uxa0&W-?mX^m3ZoJ1uHnDQQhE-!6Bf$?
zJpmOrg|OmdbC%Qb*bV8v*~}-RUE9qwGuG}AvhSJIF9Uy3rJ*jHC5IDbnJ4c5K2n)H
zNd5XZ6Y=CulUYvb9L2ekjH!iNl*mB0zL^22h}c$ExTD6m^xKQ@d(SZ&&0D(50x1L<
zL4*B92FY7*vb#+PbPp_nL3uz6^;=g{YQrup#s_Rw;YR&xcEo|`NVY=*_djzD2`-(-
z6Bni4cRIfDm1ov|!NZ4M+^zQ6yJ%@4=2jguKPJk#Gndo@GuS=*$Jvm
db2gp0?pMI1&+FBHJF=h6TDji`kJMpnFg5sv04*roRDTq%D%=q5i9LX%WcIW9i4
z#oP
T$oXlxtG63to)N=f(GKoK;*28JBUr
z)b4*jL!==-i|EHYtpB`YGiVTrEGv91`2(-eG^%Uuc=6{3@FwJPqxrlzC!$=;ZA(R`
zsf4n9qRORfO5Q8`>^t!Q9vA531J+AtuD=0b`mAcf3|LZkGF`P*?4pLai2~0+!
&Gq8k4Dp+BnYIgBX9^Nr6}i`(QlbK}54{28jN|CvroYL){OyvL5pL1W
z(`~HWM}!8r3}JHVK{FVXl7hu~?Lorg7aPnDhQlX6Ls&>6TMci|F{2rQ=HFA5_aFs%
z>9(_wp;>=-Nz&S7e%62~cJp3rsi_wd|Hz_;w)x!kU^cTlG7YT&Dq?cuz0d_4r=bnh
z@QCo>swMr=tT6MW9?7}Vi{&1LKHWs!m+)f$Ih(>)6Z2nN{Kb~{blyb$L2irZav-IU
z9VGqyrw4(U19}Se=kpr3G9H6haeQ9_cP~Y82vhMO3_k0qGIFF)cvibm
zcS{e4&ErNsf?8*DyM|Pvd-5GLLJbC
?h8~N*~XMp+3E
QUY+rA4rZ1
EA{>I<3M-s;$V?0>mVbnTDJE{
zI*MLOm#RlM)!&+2tjq*TDo!T`q3t>aU$usiTj7#+;o1f$
lp0Z)AKusO_DW
zD(%CU?pO{$-C}m=mKqhBff3`D2fM>@TtHhg42R;BKlAXliw58-USFuN>97>ZQ9Lbt
zWFVjJaq3c#mYpVkd=@T}c&72M>Se7Bar&VHe`1-jJ@Xx#~Kph)l`Y02)$p1DF^a
zWR??R@?XqM*wA+9aJD(IYT;7M82Xv;vQLU7slKdrnIaj}pmPriza!}&7KhnE#3E8U
z)T=Y1$FjAwRo?l5q2;7sy}>2~0RzUi+i?D46F^^HZ1VCYBJ)ZNFoQ^iK_NN!NEqcY
zolrj@_@65OSE?h&f^WVohrWr*I5G_^2M1C^g`l!{R$(p=r6vp1BjLu;FM4T(3g9uf
zcioD#L0}bCJlNP^fR1Nq!{R7DIZkw}H17n_@d`zgTbdC;LV{GEO*YE6sfvk?YiS?E
zje?$Dc
Cy$$NTuGDV;QDtR~f~Q{&9
Jr!Gpa8D9dF|LlQMm2DPie>m-b0|+4gGkT8XTz3qr^v+1HB6x
z<8};=EWgL)rKS&@Ig?yEPwA{(V!W>L36z~!ZXT*L&_~dwX#T6hy*Dz06k
To#4+yEY!QPsp_O^>C3Y=%P#O%4g*
z2)f>&_pI8)$yP>(${3UU;^dEEA@jX}i=&g-Kt~MSS`1L%(G%orY23k%I);Iteh#ci
z=t9XD=_#vYc$44my=EE^Bi%YOx;@Wa)b)&SNmf4st=2b|=41QnkuOhXwr&-rhpzH(
zB-4GW8MRI72nFBRmhZQ6xAcn64C+6z5!DFhz)6(E;BBU0BOS#UTr)F$El4?q&4;__
z*lKw(D?d~_9)()8!A!^8ojSyQ^#u9u0zLUwE7wTqp#LpF2{
DF%j2l$nnzMNw0x$WNQ1{_AZ5dpL^LI9l^Afgqo0hH-JfJYDX3=
z+uP^D=NHaN7XhE$SU!?B@0bnP@Qpf-R#{F(O;$I?w0e{Wp2vHOqwOdp=-exF9Matd
z&zhszcgG|BPG^UEOtT({nV4swrp`^1SGs#MbV2gR$
)Op_0gmzess<1Y>s
ziq(uxRDBZpyWe@ru;)Qb&W|a$<6SxRZb?>VWkdT=Z8?xAWzLY|CE{y1Q8wBH2jO&Q
zOi5H(igIqj`2P2scs&X&c4ckS6q!*vk`evP^_(Ah+1fdzCv^D>1##Anf7o}w(^oby
zR~GgyZ_qq-ijp^Ke-qhwV5rK32kSi>
zxl~N~G?gLrWY5%E0wr!cR{Ua>=An0v#2~0M_oS$6-dK%WLe3Ix9=Z!J#e)6xx?Pys
zR14NY2W6|`v`&JCoUTF^bhnf;LFqbjFDCO{pD@*|
w^m}PFO5Dt>#T
1c6d__3hA1?{C
zOX?01Y~7dqdpu!Az~8-`+h({P6(YI
z9cKKNy2^CP(PQurg1~0ffY7fhfpQ?|60?$HKm*DLAq`%)70#%#IFo!YoH`sHJ}qXX
zN)sa@j)Z@@@;Ndwe+@8y_2o@DuIh3it6@fc7C)*2A~-}F2zOsE(Z43@&q~sxCDC4#
z5LRO{@*sXS)qodIXA3dxP0G6%+9^2aueYqEqyF
yrW3#n=>f@VfacLFdhl
zLCu%UE#H~>9n>$oeMh}0T9X~|e1#7h#Cq>_ZRslh&VQf
BeCl_BrQV~O^h&S5xji$V)6W(XP}&V=OUEsZRiEO#5364_elr!V3X4T^
zuMhN$
Lggn0N+#EATL&?i4$O!rqD-IJ$j{*iA5qyZh=4L3LWZ#3@Owe+V+E
z4mH@_(w-TsM!fBLGXrk>N2+urscbXrzVztf_f2rSWVau(pw7s6z8}}F{e2B)m7B{I
zpQx%LgR4H$q4VIZU3}H9;%9G|`b(+^8-!8`Y|SsB4#Jt}e@-xLy9(Ou_u#8y2}B@l
zu0~ZtlHn=r=(mf;5AH#6HOBX5KvN|zE;JzIuIjb8gg71HcZcz&g=`cmRM>ldQl-
YX?r2i{DDj3?P1=O$J+Z^rB|vN++i`M!|dry
zQ%7%zYh|Wf_WakL&(eL@Cq0C-9+HrGx?`cTXjeONnO_V6|6W#K^_&rj!+zZd%8~;+
zYt(9