From 243148e440e902aeff6edc266083137fcfbb029f Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 04:39:34 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk):=20=E7=BB=93=E6=9E=84=E5=8C=96?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A7=E4=BB=B6=20W=5FLISTVIEW=20(agent-18?= =?UTF-8?q?6)=20=E2=80=94=20MEOW=5FAPP=5FSDK=20=C2=A75.5=20A=E2=91=A1?= =?UTF-8?q?=E8=90=BD=E5=9C=B0:=20=E5=9B=BE=E6=A0=87(=E5=86=85=E7=BD=AEfold?= =?UTF-8?q?er/file=E7=AC=A6=E5=8F=B7=E6=88=96img)+=E6=A0=87=E9=A2=98+?= =?UTF-8?q?=E5=89=AF=E6=A0=87=E9=A2=98+=E5=8F=B3=E4=BE=A7=E6=93=8D?= =?UTF-8?q?=E4=BD=9C(arrow/switch/check/more),=20=E5=8D=95=E9=80=89/?= =?UTF-8?q?=E5=A4=9A=E9=80=89/=E7=A6=81=E6=80=81,=20=E8=A1=8C=E5=8F=B31/3?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=8C=BA=E5=91=BD=E4=B8=AD,=20=E8=A7=86?= =?UTF-8?q?=E5=8F=A3=E8=A3=81=E5=89=AA,=20=E5=85=A8=E8=AF=AD=E4=B9=89?= =?UTF-8?q?=E8=89=B2;=20meow=5Fui=5Fimg=5Fscaled=20=E5=BC=B1=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E9=98=B2=E4=BA=8C=E8=BF=9B=E5=88=B6=E8=86=A8=E8=83=80?= =?UTF-8?q?;=20files=20App=20=E8=87=AA=E7=BB=98=E5=88=97=E8=A1=A8=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E8=BF=81=E7=A7=BB(=E9=95=BF=E6=8C=89=E7=95=99App?= =?UTF-8?q?=E5=B1=82)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meow_ui.a ece0ecdb→4335c33a; hello 07b1ee37→07c0c5a5; files 6f6b0a6d→22b6b606 宿主: widgets(含4条listview新断言)/p1p2p3/ime_fix/test_fsx 全 PASS --- patch_v2/files_app/README.md | 17 +- patch_v2/files_app/files | Bin 270364 -> 275148 bytes patch_v2/files_app/ui/browser.c | 242 ++++++++----------- patch_v2/hello_app/hello | Bin 276092 -> 281900 bytes patch_v2/sdk/meow_ui.h | 72 ++++++ patch_v2/sdk/meow_ui_widget.c | 355 +++++++++++++++++++++++++++- patch_v2/sdk/test_ime_fix.c | 5 +- patch_v2/sdk/test_meow_ui_widgets.c | 131 +++++++++- 8 files changed, 667 insertions(+), 155 deletions(-) diff --git a/patch_v2/files_app/README.md b/patch_v2/files_app/README.md index e83ecf0..87a15da 100644 --- a/patch_v2/files_app/README.md +++ b/patch_v2/files_app/README.md @@ -33,8 +33,10 @@ cd patch_v2/files_app && ./build_files.sh ``` 构建脚本仿 `hello_app/build_hello.sh`:`zig-mipsel-cc -Os -static -Wall -Wextra -I../sdk -I.` -链 `../sdk/meow_ui.a "$SYSROOT/lib/libz.a" -lpthread`。**零触及 `patch_v2/sdk/`**(未新增/改任何 SDK 文件); -`-Wall -Wextra` 0 warning。 +链 `../sdk/meow_ui.a "$SYSROOT/lib/libz.a" -lpthread`。本应用是 **§5.5 结构化列表(`meow_listview`)的 +首个消费方**(`patch_v2/sdk/meow_ui_widget.c` 新增 `W_LISTVIEW`:图标+标题+副标题+右侧操作+选中); +`-Wall -Wextra` 0 warning。行滚动/选中/命中由 SDK 收口,App 只驱动 scroll/sel 并分发(行体=进目录/ +开预览;右侧 `⋯` 或长按→BottomSheet)。 ## 部署 @@ -66,11 +68,14 @@ gcc -O2 -Wall -Wextra -DFSX_SD_ROOT='"/tmp/meowfsx_fsx_test"' -Ilogic \ - 左缘左滑/返回钮:预览页→回目录;浏览器→上级目录;卡根再左滑=退出 App。 - 物理键不映射(APPS.md §3.4.1):息屏/音量/媒体语义归系统/SDK。 -## 已知限制 / SDK 能力缺口(未改 SDK,如需请走 agent 立项) +## 已知限制 / SDK 能力说明 -1. **SDK `meow_lazycolumn` 仅渲染单行 label**(`meow_list_source` 填文本),无法表达「图标+名称+大小/时间+右侧操作钮」 - 的行布局。本 App 用 `meow_widget_custom_create` 自绘虚拟化列表满足该行版式;`fsx_scan_dir` 仍以有界数组缓存 - (`FSX_MAX_ENTRIES=1024`)承载数据,列表虚拟化只画可见行(`fsx_visible_range`)——大目录不一次全读进内存。 +1. **结构化列表(`meow_listview`)已落地**:`ui/browser.c` 的自绘 custom 列表已迁移到 SDK `W_LISTVIEW` + (行数据源 `browser_src2` 填 `meow_list_item`)。图标(目录/文件内置符号)、名称、大小/时间副标题、 + 右侧 `⋯` 操作钮、虚拟化、空态/页脚、禁用行不响应均由 SDK 收口;`fsx_scan_dir` 仍以有界数组缓存 + (`FSX_MAX_ENTRIES=1024`),列表虚拟化只画可见行——大目录不一次全读进内存。 + - **long-press 由 App 层保持**:SDK listview 无内建长按;`browser_tick` 的「按下→≥500ms 未拖动→ + BottomSheet」逻辑不依赖控件渲染,保留在 App 层(触摸命中用 `meow_listview_hit` 行号)。 2. **中文字形**:SDK 默认 `common` 字库(≈4k)不含 CJK 全量;exFAT 中文文件名/中文文本预览在 common 档会显示缺字豆腐。 预览页不声明 `fonts`(app.json 未加 `"fonts":"full"`/`"gbk"`),如需中文预览可在 app.json 声明大字号档。 3. **预览仅文本**:按扩展名白名单 + 首 512 字节 NUL 嗅探判文本;二进制/图片无预览(提示「not a text file」)。 diff --git a/patch_v2/files_app/files b/patch_v2/files_app/files index 31b903ba658e3724a8b894a3fcb452d76e42f7a3..ed947c8e324903dce080fd276812ac646363ff5c 100755 GIT binary patch delta 83645 zcmce<4P2B}`agWmJu^5E(kM9Mh&TiHAR^JIXs8noNJ>U78W|ZW8X1`x74@^$6+*TJ zcX+Xz^(L2WG<>N@DJ`kgD5_X~_}?elw{|L60+``mrc zeO>3}I@h_*bzTSSnk{W#SgON=e6I^Ekug^2+7y*qRQEb#^cq27jN?DXeE6nV^mZLo zUy~ody2QY$O9GTP9|^+F2eSZ;KMYt3erbtGd5KJU>u=^4g?SC@7;9L^=^e%rEe!9b zvs(uytv*68IW?+f8 z7+5dzDZR(Qym&i7>nk)|&iX-Yyx+h&kZ~6hB?0@^8Cd4;4Xg*4b2}1)o(9ageV=vy z;>e=x9%S@S1M_@uV71>GSm8GYR@MuFf{m;RH1`k4?@M1yjtM8uMKQ9c+Eco zxsk>GY+$|t18dM)I~SOPIG#YXK3+TCh)5%A!<&h>e!P*b8*eOPYbP4nu{cD)TZ-3$ zw+nCX3?!UsWSziXymiS&mgh0DTD(5I{!jlhBio;gJeETcy#CKIwBPG^U&Gsq_bgiE zg81Q57#ix7UAs#a|fErhxdDg=b_AQV=piOe_h+_KO7Ced&J+w-)ik z@fL%ZiTL$+bCEU;-|?WgBK%vG%0rx5lob(bVp*3KAp@-d5`Y+#u-`9(E`$$iagJ%& zfI@l@&Ojz!Jw4)u;kzGsG=X0>*2MPX&BW`&+lDuRvFq+z!>+w+4a>UkR(8X!`(9tW zmrto#X=0Xq6YIMT$?^SsCf2W}GJ^{?hE9pUQvoaF-> zfW^T5z#3r0HJmj9yMS%Nf>iVHa_1U4?>tQMHK zn6nmOJ+Na0D`M;h&d!050}LCgLO{>G@HV3uJ6MQxKz2V01loaK z;Mxa}t_Xo11Ui6O42^7I+Zo1-1cwz;@t%U>C3zXx_+KH?Xe? zDh)@IY~m~)XaRbFA}|Zs1}p%2ALXo$=v$BvFduk~zW>TuFVOW@Uc`)JkN^Y`XsJU+ zz}>)HVEAKD8E_r24A}EHG6E+0kP(n=Lq@a{t zHNZAtBd~pE5v&mb^DZ<2Fc#Pg%m$jrLL)#CXxt6e0rP>`KrgTWSO+WxHUaB^o(5Ri;sd?Fh*!{rz}#kN4CsB8vvy$GYn=5E9)ZRp87pc)z>a|Z zO;{GF{81Njh9T;p!{}1kf0CuPzm;_7%W&*o`tAR=N%V7I;os3@ zz*=A*FuN1}!vX)n1m*#Dae?IlGX;Sa1ABo!q8kL(0`wRK*6Ao>tQGFh7{yq6fWX3m zHNZq*uvuW)zzkp^uoYMhbO#Eo0ayxb1y%z)2t$xhG@1k$0d!p|uq0p~Fav0@KpRJp#Ld8DWqNm=Ej#mIC{LWupWZCL$g%9@uAtU_hfoV5Pu9U@fp0*Z|Cr z5?C8hj22igFib>xCp7Cs#ehw~bf70jU`4qI6dCuuxUmSYK%bMOk@PC10Dn(1RewS0lR=Tvyjn5w4GaEBG3zT19t;6fi1v1 zU>9&5kX;D@fp*|-peq?o3ta6%e!wmui$nfJDFTZ{pfwd40So7#hCojmtQ8n`6$Aoy z0=t1Va|LFZgeI8>;{x^qbAap8Q82I%SPeWlUtmqZPGB3*cnz!_m=5d%<^j#|=>Lrf zL?F-&Oax|TKoDT|wP-tFGq48O2iy%z`yFfo*bD3edNYyHWrzoi0IpjoFb~kU2r33< z1J?pOfwjQ=>mV4=l?5Ze4E^7DJyd~7O+GLjC@zL-ft|oSVEPT{zrb2xEif}%VEc)G zBib6cZi&G9fr&RE{pE-UbO8?n(}0CJ=q*6Y&Cn3A6<7<5Un;Q1%hCV45NH7*X&EE} zRs;KhJwUSy-?=bG;C^5tuoIX8^eh)xKClnC4!C*+GzF{%?glmi4+6t(fuO*|JlN1= zG$GIq+%E$3}7j+9asyj$wx-OyxU=vz&>CXF!l}zI0dR+4Zi@4 z2YP@_z+7PWoyZ3mu?G17y}(9bBd`S+ei!0A!2H8w10#T*CfF9R378FJFQWe!B4B?JH3KFBeLxRzKQIH>3aoh<-4ED!2r9n<{KN1A zz}#10WWcq}FjipVt57+x8CVDG1?~qn9f3f=9^g4(A22uxnl5TV%@DA^j*Niyz+7O) z8?bs{@S6|_nA8dn2h4p7837C5Mn=G_ci`J+K$XBmU~L;}24wG|V!&`<8PInOf&dS` zkMzK-4^fes=>JU!#3B%W9L57o1ZDw?fd#!-;F>w2sx+GJ=~}XFal`*97Y4o1ZD!w zT`(G8A+Qv<4p}i{0&r_49S5>z@&ddGr-bbcr;+xcW7gv`(J1pU@Nc#*bnRjy86(@ zv!UuAkRF&1%mCVdL=yvBf$NG8XgP*it^*zi_5-_t;jbDPOMyVZqA&#N5pV&I0W*NE z*RXp8%m5Ywy})YVIbb8O_K1NU19k#?fWa-;-b%&j35)=C0F!|AZx~n}Fyl?^Pyt(j z^}z5}>^cF_fo|YhU>30XLjx-YW*j%L8elbWH}Krw zP(xtiM+S^g@O&RbQ^2-QQ6V7v3|m~l9AFuJpM)Sl@nn&K9Yi1-gyX>Gze5n9`ILbL zUj@~Ej+y`yftkRjE^PP#&0jzxME?>hCOYsquoc(?WZl?ToC}))MgR+diNG3QI3}uBG+@&?)D+m> z4-FCh-_Q`S6?hQX1w0P)orf&|7qkw*$PkES*xpJ911JK6xsfFStAQE7CSV>gO)#=z zU@ov0*bCeb>@pfzd%Cp58!5QnkRJ3#Cb;3cBA^PE780KJI97}ZX5yu-VKdS3gyYS_ zoBO7eP+<)$Mv!)lTcycQhX&N)tGZP>@3q=!``AA(O4o+Bs}<>NCfZfbmmX>im2xYL zLi1bF%8E!KqD^`jaO_=aXGN5d^Pco}MVzhk1GqILgiv-8iZa5Qjb(l)g;d&14e*9J z(yR5MlBd#GWQOmfQHh=~yyp1EO05NCLVhp;@nOEa(jW5{o_MAq`-H z$Qn<;v#2ChE1L#UlQG z&@7V@5SNrvJ6ihtCX)q@nYllKQza?0Lc*oqN5iDtDx~(s@#Pttu+G?(b+5HOnL_YobzvMns??AX8Hb zyNDlEB?7!epzKMDEbI@EY&9_}eZi1MHKy?N$2n%Rs#N_*&^Y`;sVrs;n0_>BP!Y6apzTJOEI`kL ztiS`_+7OIi!=yc1BBg?QW58;VlC09v8mr@&6>j*VR3xeoQNl*U1xuTDjULyGuVeVq zwL>wEgVq6Bo%HIq(NgALj4Riozx`TXmOw}hUM-aa+sS&IOTr_DO~z{M^n&C9KWmIZ zb#wS8S{i6ApyeSO*1GB zLNj$ag+ z3T+47C`xN&tCT4lZTTWbY)S*qs1F#ym%xrFifwL~6ZS{!q2iba>?F`hOnRuaEYQ+H zQ>v%MC7rDXJ zv=scP+0<|aCT!H^Qv9Rl#jYewevpP03=QNxNK*{DUPlFoqd)3#5nT}rv`*00QhGe3 z;aJeJXGj|#wWZo;YIdq=my+aAHlQc@)vf@v)>-He8qJP)rJx00DV=#V%9@mn*%C$k)SIrF5a06kYr zC$_}dycwFm)0&N{(1ggX8ItXo2@P0{ulOa>(Yi<>_$KKafIUYFdCY1`%YloOCchjixgRqJ8*hdR z?MeYdW@i}zZ~6!1u9%(oF|(<9JtnV|Z(t^P{rK|1hl~y^z*ik+>U}h_N z7LNQN@dfjbM#Ss^uZ&A;c3CCYlSaw4)o3j&8FDsMiEc#eE0N}JwFP)Kz&N=S^0Y00 zPMw-crHxx{GtZTxpInqbCCo*X!au@#RNmmoK)iL}b^lR1xz%QMJv`KSaIJcM<3OLQ0LJ)paYo-yQu(m{`SLK7M+Dmn+W zq$i}q+pr9&mric8nZkD9Duptow`?~Sox_)Z7ivX(w(~+7oyD0!O9G1?*f{G2&2tgW zXoZ$RQ&g+P3kR*nk47yK4_YH=?Tks%_EAFFF6pW5wk5}R!@j}B$Tqk>T8F5GPvU|J z(eY6At3hi6P4Qw`>Qs$H+6{W*Q$ya3iaH2d-BVKJ6E@NQwAN7C?2hcP7wl@#W66zT zte1LU2`>sC4YP01Jb<4pF3@wH8ES3HKMk}t&^i%DQw$FOBxf#o4SO!khv;;&n7Q}D z=2PkgdhuSvBvwk9`Bw}KBNhr&AUzcMAZQVdQe?f=mJODh=-ETl)*i5H8l?sGagl}l z4f=F<(2QNk$_F~eP|U!UNqY`Rc`rzZ>uo8P0~fZn7p!#9>{JLIQnnAYe9#gVifU_g zr0D~VoD}Athu~{=7)_ogOwAOEeUDMf++i$g2PK!%6%I9Y@EF+Xix=9C9keVz8r3@y zv;xrVl-_TSkpX)3MRDoGwBe$-5OEk=3r5?E(kDA?LdQ$e4?7~G!VhUfGP;vKt0DuT zL)B{VEL@7*6&ZLApT5J`F_7+lYOIvI%NS_4p&GB?l91wx>voz2d$aV-&M0MaSO8{E zGoq8QemTeD(+ghntB4wBqV1&pN{*R3je(tDc#dHF*2*xO&f%+`oJBzVSlU#QDtATN zVqYJcM3AJpVEI66<yfPo#OT?mw+Kdily%*6ML2CppO^Kz(YXPkfH2;3w z4w|JEyGL3)YKtDwa$2PYyRES`U@83(P2#UVJM!oU&#ZSaS95q^I*7)%kwAK=AyjJK zZM3e&m%k;^39#>N>66`&Lhn1$&%14=x;9!0EPQe_#xS!r>D{6Dc9I0~SHCMQcrwZq zdlU|nrfNsnl zVO=U1Cd&ss?Km|(rb1HZQ^tUPd{uMl=sxQsPn%8N6S@+Lw;BW55IgoGDdB0`Rh=JQ zC>FIg8;{J|FSLL#(DFfRB0e5F-dND=ANyyV0m{LTr9DsE<`#bPpBWc}-442*3Du|u zv}$ZFDth+Y32Fen>r*MD!MeoVp-oW`oszVJRSQ}@!c0(I0mA+S6d2AO82D+^B@LV7Wn~Zb%R1IKh({Zc#GJjR5~$N3||CPTFmpH#fX zfy$iLR#EsSX+_X>gXTq;3Au`2B)S`P+H3Wzc(js97G(kkSsXofy!oJ&f_6|b7@F+m zctP@ff!%3}gNMqeLx0N|*p)(2lkNx22U;QrF)buL`*B_)NQOs@n@rW%0bzE$?TB;y zOWd7AnBvgB*tmWW8@q>eNeZw;Au?!QWyRF_q%qJ1O5Rr(@@Q)N$QEN!76>(GhdMFU zH6OHA&r%?P>6g#5>) zIkjWN9?+|CC$tV^dK7br#`I)3?g5e>GD4aqPi@55cn}Lhj7mdML^1#mXr&=W>7UPx z3d}*c75wA+DCbxQO5LTn9!k-*Ei($&fZhapCvAHa?Z;QG1-Bb179Of>D`@o>(KimF<`aYsXKq|5vv z5j#N76phS9biefq<#rCdVyCooZ%mNrM5;3Ll~Ep(r0I=O0gVXOO_r86+5(Ot*fK?0-)If&L9lqL5sNO` zL2GO@7SXkior|YK>ZcR8%Z@dDC!tlz4tlfOMS(UITb`;`z-}=o&~H=oE(@ zszw25ouK*KK`CfG(~P4BiDW*tAfBTF1!>Qd)~lNE=}Cf>3E-uL?B;%+hUBB0BssWm zT#YdJgWE-vRUhRKo?ZGDyBf_;8jHdvVC-@m)lHPF3*8o_NCaQJ64z-dx55kgRGTdD zJHc07m^#TO`fAWu;TONnpZltEj0NYzT#7GmzvmVA&o|DGmc`0p~yDyN{Qz;QKy=@z{^aPPCjP~ z$VBj5s&pQ~0tB1pNRj)j%PCSdKD*MiK9C!d@26{}F&n`To~v2A-(gBC==OPeJ!1RJhKvmh!xlq4IpmaC=6 z{V@Th2xeR>&EFpr)QDjI0-Qo|Y3WW|5Eal46800e?zi234#B)kBg+LvZw6AUB@TIk zPSNS1azxNNLCYY*MTYGGFMc8Ppz+A@P}*$Jvp_GP{n~)FlE=YtlzTuL}#3n)YI;BslfftY~(2-e>sJ$N8yS|@^ODS`8tqb)1pm);>YB=R$#_grLJ4m(>kAwz@`0Bbt zI@=T(kdC11PATNYNXu#jo7ZUFF(bqy6>JT=xf;aoyEG9qLbCle-2h%;fmVE`T0AMJ z1@zrIT{8=^?GDg8Ko?c#+HJzd=-49j18ZRe>&CwSl%9VJM=R zYobs)W`I{%Xk`5w?-D;(Lj2X>7u*NOsPcUQL;M7#t9cP2>HeV%{QW*<&;Wko|G=X4 z`AAV4WjVuiffbPGU7!cgG^wK$zKM1Yw0J)nDJd8>odKF=Man(`#T7v>06ha?dWe<; z+Ck6?R2v|5L@W2h;@u{7pTcicCUNP`SiW0Ico}w$V5eJJ@Ur#RdIV#yG^yPZu}F+2 z&~}4HsdQtuAb1S)7SJ<^j)z*H3$(CgtwhW+^mzdB*kpJ`@ZzOYTSJQ?@U;$Kxx~Rk zIl4gW08J?g-;^p1v~!?&5Ju^PIZ~Wl@RDYm2K(_)lc`%H#o*V2?^Dy-{m!VQ%MY2H zKJe2#CUq*|mp7G5SKYkeDbh}F$5#`+swpQt6r%^U^pyXUjO>^$#FeE;M-RpXCL)+Q z$HaCkc7gqwfGkkX&5>+}YP#Hp z)K1Ny)q&>UPLxkO=uM!7d zQ9Z@ZQ%_O#{uYMV2SG0cJqcmZ6?Z`N}9k*%%@XBEEOy+rKPIn*sX%JBE5F(Q-jM2AUEV-$bL^jONu^D`>Pb(A=PrR_UR5 zb)e;4L~ESRCNVFF>y&6}#1_i%PW<*rqmlaBK|6k@wDr}fNOlF(S1{yFh#dx+=Wf)~ zNV|wZZhYq52Lm_KL=9VY#v-~aS^5Be6y;aYT1xfckmRIcFKC6J`S&c6z8>^y(EZal zftK-m)RJro55;Sv^y`MCBO2~u7O~?XuBBLbh}cJo|DZWEjb?^kn?Nh2NO(w~2+-W? zHC1XGKjEM!f}RJu(nCSl-7lrd1g{r7trFnTSV6Xi$VDCRCNk?YHm>745J>(EAY}?*2=EJ5sce~zjh(`7>Ucue- zz&z10Ui$7xYEi*+xWdJZ;xU1XiHP3GIYzH-d!KogMz{J2!`Y;lRSnT%27jeWpwso7!u)c&8day#E{=o2NKxl3t#qiDnqE=w2g6kL zQgfg>CPjBr@ta{%!5d~#FGa7D<#|;Kr`^NWDy8Kzxp#pO#($BXePhC}>R^XfqXk-x z^gR7_@Nx)r5byS}UsK|1S_b+5B?H5y$iODmyy+?$hBmU4ii%-eG8^sM<`jt*R_YR0 zxT$@aK;P9R4(}whLqOkGv@<+e<^7-)lODKhLL1w)*JWyijWApQHi=7;5Xa>aE)VoQ zF$^{xUz$>FRDOV`Xj3fQ$6|s(^icsdC}0>Ii)xMN45bbngW46>2XyFgJ9`XAL;6$;oeFf7G2SbIM~ zNbO;z(hF}zjms+(Q3ogvJyVq>M!YQs*(KS9e@WlJHNI$GBo8hK62(h2i^f%9>~*Q_ zr=}1^%3+l;M)WX~NP;?(Jc^}L+IjyaZ4zuoPs{jFTGDt@Y04vZW-n3<#X65Vu~E!o zPwdTvYBHe_5nCnGQ&AYYA7v636eDJ9&czNvo}EjAFkv2=PS+S`2KO*#bSM3>RE!N= zDJGT9iy`%gBTqOcsD0aBsz5P>p=M?561C4#O^!(8-WgkTI>;&Bwh&pvJ}=dDLd944 z(RE!BJ;jfX;;D~_tM@T;Pe^iwnYkGFOjCVMZxn*OWKx> zgi8+o8uip2O`KhNyUmvH^%Avilgta*nSr5pZhBZ00}=ghI}fhs0a|B~M!p+o)kLfA zxKOf1?^eeBH_1p+hk2VJ^KB7UBLy9`SF25HLltmD{A7 zkB$wXd{O!JM{RtS^ytyCt5mU@4JMWnKV9qb4)be<{sB>Ku2_%Y(wwk`9p3A-7Yo$N zPFJp=nye4sDX|l@I>fUbRcbRA3sIUhv7r4l%UP~)o})qrySe7n5sgqBv|X&)b-Ws zsh#890If0qI6>)LOfZS>Ygzcmd*gz5QsnzFxOMqketELym+hKgb~UKJ*e=MPM}$b} z=o9xQ|_eyKKboDv_pqxHxhc8|Drx|H>;eIuvKjk@*C3xJr~L z;pNiK4_7IcW+}HT!vOV}uyT6?3k*b*0C#x#8*uus!Y9Qz!^)+Z#}}(Z)FEhX}Dw=7}|d9pLUC7$%Cb zyI4!v8z^cR$@5bCk{O@Bpc*LU+Ep^uJA&onP@d*@Bvqo9u@PdR@&jt3jubI95uCAh zp;x;0-+aQ%r0SIzzN;u3N*cO9FQVEvx*dj1}%sA9KnQkk0poNX4BN2qjSeIr&)}f(Epl6moKbkkTYAJ!ysb z_njp1_dRuTBbgp$B+cwx{41&6=-jNNI+Z|Bd5RM6IHlD6lT-KTX&0TI8}y|n{ar6g z+fT>nSsgt+D8TvCb0brlP{mB2ppQFFd$YkA+bP7eT~)t-QCji&6vfn|lblTU%@JHu z+vk=GEa(YR0&(?H5^)LO$7bLa)wCU)T^- zwD!ptgH;JQvl5lR^UNe__$_Cq2kI@5C4YO5FjWfvvTl@O04~NKcuDO=VQgnrw{+;s z%ZHa~6wX$P-O^8A&KYb#@(hPjEy;4)C9UgDLeWNQu$Q_?bw+B&v)$`a^zC0=5k!uF zw6ox4>8Y<)2{*kgS!fG?aXJ3~**~K3f8H|z z|DV`%jb7IWdm_pHw)E(oCK@`OBYdTe{z|8*MW?A9>@*|4zF$CFZTx!57?Q^6Di#`F z9&#FFlS`y)|9N>)Ay#qD+G57v0#ESH?~CT zfAE`P#=)VQ9xrox1C-lfB&|hUa**UUDzl^GWv&J(r`IK=|I>}}MsQzJjK7&svIs&y z$1bVfrnr~j@+gdI9;FG#l|r4sC} zg6Qf@D9+>-YNr%9%z5ls*%Mw98!b9~%b8<$8dK^U>!YQ%WaxEFp{Ak=Jg!xM8i&ND za@)(D@ariULALFUc4b0Oa6$*9#l5L~pY&+&y!pDNlc~O_DaKjLxYO6koYl>0Ch*hI z;5o~Rm2cgbNBa44>V4l%nQlD>gGj=-fw5!GdkDv(ZD1hZ9YvVh2}=mwg{mgz5&m#U zdgR;rT$Dchc9JmpkQDTtEpYN7W`1j6h4{EM;=52Hrhbn@rd@BCK`b?l@6S~X_pA(E++McY@vjYCeC9WpUtpR}-V zR)V52R2FMZC3C6)6?jl9m}UnI1zd_kk?%`=OZZM{)c4WQ<-)!RWAx60upWihxr%9i7I%u$Mv?I=Y=DIH}i8c2dpr2-fuFr~3z8L3X*Mjc#6>m?ec zwpEeuAqyKOef;Bu5KDQpue%;bz^x8RfP;V}i&YrW)KYCbI^u<$3 z@;Jk_#-LJKQEH&yx24=stv43&F)>;2Q>tyBhhs!GQaialsWFM^tiI~VBT!?!}MCpva#xwPo# zDNA>K$%129{oa$Us_^541yb?Z)*QE=F(ix2zPIpqcWMto<=lj=M2;BdEt(mxB!5K?*MJp2^-Mipk|m_~B7$I^EnnwI9T_PHkU87ylVCRzWBieDp=JkGLQoVC1A zMUCoV&sQ1s9X@^Jf-}R&6?X}y{Zv>N76@_XRKeNgVV5+eC<0+2wBX;7$_g;7e6sfj zW*?kqE91auj02+ui~~`Oe7+lXrL4%fle93^iS~1e-cmLV^|2^}5A5Q#e=ib7G)va= z$+YBOd_Jn^%I2YwYdGt)v2xKHZN35W2}qpk6+CIm_?hl<>7{{WO7-(Vau5};50&XH`AaH~Qm{6$*QWArLxZ8&vIA!Mz6O^u!=t>XE9qi=YupP!i#bNTDoR8IJ zuF+mfPHWB15_t>f^M$}yW+F%}@>|RZ50O<+lWWh0;!Nv5M|`fa=J}nE#r)&u`7$tF5!qPG}0(S{}|wey>R#4LX4>Ju>{1f&Y&rLr12N}@%3{T zl6U8;%xo-oDZ0?YN*nu!!S^~XOdhyHu*rWh@@V)|TD!@IjeM@{UF1L&ATNLeDn**) zU=f>ka-@kzMqP@|>VucFV^a`+=TD^XG<-WDDgN{&yr8_)#H~f-4F!A$b5(lU{-!uo z7DJ1Fi*g1AMktfcWFxM!Nv9=lln10-6SO5-GUPv*+aaK{CEq&!)O#w4UmhGs=aJ^ zLn-v2HX1dmh@M%j=;#$3>ydFJ57+|+1}vi1_(j4?nst%9NpvE zn&wrZ5d3Ahc(O>nK1!FOMIQ2@E_O?x+QstNz6qp6-7;OUOxzBPp?It3MUa!8hQrJ0 zV*fyWB_$;38Kba#znQOc{Qd)_Q^HJ#wBSLfqr*%bCW#-&Jdlqbvk0!%j#ar%*5&wv zJQ?hwm+8a_UYM$BE?3)^#Md{qsOoKHQ9j})y~%>f1?pM&poaI(tEKB|c;~#jll47j z3N+dDS7Scgj!Cw`orkUE?vh&@FiW^ZF{pKziNddc5XjZ}Z%di{b0D`VBOgsU!HW#y zwuN`0v1q_z5Sya(51LNFhK$rER1_h_Z^clm+t!WQI^6=@8Y_)jzB=7p z&h`vrmLe?P|C1T4FgaEv0$u}bkfz>PonR|-09%=TC2uygmHB*@@;u+MGEYNmnL4JE z$09-6wQp)L3&t!gxvIjkC#{b;6o8n&!p&A@0N3!-_U!Ob@0c`ILM!I%S6hd`%E zVLXsI;;EMAjdD~lUonj`BeOGZ(9BW8ey>);3e^Nd%px5nPN30$qx@nppHy`42z5Y< z(uro`9GwR7YjJ*MLg$)+;Bvn3#@uos_>Q2JS?NSSZgQi5@%&$Nx^dU6}tndCf@7R9{turf-f_O#uGb z&XDt(HW*h`^b9}Vg9=Y=OiG7seM=B3M-{6?1L=yOhSpE8h*#v74!o(N|9EnrA2U!( zsApO}n5mo`%41fpMdgBOqu3Y7^p|g@B+_?m*wpD~@ZJ4``W+TKb@~9l2L`4jh5;## z7(O+z8{yuw7t-{6C=Y5e^TsF<3Vu73uSnJpfYWdQ?7;z<2i8Z2zhPLXQe3iPR*~xM z_eOh-Y{g)!H=;b_26}Q8a}l$M5$NL%rH|8*%7uO0u^nf* z3E_S-3%0?5zW~gYIi!+ygNwYGyWJ~P;#SGve7?gwMWp#WmZ$K5_E7Saf#>W7wn40< zxa#D4h5YAH+!?H>0$z!2wEJY&6+$@X3nL*`%5R93vb|FNeiWaCV_5@qcneOxqL?Fg zIkwXn8R&E?Pe}dW=)$;B)rJ3FOPsc^WZWq4wDPE##*Hh`qtqJWG~BO-lTo{o=;Wbp z#%5ep%RJOl7Dn@#QB=8hZxp8ODY0RiCW9`>M_xJ_Xs(_$c6c2aCR4>?%yk`DX5ttTZLLl^m8F7L4hZMT(`VsOj5-Rf+$O{3XKS5~ zR&MGsbFSd@;b59QkLij}@L{fGa>@^e^SHpt@T^zj+aW&`%g4xXg!7TSN&YyTUo(@O zF6}PsGr^&xL}$VY?F@PJn>4o`DUQ)_^qcb1F+72vkt@dV-|=4gvoZV{>nL#P>VPxc zgUT2%zSw;?iE^@yFBnPg+m6nwZ%JUDxz)yJPNas)tQZ-C-*@5XFY4@{;?dmU4tV0s z3ciObK1=3fdFafNw^{J5U@QCaAm0gHa9Azb5%K6uigcc*++I*O3N0J2?UYbxLDF8miaJ@U-VMX>!Nt^a(%AGAQ)7 zP%)y5a4M6+@t312ra(t?l)St!hOl4BYpUi9X$Um10QtiRK4Lg25ti(yL>pD;VkN2y zlq1LSsLL+ifrMkzb|7h@G)&oQvcTz){Gxp4I6g;Mb))>;IG(C3)r%`8HxyUU%y>Hb zA%_a+GE1TorV$TqVT(#6>YR) z?&{j{fc$PGA1!?KJNXP!C4Yq>3N0i2OEcBQt?CMbW2uRj!thT$K{e+tEzVmgfhufj zm6wd?F>!Q%gp4ned5q-uXtFvm5JN*Gd-ht&p9y4fSjjy#o-g3#@=xP=wBjhJlcJ5q zaoVJjv4_0m_%kc8@T-uM?c9n{`g%K`DxlsQ?O5=VPE%(lslxd374igm8=#*h)}t=-9QZ4J2Y2^sMh-|62Jk zl1XC5Mbl4;Pg78eXTj((3DX6tQX$4NZ2rX)U&Ieek)K03BKWNg3sE82ccUSEvYu6l z(nBnwUNu}v92^!4D;(I=Rwu68Wk(dBpxzaM1o|$zUIRV3K3CKwb3!Wl*o{J%Tpa}) z`u|s|oV!UdFD2XlA$Vw+cCljCRzy{kBGy*eeY#k*ugft1zc_9gYWA7mkZjo?FNx;U z6Q~-_>SA`W7GBo0Fu2tW(_4K+J{--Hrzr>S=n)q!KS*9A@|np`<2*17-8cj@>TzZhOtO@FuMX{Vq#@x#hX=^ zvQA?xws0x=#^EvOzv{SxJl+;z!?VZ_X66c+6(_NE^=8$t#0zrrNMY97a-5S-U)X{j zHw(%xWsZCv>=@N0X`PR$%_z=BFoL^Ld^~mLXv(wk6>L2}D*|Wg! zhc+>Gsi@K;P~C9RCtvI0(ZkJGZ>})2W^8Aln%pA)!NqR~Y(Z*A>rZ5pE&S53e!ye8kB$S0Y|+OL>Hf4}~xiEND9bSzFSWcZ4Hy%$aSA3C|&!g?^doVAR6k$&*bq(F4;)rNb-TL#l;FAv_)6&_2V`iRoj+Md%hglpp22F3QZ8Xy!-|ps?4<9l@9zXEp`|y zwz9SJ`aXDOy*N*$9FwGM))}a{1qds?gVIgZJT0Zw#Mzj{HxF0CQ5eMLcx|%dN0X<`w_cELteUQ5Cf~^`<%zTScz#g6dKNlK;d^Su`sF8Q@!7&3-;>YI z;*0q%ImM0n{Vw@tH@`0MMMQGOHnSJy7u|d+FO$D^^U=Cf3%ZhT4y5}4bV&QX{N$DV zM`g3R7K3am_O!w=_z9Ld1s?px+hF!YmBTWJ4U=C@=A$Q8SJ0gmTr97+0<92=ZQJK3 zxY)J{A_k;*pdCn?%at;pt%&TH&8tTIi*AKv+l7yh>7u_n8&cIB_MhbsV zxa@s7D3x!9l(;-!A@5A(G0C(KSXZ$_^uT-5CHnC!WikzZj@~DjXJX19s9cIa3=2tz zuY|oe61(siv#Tra_109#L36OBb8wlwU=CkExOEP{hi^GBB8@-I10$}EQq~D>`Sq)K zG_?HHRf@=gbNNU7U-GHB{PMue51_~1T-Gm-na7t!D%V?J+joIX781su$K~?3r#MEYLQf$LD zR*_>?TZ0Gh7Xrj%<^vPd9e_?@HdQWD807Vt>x#k?ey7xcSd z;dxYE@~`pIFs5OL;GW;{1<8~rRg@+oSl-|#DUDT!p%7?`WwHZR8IaAN<{!ok>iqAx zb>usWQt=}}X4G~W&9V&GP@_MrYtEt%9g^f{f(}5 z@0dXAWpao_TZPjTBkYqlDMU)j5xKfAY{tKyLO%2^!ZQC{?Yi##ohPhCz@(b%j@Kvt}t zKiY+n+6)UKZ(PhLi8)v6`-imms7@O6QC&UbeZ4^Wl^spm4ljncx%Gs6 zaxwpo@Piw8l)-(1$;+<74-q^2g5>k>@Jmf)J_cr7Humav$e80T6COArzm(16j8C3m zX1T%2BV^-^JWXiImgnEdZNl+vdF73KCjYa%?M65-_7O8jFt&&AJT?H?NAd|`ACX5a zfuBd-sY`f?Z5-G%ktuE@b^;5~Uq4v!A$ z|BSj;hZu!p(dm|3H56W`2Vs?Gx3;gW2iIJ3G{{g}s{aji6fH z5Ax)t{4U-vZ(GVkk?-?MF(&rQA1~!aLUNaU{tj-F3zzXU&|X}|ui;EKPSCrv~bM+&oNbFp8({T6@#_TBC-VJy{C?gif1Sr~0W7?g?-efj zL>5-^xhU!CmHhHsbwzq8IkGaMI(I1A!mJS;gBu+fLY~L@;@#`(y?oD@Oan;^gOiTLbt7_#Dh5XHN1%74g#ujZ!71CH&T8{l#7<7=oJ&%K{d8AE01*NDhyhcexC zKW4!F^0W6NqvgZ=Iq%=kqc2kw?XzP|5DqkIMw(D2B5UmUof9l+^Oy*79h_ zLa0>09CRp(f5D8sFOPYEUt`PsI}PR@AygZj7r_X~7#4mcuYZ6~=YN-V1e2_76mgBp64j^nD)RL#6*`Rn=-*#eWZ+h|%M{<_p7Qd(7|Q zRN;)@{yn!v(j1O%?*!n7Sh z9W=R%oGBIsc1$dwHTtIWIj7mfBG@gJodeNf{~i!TM=bqH!Y(M<1)o+z)SjeWoJ{Qb z9`g1h9-IfZR+lT^G;a3}9Fp%{&qt6j53k4C2Kdc-{?f$zAXK!=h%5rc)y%WUgO~2* zKh_BWP!JCJDzl3{zLr!81akMW!e4UVjn1ALg_(u7GKl48cGrA54UTh5T?gRH#@H@DW^|`!pBW7|L znDA-xmElGeMeSfO@8T32i8~f03mYcZ4;GgLH=!%L{2A-Fp4m2Nsw{O_(I

V$3Egq{t}oQ8*>NfCN%`&?+&W47LOxRiExs#H{0ko&DCS@7rNjbx@@D>~aP^n+&zo^GCFhJhSLSB|YtNADctfm}r`7UT zgxD|TA8PS;T0LjvjgO)tzz-fpD}p|93r{x3ehJ&`En@QOM|lKs@880g26>cBZV~Z) zatjXMGUV^K@IS@PMP#x({n`{E?c(KD&cX3g?%*YXyh?fJUzN)UW_Mnt+37HI&e<&@ z;xz=b3E0hxX)rQp17jB+^5<4YdxI{_$6BXc1IOjYN;=TTg}O?4K^;%UB?t>>0!|n_ z7nECvnL}=+{B|9mi;b9(h?815T8rZ>#t2-d?h+!OgvWToIO5}<9+mvnV4r7tsWH{4?AkclfxOcgkP*_%*0EcNbJm_S*4V zWpzzy5sS?um96u_DtW;+9KW{6k8R_#BaB~RFe+n$juh6CH*B^GV@7B@qU4lSx*WBg zC&zs7wK_BXL_<4vI>so=R|AStZ=a#4hqv?8h}l#|I1_ZFu$otN!{%v*aJdnOg}))R z`U7oEXu04Co)qyvn#el(i>w@=v_HX*DVJpMPjuop&Yp0Zby0!FYWZ+IjGtA@=j*u@ zx9@O8t{M$jMq530EGN~w6NzYK{JleE1JBq(*97N?#+K-Ycowziw0vg+A1~+c;ORlJ zO69SfKP$hqgHIV5a8~UfSe7W|Q8_!f`fD$g9kmmlBlN6XvQxVt!>Xgb4$a>6(N9l{ z_$PPrxalcco&y8RvE7GFw(69IVr;iH)QtOhw(q8>N-6UxC#0^!6?uGyL~j*)Dcf!)f{7yZ8hx%P3?y)a{Vv%-wvx zawbn%+AhkHX|{uSJ9qP#QAf0FMHsjKtAW$bQ?<|}^7-amPo&%Ksa-wJI!1Z@ZxY6EtUzXW-KHYiU4 zvzcJnKTcjy{a>;F34?9@U+Vlq1M1xLe^6)FGu(n5my~Dt_`&ibF0w7Z?o#p$CK_ku zXP)7s1OJU;{~zAoJv^!+=>zUlGlXFXFbN@q0AXfwW)cE~5MoFmmq~ztiU^2^$YQwY z0wN+J%d)H)E-I_pB%;!+>+%Lfmenx{sK6p%z^G^fi>QF8Y``13h=_P&mHB?v=bU81 zy6^XX|9p9#JZDayzEoFNS5;S6SL&U@a&LMJVqZ>R`cGK|2 z@3Civ!_nZ?;W!}sTx07db80l5d}rmf8g0@fE4Q!OnBw`ZxuIP0-w4c&U@ZTtM8p7o zT0D|#7ge6}-{Z#&HIm>m zwF5pTE(}==-edLC^4?l4rSH?98%>ia%7`&L7X+vbj$JfVI80BQpXIByY(uY-7izV& z*kAucoi;q_PbO2hi|?`3$(M-;vCnj*iTP4~QKwCcv0q>T6oe+eu`&Z&L>J`vtV24Lxz7Wfm&zYhl#hEIIWl2-XGDHZ)A`P=8Up6O>f8L&l( z@uofXG5;swMXJa=vl>mj2>Z0lpZlfU|GZY<{2kK4L-pT%DV;B9{?5|Ohm9S9w1OA3 z0?(yO23B{Q-=g8C!K&ES(`z4Wc|(!*KZ38|oDE3Rgo>n+;GGrlcc+|Hd`QX)i+U1>4{DB2>ZL7v<#_ zwJB=x)gPj4;5o(|(?^V25g1}lF5a$9q2hD$$aXE=miwZRcLk`M{0Vx5bngHY$UY~h z?a+qu^NAhWv<~tmc0buryH#pC;Wn~X4%i6;p_JoyLeqa-{$-~&q;n+cRyWAgJGHd2 zn;HyfhiW|icHY-U98z;l)z^IQk0(2aae3>M!dLEbuvb{e8g^rZzQHfaQPyr)wXJlypeL-$KkU-t=vQCJ&M#?6 zvGHdOD!f&}E5xNsvfw2+%kX470NJ$QB`vSr5Af!AM{a!y%byeSARbBcVR|nEH82{t zfHET`IM5okTTAb;C4xFbE!3G23du+IY5DS@-CCwu^S<4%ES`|x?gk}SWBEIGY(Y+=ll4?|` zVOp|$>vgSb*;TCQ1`TG*6cM>T2!T!W{A7hX-aPOe4zI$pH3)6F7+vMjgZySfyM^MV+!EN!*zh*wMm`N2C$4Wi zZ}6$MT~29d#~SX0)ao%JMh|7L$>fwvF*b6*Uah-{oiM(zI9QoCfVyJl<%~l5v&lj<#pwq0cWcF*YDuDmgyrxYttLyZ-mQv6<-rZ|p zPl@F!S7V2e?J!K3g&@p{;`z#Pa9o0mTI>NWrpDMrbry}?aR5tE1~!Z~;nu4GK29}%i$IEOy zV;Ep&ZeLt5DBue@=MC)d0F)=*&~6{iMS1J(u%=ZU&-Uvb^0$3wY^cBXBN1( z5ylft)<#$-P4r$#4W1?~Iik8qYLLsCASTegT}@hnS>wgOR;&RDVTDM2FdfhT6G}s`qgove|4tq{s!eJo$UYIoWAOS<hbm(=jba z%`OWi4}B-UIEL=>;JmA)$uY;ZfQi5wShn-ugTc>nUM_tPnvdiBjzjNhUac)aaqnyW z$^X49ejl5mxi9W`;(d70m{}Hf``z~tEUSY8r%LR+q0X~@i@fneZHS!p84X~b98+f3 zl^~^daI1l<4YEzd?v3R!F&beaTq3R}8Wijhv6!(jHL;*|J}YK`G$~$Kfyb zXyO3bYZx%z4{spm&JeW2dUS(KV@k1X32d}s<`*mPeqT%Bo&yC*+DN%!J^T;V7jTdv zW?VTH4yvje5sWku!qR+@D2nxA?>mH^VY>o$s7zrk*BL^j0cx#+SBss@KtL>6Es1)7 zSkH1NHsA?Im@5GrZIihPX`y!a`#&69xah;DhDKt`u2&LhG${lm|~>eZ;g4#?#YUj#&fO zjK-h&0cS^3eKP#6*1H!&hPAsAU(FC-mTSX203pw(LJXWgqS?!0F%*-{;jAaBxY1Oz zL&8?kwPi)INKbRTAUalWP{imGMXFjJ;;Y4SC5Gxi)K`ihOG=jfXh=6E0shTokS>Bz zkX~gV%x)EKvD{z$2Ti0owqj?>t+XtjTo%FNz?@2Jpsvu&-WqGWaV=T@ZXcc_^~xBaf>k&pzQd^L(IrzYY?a{PAWZMzP99~RM_eN{Ub|^9xS2u9@MTKzA>f&@+BS9$b_#z5 zleh0cDJi1?j1*Q(131qj){s%pSIJshsvqhu9!`k46_nNo- zXoxhN^uowu{~0su#v8S~NjG}3qS1eL=S>hr!UfHdk;^z@+!?rW7zCzk=5A!pl`Xu2(rl?WfpS^JkysdsEKkhqmA>ohlz16One9A%LlPrQnj3% zk9NKoE4O?IFP0N>&xdeIdGeC%d=d_XcuqK}eP?P4rgk&$pW5um6nEJV@Vv9b^G;}c zYkv|uYJU*hYcIkb_&l80&cd1P3`}(&!?~>)QaIKTR0IN}qFT-Rb_PH`1g2cnzoWw> z9uWuXTc64E8FLXKl)YlsY>s^6#$A3pYAxFdObn^NA}gDQ9RHrP#MpHrHz?DZ(4(R$=;Fn@=`E3wv@-rv#Q_{K&Tb^+#a zh4m&NTzeJ_=o#$I1qNINgAhMg<9RD-Agur7nX|;H3bt*s@yLbtKzj1w&$SMN9l!u| zCai8guHds+o+=!OgJ8eA9bCKM=7)t>#Ta<2!B@GK4V*5-^$DNSx(&?R1vJ7^ItDej z7o%{{hil$i%l?AAq*UKCg4kKtDn1gL9DZ6GP$_Nfc z;|d4SqvE&i4dU5}wO1?gG*g1j$g>JiGQa%6?p1Y0qbD%kq~6iq;x6bWqCGO|hQna6 zzYoc;PGfuflZh>Rvre58$VokH>kcALa$t5Qx)|5!`VK9-|C*7~Xlu6$mN+ROXC z(Gv1bRZIc+j9AO8XLT(IkS<0Alxz}O3^oVYB&MV7pdw+In+|=fCHA!PlXxUE0Ti$V z^*Iq++~YVUZJ%i4%eVvB2xPBT#YqyxX9n}b#69zO5gmoK&;F?T?%a14v)0m`JIVvg z02=YzH`MO$f?#rveF~SIP?mdY0kBH!t+mv~{-T@i+`?*Oyd8SuyYkp4THi8u;cnKt zSEMCKglJ0!QJ+fdxKk57#kX`(t0rdY9>-})6jy=8S1YoqLJKf}04lA5iQ6T*f@(IE zGo8j(3tXMDu{O=ImNc=#-w|F#X^u%$YqD?TuY`$+f+&Z2#^S|8<#<`9{8l%R#eA7G zmLR>@(G8anZK$mVvo)eBc(NAZJyL!IfUXxnnrr02Pocd(Y-&N|xN%{!Yl!$56zMhF zXR`O4_X;#w$tLtwX1ZtHyEedsw87$cW?CIcsf#F9%L{81o!6=@5yKS_7M(`|u^J8&P$xylR1c8KK$Iyc3?Onw0tj2hB7Crk;fmI{@E9C> z1ad1qC}cFaL3B15A`b-XOhN2iq(Mytk5%)S%f*S5a>gLXYj0$%Q7G=n98#^D|~RbWc7o!NhF=W1ybV_*7*qDoI;?4+!6FqF$?5hV*1G z3}zfp0_|~7AD=Pm5wjc{XhacZ*dDG{bPy0;%{&Ow4Y?saL3S{th;_bkL z4JriGB~5eujM&y^fjmo-IgBX;^;Bs~4#mRT>f)14X3P<$nS6Z!4jiUPogOEidc*-MzofdsmJiVs0A?G zEX-m7kRi~x;Sg37gUua3rT{F7IDaL!NjX>ojo| zXVrL6v&0aXNegtG<&S}=)+*`u`F&YIebCgvUE}I}` zmdm=cT3ioC0*g7%&I`ndV+1ntPRb9@YTa+<%*&9OV?D6Nmt(_6;*CkEDx9q8t_KxRz{Y%OnofhnBp)( zwar>Q^2StzASXZ2+D-wMl`!0-k=V}(tZ?y<#o_A@k!N};*J0eO^n&VMguNjlPb+JQj7CTj#5}wuL!S4TB z=@O^)5deq-v5{Dz2k?6wD1*6fj`&2MD$1V5NF|H$SP43D1>H`Bmf9!CnSe~6;( z*raGLkYE>Q!<+p32g0uyy1K`8zerAaiY|v|>ibh{2<`B+fB%qn!jmvdc-))CaIC&C za(b3{x|Rk1IMkIOPWi{+i9-|q*?4B49b1_w(yg%adv?O-_c@I3Y8TV6NR>PRoe zleLB%Jbws#V4hTZIL_elQGgA#tHBEAVL?)jgHe$y(B0Id;-tAUV&%3PeyGOwb&!sm zDn%JN9>@4(gPmcQqKb8!@l;}>*mM3y!gxb!7KkQOq*p2NybZ(hmW?GbpZ@Qdv)|S+ zwTS$Vl{6cuW=D-u7~z~Q50=Em<tdIiHUR+8a}HNJMm&W|rZZ+LJ&3={D6K+T8isJFDb@|~e~NH{jG9Q_R__-{X<4(W_k5@6ZWTvB|Dm^NqK3AEUK?h2*a5&HBZYBE8opPyH!I-9La!zEuU)keln)dwKnWxjjpEv7f3y2RfYza| z4klKZX(?@GHTILj*?vrC(8)gXn3!S=LANZx$wZ?T(?c-266C5`JKA@=oQuq^pb9j*7=dM?w?TwXkGp|0{ zp7vrWShvO6VFwEAXxl&)c()ko=Owo;{#yG^SogmNG+Kot^Ir;&@}ENZA12b41^^T{ z!1aS+fhA|+SFFy!aVG-sQ4P9c%ao*IwVitb?|3yun8I0s<>~fKxJXH4tFjj`ZoCF% z32&}J!DLvnZ>V*e7|P%VK}TGtjyhR#@@(pb@1xCfUGcPuVr)IQ?gr1E1VB#V{t^g} z)Z&&3+nW`3HY@3jN-RKDp^-Pp)TRgi_eFLz#5MF4?kEk%^&70I&XEJoX+6qLS2*1x zM56|^be$XKy0*p&hMJ8PtZCXsJno}A1y_ddPziX6x&thot z6e*h}*O35w5bGqxgAgqON}5$oo-#fO=vN+pzXXpw_Lb%v!hl~6f2JRRLc&VR47eUt zfqTNJ1nsbBjRx)Tc1&Lmww4c!Ght%MCkLO`lDmGUtPs5VW7<^Osho3O8&oz(uZKhy za4ltx3K#x}ceKHv%|(V{#>zCX$=Vkqhzmom=t^CM)tl9T}`z^Us70rJFm<7Bd#a(9ZB1N@VPRYLT+v*RU8Fv{8@Mf-y{tc5A3ul>;>LuCKKo zrB_-|7#)m))mp57wWa|r1m}oi-3i%0QK2dZbMz_bd~v9-E5Jy?TIxnjuU3tnyUXJb zo4HM%`C98Wh%v|15G&M@4Tv@DKu=<_#t9#MAnX-<8wVpD8#fira?k~>r;7)a!=mt1 zdIp4`78Y8$y!(RIbwCvouY`W8qKLN3N?s9uCbwQd42s9)*B7+D9Z!LBOoNy7eS^I> z*s)5!(Nen@q;4!9x7ALUzyC(-aa~*MlhGoMC`Xv$m;lJ{e6&JzHy|{=jYbdTwk&%Lgl|=Fo2h-Bf4GeyOw1w{%vAwb%W>SbHrB z<8Y*G)@wWQu^u+PYp~+r35)TL(mC`9{HEb)gS0XvT8cZYPSmnHQSC)$7?CovM5P(4 zgavqlIT4awFuJ(mxeqSjgR$4*1n&!j{JWT=m4FU#e4JKuwN3qIb2Svh+A{>~NmLOBMiwE-(nJJ>?HA$=9>IMuPv>Lk&CdFae} zP}E~)cfu7$p#3r84wHBJa@fzUTG389`OA ze-uHFSxVGJ%SXP~`t(^Xo~q;-%^cw%KyiXS8fhCjO}_p;3{H>BFTaOl@#C`h58A*R zjH$T2g*q$3)vyP(qUTC#OS+QUKy0(&)5QeE6bSh$|K|tIgZlU35%^D$jqRICY~xg7 zJEs!cI+fVosl+x?ip=C3^WO;W=Ncbc37)AuRt(LKc*8k^-`vZ-Hu0t|gD zSJ;J2vDO?xl{R@Yo8leTyKLxSOYK;%{2Q7vqC&p>qvlJhd$sMwjt5>fJaU`x>{KA9 zjih+#y2=K>-%DDrp>1D8I#2?%k`8XKntaRQ~D2OA45{(ksXx%d*| zY#ex1uD_%u#vzY+`J|v`b1urde9bM-UeX-4b6||$U(#}8>t2n#w35({EdICVoqgcd zMD;t3Mzp!(jedBO;yP~g{XE{=Rx#;k1d-Zp*Bq&42+8*H$Dd*J zKhr2S9BynzO`Ai<8*dL~tSkv-t+Z-02K9WSJH)_o3(bvssJYR)OoL-&Q{KhKqAG}D zwO+FPO*pRxj+V1BIdrjccs0NO(1PcS+;Q`H7O3WLjBHHh?X~N^hkZ-EMJ+>(vYL$%z zcZ8=Ic#Sg3^fQ;h--d5eIM&d0MuCRBs7u~K)FYdbIS~jt+!$1yK8wZ;AbjP?37f<# zU2MV+TMMiX==2--7KOo)yNJB$Oq)gGRDTP2uAIOEgdaztH$@%Rl-7A{z4^7#} zyT!x7Bm$~>C?R>73d$4;~m#r+CI)BT}2Bvpr>c zt$C4Q&I@0LKz>62bI??Tpq$p8CM9MxHP-eE%+UI|MnT2!iGJ<|JazF?qde4}rd;D_ z%0?ezaD*rp{pgHq!jwX3u2THVaV{1DitZrQga%BG-hM;iRu3PtE&SS?AxIAFN1fV&7Vkr)E@FsbC z-MUUrZ<6OakiWI2{!Vg~{eP*+LYNLc#tl8j3IOMG2PqNA$JHpNWi zzL^XZ;`O}>@Cy07lVVyy`T!s~N2(aULJV-ob52U9mz^@HBgNx(6`9?U(g^7@I#Q;S zLFZF|Ofp?**f`U8Ni2?lX;PxKyBpN4FhcMT@d9 znx=d8CVdT`?_g(I-oK7UKVwacIZq%E_5Nr|PfBgd!i3yV$<}k68UQ1vyqu<@@_q@+ zDW^$x?t~8IG`$d7h1lVCF+OBn5*Td)Y>leJd}j(^g0(1sWiC?yUkz=ITY;JPzZ0tJ z2=4||Qi>*PJJGM4fu<5LYDZoGfnGa9@&=mh&y_-=Fh{XY_2IY~Z>tJsT)_gnnk@@2 z8&cNS-k2qq!lk&OEGDnPoHdLL5JXj=4Y7M*ME8^rGt(?aXQ(%7W<5IiNDOle#pzPP z>3~phx+FQP3%S5P?hi3wTsdaWiY`=K#wr(!cq2-uA^t3}Z)q}|pGV+)vl&l}1|D%8XEynqO`*M1~-na7S_HxsG>G7N)3{_do}&%yGQYxKs*HU=r7R z1E7S6UR%I)jYxyCSKdWbqb?yjwNz+>4lupk4n2o~&01Mhj!;<&^I0p$L7lq|9k=A5 zfa$Xi%L-YtQtK=ayU0%Cn&eRzsUrZLW5`>;OWyukdwmv`#h^vCVBCcGbIn-c@V7M3 z4hxH^*hFN&$2Xi3iK=NP&L>&lyBsbBu&qaKKIgK$0ts9yYr?bH}GF|^K>8yFR zZd06!;3-|n>z{fw0}@foyAExZ9(AkV6AvcCR9cEvj*)lr zL75guYvMnSVD=6%Uab};BY0dKdA;0apBrX%7;+4RXX2h%P74sf2Ug1XZseueN9E9N zl$bdl(wW;-{l#}~%YeavXMEEjv%E1tDE~k=@^kqbl#jo%ypdm?#J3K!k9u{7c5`{P zEb2yGORmg1`6wUkF7D6G;kTM`-25-0g3-nV3v^A1hol(aPJZ7t)jOhzD zX*Qi4$qU#OoXtFu{4sc}J*+Broqf`o-uKBt-Rb(WSx1d9-m{Myw+wMn7p8&%&LAvj z+WEs+z48cIpfNdzg?r-?=ud`j(RvRRuQFN1Wg8zBV-@3?Uay{dG+14Fw6q#JQeS74 zO$)4?5So0Hmt3y&iiro^HCv;#=%bn)_d*)@;0Dfg^y!=)MRtASL2pGVTm>)6w|Y=_ z0#%hHKs^M7-kw0$@N-)N4dwK62^eX-$M>ML%pTDiypfe*DlZ$sQmyK^`a|uKRkf^c zZv#5GzbL=32W4{k%{{1?>-(Yy^fbIjB~n`KI+Wr36I$~ZCxW%$`_e=s|K3Ccu9Jy0 zmebRFQUTX9zo${pLp^Ee*vSWtL(K4l1ADLo$5DC#&r(R7i3jO9_?uL_gg+FGST9q- zkl}|72Ad3g`9e$vO!+V2=?ezLU9ZU4UX)q3Y(&Gvqd$eYghLiga&q5Cz9@L2fm|rIYkJfBk za?BmtXS&R8F!e>8nUSybqN|g_rgF*1Wcp7xxtc-8GOafymF)oFtSqw9;d2Y>Y|3X# zp#)EUw4E5NfKPz(0SCfL*0UG@tIS0+tnEJ>MmpEYw9O)#^I0O=63u{xF9>2JB#Ws> zc@x8vVQm*OaHU5xs@`N}4gmcvT7JM$ zbY(=r0lO;KSI+5tfQ6M9{>_fr;jlrORmU>)&k_yzm`_$GYGn#o9yabVS9Cnr3#n$y zo4#;n7V87<;gom7h~li2PMQPXLS3;0IG#HWhFvXhmkKtDl_8F48CD559nURVW9<}k zo=J8uR%gRkPqHVkJDxkd221U#cA~gS#9~3|K(Jz%IyQ5|TXJ>C=hhy5bWubf&-HOQ z2sIo+j40R46WG1Kl$ZKYdKCAlI#H&(DKY&y^h_YqE=Lu^QW!&Tm|{2&Ye76JiuZso zHAlNQ&1IqOeBJ z+mtH{JXjTP$_-S9a%Y8h=DMpn=iyv8P^abX#?#T6&DY?DtAh&V-18LlTt!KOk+JYw z%u1}(F5{q27t^PK%kpZPX<<`tDeC5-(DJUVe^@6i8f}!dG!i2Mc57_^FBLF=OsLno z3=~+va$}F>ddf=_YGYORtMFcI&d#nlTfZ)MRs~y0Z@yG!^kA4tSk?!1P69o{5qJd@ zA0Oa~*8u}u&^T5gS_0y_IvW!FClH_23C40bYy$vxU?K=i4F69omqnl%n?ztnMYv&< z@~Yl5BR^>1nYLDq>1Lpf8?YLZX!!qAgJ@3;sVji}N8EOH=4LHHzK~4rGSy_T2>TWq zO#cWn0npocoJ*M~X46Xjk^ri2z1QHu^@2D7}pF^)mOZ_HTEw+b>y*kUX0 zMmqCeKGn^j^0#<=Gt%9}@4CY`q)o#82nrpUVXD3Ly-HOG6$*oLPdE9HP6fq3MW|d% z5dufY9|HMug9z@0Ez)*M=lIWw1pNcL$3vZ^(?@A#kD)A2G^;G*7bbRLz3;u^`?)LL zuPp!H@-s0#nd^ZtRQDn)uGSo_$>)94x9nhVG#U&F%PD0_cLS(+lS=PFqyL6!V29a3 z#^7;Wqa|YbMk<&FASpR*WwZyJfp?~vt8iMB-Wz%N#>~6%Xj9?=!y_BZ8LE2a_2EUbCgAMeTwJZ?%XQOx#89I zn790`0g{KG2Xg)D$tUKUa#PAx5RGX5vNM_SE&=d0{1{ab~@NWo7+B|yRzJqFkRpo>L{kC8ob^RUd-Su&d5B) zl73t#+Q6>HIM?pnjIx^K;5bwUN%n(?R@ehV_<0cTu%eNb?lc40a0T2Uep;QhI?bJB zL||e=&$#lmtJ)0`KZTd;m&2a^X^ML$8PGC2^{WKqorl$H;wYgkIoJ-8b$O06xZ(d- zP}#K)-5iL)(aUixQ4tLHdlQC`RURzBm0rbZbr__68N)?gt~}S5GK(zagSqLwK z?R@~oThNRIJAnCk#7un)WO99OLq$XG(-jADAE;=`{j8!FoL}PL!I2=UYtMhr9xVv4 z4xYi~)**im2rdWp@PlN5o4ni zFBnWhS14Wu<8V)Ubw6^Iof+18qi{MxFS1ZLGtAIW&;G)r;9sYTb{JtOczMant^HOt((DVe_Q2T52hs7o{XAZG8rYB1+jvEqC zRLkj8SrA~9nV~b&=K+C8YhgeCDM94Y{*-zB0Bk!XyAePW<(M#ja6||PQ#}8GaO2Kk zhF~#osGYwgAlxh<ZzORDs|dgnM&I#`;$Vcd}#oA3U)%S2^)uKvE}XQG!qVe zGtdpg*mR_$ABLx`s^NOjtD)`-rDd>EA!21>I<#<04(1rziL%ESvM_){s&1vJe8cM- z0CtZHms?@QUC~>vPsfV4uBY6aPVv1jVaVL30S$~K?|yrU{+*VBxrf~&`E@#O)8^)( z`lzI3P@MSF_UIJ76b}1t`-Vzq4tv^{;)3QB243LA$aHaCsCXQ6RXQEHiqJCBP(3C5%9kO{t?sJ!VkB1 zewbdSdcPID%YaG2>eZqcLraTBVFwE5n1$<1dA|zUgqKn)KQi<#njrER5o_>=r*kJ zn7SV^5ygw1s$+&`$9ZPL)OuwePQQ!^&Pi$=q`nEe;epHzdetq5#yu#dpzW{CPThlV zx83Q<>Qx4a=Pc6lGTfdl{)kCAUb2*7@%oAGX0j21X}SHP|4um>0+3r2aizm_U9hEhhXVSoyf zwK|?2B^M5bZTg9>a_vyMkNjO_{4nyi$?6VT#rUr90@B>ovmK4`Cr$h<{yFH7I5{?f4+w0m|;8&;=H~A8k3|u-yMq7wdDuTYq}BB4RP{% z$-Vg$)mLrn)&*hN1gO~F{*e~C3}AibolVa|YXg$g^?VN& z6Sln6{F&u!bXOgP8WK`QNEjdGsY1G*?v9n20f$I5)6>P&M|)PjT1*2G1p8ZlYnI)H)4+UV zd#jpoW>IaCB>PEd?c~!Q&s+)VKiRgYJ{dhf`PT5hvFU zry1r%C?(641{20Pg3?>kzcwdGX*YSz2za+N%Q++Hh6&a@nTOgN&3V$Jn?Xnx5}2!S z8uBO(!%u$axzXO#Q7xqygV1>-WhYv5={Ft3M$01^v7L|8@}Ho)SvwW?-t6!X|9SryonG9}4?MQNJYKQe=FwFU%}Q5pcDS zb}3xl<9|3_&L4$6{=xC`fl=gj7j$a1DY1dJ7Xs!%!BwhIe<%pjJ(?1nMw7=}@aio>M zyeDI>rmh$U-_&cdYt7D}Mxjw;D!x zy}u|Q`#$-iW@3J6&8+-D&FuWr(7gOWXaU%O4{Gq;=JnTAuqkqk8s^_DBY1xT;iI!S z6w}1~8Q^qa*r|ab>P~EImgF&8Fm9d>&^S?=$gGbWUywgI#Fm+f`6J3bu1Ap?s9t~= zoY!E3#4w*T3ow>&i}D94Bb`MOyrBiZ;H;L-5zITbjFtj`mNWp!>(&7fezWpd)PSm$ zTFh-S@0p!H9PKk4difAVf^KM8*hWVqgp`)9m! zH)0e%C+6!FoHj9^tLSE?ZBmiK7$HUE<D#-kwctc{cA>R&NhmAUi&KN6SuKP-(d`7-JGKPkf&Si81~np_kMx}U8KEnI9g}bD2aE&qj6ua= zDY-lzMvwE?QKvEhck?BlcdctUH3<0`Dm!c6WAeS#)^a$q6P#~MzNgBHiDZ=XB3#r+ z*SLINOYH4r$4C$ed}b8FlG`9G{+BT(*Nmlp9>CT?(W6V}Eeh@=YuVV*Q8GUIb9r(s zrNyM0Hl2)oUb2}so!$vsYqOy23e%{gL(gOmke4sVUQd1O`C3hby!(3UdJS7vm`oUa zwyZ!m%-b|`wLaqZnflaxZzvD^0$M0mN`4qSQoxqj*s-N{0W1k@@ZfTMNy6lOdFXoT zH_}A(R6uXV#^NlC^0Bo9YyqP%@)qkKVY|thS|ltI_)n|H;F+rBpi=8ByTxR1Cho`7 zU-&lF{AO@G=5ofYEXAyh^J~8=Emj@j% zzd6_%7zO4a=Z>dZd`+A{9Fp=^6A;NPU#^&dt?XwK>PWPHA-{P(6B%3Yp^cPj+C z6;XxPqCbU;QvZz|6=wn;=v<^QpM$)K2sm_63sUS(<|s_%a?%YD@cDA_4K%Pr{!_T$ zqcmYwzO1={&|D8m6QRZ4l_32S!S<1PBK32jo-sH?#U?Bj(?dQok-C?C5^b#64`Wfr zRWHC~S`kO0V+L<`GN>u#yx#F)t24M{{q9ekH4ZTXnPr~NnmEW+*K5Y^NHNG#N zL?ur3eRUB274o%7lr-oCP+$)DBI{~k=Hh3(L(ae%$?#`jh8@FOgV2ll_a9}qn`mYa zCRk71KEcJX2reJ)iU&C8x_sm&Xb|;s&rM1QFP}`krE@Yo39xFqW-?`Ke~?JKK57&k zFmSQ^(aG4Ixj&J&CZEQ<^{%-uQO>^^4hwgxG?(7`l+WBuiRwzpQSyzO>85x#J8?DE zP72GSUI@-R1!%BTc#k6s%8yGwnJDj@Lh(+{&)q=q^z~D)azXx2r$D;xkukT>%Gg1u zav(~YPSo9$87gK2l-PTi% z{S_@tyRD}|9m%*%FU|3`*lj9<45k7PiysCJ`M>xTO-Xxunkj*JDY&jw+4@Gz$Eoa;YKUE8U%ZMCV<~1$@SQ)R}AGV5EL}ko+W7=wB zr0&GoZO&s672ABnLTqFrun0;7G+k6vR+z-bRPj`$I6qT%xt;D#>jf%F=gQ4NwruVb z=M2(&Kuh*jl>!J~#oX)VGq-~uunLR>#RjoZbN-sr(|Kvo0o)%0VdweHERr=6HbW&i zc+#ovF1fD##28QB-jmD>OR}&a+UOSST0Ip=)m}^oF+J%$|i>{`4GL z8jW=RU0&!8Z4$6wV+Vm}`kqdPe4JQVtOtOeUhv4_Z=82rA?t*cH>Oa=&!r^qYYJi< zYb+cd+Ku0Q@z>TqT68MNpd9{BzfY2r=2CX&`Z+$B{0!L&Zu-Pr=npT;59iVttx%@j z0apCGB)RYon%}t$*B4_C1$crd-7+Hz7*d{Gn6UNI1q2g)nO)L_ufepa004b-Uo2`+elt z`Is1Z&Ycfq7}B4ZkEM8l+&iCo_AX@khM+oPGwev-(6@awM>O`ixVB{l^1Jy^aSCMo zT{Hx3kG+c~B)Z)=BIzEbu>M$quKyM|K&QmmK62MxG)bEvV-`^NF30B->j-}E*k+)? z<1Tu%->W`3bpho#Mk0apt4p%#7Ep91r!ZzlnP2n)Mvgl;9aCnli!TBaVnY|>d8b>R zTL5RkC55u!ZuIDJx17&Uu)g(ogA6yh<&nE-p;j$NE~Gw*p8(*`aBd2lfNJf}0*jXv z=iKtXg;d}?hh{i*5~_J^Aw7`B?|gjtBSh7KZtZvAIH{HPJ<>)XZL~_0i|+yT&%n{L zduY;F7M`9|B2Q{pY)fsbY`G zvNQUgSxiHdc=E4C_k;_38ZfLg-9M>Ljk@U`ucY75uy%!f8@nw24b22qZT=0+K7}5T zp{FWNshO-{Woj8xTS~ng8Lalgvzp&-h~Lx6r@xKLgsZ)N*sSbv_l~(ssX&8!pnT?cK=JnE z9fy7g3mJW%EQkIc`orVNa>nnWpKMRYHKLfg$Z+EKXaa+>c?KGs((U%=Cq;0qVj>}f+|!vqI@0djud(MVHn`AMAzaJSx`>for_gD((!(|oTijmla)=bE<|bOA><9Tt5N_D z$1KAsC|1ra%3N=@+cvLU|3|Qj->1lvf25VxVIx_p>O3^75Zv9JF3g30uZ3sq(c-(Dlu!@^U3gmZZvp zDk|>WPvthS-!D~GRMC3EbWMK*0RfC@H!dWbz1WJXdW7sQX2W%bx-zT0Q0T>t0X)|H z$-!KhKgob-|kQSG2YUklmuo+t*OB z^EC3ql2M5%wQUV8yhijz5Th+1NHE1^Q2*v$$8xz{-mleS+NBHJM0duAy1~`QL`;?6 z^wpyKBmYF?Lnss-y_)|hnC{ZPa_yt=bodj#`=IDyda3Ws|F7@h!PMS{lS0Ox_=YGC z_8d0Urkb|6MFp^M;vH#NB^i0vMfu>cvni!NgybI7$>w0Nhd5t#K>WU+0mBmL4*^US zre~h!w+T4Sf;Fjm#2p~;gg+uPuf$2Z9|DwMac zg_!Pgi+o@$4wwg^EwI}L^MgpS%mix>SXgyn<-~g$a+st}90cGRNr~Q46Jgy@DI+Htk-zvi zH;_QpwKy#OfFyrs2AUBYN1H0qp&rF2(6xdz{$cgVdchv$xy>nL7J9Jj~_uFe2Ni&d4@$aU%`J3oN}*YuM^pP+?= z_Zsv4#1pXRAidzvG@}JL#>k>svgXf})H@PmETeS|aUA;@o&1ONJW1WxK1u5mdSIDY z27TxneEL2drJkT@A%m7;7i%bXC!VC+dE2%4FSLe5)zQDuHLFS+TM!YBe56vih7Ogp5De!j)+BqMSE-yirnQDG(c>`b_a~Zy` z!i^;#iJ3V@`DAfrKATyeg+TuP1)PaFKeuBp#HjW)Iesy9ZBb!Ki*UC#tK8h{71gwqpO>q#`1o^w++d7l72fA=VB=4Jxn=_hfBbdw%?%LQNT0Bg zrg`i8a|pGd=#QOWggvW4Xr!79xFxbHB5r@E`L@42vXR~-_W-&6DN3JEZmMAjIfzr4 zhEb@<7y=Wh%uzlS2;*@Nf!O8zdBHUTb3#z~v#C`+~UrvV@6 zcl*P(P9pF%IY!=`+KpLDD-0HU_sdfx7)XH-MByGlIZyX@AH>1z92FPifLCZf3 zkoRo{NkZp2y_vq#X3O{fO8o{+Ztvk>8p_hQ8Ybm==I_VadGy)l?>aaH%`$)I$g8%{ z@E$L~48F=tdWk$b;_|5~zLJk@p<8H9x;(c9WED&|hBcTj{eOc%dUlAs{ckjlo=can z{f)MfYoJ{E3^b>jY`K@8yR#)diw*0zfkwG_JbmX&(Pd3;@tX zO-q*(YN7V`%8)B+!4m#5P1e-HcwRM4zE(>~@kvnhSb8zJVs)zyZ{PeYd8rokiM;W3 zG>OceYP$JX z3@_4lB9e;OQkjP+oB{DnCCa94BX5$px0NOS05nchL!A{m00V4zu$;RM?C|Jdd2$d*n22j#tlZ8aWG{!U0oo5e5EQ11=5GA;s2TkFlgc??@{)lB22 z%JnZom%5j=Rgm1;I*Q{#J@O)$5e~4A-Hyrq9tL$gRu5kclKZy;1f+6iod;?n+((RnRfUh{VpKm`x{9Yk+oWHkH~0hxan?TzPAa$_&Cm8zP# z;Y+*dp|t7fon4HEWNTJtY}TXIsPag+P+>JgU-J@1D==7kchiiL`Bra{Cj@LU7lf6l z>MBm(l5s`PP0X0}3GwbmbEDzS-Iz>(<-%@Ed^|Jv02!cwnmy^DrIR=NLe2BcvI0D*5Jq$O79{GW`|WYmR~%mCg<57)B+%0c(VLSII*S7{w)5$?qBi?rI*HlR`8p^T=_Rj&o#Xk?>jv9@^L0u~AChgb^(Md@`8!s8 z3MzGLJmMVpm`58hcn=_05F;}=RTnp)Ec3K6{B*fB{_h}4P%fa#bx@Qd7otqre?w{n zpQ`5HxS%HVO7}RyybHG*g(ALhiufIwu6|!xt^zP!kFB;uW7R3UzCnZh2eL6WSYyG} z(HxByH&Md|JjlNWnKfweTmTyS+&6%zHQBP}4S4Hp#y8A0VO7Y_c;vI5Ts9nzYk9Zw zMW%DTR{E7s&Ihlrmhaz(Hv-{B{i6+=j=c3vY~#Ck-1#PbMXY^HI|xR_qj(T}3C~>z zK|Nm&kwXtriT8^kTv=B=a?RIW%}vr>So7^1A~zlaHNXmU@(`$|U5-rq2Q5v!DMy3s zBz=E}cH(6m-S1=G6n0aN-1`rjufAhj8ptuUrpXZgyw=6{lEXNe%;jzByIgvh=5}Ud zCYwoExsE$6FB}G}j}DODx8QG!w%5D`=8NZ>Z_$i&6=5M51h*fr8}3aUEg_%`S_V%P z$jbxgrh_?h$`Kghu@7*BZouQn5ywpb~-f|5=Gd80veutJ6j8lv418C}9$kwML>hzhi ze?fq;(O!QnSMGh6QUZm;VTmhMfb-4Y4TY^Ye={g-{aaEHQ07=}@<5>n*IT<){v`z? zbWQF%PCaGdD0Q=8gFsfjLkV)hQJU&3!wQW%vCS)w9>wI=hDzr#@@Dr{00=P^Cq4{A zt(%scd2yjp#oZ!P)sBtD8e>K0rlNqHag4SnjWNqwbz4t{3>!_^$HAQb=9Tvy2f0nn zlg}Kd8UA~R8i);xqR$Rf|j;<*+lhWq8NZ z#ZxsDq*+yY4@?9`|AZ(mcgUC%)IBi=KQEbkt=7VtL8~v6oljtMMLiO+W5epY9D9PU zje#wkI}s4m;Z37D@yrSGrZMd>AXW#hP#0YEgO#3gR$}>g^Gf;M32e?4%B1(zW>WV1 zl#+`vN)CD``8>9xF-su?ZQL`q1>T@8Zi&~gA7)^sYo6w~8I!qFQ{&-+KdJogFJ@b~qfg4y7C5@LM*T9V(5Sh(7ORRcg|kJ&bbAgzn4C`K%V;y%mfT5@eJg^n1Fof4BDAcAcuYq`GDu#&w+@S3*`RK!Kpth zke_}|*@`$A;ZLf142vntmHL1C&_Ba3IkAxC19a#E*r7s5FK!>QgS>@1rhEZwQEWmX z1JPp4sI4lHEB=LjxfMehSln0GVmze>hweD^FGASIS%otFON=}R$@>zj74}UhoP+B1 zZlPRy4glhP{W)|9&o|GhP3G9ID6`$a(bOaI&d8`xDSA^Z^)mLS_DdJ z=hb-{@;4q$mpxgv|pqIDkzdk7u8<+q>GfEcpEBcQy7&o z3rDBcU!-57_fg-1qSA_G_P5Y>WRYCR&&P^n&9^YN?kbY>9hIc*KsCP7Qmwrxj$z_B z8y?<`pDKM_sivN@`6(BE2mRukBDwcFOz&UA(d|2|oba6RJuRjl#q!PXF{9Rwk`Mhr zNwM>b4Qhm!ubu0IO1bL?Iz+GBDj)h0b_+Z|{gF=7pKg_JUZU;V=pD=dOD3!@+7=MCq}>!m@pli<;Cz{Eb1St6g=2tfPruE zZF}@p`W&sOe_zd9l#P@Ze#TKCF6T=qg&@=NItx$Mg%Q$!8A}U*QF595-Y~v*Owh4N z((+!%?=(2R-zwt4af>Tn=|dtsLRMU+#2c+PxV<-#F9)7x3CM#Hz|{+0!Fe-Kj_c!z zYd6bVY3wwBvKVG{Tp~{&sX2DZpD$B)=LHn;xxKp88 zXALs4yrWHDSuf{6*KPX$kY>9*$%4%dMQ@pDd0cU|K|0@#ke$gEpT>E(JPt8dz#UVM z92y(a83}zc%)3hDSmf_}j7bmHEljQ&=W0X_YQ<-p;o2?#NVb$a|73!1HN({zLs-;8 z0etfZrza|k(;Ob?0Q}w_@BDk0@=XL=+!7E*u(fL9W*G#`9X?Q_C}fZH*la_lH2*K7 zZg_DUzPRuGAM+h)$tSnjY$ffu={-Asw%NMdXkCenZ*RjnxDr{?-d61VVIuEs;}CC& zT+`k*pN5o3a@f4Ic)0XCY(t&nOPJt`^@^ShN`i|p6SIOr;`Fof$71J1NXGRYZ8hF&P~4M>nLp4j8po*J=oEDX z5`M49SNVrga(=Y!oE9g4)yejobY7~Q$ByN8P%Br>3iCy*zp%5Y#2&wA1&k;lIRQzX zZR|xgw6pCQf81yTnpe7X5Waf1b{1hReWTst9YA1J^+Ta_cCi(r$TeMT>4_UvkyABc zgwOc18Kat8__$E6>4MP%H{RaGmPCzXn+nZXDezGvPwECr4amhV+XM9IXnEOXyS|JU5ul8Aq8TdZ2DLg#4H#)coKo*+ zkjH>@A6xC!Y-1>`e350jDXuS~ESRjP9M(8>a)Fm+j9)mv!`W{u0ttjL7x9Z(b&~0LEnRI%ztceAQ{|H9h)i$B~kHD`p;}jMe zx1m{o6~Fs(>g8R3)B4J~t~M8=ZGTr=LE@aNnFW`^#u5+d)E!RyPgjP+Yy6;r#5h|v zOPdLCw#78(YWZfI?cuV*4AaL*kVOwnog^WK0I!VUIVOyHzq(!>Ev7xkfq7W< z52TnVIaL8}6Jj;s${R7>uugnATTW`>o3eq^Z+y0%K(U}d1ly$!F|yFXhga2&#^M0KC*!ZS zqo@xQJCNt^GoqWs4n&7(9vG%ikv$t~dbMNUP}ktXm}Fw^y?Fm;a> zelIhEh6h3X=o~KhgWDoV&O%N`&`O7gC*DiLku18GM)&uuKPW%VILtj9fARS3kpu(& z`whXs*$FU!_?LSrAz?fE(n7oNmS7MBY-o!2oM^fSpQ`N0Fb>{h^ny!|KG+GjAE_3M zsz^$5t(@U-cVzGpU34>&?ghc%ArzCn2{p20XwAmPc4q8tl2}XxkN4aM!nm*u3%!Vr zae=u>H(^GZ$+_Y@nVo_FH|Lo<2XaJpzBT^36drJu%FdMUYQkGC0gMs#?L z;#}>bdh$JcJgLJ;0Ldj)vpAPmjDVlsJdet zo>Xy(7w?{Y5>Jnc2nqMo60x0onj%YJAkB^LmGJcfDe;!Gr`*`HH-aRTJTD5?a5@{d|A}f)0nb~=KC6Tht z4SAe23bbF#A<4)I2K)hj0I z5*qIO+@~JZLhMaar-JG?>YVtd=#@M^ltj7xc1Srct zm8bIgPBNwRdri8>FE8QiFm>4T)}cIo46Jc?E|-r%)Vn>Gca4D>w&(LnlxJ-ht4S?^ zSDKvM+m0#UMnCfIy*P?fs!#dR-v1faIGmC~&&pHaeJQjjL8+kH>r;WsBWQ%Wj1is^ z!>QEhF_+}?vIi(@fKoH?9eB#5>+tS&9=AV$xDCS;JeDG2w7R1afV{rlWqWm~y>9v} z1gT*Tb2_esj)e)$n#Fs@(m3}_tRCIC#lsB?XpnUQ%EmzI8+`a#oiNucsCQ&=&D^S%jG6(@D6s2kR>)g0FHTl2tdO!=cHC=G+0V;rxWih-Uxn{y|^ zQGs6LL`>5=v++p~ii*%}k2haI8*z+N@f!otIG8#*i>n^O+yef-hv2@(&*8s3gn5!W zhcnZ#t?6mEZ4R$U(|EhmDAO#N!i$9%2 zRZ1@5UF7QS{ya|PYMsO7=@b#tG6#cq^iQ~Gc)afWIlL{M;>Nu#I>Pe)JJbok@*8}W zav+E+WU{&mUt-{xV_3rR2l(v*zL}1BdkEu{0UnS(nE@U~74U}{G_GG-fturcu|tg| zWBvZL0uJ%e9pN>2GGs z3)uBALhUluhy3uMq2euh3^N=*^0jj=z99ie0%y45VK7@amyZMAJT#Yoco;!F+Aqt( z3^&(3L;pfvJq?P&-IlY{;HygtVMx`nMoA%WnGV`W_f4my zC@Gg2e;cps;3Iv_2I3NNgl=PF>@)ND&(mpK@U3~`zzkz`A*Vb7n(r0zOOH^>xKwx` zDVJMn!@_1MFK_^{YHa*u<5fl1e_$&yk>DOK9Z+ffY21ldmeMi?1Z5#n~m9p{*TS3ET6%2 z;vKv>Sdwr%cHA87O8YM0@;MX{(PL137YHrs*;Hz_1)dc zW1lMGs6vXc@nejdBF-$Nj9!QsBk^81ZV1(&Izp4%U`%(s1BV|wPKHEcBs|GKUPz0Q zZYmKBL-4RI8!J(#?296errJqVUQ zp9cw-6mj8v%x|QJ=F|8gYMT|~{qG;D&|R^)fRZA6Mnn9bxTKehv}W&iXV&VAo+S$? z{2%Xr2ET?GB}0jRcP*g8;GPGg?-uc$1(fZ(+28Y$)HU!`1gCqyhgTO-mY>VV1I{#j^Mt-%+EXM288gI`c z3_bAM7hxeqdTkNKh4i$ON7I>)a>QfQn3amVbt*tZ&{fv0-%5}&H*k96Mv~ijr*7+` zFyH#whP1!EE-WoDMenhFi(7+B=%T|skB%0j<7o@I-x7*Tn6?m%)=xHjI{8(%cYyd4 ze+NfY2OEod$r23G(1m<#2|}W{g`D&_oHXbxdz?~YG@TNxTwbHwawPN|1a!d$<#IIe zPCgE2igZ9J;`C_?Tel!}m|rf`4CO7-4CO8QzcEz1P&0HNZZir)NsBZ?praVlbpCgS zfTtKjsu)6gsEmFv_bzHZ^c0p#bI@b0SITLpY5wssUi}P}OM2}Y%tWLK%MipP-L?z} zg(aM@9I7ZS;qv9QE2OYQj4@nAmZJyeSy)-e#c(8EJ7#|18b9@SSb=r*DMg6eHI>qjDDSZSzie8?i1Xymj=5oN@ggBR)V_|zw?oIZ@gq< zRXk6F%<9V=yi$a@Y@`2#BCKz0jO0T!*ztRR(}F8@MgDVWI`%3zqN#b~TZQ3m1qXlZ zX}J;zU7Z}f3J3+)HR96$@R2f$Z|b@mx41@d%KoI&rayBH6lI?IGhau!75f*>*XTBi za4Fcq=Z*mWt1e&uJjC<l|Cds^S$)Uf>kbVItB!!;QvvXoceG(R z|E3v9{hMNhPCJP=KTkuBu0RlJR>IotqJ#H<1R1b<&n;*8$_t8joklwv2L^6=Nz7pG|)B%z+I1g57 zomUxXtQHy@C>5csG}gHeSxhpj#a(r@Nu1A;brsgVMsHIAJZM^9~bS^fkyC;fV38PlHO%(;6;WLA_it znj7KFG2G9@#^D^i33FZ-d4EQ|%;Cg8s-z*76X92n`lu|{E^P@YHN!`6_7=1r;p^TU zq4CU8yc6k#NH^kz$~rBQ*>S(WYj=VY+B`o}m3hOQy&Q?YYRfrF8fxjS6DmWTw-(D^ z67hGdz~E2E3C2)03|7;4KRP9++FW>3eFV+=0JuZJJ8PkO+^>5XUTdP=qJE;k#p#C> z>^TknP11cS50#qk!?C*3rNYv#t1Ck)6j>a^ZIH<~g%gmvi>C>iZCU1xN4OlNRGVXK z^>mI@Lq73!cw0o8h8OU4NylP)wh?Jd0p2o2npnu$NXb1U=;6&3S+ z%$aKf;EjHmj?UNp(gho^y5!xP-R<3yk zHntVQAH@i6v;ANGHg0?cBiX><7E+rnuli`2(R+NbwR?}EtBlMFe@!yB*`HUL3?2=Y zTPGU)XlB>zzV=l5hArR?8!#i^lv;7Ut~Yg~Ta}P&ufW=4Qutf8$GQEM!mYt%+2^Ba zx_z)+tX#9N&~5JU!_=}*)3U1nP4{rF8olio*x=B1Xz^_yWjgb=t)H=tzCv?%qn@V+ zbe+5YfHdybeua)U*{Uu+=xah}4(d*+>5wgcezOgD0jMR&+2Y5KY_V(S0~q-g%%Fv9 zwqSfJ4`Y1Z!@x-@)>(SQR!vx|YOdBT4eGT@!(u-?p! zf3v_3Q^hZBf$IH*X45aZy#~|lmqG@?*XNi}$A~{Z1VjIolQ!bPFRwwL$E9K& zhc*EIwZPhP2$wyTFxHI|{-$)|J-f8_q;97S%k#cJW8QwBgMR`pPDz=)2*!V)#83i% zpmEP_g^(ZlrK=5qTLR$kH7rq=L&^>dK<>$lYsL0v)sN06Z5RCZ09+?{vt#>CpfmF3qS8~ zU|q5^x8S$T-|ANG@J|(nm%A_tT`IFqPsrNOqz1os`4M#SnevecUxU}9iwgl%Yd`mA zDE zInriR;@y#)@Fpg~NWq0~!cNIGM&M9x7PpbY!3QucAAqnwqo}yCQswXl>U0qHEIm3c zeNfe_IG>sxgdjC=5f29R-C<{B^Vd@$yFZs|8OrBc(P=8zVDn%VPt??!Vbm@K+di&$ z8fUkF=}A(r13v1QzR>xf_I%w#k` zU~lDTYQnenU>|lnle1rg6i26UIa2r4sj5=PcvkN$$src01CP@*(dNGbo~}tqlxkI~ zjGiGh^%30*H9Zobms2Q}P?~aPI&}n6mdovpG}OwsyOXIyrTI#@C^O&R*6L6wcC3&% z3wo%9UC#0|K&PZ|Cxn=-R1)QyE0u8RFc*GmFLX1tP#F!C6xnKA1K{JWXtJkxnG7Y6yK}i@ z$jdEqWKdbbHOE@{Q{ zd>yHkxkRRQ)Ok?pmc`*{HdGEHFgb1*QBrpv&*=jAskH zphB{|e0~?Uype0{e#C$`+L_VMqx~AF$8<)yUK9iei$*k@p z5JEZc#}Ip)Vo5E6?(iLwL8M*r3BsG5x<=f453IaR1N)oM?w_d+aQ#|$WaaGAwd!Ex zUll!WJ^&KC1rFuV9e`gI82dz74fY5Ot3}kHVTUp=^EEguED5gHq+ZW_x2HieWN^J~ z=GMIKSDDrIx*v~{->}7=Zv)nt2O*TzX4Wl=a;gNB46LQt}?uizBri4B+GYgML2TV{wqH=Bb?W(CHSNtJ^(5q&~^j zC$2cw)yFZV??@|)m&-;1=ezi)_k(ia+v5YQ+rN+uJl}^j!Ky#3GwR^d`7Spe!mNE) zvn4ac>U>uaKvRzXa*puzpF@(4Ru29JB#Hi=#uOv6zE+4{u73@#rRg%4{{r^i`Hjtb zc!$ko+3y7pt2q3G6@EoB_WZx1_2!=b2Py0stQ%K#AL0qjZvzzOyrw!-5>m@GUDI(G zJbV7Asj8uIU-!46NS%?`%5j~`--Qfox&rEVbb(8_SQDwNxK#Zota__afOI4x8~3UI zRJ08~zZ(kqs}{;V_O_H_8OT3~32;Yue-2aG{F|b#I=sv6N1&3jyS65(?+PCAxhmk{ zpc6;)JF$Z{{~o|lMPQ~rAY*m>U0TEbG0m(W1kSMiLnLn6LaEw6SbJ5@4n~|fMMXE- zZt#;tzKr{XLmJ^+;`~dH0I#kIXF}VB#{gmg%IL#_B!k@woGVyJab= zwY|zDJ|H@ zoeHS7!qasRa%5-a+ZjMw3X*zDDW=LC$&$ZEGyzC@}aNBPv zk@jW;@r;vL8>e~#XxG}AW*q#O9!(naIg%q+Qg3VeWIw7|J(=5ac4y^J(e&$Z7R-?! z(^B*H6t4N0)>;))rG_Npk8s&=^S9*Tb9jA|#y;%l+}!;zH=dzIbo60x^*&AE+;C?S z7fYud4+|Chh{2f!)5aN~8JorJpTKo2&9|AvKEbqMrO~umoNyLSV=t~2oyGN*n#F!ppMxe)v`2qz_5!2 zc4#;2KDAqH_DUaau+KG*7aT+!grZ)g-3U!xQm z8hj1)1B#&1QcS}mG>Iw!%=myNnN6kK{uLf%UPXElL?fS2Qt!M-qxsfX&?x>ZX$`%E zhd`F+2~8Pm%P5Aq<(T`Q;Kr}%xY_XpmtV$+MVASNUQamQ<&38IaxnQHG=}e9rdpbh z+;;~h$PJ(byG}Ga%Q?6M{`2tD{;{L;ff@HwdpxiRP@2xPdImc~Ong*=O890Q9ivja zJo+kC520GS39L4WlRk$Q&i)2ka6h9dMSlkKD>j{p)`e$;pLKd)&{3hQ(JD_2st-q! zGtu;f+3_jM}1nc>%ZZ$($P z1Rd`6{3|G3uR0J-#}jw9k*BpR(%I>7#PF;r=g{D$H4dX`4Zctj#;c>8Q7IjG)2E}> zFxpb3OZ`u+WdJAOPu}d1$IuNQnD{e{t8LtlcCL+8LB_@^z8U3=an)D3jQT1bFcfeX z9$I&8;B>&j#zvQMdjlDJ?{Ycv1bF+be*JmxP-mD+DxweYF;tj?M)T#N&bXle!aF-J KY=7sed;UMp2-s-= delta 79508 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 JPf51>|1YCBU=aWS diff --git a/patch_v2/files_app/ui/browser.c b/patch_v2/files_app/ui/browser.c index c1de528..2f02574 100644 --- a/patch_v2/files_app/ui/browser.c +++ b/patch_v2/files_app/ui/browser.c @@ -1,12 +1,15 @@ /* ui/browser.c — 目录浏览页(ACT_BROWSER,根页)view + 控制器。 * * 职责: - * - 持有目录态(g_cur 当前目录 / g_entries 缓存快照 / g_err 空态码 / g_scroll); - * - 内容区用 meow_widget_custom_create 自绘「虚拟化列表」:只画可见行(fsx_visible_range), - * 行=图标(目录/文件)+名称+大小/时间+右侧 ⋯ 操作钮;不一次全读进内存(entries 有界缓存); - * - 空态/错误(无卡/空目录/权限)由 render_cb 内 app_draw_empty 画; - * - 触摸:行 body=进目录/开预览;右侧操作钮或长按 → BottomSheet(删除/重命名/新建/属性); - * - 滑动:LEFT=返回上级(App 层处理);UP/DOWN=列表滚动(本页); + * - 持有目录态(g_cur 当前目录 / g_entries 缓存快照 / g_err 空态码); + * - 内容区用 SDK 结构化列表(meow_listview,§5.5 W_LISTVIEW)虚拟化渲染 + * 「图标 + 名称 + 大小/时间 + 右侧 ⋯ 操作钮」行:行数据源 browser_src2 逐行填充 + * meow_list_item(icon_kind=目录/文件符号、副标题=大小/时间、right=⋯)。滚动/选中命中由 + * SDK 收口(视口裁剪、局部 dirty、disabled 不响应),App 只在 on_tap/touch_move 驱动 + * scroll/sel 并分发:行体=进目录/开预览;右侧 ⋯ 或长按 → BottomSheet(删除/重命名/新建/属性); + * - 空态/错误(无卡/空目录/权限)与底部信息行用 meow_draw_custom_register 注册为非控件绘制物 + * (app_draw_empty / app_draw_footer)——列表视口不含页脚,行不压页脚;invalidate/paint_full + * 自动重画它们; * - 写操作只经 logic(fsx_*),且在卡内校验后执行。 * * 颜色全部读 meow_theme_get() 语义色(§8.1),不硬编码。 @@ -25,8 +28,6 @@ static fsx_entry g_entries[FSX_MAX_ENTRIES]; static int g_n; /* 当前目录项数 */ static char g_cur[FSX_MAX_PATH]; static int g_err; /* fsx_scan_dir 返回(0=ok,<0=空态码) */ -static int g_scroll; /* 列表滚动(px) */ -static int g_sel; /* 当前选中行(-1=无) */ static int g_press_row; /* 按下行(-1=无);长按检测 */ static uint64_t g_press_ms; static int g_press_tapped; /* 长按已消费本按 */ @@ -35,8 +36,11 @@ static int g_dragging; /* 本次触摸起点是否在列表(拖 static int g_drag_last_y; /* 拖拽上一帧 y */ static meow_widget *g_tb; /* TopAppBar(chrome) */ -static meow_widget *g_list; /* 内容区虚拟化列表(custom widget) */ -static app_rect_t r_content; +static meow_widget *g_list; /* 内容区结构化列表(meow_listview,W_LISTVIEW) */ +static app_rect_t r_content; /* 顶部栏之下 → 屏底(含页脚带) */ +static app_rect_t r_list; /* 列表视口 = 内容区去掉页脚带(行不压页脚) */ +static int g_empty_id; /* 空态/错误绘制物(非控件) */ +static int g_footer_id; /* 底部信息行绘制物(非控件) */ static char g_title[FSX_MAX_PATH]; /* 预览/操作辅助(前向声明) */ @@ -59,123 +63,65 @@ static void browser_drag_reset(void) g_drag_last_y = 0; } -/* ---- 通用文本绘制:宽度限 maxw 内截断(超出加 "...")---- */ -static void browser_text_trunc(int x, int y, const char *s, int maxw, int size, uint32_t col) +/* ---- 列表行数据源:逐行填 meow_list_item(图标/名称/大小时间/⋯ ),轻量不 IO(§5.5)---- */ +static int browser_src2(int idx, meow_list_item *out, void *ctx) { - int full = meow_ui_text_width(s, size); - if (full <= maxw) { meow_ui_text(x, y, s, size, col); return; } - const char *dots = "..."; - int dw = meow_ui_text_width(dots, size); - char tmp[FSX_MAX_NAME + 4]; - int i; - for (i = 0; s[i] && i < FSX_MAX_NAME - 4; i++) { - tmp[i] = s[i]; - tmp[i + 1] = '\0'; - if (meow_ui_text_width(tmp, size) > maxw - dw) break; - } - if (i >= FSX_MAX_NAME - 4) i = FSX_MAX_NAME - 4; - memcpy(tmp + i, dots, 4); - meow_ui_text(x, y, tmp, size, col); -} - -/* ---- 列表行图标:目录=filled 矩形+页签;文件=空心矩形+折角 ---- */ -static void browser_draw_icon(const meow_theme *th, int x, int y, int is_dir, int sel) -{ - uint32_t col = sel ? 0xFFFFFF : (is_dir ? th->primary : th->onSurfaceVariant); - if (is_dir) { - meow_ui_fill_rect(x, y + 6, 26, 18, col); /* 主体 */ - meow_ui_fill_rect(x, y + 2, 12, 6, col); /* 页签 */ + (void)ctx; + if (idx < 0 || idx >= g_n) return 0; + fsx_entry *e = &g_entries[idx]; + static char sub[FSX_MAX_NAME + 48]; /* 行内瞬时字符串(绘制即刻用,重复填充无碍) */ + char sz[32], tm[32]; + out->icon_kind = e->is_dir ? MEOW_LIST_ICON_FOLDER : MEOW_LIST_ICON_FILE; + out->title = e->name; + if (e->is_dir) { + fsx_fmt_time(e->mtime, tm, sizeof tm); + snprintf(sub, sizeof sub, "Folder %s", tm); } else { - meow_ui_draw_rect(x + 4, y + 4, 18, 22, col); /* 页体 */ - meow_ui_fill_rect(x + 4, y + 4, 7, 4, col); /* 文件名横条 */ + fsx_fmt_size(e->size, sz, sizeof sz); + fsx_fmt_time(e->mtime, tm, sizeof tm); + snprintf(sub, sizeof sub, "%s %s", sz, tm); } + out->subtitle = sub; + out->right = MEOW_LIST_RIGHT_MORE; /* 右侧 ⋯ 详情钮(行右 1/3 判操作) */ + out->on = 0; + out->enabled = 1; + return 1; } -/* 行区视口高(底部留页脚,行不压到页脚)。 */ -static int browser_vp_h(void) { return r_content.h - APP_FOOTER_H; } - -/* ---- 列表 render_cb:虚拟化画可见行 + 空态 + 页脚 ---- */ -static void browser_render(meow_widget *w, const meow_theme *th, void *ctx) +/* ---- 空态/错误绘制物(非控件;非空态时无输出)---- + * ⚠️ custom 绘制物无 owner 闸门(不同于 widget,见 meow_ui_draw.c draw_order): + * 必须显式按「本页是否为当前 active activity」守门,否则切到 viewer 页会跨页泄漏绘制。 */ +static void browser_draw_empty(void *ctx) { - (void)w; (void)ctx; - /* 空态/错误 */ - if (g_err != 0) { - if (g_err == FSX_ERR_NOENT) - app_draw_empty(r_content, "NO STORAGE CARD", "insert a TF card / mount sd_0"); - else if (g_err == FSX_ERR_EACCES) - app_draw_empty(r_content, "ACCESS DENIED", "cannot read this folder"); - else - app_draw_empty(r_content, "CANNOT OPEN", "unexpected error"); - return; - } - if (g_n == 0) { - app_draw_empty(r_content, "EMPTY FOLDER", g_cur); - app_draw_footer(r_content, "0 items"); - return; - } - - int vp = browser_vp_h(); - int first, last; - fsx_visible_range(g_n, APP_ROW_H, g_scroll, vp, &first, &last); - int thh = meow_ui_text_height(th->font_body); - int namew = r_content.w - APP_PAD - APP_ICON_W - APP_PAD - APP_OP_W - APP_PAD; /* 名称区 */ - char size[32], tm[32]; - - for (int i = first; i < last; i++) { - fsx_entry *e = &g_entries[i]; - int ry = r_content.y + (i * APP_ROW_H - g_scroll); - if (ry + APP_ROW_H <= r_content.y) continue; - if (ry >= r_content.y + vp) break; - - int hilite = (i == g_sel || i == g_press_row); - if (hilite) meow_ui_fill_rect(r_content.x, ry, r_content.w, APP_ROW_H, th->primary); - - browser_draw_icon(th, r_content.x + APP_PAD, ry + (APP_ROW_H - 24) / 2, e->is_dir, hilite); - - uint32_t namecol = hilite ? 0xFFFFFF : th->onSurface; - uint32_t subcol = hilite ? 0xFFFFFF : th->dim; - browser_text_trunc(r_content.x + APP_PAD + APP_ICON_W + APP_PAD, ry + 6, - e->name, namew, th->font_body, namecol); - - if (e->is_dir) { - fsx_fmt_time(e->mtime, tm, sizeof tm); - snprintf(size, sizeof size, "Folder %s", tm); - } else { - fsx_fmt_size(e->size, size, sizeof size); - fsx_fmt_time(e->mtime, tm, sizeof tm); - snprintf(size, sizeof size, "%s %s", size, tm); - } - browser_text_trunc(r_content.x + APP_PAD + APP_ICON_W + APP_PAD, ry + 6 + thh + 2, - size, namew, 20, subcol); - - /* 右侧 ⋯ 操作钮(三个点) */ - int ox = r_content.x + r_content.w - APP_OP_W / 2 - 1; - int oy = ry + APP_ROW_H / 2 - 8; - for (int d = 0; d < 3; d++) - meow_ui_fill_rect(ox, oy + d * 6, 4, 4, hilite ? 0xFFFFFF : th->onSurfaceVariant); - - /* 分隔线 */ - int sy = ry + APP_ROW_H - 1; - if (sy >= r_content.y && sy < r_content.y + r_content.h) - meow_ui_fill_rect(r_content.x, sy, r_content.w, 1, th->outlineVariant); - } + (void)ctx; + if (meow_ui_activity_active() != ACT_BROWSER) return; /* 非本页 active 不画(防跨页泄漏) */ + if (g_err == 0 && g_n != 0) return; + if (g_err == FSX_ERR_NOENT) + app_draw_empty(r_list, "NO STORAGE CARD", "insert a TF card / mount sd_0"); + else if (g_err == FSX_ERR_EACCES) + app_draw_empty(r_list, "ACCESS DENIED", "cannot read this folder"); + else if (g_err) + app_draw_empty(r_list, "CANNOT OPEN", "unexpected error"); + else + app_draw_empty(r_list, "EMPTY FOLDER", g_cur); +} +/* ---- 底部信息行绘制物(非控件):项数/路径/截断提示 ---- */ +static void browser_draw_footer(void *ctx) +{ + (void)ctx; + if (meow_ui_activity_active() != ACT_BROWSER) return; /* 非本页 active 不画(防跨页泄漏) */ + if (g_err != 0) return; char foot[96]; - if (g_n >= FSX_MAX_ENTRIES) + if (g_n == 0) + snprintf(foot, sizeof foot, "0 items"); + else if (g_n >= FSX_MAX_ENTRIES) snprintf(foot, sizeof foot, "%d items (showing first %d)", g_n, FSX_MAX_ENTRIES); else snprintf(foot, sizeof foot, "%d items %s", g_n, g_cur); app_draw_footer(r_content, foot); } -/* 列表 hit_cb:落点是否在内容区(行判定在 on_tap 里做)。 */ -static int browser_hit(meow_widget *w, int x, int y, void *ctx) -{ - (void)w; (void)ctx; - return x >= r_content.x && x < r_content.x + r_content.w && - y >= r_content.y && y < r_content.y + r_content.h; -} - /* ---- 导航 ---- */ static void browser_update_title(void) @@ -192,12 +138,15 @@ void browser_reload(void) int r = fsx_scan_dir(g_cur, g_entries, FSX_MAX_ENTRIES, &g_n); g_err = (r < 0) ? r : 0; if (g_err != 0) g_n = 0; - g_scroll = 0; - g_sel = -1; + if (g_list) { + meow_listview_set_count(g_list, g_n); /* 行数动态更新(§5.5) */ + meow_listview_set_scroll(g_list, 0); + meow_listview_set_sel(g_list, -1); + } browser_update_title(); const meow_theme *th = meow_theme_get(); meow_ui_set_page_bg(th->bg); - meow_ui_paint_full(); + meow_ui_paint_full(); /* 重画全注册绘制物(行/空态/页脚/topbar) */ } void browser_enter_dir(const char *path) @@ -371,10 +320,9 @@ int browser_on_tap(int x, int y) } if (g_err != 0 || g_n == 0) return 0; if (meow_widget_hit(g_list, x, y)) { - int op = (x >= r_content.x + r_content.w - APP_OP_W); - int row = (y - r_content.y + g_scroll) / APP_ROW_H; - if (row < 0 || row >= g_n) { browser_drag_reset(); return 1; } - g_sel = row; + int row = meow_listview_hit(g_list, x, y); /* 行号(含滚动换算;禁用行 -1) */ + if (row < 0) { browser_drag_reset(); return 1; } /* 命中列表但无有效行(空隙) */ + int op = meow_listview_hit_op(g_list, x, y); /* 行右 1/3 = 操作区 */ if (op) browser_open_sheet(row); else { fsx_entry *e = &g_entries[row]; @@ -393,14 +341,15 @@ void browser_touch_down(int x, int y) browser_drag_reset(); if (g_err != 0 || g_n == 0) return; if (meow_widget_hit(g_list, x, y)) { - int row = (y - r_content.y + g_scroll) / APP_ROW_H; - if (row >= 0 && row < g_n) { + int row = meow_listview_hit(g_list, x, y); + if (row >= 0) { g_press_row = row; g_press_ms = meow_ui_time_ms(); + meow_listview_set_sel(g_list, row); /* 按下高亮(§5.8.3 selected) */ } g_dragging = 1; g_drag_last_y = y; - meow_ui_invalidate(r_content.x, r_content.y, r_content.w, r_content.h); + meow_ui_invalidate(r_list.x, r_list.y, r_list.w, r_list.h); } } @@ -412,19 +361,18 @@ void browser_touch_move(int x, int y) int d = y - g_drag_last_y; if (d < 0) d = -d; if (d > 0) g_press_delta += d; - if (g_press_delta > 10) g_press_row = -1; + if (g_press_delta > 10) { + g_press_row = -1; + meow_listview_set_sel(g_list, -1); /* 拖动取消按下高亮 */ + } } int dy = y - g_drag_last_y; g_drag_last_y = y; if (dy == 0) return; - int ns = g_scroll - dy; - int ms = fsx_max_scroll(g_n, APP_ROW_H, browser_vp_h()); - if (ns < 0) ns = 0; - if (ns > ms) ns = ms; - if (ns != g_scroll) { - g_scroll = ns; - meow_ui_invalidate(r_content.x, r_content.y, r_content.w, r_content.h); - } + int before = meow_listview_scroll(g_list); + meow_listview_scroll_by(g_list, -dy); /* set_scroll 内部 clamp 到 [0,max] */ + if (meow_listview_scroll(g_list) != before) + meow_ui_invalidate(r_list.x, r_list.y, r_list.w, r_list.h); } void browser_swipe(int dir, int dist) @@ -432,14 +380,10 @@ void browser_swipe(int dir, int dist) if (dir != MEOW_SWIPE_UP && dir != MEOW_SWIPE_DOWN) return; if (g_err != 0 || g_n == 0) return; int del = (dir == MEOW_SWIPE_UP) ? dist : -dist; /* 上滑→显示更低内容 */ - int ns = g_scroll + del; - int ms = fsx_max_scroll(g_n, APP_ROW_H, browser_vp_h()); - if (ns < 0) ns = 0; - if (ns > ms) ns = ms; - if (ns != g_scroll) { - g_scroll = ns; - meow_ui_invalidate(r_content.x, r_content.y, r_content.w, r_content.h); - } + int before = meow_listview_scroll(g_list); + meow_listview_scroll_by(g_list, del); + if (meow_listview_scroll(g_list) != before) + meow_ui_invalidate(r_list.x, r_list.y, r_list.w, r_list.h); } /* on_tick:长按(≥500ms 未拖动)→ 打开该行 BottomSheet。 */ @@ -460,14 +404,22 @@ static void browser_page_create(meow_view *v, void *ctx) (void)v; ((browser_ctrl *)ctx)->view = v; r_content = app_content_rect(); + r_list = AR(r_content.x, r_content.y, r_content.w, r_content.h - APP_FOOTER_H); + if (r_list.h < 0) r_list.h = 0; strncpy(g_cur, FSX_SD_ROOT, sizeof g_cur - 1); g_cur[sizeof g_cur - 1] = '\0'; g_tb = app_topbar_create("Files", 1, "NEW"); - g_list = meow_widget_custom_create(r_content.x, r_content.y, r_content.w, r_content.h, - browser_render, browser_hit, NULL); - g_sel = -1; + /* 结构化列表:行数据源 browser_src2;单选模式(行高亮用 selected,§5.8.3) */ + g_list = meow_listview_create(r_list.x, r_list.y, r_list.w, r_list.h, 0, + browser_src2, NULL, MEOW_LIST_SEL_SINGLE); + meow_listview_set_item_h(g_list, APP_ROW_H); + /* 空态/页脚注册为非控件绘制物(列表视口不含页脚;invalidate/paint_full 自动重画) */ + g_empty_id = meow_draw_custom_register(1, r_list.x, r_list.y, r_list.w, r_list.h, + browser_draw_empty, NULL); + g_footer_id = meow_draw_custom_register(1, r_content.x, r_content.y + r_content.h - APP_FOOTER_H, + r_content.w, APP_FOOTER_H, browser_draw_footer, NULL); g_press_row = -1; - browser_reload(); + browser_reload(); /* 扫首个目录(count/scroll/sel 由 reload 写入 listview) */ } static void browser_page_enter(meow_view *v, void *ctx) @@ -488,6 +440,8 @@ static void browser_page_leave(meow_view *v, void *ctx) static void browser_page_destroy(meow_view *v, void *ctx) { (void)v; (void)ctx; + if (g_empty_id) { meow_draw_unregister(g_empty_id); g_empty_id = 0; } + if (g_footer_id) { meow_draw_unregister(g_footer_id); g_footer_id = 0; } if (g_list) { meow_widget_free(g_list); g_list = NULL; } if (g_tb) { meow_widget_free(g_tb); g_tb = NULL; } } diff --git a/patch_v2/hello_app/hello b/patch_v2/hello_app/hello index 22181ab74a978c3385ff55adc3fa5b7128950253..659611f79dc1a00f98e221a693b88b5c1dce631a 100755 GIT binary patch delta 83172 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

dZdY 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 oIQQSbI$Xp0 zLp3ZSOv7?6M>tZ$>hL6v(XeHsHLL+~*@%lC0j1)-6LBWJhOIz+w^qY4%^IdLYoeHl z7sEA3JWaz&@T{07*^3iARW1$d#dGPOccF$I!V__;hB@(E`q!1OVFP%qx2thke$2a5 z!^FEZtOeMMryNfn!bd_lD;vSteLBu6fUEJug!5hR6o1b>13NVAc(aDN@HFGm<8eL~ z%9`83AHMi$ef#3@rSTN5JEW#@BEJsr6b?KTPh3zw4=V;a@D>C>hT5PCs{EB_`H?b_ z03y=WpU|*UJhgaM;90gG!UOl=$?Vp!_LCas#v3{NNWipbNA=a50m8o|vr{W?#ekv&Lb!m}A^jv72D00D|50VsmrR|OSN zh<6tXB|h7aiKw&~?;VJX@N*pypa$VpC?gH=I-8cI;OVq#nH89YCyB9}9$d=)aPLx< z^WdHA<~w(3SMA`*ZFi%Jdyou|15ZRTl;eL~KzcI$yb157;$5d7zQ8^G@Mss{M^k2V zrq?s3pTk)iFcFvy%mx+#+kvIPoZoX+2kZsz18TB3I|`f)>;u*SBStgUH>j$WBfQRnptPtq9hqEf6y95;io%f+Zz_$B28vweN zA>UZWybq#6U>&d!*uMh#Ja{So3seC-3hV^ttmN!Gum%`mMEojL2+VsJT>>lu76O+6 zR{(2)K42rT4%h{31xBn!dBDw&K@eak&@c{sIcE-FG|=P1ivus&Ko_tOm<3z`%mw;@ zg}^#s`CmC}11?(!l>$qvIMbLIs{)#U^}s}6RyD`?K}8!mTSh$42kZqlPuJ&f3lK7R%_ z1B?b{0yhJ5fvvz|VAgid%7MAtF|lvPOF4)ZU<0rn*ahqcx}Jq#z*3-L0$Koc0wWsG zLSQs7510mA25fsCngX^oq8#9H;BjDm6KA?;#`f*tEE?DabOLKU%}_mF`hdm2;+HwA z1$y_wn1GsBPyjFocpg{?)Lo7WfYHFjeJBWc9+(9zd=*^?+`J!M2<$!pjR7NGzkwsml}3Rv(iR1Mq=Yy&zvArP?l7zCM!(eV*y zR$wX64P+mqtANLWtAItHph3XQPthP?Hn0}*`Nt7Fc+{Bmb4x2lfFCp#qDrGv*s1Fek7Bm<61z6Ic;&AFvdt2@_ZyP!DV&j6^xWMBsT~ zGf*Fc(K1S4BCrbR0yYA3fbGCy4_-vQz`VeYC`bnE1-1Y+27z?|bz=o~7AOKWA__D^ zFkq<_t6kuEUp=l{shWpX{1xakpcA+cm6bt_tyfW8Gr1KWX4U=J`8sL6wdfL34$&(qM1EjB zQ165WfFjWQKLSg0V*E$1f{H*K1+D<5JuI*)U>~p^n7JAP0XGAW0{elz6o&1vDR3k} z1Mn;`5t!u_*lZwMgK~i@fXjfJf#twMz|BDGBM{Vsm+VI&DXxlz*=A20DN_ub?Y{=Yd7Q@_lF_um)HQJOpe8M!$-d0+#{1f%U+CVCH_5 zmj+|^96*clQhWr~4D@}7f`E<3;Q4@uK7#Q9*~cgV*bE#1x;{Y*uYqv^oxoCHCa?vV z2kZx~0J=YgF#`*M4Zw0>8!+cM$^&|O@iKsy#LpnnG&mBV6DXd5s(`D2#lS9LDKO%5 zXbR{Awg7X09Y8Oz8`uwI*TRu?qdZ^@FcEkh=mtig#JC5x16N#&@t<-E;}%2*uo;;1 z1ylyy*MmLeh42fBf|y=W;=|1E3-SO?q;%sYo+1$2IgE(F#B&jYP} zu(9hP5HJzg4s>6K@vr$FEd`MREC!YWOMxZlp)z2^zabE?2G|R9|A1*U9jg2fYyo(_ zAF2n|{|H+EHUn1y`++q;%}*!?m<4PD<^qob8-Zs%co7eTFg6{I1ZVZAO#CJkG%z>AEAlyLBF|-g^1@r=s0&9S-t`OD+T=6kl z224C2!VELf_b1RIVCLu05U>uojKbXz1Xu)Y0B#1h0X3%}2r%mloW22bzVx6anJD;6 zoYDaYPKU5UVAfaA2=QldYDYY<4H)q?Gy=>7_5oJ`b=RX}U^Gzo4Fm!jzK3RjPGBLh z2)F{c8R!EZ0@eY~dhpUh3H}LH0aN}334!h(a11vK1p`gMLq9=7z@7^@GX$CjAs{dX zSOe?>HUP634tRj=z)p(i8rB1B1@;5Gf%@OU-v~IO1G>xcl8F~nh=vsaBeXa*0_vIi z$5+m0eAPsL*~rV82+BlsJLUln%#18pzuh2JRq3ue{x&8nipz{NWj=-75?*uh(D^9k z3-FY`1P`5=u8^unG+H`6^-(CS0daJWS|epNM};0jsO25WQf<`Ip=u^2vG;>C zbRYyovDU1oc(qW44j>+46?8~Tt1ZI5BT^-xq*H3Dw(AGp!>A5HisH!r+7Mxd^j?i2 zoP@-dk$FFqE})7&INv-)iY|~@aKU*JZ;kStN2mcI%v8!BWzz{zCb)WHG9w*4@<&`2xNJCdDv$n%D*#srPSLZ<-OR8AVyi$>0{SB?2j>G9 zp)e}98C>lp9HvxOAH-p`%MO8S{#dd|3BvK?(j3WdEr5F`Wz!#}a6nZeT)74*Sz)9@ znzw13H29J>GzSrmlTwpp7Q82=!;)Qaos!N;3C4Q(?QDPJsDz_Pc)mwUs!0%zo|YEY zBp7}0*eyXR+#1;5*V3k%govtd1Z>!lD<^WcQq_$$T750z&!2@VsM`u6bCrluHChp; zqbvgMyAM45QFUG52EbKODVhFKCN^qAHCpKDpHlwc;so7!sSJ?yZ>i~T#)xA0^IR%A zGjfGe^mIuZR*Te!;Lw*zylsM{-=MLj{Rp>?R4gmfH2W!DMGCRv=|ajn#Cef&oK&z+ zBV}*Un5}T?Zp5M?$}k|&451MJCu!-11W($4U+P@dVyGi?5$*Wp;*Kl^mvRZ`1?L7Q zQt|ksyfxqo!38XcumRi(a9F%k+lEGCTPTZT^@vEJh`dO}G!@k$Ll^j}Fz`Z_s*Uwe zX+kw4;Fv~8`LfZoc?29J<-;FU>_k)-IC`f)!c1_z;DRkO7u;=EpP zCUC)dYru&rH-_p^##94HCrDA6_eNAW>7pG>PMBn`jT79Xq&c7#H3A>&TTYny%X`BO0qo}C0RG=v{_aZA@LWZB=;tb&}@}vZA#EuMG`S% zW7I6FDJ>i`IhbITW`XMk=k?c4=?cIV#j5U;XsUM^xYAhZ$R@MV6gON1^Buv#5of(-X6||eook-$M3{kuW z@eVva;2IL8^vwysFG<3TOHKrTRI&*Dl}{d45A}8$xO#B=C{cE#Bj+hD3F||uHB~rR z2bGKX0%wRcxN~giGQ96|N=G&)2x-?yKW(-PS<@uTlNO%9~8LMVs1){{Os$-FmV}`VFOF~5P zEG)ZJk6IM);^Dc7AGiS#g49%N2`6org7RfaC$=P{Cf?}xD?#Scj_4xrKB^@v(h->7 zm5xH(`5UG5rxH9Z3;foX8QHGIfF*GqqcHJ+U!`WPdx2*^#n%hfAyxRk1#ULtvu{Q` zwLUYlZ+B2UbzBkRJ1{96r~H|b%_07}DXtW84Y&Bk%8Zo0dTO+gvQYZzDZ591>+l$% z{^~-~XmC0z27knz1t)?_Q5e-)DIymfiH7QiT(t@OvP*ap!3n+!e7%}J(C5onR9gt`?k(%Gbu`sy@7<89Ipbry45{>1}~M56CH zJ^517R*O)7yEJ!eg3#@eR&KQm&Nb4Ot!C}!HCV+;Cl8DZ^Nz+M{SmD0Y1#~}N67i8 zbOA|xkA|>v>Ar2_BzKc0wFeP~wZra*Wb6l511{_0HZd#02KfE%wbIgUc5UusSO81+ zy%80f1G4rpscD;8YbeKhpGc{Dn?_rXP^R?#!6-9*|LH^sLr?i5&q3dUj+aZur{jd< z6;k@s#yR~J_&!eYnUVT{jiJTN6a`;i88WmUBEOOd&b{u}J(USQZ=JLS#jO~Q9$NJ+ zLv#)JY^nx-)ZlV(ec&2sqzHMad%d!LrE2OCS1U;uo;I3Wq@miB;*<_Sbf+XG)mwz4 zHPYOAqtI6)-Bq6u>fVIyLa21)8H=Q^(M+MwQrUGEPdqEYwSilOYUq#3^MP}1gp$l+k!x|vY@d(qtljbBlRLGv=0e;wn=lIu?sCvOG}?I8>8#tCY6FzH;_3Nb85Y` z<(UNSzGor1bl--FlC=>w_KYU93vI3C($eS6Qup6Ap@)#R76gI}_1|o|m?ufRsjQ|8}#`+$eprJ;Cg1zBnRFA}u^ZPbXeN~!pVgTM5Ta^f zC_`Pb40%j1Nk^Wwc=}%&wluPz21IH0T+HnQrw`(wPu2-88eBKtv0iip79I3yZ2)`` zIVt$RV9!pU+X`RCeGoMdX+*laAxvm}Sz6wZkb3mM@MJnWQq=}cXg#RSZ%Y>%jE?5Rn8(#zLxY2IbsR7@0PiF?+vdBNE!4QZxy(}P(*g+lU_Nvqj;xC+HafFjs3 z)oe%>(TrAuSNalRMLuvfK^%2V7Pw|`R=fw?GNmm9-+4*e72wWZk``?o!Kx4uaa{WP zIdf?AXPD#!DRPrhvOce|=YH;=$%A$j)bw5|9&vguB{f>Y^b?@zZnDEQJ0?gajhYc@ zU|LRMS#e;z)cCwkC^#iuc;3E#kH%h(m_!_Ew4s>bjSBTxJ>t%Ofs_f_)*hTTD8&^# zuL-<{Ef5B*L zLsStZ4_Zr7)oDoL_y*Iiv~~9csrdz+)_E2wrRtrS{9e!)YY|GJeE6g4s*t|ptn~E@ z79ska6y9Xkwx7cZ7!*L$mCjiB-Eev<(rYYqoG9ft*|j-+G_Tp79A}#i@;E{{NPu0{ zkdG<=Pscx$3e`91w5>y-K7`zK;-gfB+eD#O&w12r zR<=AMf&=HJ)jQ&@Y5lif7eU5E>MBAKD-MscDYsuN8hc*wCE#17lTSrSeLFOvj{m?1 zaB1!{MoHfcDfL|g}x_U|-anaOcyN{LYQP(@XMqcKQ-R8&2SmLsF2c%;CjF*L&M+Yl-314OEa971j+_i z0?q($iec2si=L7mZ5Z!a1-=y5_%?&4KgwSP&T7H^FNIOLdT_bmtU+8WxE0`1{2Vp7 z16(t>F5jcaR@ueyC zQBuJk&7wRo&MCNlNCo1Lx1-O1p z`QyTlB2+RJXWi2G`=dhp5XwoBF6=RSBH}PFT!kx@{;X7-6`cDLE(P3daA`s5W`pxy z!qGj4R&W7PsJs$zM}s(uD+SkgmB!BM$htEli-tF%5C9Zikf^#Emu973HY?|cmUb{b zY5vyxdyP_dgEw3woolru)9nemAWL+hV@ZN&@N{W5&`OfP2@aQN(_c1+X5-a*t(1?~ z61=uuE3JOn=%E`HIk;LISej7}&~1wXa8A4jDj>cUJYB`jy@c-sPuFvmnL5bQdcnJ| zySN<1LSb$t;OlUr@buQvVbKWd)74(YSr%p-7Z}}iY0lob&?3C1&6Sq#wPg74n)^pI zoU|!q53L!g%m&1*Sbz~gaV5h(#){w}#8uslksv+1b%LiCp^jW!gGEg6!jnqTT!Dq^ zEx7VZaX||UYP}V4I$Sn(`QvEZklNG0XMzvbU>3M+aKRd+@(Zt^%Z`Z1^cNEBdA!I( zx0z=LRX`Qjf~OnK7;zVMM>BZ3^&HGopSOe00pFpfPrLYFDi?i)1lBy<<5d&51N&a8 zj4rUWAWjhwDh}*N=t4_B_+^x*AkrET+=^ft;)-vRX6>_h=zdGzZGID3p=PIImw}(1 zk2w$TY}GLD178n5h4>)Tq3bYodpo#oRL(x|bfY_%r%pHu9=E(bs>=dFis%JNSH4%^ z9X;&`9(|OF?$#Vad~nZ2gX;uWMS1)JQQ8#n1qJ@jL70S@4Xy#48}I7$G)mo?79gS* z5sl=QLg}hb%_6DtRbv?4)?tfr9h*LESy~aQMQ9b}FH)64a(9Ba-XWcM)f`6GdCChh zqtLE2G$IkPcS`2{=CDM(I{t)yB3~Ca8=(?}TF4vg3lS2Fa0y(4ieh$9W=f$Ie4^p`=_M!a&V=sx@oAc(i(-G}tq;PF97 zdg{RV&}M{P%cT7W%%Pol?OGZEcwgDhEWP`6*y&d7OI^^X*YvEbV=G~aGk%AwjI1_<;CS5 z2PcBdL0NEIo}tCWc|@#01nGnR2z8S&ywY(|oroaow1W3d*Q!$jqDZh5aE(D6<)00% z1Drp>*^WYpaaXnsP)b*3j2{nLIYQ!O3pbRRX zu5h)?l+GPAdfa&JMzR8bRy{BWoI6uHG)+^MB5--&+>|b;IBGyC;x;3$SdB9U`wOLk zh}T`OrFo0;T7w*Gyt4E5eSz6V{peT|{KLv`NC0SlK zhSL49v$LdWug8tZ#cRuKtu+1R@tzfU&$|KY{dMh13AKnnig?A4pzMHGr_x&x=a_@8 zRPzqS=@ITkTrJ{?C=P#QCq3ZU@BNxn?QF49$p9jv5#gYeK|M;DOv#`S=Ql2EU@$wu z7lF6>^AJz@=^9%(_}SqI;2d5ft!bE$M3>q+|A-%UP-^^{czU5L?GdR-8)G z)wkofNps&YhZf*ff4j8w4WnljUW;$nstf#}lVNIREhQ@$YNj$?iKk0)Dd1D^j-AZV z%t@E#ioh4C!)QqN)Gs}V>s$mCP+UP|ouFFxWvYHrlIad9^36C$B3`X`UR)=sITL&) z_)@j(Y^myRCWms{?k@i*%2F5jl$dVcnf|0@iKVT+Nhp0kc>R)#dCE&S`(}eDLFkWKFVbzjCHU=*VtTZ( z_18=VxeaI27r{;0rCD)4^%R!3nVJ+KEHdjLPQ2?4^+ly8d>sWj&dyCO@5X0n@yCSX63$DYzbR#YRx;5GJNVt~KV0Ak}7RlgHInkd;1&*diR zzQg14|9Fr^q_O(=5zI|`VfewQ>yz+U(X@+tO(Pb+7}zlB#b4f}wV(#y#<}bG+p%I= z438LvFy*;g6Dw}+WfAzbix_Klvk`2J3oD`1hZ8(6EA$8@S)5iBzyF$w(JIL(>)4Q3 zaRiHUjr@j1Xv!DkXCU0QBrH}`!-bU;{##J^nn;fPbbf4bnMUylUHKzTBiLA1jgd!0 zlyAek(WNgx*t8{r(rFed6?f@lp_HBRu~w^4n8zccS*SR(4|n|$hSbPdUrDGhKct|p zytMKw60|(Ca@1K8tgy24b#*OF0wtrpCh5#O*M|K2J0?$_FN~Mm9XcrWhK~3-)sQ5% z+{;4!N~KCFqrf?sQ0G_ZSV&H-z+9^+{&D94iwj+_~1~o20V|a3D$z_e@vg zw(L^vcy`#c@g3~h9ZqdCY=PnSmR8(*4bnK>!sM{Jr>QBf@{B4CvnoR!dJ>~sSOmD3 zI;!9(Dj3168d5Ta-Q_kPK7%NUJuT9bcjI`jRQ+yLt|ug(r4NKXh7zUo7&8wSvXgwN?}<>7Ai*q8r1UB#KRQE1u;S z3x=zFa;-4IGaH>5NXGbZGIAWV%QMzn{T;Y`wla#v9QO2%Y_<(geZ0t;<2TGiu`qlp zWE{_+Z(ddV-l#Cx( zgtR;<^#eP6n6&VN{4tfWJmOmj9Pl*VR_X8u=A<-uIFfRbZXP>5sE!1+8c_^G@=-P( zQO`q_@{g{S#vDyjBszYvMDvfXS2Xln5|M;9-PVxo!y$Ko)8FvA8iuAQw5B1A}VGPg|s>W0o-u z$Ku6KztNB(y*FPvam*-`E|h*amK>hGTlE)6ocz(I`7}x+{6k6)g9#{;)Ua9S@2J1V zE5^dVjN6XyeZmruVLWC z#UjVFPZxSFO-k7~6GUr;{h}f!=`<)pP>SsIWi$qgKkBo?;i^?x%ZA^(z(=w*iEjlN z?Qx$Cms@SlgTq{itJ}BBc>EDA9Q8??K1&F9l)04h#IjvSJ{!Yzy%_7!Y=kJ)ee00) zpX-I=KFR)hg3(%L^XVby6lOQXdcBZM(Z%A=lj9tSIye~>IbxaHp;cNwFgQXK9nZ3( zzBf_)2-GU={e0oH|J|e7k(zs|Z!{~wCv4R(JIYdgjExq8x=weGq#}Mv9cWUG% z)Qpq3_v4e6oLm5-u%l2xSm-ZQF^X~+Mfs3XoI06rR_nn4WwA;#Uzr+SutVKLV3!4j<8%V>P6-aJ%9ifv!yTi!+#DuX|4 z*ys| zcgI@WLSh}=LLz&1U5vEo>#2%q#-znE*}9WErH-!+Lk4h1P-lyZQEX+w^NHFqAz~7X zF$}U(X=EtFy-j06O891bkO3&viEln3!S|lEkTyO!n?MqWetQ>bW9hdE)OVY{okmHH zefz%JcTUD_uc#(&VB6PK?UnYQONw;*DbDT^LH%@YmZE4M=MB53fki^)2Bc(%A1~@ZW2`zZL)e+xHXk-`(HO6nggV`sw@C zO4qFXmxWAX)4#}YV_>*5g){zHPchtD7;f#5;f^`KoX1FiJwJ6k)fDUW3c34+2PxUf zLg^1bOr92f2(h(Z_V>4eRc`G1f`_gX)szUAc^AP+k9GC{F9#A9jQLA&WQ0c&J|tJQyI#<23uV!J9INmS6%_00C8@8 zbj7JALHEJ^>bRZZvpF&t?O;go9^W&S2|BHS)tj=~6<&p?nD;d-L;B#~qf=-Qz&(lQ zgBsZ5i}i)FI%Rc;&9F#$Xjexv_4u5PQr>@@((E5H(;a2=A@qyvvZ}4hppLGv`$YdN zONq(GUZ04y>%tKd)lXE<3wBCB4%sI#4ty@9CfsM z5&mOOCjFCmzk5~HKWRMRu6iqC;T$vIg17F7ab`mujQV)Ne`fGorH%jjJz3%D|5)OB z;nrf%eDWdzsmN_xf?OY2dw=p(`#YhXG&gBh_~u=_J0J}@b`!mmWLTvJ9Fb}oNGnzM zKO}tosucdCIqYM|`S##q@hNHak5NR<_%SKrm|ytYvFZzDiQ75)8MpnXIAtpSY03Dx`$?K^7Gqru{h(H-71A)_R%zbP(-WwP*m5W(liZ}D z!u_hsXaZ&^eH3a$nR|a;$mdF92V$V4c|XTX1p^u*W!L$$_YS@qZ(s*@Y@wUyK+k+6&i?Q1oH7%9FLil+;OjnyN!wXMKx& zsm!hj)`gNqlzi5=xRLsyPZ3&hoySzJ$L3>r3G(KJX_3~7wz_`bbB$t!x3S+RMGns3 zi==sj6XVVX&Gvo%_p>M}8f^^Mt7Ev&Cv6zCM6wF8G0>iaZ%YRU&UL-#z@R5=IzS0U?S_X@8^e|Q-ZxeX3(C?Fv2|Qgm?~{!oJTCcf1w7*Q z>7mT#wJQtWJ~*Lh#uKp1RR&PNE5v%qA##_aOkNtojUIAtutQPDcqMrWa$+HLu7tru zacGv9-=+=|ewc>1dPJZ{#|T^&F{1~x|cH@MIkve^G)gMTlQK(XZo zICp<(9rdJ}?Ovzx_Y_SU)U)JYILk=54C_*=OjH(DGlbYyH@mDgLus(JLY}MP_W5GP z6yMFvIUE)-?*(1&(GM znt6irDhmpy9V<%iqWCV%EWwH+o<@O_?OK<}TGlOBI~1#9L^#Xj3lIi-64@Tg?~m)R zc-Gfn@jL{NaK-3EX0!f|O-c*ptg^fU>$zA~S@uGIg}gTu4MCotLivo)TVG>3lrv)l zPYTym(t*ZIQBx_e9DznADyt$p>j~QaYAUUYZ|big6kM#*-Pm7Y6E#fbbrp8J&-Ce_ z5Y9?P&ekT{Om{+Ft*ftMyVzH;3x`@q8xgORV?w%{nHS!0rV^%3xk(+Gzelfg7Y>6W zx-W|r=laL9YQm#o1@V=n1V>pMD#A$|j#ZT76wLWzSxlvy6%3E(GWjkYkHcCm#z%Q* z-(xM4H|h8sVdrb|X&oB7kB(xnhaF_~$;0oZL+=`PBA&DPSc_1dw6vcgygz6)2yBYN zp-#y0KwN_E4&g2EWVzdMv=A6F!TU84%FAZW>vGu6b-C=tb$M);{PR?9v-e{L&|n6j zse%fi$~vJDEKZaHmmiQ1hw*9QaG;8|63gVsaBiHVsTkhuIRhI!I5i!5hNd?SQyWfZ zPT@)ZX@K5)gQg2Zg}gMJC&d{mvVB)6{~i{O>nr9pl7i{r>HJ7hREHyl<%8jTn$U7Y zz7WnWgqF*=#np0z`~+>h-O8*+ZJ2wI=?oQ4MP~oI(hw_&pv)7WNRv`Wy?kQZ>H$r^eTv-=YZ<)o3& zA^h^(kr4JD5JoIh^#xRP^;@ot%5aq3B7Z%9pAeh-u5p%H-z;COW<+wo(k(n&H zknM^mt*E9W&l$xnk!0y46l3+3u=3@j_!1r?pB%-nKSNolKZU7N<_YrV6!FNW{Pa1-0+EPd(A;ev3trmk5aKMF+imLABgK zTi>~$o=iN6d6E`e!MZA9+t!iZ3vra^D7&)}bLM4=6|BNa46g5eJ&(g_j{K7z^9RC~ z(daylU7iNKDy3|Sl9q;q9)bosL+v!2RAHtM9xk*pQn8{kb944(q@i?9v+ zb!4;>$#Hfq;0b{t(ehG@_fXd$&YV)p-fBGVtE;nC6xMb7+>Kp6buJ^fK!Wu8!_*;i z=RJZ!uEL=g4ibh>(r8V>**Fb70Vj^nrdVg_UHVGC9^XIRj`*B(Y7EvOS6~xiYg%wHvn|BdYzP0?AfF!$sI1zRO^c zC(AEK@kyS-Lky!qA4k!d_~b?t(smrdYvCj(=>(`+aAlTdDA^||*`J9|hWWV>uL<(u zWhf_8ndG?ZAE9LC_3_i;Y^fY-2E_>wn~v-$?1ryHo$0Qg5K&2R1cgRalTYBTEvSeR z5vK>I>cQGbvQxYP@oF2k8u+B-EkSLFhg%75gU&A_Wh>ML;^YekZcH*%lDbB_4As_c z6#u^{)==$?Q;PPt5x=BYT#%t!o-vjm5loeP#u)i50Wb1G6NU%Ye5*|$fNz?xV%YJ9 zJZ3ykhPoE;?Gpdy?VX;h_M6BKs~ zz9XuQl8=nXP~1LW{u($f&`}eE(&h}Mx}>Q1sNef11qM0Jc$!xk&%Pkb(l&n%OdOyCO~ z|F@w5GxuQ_t&_7_x#*#u)K}V+!4&KDvWo|k4L>8~NhZHDrkdPXzoJ27REIJeVJA5W zS8tV285y+QJ6n}3G8TpB7C09AS34OC>$iru%fw1bt1jyn%l{kAuhi%(t#xv9JvZ6t zGn>9LL<_o2UF*17xlS&)oa^lWH(kI@ zJbpPh>kO5Pd{%5iW$(Xu^fW`|VpzD^rcoEQX$smi1_LX~#n?5Mw5t&9k_8J-xAazF zmB=z22EX3IFDgUMxA3^s-l|27UcaX}TQvi%$$*B$Mp`|px`i>JoJ;cVweSStY?XZ4 zf|U*G3!TVkCDC&JRd|o-euJjvy!uV6K!~k#GZWj5`M6G~!(t#iPF^{YCxkr?Z*?8Q zHhIltK3;xvA|JyG)$(cY>$GO&X^^Lj@crM+T7~PqAZc zWtZ)0EU%X5+Bq)hA!}*1yu{9D@dSA%qNAvULMp-G#=l&nEV1z|YpmR7=V?YAmH;M1 zVmm7ZmLm`^J%*d(3aaf*RAswH6zQuk`94aoM|$EPhg-UNzPvhy8>ih2O^X=ElS~3D zs7^++W-58_3xnVMjl2iY3~IvkJoyOnkDw;Qn&h8teEj&|YO~tj%S9gZt1}|_5C0jF zjQb`Fgxw3}7ezkHUR6D%v8vhzwWlhxaRJ^N1Rkgez7Q5Ri z3G#+mxMNt*-dI@SjCt~Dq)DGK4`xBwlPf)&$ zIo+%rht39u>sqjZz^(YS*wqOnXAqa>B1A?M87yJCnQ41VtG*_kD_9hgN6g5 zD-U*`i)Dy^9Iz$QVp9vLb`NGGK6O}rF_9-A%V&xF>XCE>Ko8?3KRH*nUCGDsx$-qv z^2t>8k}F|ffnz^16WHX2EBR_98JomoY{f4@Ox#w%DIrb^U)&MvfX{~WouX)Agg9Eh zC5cZ&Rewq1JB$HOKQG|vYsu5g>65vU#^r*^7@v>Nmsd{a$^4J<3zPYcwCcHl=s0x< z76=~(h9H&ztKSI>)%W7yiq^p^Pjm8w@KW#`XD}BQ>{;sM`P^Dx9jgqOx@z@|gbbje zI<8TR58ac{p_+mVT9 zHf(0DJa4MfC4ZjECy`g(FqPXA0(E0?yv~i|B2_N8pdu5NbTHk8!6@;?TjWzy`PV{M zhkPUj3s#`trXUl)MnooueJbX33Ijk5t zZ0$di^$+8MekmJ1zC(+h=r{a zQqNNyL!6NngwlK=utiC<1Eq7CaO)z$5EvhDFEod68lJeVa|QA#pW5o&{)0p}mN}9l z>ElX6qncD49V4nIjc!3D0w<4w@MtoPd>3DEjViwz<~kqds+u{C^#5kA80uJYScS>* zw=RAw9q-J!4&yd!y}T4?X{=UPgVD_93wLl9tFL2T_U6eEzXr%O4_o`aj=1i6S!jPeKEx+Ut4p z6?N70DVV$JtFML%qr?=<2Try%Uc{G*M4%N&r)8-!)`=vLZ5CfQ=85;9++3@$=Di`o z4$gv;&D`_vS$rlJ9)C}sHX9q=58so+Z{VAh+HSxk1!>;DfhUL7RX^aXhh%g34Ejtk zcMjIaz%6t5{d~rr(ZA;(aj4)-mQrKbANWVY6Yt5V{(uh%{qLideFY4vFwf=rVanHH zSkE|l&0Ne^`#a?gb9tp1#-`lcRDI((F%h5f{601PMoe?CuKXK${z&Cs8dhs`h&!js*AP$dIlY(=|wj^Tv!(cZeT- zAg`Z?JwPCyzJKHY;R9*#X@s3bni=A`59D+6FlaD~kD1T!5vk`qzZMBG)tSGgD_vi-+N$w~X)) zte`-rl1V=HM{Y5yl?}(Gsd3>8ek0DU#-;yOTqc}8_B{75;B(WJJvJIjvoaRJJED>A zE=5WBbsyWaE(@{+bHVReSX@}Zjbk48P#r!xrtxp>)=O@|-U#7? zx4`2e{Pit7X*4bC=(5AuW2($knYIG$1gcX*Z7`^ zr=1VE72Hl$H~C@o(@aMD>Vuq{46rpL{D%HIjfd8wG?R zo5Yl~`c`fZBcc9;qrotFO(c&R8~g#{PH1It&@RG<+{$N$2bzq@V!Lpwxn;*8)S89`8tuGkHPQT$d?JsV$DjF#KAvN;#$*qVye$k89FtGH$c<9>&*Acg z2|Q98TVBUT%2(WuCDb3}TW;sKbDR9~?R=7E-bYNQtXySH0nZe2ZMYJLN;G|vSPpGq5Dc-}z6 z7GZlaa?jYs{2?wp^o3k`2UhFA?RRkd$odmx-I1bsu3mUK=~O=HWaa`K&gsga7(u#-(z#BKM-J@l#k(w#8! z`V;aecVan1~l@ip3M#&ZTV8%y*&)vh#=0N+&x|eI|Kx1puJhj3T_we-aQ_vj=I{1kk zw-h#te6yB9zYl$(4x@qNsvanR(};`m?_bK7Q2K;>(eW<%&U@ANZ@L$LgL<@to8^cS z?)3+@50TmTai{Rhr}88B;biugPpJZfNEqAfMy)5;YnW~5M-G8_*?J#03>D$LpO^X- zX_PzeM|r66!u^=AS00!1AK=?4EG)xmGbd&lLK55fo# z-tr)Lq(6mlTtKIa!gRw8CL^M_*yaLux<^h}&gb(e`QhdK4lF27F6Y;hDl8AFDolR} z({I&jdHX~7ZVmp_L+JOa&*ZyS@couI{N|d;URW2XjV8_5+BSChvpqBZf{h6uA>Xi) z?-+j#Y9w#gKH*GdEUrezdTAfGd!1Vz{XhJJF@fHV(a#VvSx;rz3HgWrfxCVLqO8Jz zLe;6Oc)mT5?hiqRLS{#eq7y`(v?!DDg4R-BH*fF^|vr$d$RKaA@TO1e5L*RZXXx*yfEn}{y8)h^7Q ztCWGL7lYqzwIxEEPS0%3uVM8woaVpr^zk#0F1F5%i#bDiCJjXdC!+UX7bb66&5d(^ zOQ7JqWW+%gTvWcTww|@YAK98S{ArXjJ-=0Ea2dARLzm(7NY#K`h343{`ir++KW&8k9{t`%7 zHH@QP3SU5Yxc*-&LRErM`~_ASNO!Q#z*a%FN8n)Ln-4$2%@$fe(cQEZR^61y)>Jy# znx@olQu-LI!DQi4e%DwE6CcaqSCDL?!u{~yeMKR$|M2&EL9>o{3Pr45sI3Y%4# z#;&hK33E%~KSs)1OZiQn7f}%Y@rk%}C}JdAWT1E250g_k-9vtuZkb?B0Hslw4vk}V zZv3G3j>_)A7{f1vf@pKlwOgy8C>Qaxf1ti5<>C~$=}FWvfOHs!IKo?`glTH-8+=uM zU@adFS=O%Qe*%2FmcMevoV?qSx{}mJ9Ncow+^52oPf8|pn*(oYs5Pu%z;)RoP z(&N~Kj+7TY&ZqOs<*konA3Re2@NxbrU$kfE|8j{7Z=KpRs{->X&zJwc4*hkt99xA= z-&0@63#xFQ^}k=pTdGi7#}~4(8k7D0FXScF@a(I?xRjF27y_hH8_XK}HIQyl1 z`Uy;C4}K{pZ06~aC%;saV6`Zo{BqCo%^bh2`Ti^UrziOwu92_b!oLc0e?`OgP0=l1 z^%OrKbbclOK>x;Y?`iq*I_LuUejVmZ@ME^}bX_Ns$MkuaTwKSaDR%i*o*&)|Sp;^6 zi13N6e2Z}ID|z)c>}^Wc&&2Wj@CCVL>*ej+cyi>j^}1M_j&qJYCF|wW+qea3WAJ6~ zqO``RvDq(KPnVlQT*y23X+8_-1e^-Hhc4YwnNLGODCh9g@Gm9nXH<^!$H#gxXO^qy zKS-BUk5fvD$N%RVF3>%K?=x0|9w&3vy{ZLO_sT2lvHY2b-H0ztE7G=|b`dz~9)q#p zq`@AIHU@9am;YJMpCjDz41Yu!={o#KuRLsY6AiJ_FpjjiC(tZU+s>ErX!-Bk`Q#gD z<*z|9d<7R*3?;FNtMFbP#+tlg`legXsVlE*zE!bU$C|!7!y-z62LG*&akA}MjHBst z#jwt_J6@C(b1(_bzQuhekYAT`Rr8gkei?7&M|XPQ7o?1 zU+Z@nKYl0w^I2}k(aYEd?hy{2kvBAO`%toX{Ko~`&&Y=xxOuD<--5j98j)&w#eab_ zTmG?u|4u-X8GpyePvHH3$05q#zvb%iRT9u6sZoK$cf#Lbr;b*DqOzcJZTCET(M|{O&>GM2w{GCeC^c&PQIOYt&C6_f&f=0Y^&#TX4pD}v4ugNho;Y#^r zBahO3@)~^~s$VCUWDBN01ZJdws#G~+@wu!{X>)|Xr-?6>Y&iN0ag|GV;4<-|5_QgU zvmC#g|12+hf!_!Ry7L9Bak0BR_X6hVc?;#ZCU`{H|EwmyWGwaQbo6L}PN?*T(G_T$ zAj)qv@!Jm|XBUrwf~t3M*{FO~ zOsf+ZyQ+ ztLW>2xOn;77CugR_pBVcn@`ix5lA9VedM~`+!U^s?G}2^%1d_hxshtvi)DjS|C_t{ zEaP=AQ)d+j(JZyn%B~K`W`7Br%p&==mv}ris_Z3Ix!YgjNuWP`iQhi4O1k(rwG9}V zWZ{iK{3uuc{6%c?yXWIp-KsrYKkee=f~!HwPzFLH27-yjV4&bw1DqGXt!={sGw`#i zW=Vc?5B69Ml6-CtHye<~|C?VXtoT+{n%tbptukG?5z4-mXSMQaW2&U!p9%|*N?zZ} z?L`gJ8lTbsQzZN&Yd)_vP@RZx4jNapREm2rZ| z+cqwaZQCfHei=tv?Hdd0nm1)#w}Lq*t->%#a^^l~4BE{GHmBcUMqcJ9G`(axMzupfp(E*2KIZu4Q8!ehILh z;WsB#UpOnntc}%(c%yvfejdNDdE=w&Ia}n+^`BEwz3m&V=oDGG`#Ffuwk;c{DxK2m z#}25J(vfO$%(^b{Bbqu)B=jRH6Ydw|drZ@QKEqg0cGC+ZSh%YYn5umH2zNn6p$B-X z=SJuPzhZ2pwgv8UQ@Jf0MYY{as5mn`GyIVd5fKS- zKtnS_L?t6LWYx@C*UWWY*8$ZEIv^=DMzxnJJl$Y?+x+ zxe8|T`<{EB2S&Hv_xJnp`S5w>xzGJ`?z!ild(OG%p8JN{Gm{WG0m#|8zEX7fFdCOY zxU1r0>Xf&-Xo|-+6##^y!|&o-CRIanN2d z{pIz7(%I2avyQ!S2e#F&}<06R5UnS+iB^1^-Utk5&- zmsg!x&-d*6ON|Tb@EhWpZ>h!Q=P^M^;GhUU1Uh!Jbjt?v zOz)c0xSlreXkzEpLMkEgCQ zuIF)YtEHpQug^sOu5d@SqaQtT?!7GKRNV6+sCML4`5uFINaQBuH$#jd@4UwKdA_fV zJ~lV=eQ&Fo$!~unXH4tYGOz59Jmz*YtbFCWY68FO01U?fcH;r)QkD(QRdqq^h}Mas_x}4zoYi@?D`IK1}!{jAc%C3pX0D4rIi|KXzkl~R98@IDF;<+ z*jENHZ-2vc4?+UCm;d}Aqz>d>b`V>aNZxf&O%EfWs8*z3ItW|i|4lzlw1?n`H}x08 zCzugQXBeh>8afK`ViDmJRwUr**2*9ZHIGg$r2y z*k?DKfoTqaF71b)rdl^-V9DH6O%B2qg$_!) z`OWjGrf_c#7%4E+5mR?G2bUH^8eEE}VbW@@k@u%*P0ou%z{L_&-gZcRAk49$0Nm7? zow11`hDF z-#h|{N%8(+HNS%79a@8>>xW#U%yk)hvmgU%oJQd2`Xc|~_43#XajS#t#OVK2`oItnneHw`&+iHqQ>Wvpr4|4(x(NT+O2~$e+DKD`j!mR!Mw-`MNB8^%zzCE z`UoRT51bJ89)W+Cl<{SFoQ&uA1ys+np5v~6s>?`_-~LZEIXA1$iB(jN@;Oil^=bBZ zk_x^w-r@QG0`35g#RqRV&K-)zDk)N7d4jnNX&w+wIte^xe(De4-FH--Vow7VO1~X>SU0DRr@x22qMW)kELCdGztE<)&LMth zJQrWp6ILu07IpfDzAk)E-O94+xa)mb$*F&CSWrn7mN-jCFaS#P;v}P*GY3aVk&lh4 z<161+W77w0&~>Vx`bOWWUfG^(d%%VPMtO;2lt2DHIc}$9#!Yk zt?GSMwfvd))oum1X3eUjvqt$T)Es_;bY$~C)@?!&ksMI79aV=7*x(Y~2SpwEKy~Gg zs3X!=1QQ@5n(Vq;Hx*cTzzeZ0$3P>QF48tglup{hQ;(_9Lnm)>q7GY5*%r-5riwZh zb`op6Fj+Vqc{g#mvMrrpptk5|aln;G_F=yGm^wCfM4j~2995@dbyI|$*=7XSBFtc$ z-O~oek46Z#jT^_*^n21ayi=P~S6S<=E31X@krY;=sdJVU`?KmuBeD51o^#aSbw!Cd zu3B(-Say+S#ra6LPU)e{qGvqk@|EHA!)5OL2n!X6V(o{JtUzG9Kg6yxp6ocb3Xz_B z9D|4V8OPP+^q2pwSoeWXQ+4~`0&iAF@3T9_i)u+!+=U(zMp1s>aVRk;f8{uo7QAPF z1o;Q=B_GN9SAB#Di1$Mu$?uUTBpj(Huvv=qCr`lGi*kEU$Z{u7sM+^qJty7oRAq^- zqdhutl#5A4Y(L{U_EMCRP-{~>{sNu`ldLZF64eX9kK=gXum4*#ttRoLrzx0C8!aomv62zNxmsX+`Dl)UgHTrM93C6WRl&7=x5 zol#7=3~Ti25M`iPC1M}|kQt6d8v?*AbJ;KpJ%nYE(y30OPFg1E-CQQktK?}Q1L4n1X z22QE7Y3ro85wv#pFMMO8S}L}6PPzsNgPt;QO{uMs=6E#)C zEaG3k1oKJCNM_{?pQt(Pz!iSu6Oa_1*{9)xHw>~C8Q1dorqgOa)x-aB8V09f{F~G2 z-7r55{Zt(sxv`Vv?F8POEquwRYI5N`jE{VG`1cxOG2+UJp1x_k@27M_Z?`XA4IGzR}~m==!}vL?OFug5!zo@7FS(` zhNa`w)NzRCc=ylQLI*q%4gh5cHi;UWPIZt;$b6^Y5^lW;_A9~ILgldw{^c3-4Y35~F&LxsGG2%0 zkC`rwI_u8DGvWa&uRjaPKRQg}_-g^LqV!hz>9cCI22qdy{pYMFw*}Ok5Zd2(osSDZ zH`~~W&kkTyi#TzG(8Dw!w;bCx9a}6w?ACyq8oOZ2)b;~fi?)~tv|woJ#4iQZ*+#Wf z&%qM})vi6KCgU)$vEJDneC&BOiTD0Og%8p>)nnvNYJy1*xr>{y>dA^6t7pScskTWS zVdVLuN$nRWsYk7U9h;0%3afuriLQS|=~3@j;_79&L|z!e>=kix7!=c3N*l9-tN^33 zvYm8-H<}i0ae?y7KoEI|`9_ygDmZAf6x)fF*o)0KhM9sRq_vM0jTCJi(CA3>{~Iv> z|1AMFHU8<(SqL=usVGROl)G1pw){-51Qn9#uRwxDV+P$jtG;ZLjsB}e@~z;m|Ms(> zu3tuXo6+516a;sjHXh8uz2|eaUo_z?e5a~h2d>OQDB%0NeX!K?YX6_ghB3|I8!tnb zm-OjxTwzWL@PFyU;b$l_|2lPRIgFmp(u24bCn za3w`JsX+U42i30iQj&78tJk>a5*AXlTzE;H(bvrX4#W(b(#aQr{c9`suOW)~h`EWG zaq*IBjcW{dVU8~b3)SF+8!ra@pt=Nt5CSQObNkn7iHATWA_2dH9ymZq3zBVO?m?O$ zn`7@w-1jvO?^4TcfE4Fg60rYu;A>DhB#R4p+6h{!=a=8hasTD_Jgylm8!Wo8S)Jjb zva}a=R8@TkRR$k|JY^H|wzWBGp_mAs1Gay%8Ja!Kd*1vA>ur5O)Q0Vs+8@*`19_kP zp!SMJ@E!fuNkr6hUQOk%exp8WRgZN;j^ku{Ih9VvQy*+0L{1K)T9avQ!)X@zUq*&q0UR<$(j><>f?OviijHKDgny#~+wLcZmi zI?~bc)y&oLywSGV^B)94fyp|0A-OCFB=QDMtL^_@&AJJuIX8k~isNP1B@*ketM9WT zH~5kt+L;2VuWt~k1XsM|HbSo1&+hyWH`KvKH${~ZYui+>F*ebBQk%L?oyEUt!&c;Ax~Gt_bn|m8e_msgxSFkiG(?Y%YN`j37dB6^z zc2B57e0yENA?yYli<+S-8`Dj(2+{+-;%u=Y-hjD%r$;Cn*u_+ZzTaj@ zwIoInyP+Ull#Y06g1znk3gI|dE_>%IzOXCvRD5ocP&6Q4lkvN)?J2OesVRve@*9a< zP=*j!I9_RfLb~>fg{w4p)WS|l2pFTdut&Ig2UDU^`R*O9 zZFhQNl?>gk3<6)KP2O6BpTv@aV1i@NSSMv9j`dMvyLXV2H91v@?`g0TqCR&B-)Lv4 z6)nswkh1_~Wd6VGAl*XjPol1OEz}`0;r8@B8zRs0zlv3b1OhVI5#OHJN#~Cwk~#$(q(lKY=x1Oo-P) z?M?-p-B<=F{)2AJ8D?e~4VKl7#UPAKk0{m$+uJ-dij7E;8{gDdbJLq_y3}6~2~H1? zM~wzt>imT$mJ~suP|0W#7t+v!*Ysr34yUga9Uw%Tg1*_gN&saG;gQ{0EQ7F_jAt+N z8&lS#$AAJBplq0R0y^mA4|Zqch7q`k2m(+3O0kN?C<(wEpo8tV2BQ@U#&_D%(1UtP zBxA1Cv~FV*`Pbc9&whWwRx#0y*;)o>U!y>^D=`J+5Vq5$_>~?$X1&4(Mzf@fGir!0 zIp%34JTV@`yD2d|QB`^=yAcwwf!S*mWrVT?;cGW5u}Y>$Bm58%M=0F@f$F1xZZ^~C`q>N!P%kB9vnx(gu9n*GbS9JX~Z5a%R)KSQ;3(TjAla`KEz|!9Ms-U z>^Nt&BOftFbv%odR}$bO1R>Iyk%)I9WK+QK0yVFI=zhnOdLTCYQo$6!K&&NmN8nIV zybW>GfCQ%jgBW83=0LO6$!LC&k?!0!p8+PM4N@LA(sqIlB9(lxQ)FU2Mv=5L3Tkb# zb+r5aOHw07wu3Ob!Bo5JUis zZwEjF0K)|UG}I)XnE>QKw@$YH8G|_q3ng~t|*+`{7a>aViLCMOGA1*ru{xle`*{Dc|_wT zD{v<2L=n|apq)&U1dO%4d?#Nj%?wN|1Bf~U2s)8e3=g+^*`sjGAYc%5u)0O#zMd@R z_Me{2+tBwIOx6jIe#2~2i8%QOJ(*jr=3VVLUT2GC5f$fDhs~SDu=_Ow3kt0>@yhfN z)%pX%I$uNu7GpGzDs~@J@`SD1igoK&-aiRo6Kf@IL&v-=%G&fLm;uBsVgNw61OSxp zf=S!r`?=a+AEoT7z#QyYM2IC3Po@fb0to8sHYMFhfOInsd>qAZRFW8uPSSg4KU(z5+!s~9F(6ZK_TW5Z!N!x2SC7Q5lXtguS<8JeiIuG)$O9%&6A-x zJ=ER=CD)_S!8fAOoeZe2eG>)FMdLu8MiVU!B*$Ox#bSmKQW3Bii|}Tcq!Q478J}0I ziC71Sm}o6#B!9CC8^G-nBRD7G?TMnKVs2mR5qOicz;9r{E^!{1k4w12-Lv z)4k5YsKJ3hg&Q#Ac(`W<^G7H61aMHXV_z3LkdtR1C(5G$9}4`xcS2D1Sl`no7~~`A zw;bd{(Rm&MS<))EX@_%LfH@tz!Tq)fYd=L62v^=S)*2O4kYNt|40&I`YLKVg5W&nL zDPZ+~cTa^}xSX$kD|(oq1xfU(yRMDcKiYO|2Fg}SwPNSo3WG}b->>p-69 z=tCT;cFzizFU&ClYd0np?z<+w9V|Ezv?PRCm1qn_4_uhy^l2C>nP>Bk&PtP~tMay| zi}IbPhjPqA#3=>0N;rc#eLa=WJmJbaLU@Dh32s8`qLByQe6RCA0EoDo8#Sf13MN@D zccdYH$VCsc_9f|o;OXd?Wa%`GiWC>`mcRxiQST`eNnQ`DQu11=dIg4v8!($|&NN7J z75wK3tdH9zP?kRc2h<_Rn1!DZvM3>FKthm@7AL}j9Cx0d$kJ}l&>J9`D_tqf zcOL%Jlw;~ZEC#;>o47t%4icmOE0IOV)-J|$SRw>rlPcQU{^DWECjQSv)+;8y zeJ0#Yz?>y9mk~9;LHV5Do&*|@ON+dxWfP`qC%|x4P~NT58g-O9w?eghR;VgE%wS;2 z*TZV^lnDX}ao9|J0jok3sJk10=m91+5mQ+z1B5K;csfx_NRM zi_Ddc?P`~DiNkbE%uekS(*e9#mBs1Cz5yuE!KQZNd;2k0g_wI_UpfG#32Uy<`^5?^ zP5rBo{rhu!{~+&p9RGs`X{rJt7%Wm1Zl1$YKJ%g_+AP8>goF~RoBljz z+Qf-!PRT@PMvStU_rINWub65CMxb>S&Y$S~3p?U%kgKq*NK={C2y;4rWQbp54DBuk z08=cD4wY9Eze(jKVV{;#TD&PANggD~gT3qK_XUcxqCEqBph6TIj51Kgy-|>W>S(~s z69RdwJJOdTR(h>HtTs;Bj}C-c7ekfVw4(uJ7@<@O@$V&r2jTGg4%{dp7?`41z(s5A z;8slEYh)lpIJqoQ44Gd+J0tW>g~=D>#2-mz!=jw1^JY!(<50dgmBrC^{^?W}QxOGa zcX9GLR2Ys8Q}?z8Fr+AmEIm*%&X~*gn^r5YH41#fg*88~ea$BtBZY=&ooI|`&1sv* z_VtZZD7v-N`j$p%lGX-`g(#dPPyXxvtXB^bxM{A2VU)t46Uq0@{LlR%%?{-s_h=s?M>6czU)6g3lOUm_xG(t}kv`R~%06ZOA@hxb3lZPXpk*Z-&5{HXkRe0n8wh=)IwVcYW@<$K`b}K_F{aMlmGq>)`LDB8N`z9c}7vW3xoKOFY>TV z78@qu1My%pG&PgC(4Y95&L^RKd8X{ojlnFM>U%Adc_M#f)R(5*=?Bc0GSP)!Q4=~| zoXuwZ7_l76W(9?|7pJ2Si_r(tA%ps`g8HBveULE{s6K|d7y$x;3Wq-Y7y$`HnjP4B z2RiWT|78apIn2g>c^gm9VXio$hTcX;%=3IE@u5?5b1-5TI`fS=EIRB5G@xU@7$dni zhs6!*eM&ll(X@&=)p6Seb)fetXN|e!(z`uOwZ@!s>AiW^q3jOk4&#MGSxJeR&0Q<$ zeW;lYXNYK~!axOrs}v&5Ug}ESpbZtg1^CbWBHYuh+mrsM{D%Orlz((y`l>Ol7l_G7$HNHDn z5_KS#tz|ET@rA=!e%yL7uPN_UgurSR)*aL1p=&rlIgFLqtFK`thZLUyj!!m`Z^IBW ziKQ|;=X%*fwmzI+@?woS`6iFd!z2UFrsT0=d(?}A;ccR(-ebT8Lf)6h(ph0RzmmtY zvu!WFiPcEzXmr?*U|tw*!d{H+e<^lPr}m*2Az-8E%j|1>Rz8cp<5vb;p~^UsP6r47 z)izIz!J|e!D$WV12mmt#@37{B@iE!E)TcQU4Sew;SaAyz5;yz{K!a_+xu7qVM}4=lYSHRp}e1a`=~M8I|_5taf%m@ zV!2^!A%oE1VP9s$C~zuNw|f-J@7?7#R0ETh`J~^nns~&}E@rVj^)43nBT&h(dF1W}dV9rHV5FFCM{B$48=o{~5(aDte@F{tYfqowi`h5() zCmZqOAH#K?cVi&ob9n>xqS>BfSl`a122ryQ^Sm)^WImN3rQkQT`vtdD^N2Xzy-QAH zJt9fmlwOOkoEiuj)(-o86rR(3vK&7&hQ*B_h=S|sZdjlX^^_yD$Y2*{eO{!~)H2hl z4c;8dbh`1Vg8CF(n;8^~auH`=;z0u!W~;J{tv!w#8B~-M z@S^YALqytgDE;s$a(n73egozBZ5O|Ho*IGQRF7=$=qX42u~QEJ;ZsWe&Qo5jxiZ!; zsRPo_a$dOHNrx@b+l+Wb&QQ-J%8p#pPmb30`$3+Jwg{?a)zde7J`GSLi*PiXDI|TP` zff`3DsaTSTEEUC3PX*-8L_WJ>EG^W?8QF*c(#(HGG@|Cj#HbO^pXGbUvx3odf`fDq z+BEk<`62O_W+WY=iD-Ph*49W~RrZ`Uja~rHa-Kiy^~XEX#6W(C>$kr~v@kl<({z>> zPGGJ{O=sT}fxwPN%2`kMupMJ<%oU0H>O)mBzNk4LM)M<+SafDl;OY7?0qGh)!FWy*&u%$8m(74- zr@Q`h@IxA8f?=|Rlll~9jzdv^=ikRXgvwd>VcL}inrmkUj@CXJ*jYO#P*b}gFsF7= zps03QAg_L!>V_|SRL(rKyK@=ejr`GBf)5kSHV`K+B4`x2xD?#Rya10bWpTiXT0bpN z0E--W{$!`HhSQEYtqn1P80~r`U?tmsla-g3LZLi!HsG%ed{Da-ZLSEcuB{3@UW>Lj zmO^Jf)K0K!PL1r_P3Y7$`R11!#-);Om=rEywqM&pRuWspg-8hIwtyVU?jt05R93W6AZGxE|J zxepn~%Ffzz{-DCj2f)0I<2{L>hzLaOvEo0EIXzS{ym9Jj-JQtXo|kd-U>_Rj3YKM3 zU5;o(6WpO4quxgDngSOeBD;C*kgE~haV@$J716Nn1X*DtQ*Tha>yw06jRn6$^<9{X zliH`ECO8Vb5N)pn@_!P;I|EBGpdV^H?_bJ7QU&c9e2#vT$oDGd zRf92a_v5))0Hx-<9^lueu-J*jXA%uG3K~6Ij(O(j(quT18ya^@=d1+cNU9r>E*M|ow1nnmE~A#um)@|XR%S2 zd(i%?yiA^4xuP0fwX4sZPh9&mmR6xO=~dw{g1A@IVz)qHhkgJdB6`>jgg6ON@`TZ$ z(NL~aqB?XLE6TYI;|Z0Mnwf(+42_D0C#I1MUL*CGMno^gdjmFw#SIyd|BOxH3ebX- z>`|eQR?3v7@xaP-UrN&mUlvL31W=YD4$xSeT=l<)692gd^2WBfRha>dO!tukG35^i z&;kIv1p&APv`HPq85j!*bOfNKsY0)MiasRDrN4KR3l)#7vML2t7Uj+=s<<~Q3a+^6 zoWt)%53(WKk@h#-IPXgp($HrF#_Oh7Kxs{9DcVB@u-P3V0_me2*h=CrO=Ep4wqdph zCl4@?Na@5`h&#}33RUL^6PL_gzEe}wYzl&Aq$v*nyv96eVQzH6Qx%~kh%U@)93eEW zrH%jDy`_!1hW_!w>DWoUAEZLaAviBz;q#|MW%J(xTpt5CO1~92T48<+xHJHl^8W{1 zk09jRvCNs6;<+o!`?S3-Iz8%u~89;HjdHP~OYH96bqhgee-xL@)!Q zw8`ytkx{{coqB0MLrByJ`lc#(rpR(`e=7_RlLI_313Qvq0>6doLn=>abwc1EeuwJe zY1@=ZfuGfcXAM_~Xo>>vAh=16!gL85cvJOn>Mqrx4g#}7_A&b?;WDSxK&%V+*30LS zKR_~)YIiP61BF@ObI&(E#FEP^g8*C+1YlJVfJ<)z&<<7U=0;HB4)zbV*A#T|V7%ZFLd{Of@?4N61gxpSL9X;THIwFK@AqO{N)N8`RKN8>x- z0q3gR*5MTXO)zmsBQKZ*W2B=|_d6P$`m#9go5f=7zlA(T?2H;t1eIRB&R?6wJQGqH zJE%OPv4hI98at>wt|)Td#mO*KnC(#ARs`#Pl(}4U0?t)%IYKl_ zxF}%2!eeNEcN)}o7dmOrSrFixA7up<1Ur={LO%v>0v;{u1IjSS8YG1%eNMoQx`?wp z%@zdi#Bbs()7c^r8VDXVF1gD*5F6D6d$A~6E7pckEI*c4f1d;-g)GF9= z5X3}{TTu?%5;j5>y-&t!Pe_Wl7UA8NGocZueqg$9Y0J~UX>+EWM_!}}xyypGlVJ&R zIZso2ER8vebTK1c%iqZpsQ++Q}Y# z5alSHtWAVa(*jR$S{fbxTkmk9oi7FO2OHpu3JNTbV zW>7FF+Gko%--BouY(4FbwyDGLB?N^^L)Wyx^r|wjaPqq)CzWsvJ}m>|`NNN~;j{x# z{}@ac=;raqfJ5uKe4UzfR?_wl8S+9P@P)$1MS6pd=gzroYyvGjwChN#wbY_2AuGb| zMI0D#V7t>K^`3m^T%3-%c#a>K%Sz}O_c$x>{V2v+vC-IsV2la-(gc1HVmEJioW+E! z!|`>)jEWnyY}norCe`N0nKk*?Ij{ey!AdUTdF)&s5bc0cK>ug72t0}Ej-KPLdCYZt zF?JZ-D_{kz@hWBX8|;ZF2Zj>}9N6v0z?|+VnvHwlYP=Oh=UGBiTdc-Q%?n|>L% zmR-}Uj-7J?gEtGXG$Z6)kPVGEf;)RYvqw@D5k|8B#W$ZtN1ZpSH=AiWhYh*rYL>{) z%x9MJ^XHsZ!NEydfZ3LFI@rMo8$lPJI0CGzYtA`f5Y_um8cza^cy#l*at!cKgIF8G z3x35sQ<~6Dte75Cq3Vqs*_5XyU00SoB@PexREfOm)6%jshKO1=37?f>fSujBbCippFqB z+VS8j!~MOR=m5C|-$HcSB24AKU%+})OuPZvr76FjIN7IA<>fmG%P`tO)i>WQP{&BK zG7Y9g+e^BP)Kk#hS_HqCiO3QF8O;@;xe@-9rg;Ban1W`aIa2vZ^`lk9+QjOiqxuZB zubWO4n>wJi$%5ZJ^Vgty1-~r@eob4y(j;yDmLK_MF}_h9x0bUu@!h{>*@$1vzx_2! zRabE5Le`&c?a7N5!bt$nCl^9wz;o9^WW)2)LY7HS&u=g^onuuPdg>C0`O?sOn{cam zZ;@7wdwi;6dh?aPVTIr$AOD8+cirDhjqm~r;-%iEP=U$?K_a0SA^R7x?6`eHp;t7~ zUYC|Lv#A^*Q9Hbz9&O@F7P0iinN3sMPq{zZ)UmftNB;>F1d|kXtUh`Io75JDo3_>W;QKG(=wXDqfK&&BD+fn zmZz@D@OHVOvI)`ivE3La%F0LtNV7l53K*WHPqHQHl?Ldwm-p4OZS7VR;=E9z1YdBf88H1S=QBh(c&@e36!E|U75rY^2`W8I(7n@1z2Zsg8K zO;o$8zKZ3AmC&U-(mYk&dhz*{EHjp*d(iHri~fV|+!MbCdT4?nqt6|~a`TrraA;BJ^LkCFfQG{8XhhSx|141F2>6iZDv z>v`4aQ<_?gaU3TYocRsoDcYb_@WVcQ`%^6ar(pf|DdsWz7q=8k(ogiMd@0Men)M4Z zKl~K4{Z#J2Qs#=WA+jim@YLI2tn)KTY7|do3{aFAE~@6L^<|zx*b`x2jYRO^D^pE9=W&&gN79URw?#-;egg;Ap(I(+IswA0AlF za^n`b)QEhr@3Dny&Rr8c84l&e1ez?=hs-`acLn^jCiUSZD_D8*q&{i{ggW>MQwZu! z)!{2tC2R!~cidAM*)O{Do(ERI1EftAMN&wlUyB0pZ|MS?4r<@B#+*Tq`Q$X7)j&tPDr9>JCYK(7pGX$Z7nibFFg^M zOUF}ixTuyP5G>^xWK*!DNfFb+7y6hhy|+=0o=)2c1<(Jj+!2(^b%=HrCx$yzWf}sK zPXk=xHrnmRX6650M`|^Tv&FPX6`kbxs21J7I_*RhpHmGTnMR1nj8^zv_pLs3B5rlr zKWwRV?Qv%%BnMOkY9eWv{4gv!g&>KshCr;9qi;pb!-L=u)$DlK8HXAXzd}PKF>=WI*~x z<&;*E+F8!^7VcZc;#`YR4|V@~%W(f({HCiA9zs7z=&6E$Gq5i|vI=`RXC8G!1H^UO zpmccr*;g|k1ALoTW2qm|mtR=TW=9U{OEW{V(uN8?V+~ZZzxCyN*T7NkhJ&A^=j&d6 zWetl1j%JMIiLXt7Q#X9vv62!X_*QYfvz*K)%SDo zxzD0qe0%L#R!;E5tpz8-d*)iSxqmtLt%WDyGY-`n58E2>)|L8bQU2bYo>pbk@1Jq- zz*=|?Ag`S>S9VH^6Jr_=4SZjf6{1d*vL8;k`>@1?0ER8##-V_9E55t@e?q+x$|ga) zDJ^_9u9jzb`Zxqfz;J-G;@IQJ6XqBxa6STk>kpg?7#uu(9Xv_TIe7g#hymx2POc>X zGQR&TRp#sLK8#&33P6OIXXJJbMF+i(Tkct)C;h zvQ3=S^MaE?Zw7aK%E{+$fUWQ;&@&x%NBP$_uw}{gPU6eCwmR(5xIN(99y9GK(ncU{ zlt|;Vo&)V(b#mWxtfYeCb0&5}#G$%sdMB>$bPUG*+naF66X)UJK}+crpDh5m zsNYTp6KT%Gc$6Isy}l!l)6orQ!8XyVvE!{SDm;eCqOqmDZt|Qx(6(t+KkJ)!X)uO* zKENcgD&?MwM&)FzBQAv{la`I>__Vi}(-Chp$N>C*0^fz7fGB&<3rHC}Wcp;;Uo zVWYsO%#Fwb#FuVl*9rMJ^!v?Vnvd_rE~ANMHM3Y?u9IfDslm zQlan5#P>a=wQzl<3{y6-Oi|HfqoPex!#TMLGwfhIzk>HrZ!2BY$TK%%hIm`~hRyKV zu(UdXBxg;OVM!*AP}ItgZ$@YlJY!$LVT1{-@%}Er$L4s6v_HnYDumD-ENO zrTEx@`G z$Gv~T0fj`J7ygOmmfSBcK33Q(ZsM5ZQ^@h_oSXWDeqyDFKx72zHcfF?%c99dwB0D9 z;4~V>APrUpp-9ykQ6{&Js3JJ1yzb$<{A@{uY}di=@<=2hj(IfU_SSS-<*2@f<$3L4P#cza)aR}& zQa&2wdOjzi*3EvR31qVCe#m@iy66=~Qk>dan6e$`2pv)!!S;_$4 zmu(J_b~Xt&d*D#b{YkvAo_WGdq|Nj2C+o3vzJX5FLvQafj-Rdvd-Qqum3j;`h%$n!@*Pr>qgMHX2s_b>dGZuO#XRr| z8ytB>WXEOc=op4_^D8VhGBlCUS6u6cg7`%eKm7_MCP^<|mYc};{sq$#!+7H_;59>2 zdE9Q68!Lz3%YGrsg3T)p2I=tmyAgJ2d?G)z8|Q3pMa!FsJZul!9rmUu$8@|O+QUi< z%y~;;du)h`B<3qlq*f-P3$T}mBS19GUz6;ZyVk25Op)amK*WF$4{MKu=GBe8aMV13 zZ?rY1;PQv9U8MMFGT_~S7uaiG^v%U-cQPOS28&CV-^pAXrJH5Uw&ab-3I?^KUhs_# zZ$N?Fe=iSh0KA_j^Xvu?G2VR*z#Hqw4>Yh@t~HPlNY${gT{t8QzR3Q(BhheYmwbX3 zzsWKyYLSmNU2a`?i2zO9n%k=8!fO&01f8mx{c!$^ZQ4ORq3I=E@69$PC{b>Gf%;-X z0|wuo7pgB(>#Btgiv`TA1FqJwKnw4*kKL9_S~tmg;mUYHwdA^t0QArkyzEZ~a?8*V zAu=9kaOgKR8pCRLKq)QW2icxFLW2;+>Z;dx`Lca%Rx0U6RY=2;OL_wQ?H&z)Gy?1G>uj%*owErn0PH%K9TTR0NZV!TS}q!Ec&x4s`YAHD4u-&J6O<2{Ig4`ZRkuf45F=g@0!3vifAR<{xpP|es!Bs0A{w83%X`Ce`cAvF(fsHU z<{+Wr+av5atsaN|$(9uo4JCqx8WF9i43?`iU;vGvBL(9^OlEL@;Mz;EK)e>h1r|Oy zy#z}#3cHdjCA{1F^NmL_X~X*S_m85ZFQoEoN713d{dw$rz&`|xC*NaN)CT^`_u2hw z4S(-_wuf!&&sTnc(R!o59E~^n^L-zHZ(qpb>=@8;u|F?A#&)r>X*~Kvh!kH9=B4!f zelXwoA&ku9(`31cc)FX*0Hdn!M-L{Z@k<}FRgs&F?`~Y9RhPzn$H89kymlN1gEt%B z>ZmNfZ%*TxAF|a z&6#mGRtm(|;_sYfd4&xaad)LdH47rdq8?s3NO>0$eh$u;X5e(YrtI>#9Sy>UISQfn zQ8v`E}VjfK0SkH zHv+E>lX+<)JjbfR%nzodtvVUVJAwPk+j?OWb9Ehj#2My~@`Z zEHQZPI5@)uUg&%KpwgM@P+g22=+qp$j_)++eD)b|AKajG;SAVI%s}os3(-7jAfIv; zFg`SpuRO~(u+o8hJOMUaWjh8T?lX`EYCdodz=dS-&(5I$DsVMn;+Tj*ATL77z9zOe znyAj9Y=cmU0mIo++@!?N@Y;W|mC3c}yhRy>CFP7TQd2xfNu^4AM=0&N2l(jEFlZGS zeD7zhJk@I=19kd=Gzu>PV@ORWO5c_y?zoY}L5SgnpMy9+Kr=qa#6;V^&%rG4Jn}g@ zkAWY39(@5J&N>f8AMeZX9%~XneA>%^r9l||X@=nYUL!vdZnR0b$spV;Oay~?Bfr3G z#~{x70(IlL@(Ubl5qZ65L_QGHYhS?JN9|uQ+P}bJ<3t_^&opUhhmDBPi_j77tOm-v z`2ur!By5m_9OttsA8j0rQeKo34rR>=guLw&i{LZTXyLtnAI1mMa` zvNPN1iT6X7*hcoJOg`&tAb(FLU-dQkJ&=9iYc`sm_GWNTJP$P^{da@;jb^r$-8YzT z{RV`E^uRZgOL)GO9Dc^P*iM{3Si*J~@XiNU|5moO_gkDqBILv)vfe7>A&&DqdfLFf z@ZVVxjw31|wzC|}$nW5>8a#*+Nr-P!qp~3GQA@uOYR~^xk0^yW3LW+e`d%0GJ2+kZ zzO~#x0Ml5wJI6}Ri|_c34e)dlETBk*?;*1aX_yK?+6}!7guFMH zkG>4w#!&LPShaE<6|gzjEDgqL1pv&DA=fCF+QpPhvD ziENJe9=HalIV!J-?>zc@Hd>A4Q@>|DY_*T&Bb#&0pTVA;*rMZ&hgfg+@({lDdp0GK z#2m64kZ8IF_ak3NhoHCTUuWXFg)=NsGI?bsbg*%{yla;92f39Y`JRHj zw4mSu-)z3{2P`x&X>a@idJ3N3{s0T*s%$>`20FbYo3FjWW<;;cmLp5bXH#2)g+}?Y zY;JEu+11&5GTUI0OHOQ|OMudajzGfPyjHn+6nckh#czLNOOen&7qmXRQFFzGAeri+ zI^D*id^At4{Fk$zJ*|22=CuxoovKXi!L=cp%)Hi)XfjlcY*~pdUSZ3m78kTS5of_6 z_v~6m=qf*}Y1ju=wI~biKJcAw2+CHYYLml0h4w?OchdP4RZC}6@8HQyb7lTkKmaqF zGR`B-oDO!@$csq2zQ>ewQN2y^)=O>4!8YabB~05L=Qqllb(>ED4VW#_v;uY`o^RB& zWcK<{en`{GJs%oah@cxI@n_ZvI>b9jduV$VhXWemL zTZDIE_RR(f*Hk|a4O-TxDEU=ZJ|INv5u1gd*9@0XQ<){u=CtzE5G{^PHl7X3`RovF zw7n9RWac%b0rh;5EvcZlR`b!wST#@ilkTieQ-IC4%IwFRJoyAG+P7| z;5~a0Mk&71$>N*IA`*oKw?U(>k>Wd^lwlli+L0rPa>1<$-#0KwdPm7 zi8kXaUD%tLS``luGpF@UMACEWI%3KaJnm)^cjI)j=3t+UukNJvWEK~%@1(`1QU#%i z*F_aLw;dB2J6Yar3Od`Y8t((>-Phm2uXNIu*>R^8M5hL=xs77CH)xo_J}VG)Hk)s? zYRTD&E%|6n!=}_`!v*x^9Ukj&?Cj#)%9Rnq3K(?-f$YF9o&ds?E}jh9m}$u7VV$)j zx#n!LC|)RDiZTJnr02ieq#p`4=%9S(RZ%CwLlJ%>&tHl>u-?{A7|Nr=G*_ufmqd#Q z>6Ks(I(C;uow`_v2K#BCh;>?wNO&ZrOuzs^%3|~_-e$)v?@0SJo39Gfu+@JDzY(UD zh7qhPX5))Pd3m^&8d-0^8li-EDu(in;lK;>?he@QVA{OxRQ0|J*=G))SmF-iS z0wY4nFupxPD`9xD+q7Nmp*+6(HZ9d&GK_HUU`N^}2%>pAch8mEv|^RLl*>nV(Mqx( z0w6-Bhw1AXbm&T(q!ifz#a2{tEXrALR%E8Xoy$*l(e^TB7~f#i%I%I}w9;2%*Q>#= zc-5T#!+2y@t)9N`?Fxp2=eJ!oPr8D9bnc9vWS=*;)p0dMO&7(P2D`fe^u1g;p=S-_ zqwU&jVTVNi-ugDw+YJl_OenjXHkE)r_ zwM;=Agz)R49?6DjdGV@l^lz82?kw~I7m!-q2OT2RIH49x2wURav#`4st=boOB}JJ) zHxJ{RqcxW`Ah_An{?$c?`-H5hRX)FC&!uQ>iputTd0`BO9rtCv7NhN^JH3nIW({SQ9}^ z8d;?m^H|uL4#jHu{g$>C;IgL%fyt$k%AtPF=2^Tn3?#kS#M%Uz_eD^taD zCO!Eor#706AI?uZF?$<|`4y+Oke+j0+I;rw;rxON6Xwb&zCB)xvmY5QiOqBhf^>N@ zUOU2`E#upDt(2ajZY{tbfr9APcB?b@Z1QMdtLi-dOrqAmcuj#spd0h{kxl^!tX zJC$?Clwqk-b0QUIMsWczNWy9fFlHoa9@m5T9v*`;P57RG-^q%e@gP>P2(qRsMH_=C#x`N>+YaGacmRTe~4zm&>tb1)O0HMe=Fe!#|0 zqTWaoUfD0s`e`f0HP#*F`G$U4?r3Un30BLSVNeTrp3~1~qJ{$QxgGZt~j7Wq)a(oLyV(`FhzgHP$kc zXQqQ0%o@pOq-*(M<4RzQhCKDeNWLo_s|+8>T?4_dkB{I51GVh1mq!xS=IfV6@|6Q| zY2v3Nd2EKZgp`tv8DNXrC;_w{GK#;Sp%q&Rk#u;1H$26nxOb4|U>T!$`5{n3KgMc&Ai{0uA6pORw{5#p-Y|jW@`1W?a1Ry#1!psQTky=%LZdJZTGv^ zl~KOxFGg|SVC|Bc!Jo*|ew9jULoN2&qVJZhpO|bNbfJd~)=uwDtseLt;p)a#?ivCn zy{(m(4$-!I=G`U1d8V{6p>#7}a9Ojypt9hI&MHNDQ|K0?CJ~Nf5Z@HusJzoy)`efo(WbBmM)T64 znkRMuu);E&@H7h}6P)TUa)@34Ya50_{>mTCj|>GR-**?!&DDxy?gNIy(#}HapN{@| zYUmwiE`{6bSyESPtwL1sR{s!;_|^oVFp#U|#=eV2+}p}TsPPDdoh52$Yg^?3MPv`d zuws#zI}B^xyQBGqVcN=y+SW9~c}8I-c@VKqdtv~1&^VxuP|bjRJo%Tc;&a>>?K~@oJ``Gen zRsF1Vw#R{WrC8K`6dOTie1Pe9^W=OO5XiWJyndR-)DE?IbU6-hz#{^DXBP6US z)lq*Rs4w4*;T!X{f{JNRxOM6irOhAXhixPdy)dMDrU%HEJTi4s%GXB6nmWrNk%$4)0%<#HFcG_6(g&c z3rW0iV8QrfVUdO)uri3A*X|)+P>Fhf$(q}|J%IdydZXy9L@)+XzjhB#9ic^6(13yn zZeqV4bdoB%2P+kA7*7sjc$8o0gZLiY?_i+oS{;5O1VZ9P%oMpJuCVXM5MX4*La3nD zIrYi+sKY^x4k6`JAQ>u90}IpT)>Xg|Vrv=&*0oNBq@RxT#jAqv+*UDS;EthpYMCBX zCOl!|$6!<|Wk>1v8UWM$jZJvzg4>nfskuUT0s)oxAciG=@0Y)K-HBDQu9XMw#58XL z7cT(EJ=4mcEYMP;&$ljq$!SdhPl?BWBBDwsE8yPyC=dA1XUM}ETM^AtOHTd{h?bqF zlffbAXs!Q5YlEL|zO89hUZPkbfa#@m;QAxMTJYRFQcDf}2(Z?`zmL+;r^r!SEOF=L zQJQP?zwnKyUm_WXjMh3o7>t-vCt4Fwx8TZpHuBNgRGH5SgMuz*)W6%xx~^;0{n=yq z+EEa}uaDv1($jU%p2EAdy(&9#&z{J;HM`2byobBSK)6r7hi@FC6^c#aF%bG=bRK#S z)F+rp((gg9^+H~957ed2g*>zndLP!N)IzN^*~ZI$2Nsc+J)6ZBagy|MM5DJHI$yn@nJjo&fEyOA)W1pq*yvMcg+L zN;;mOO$1u-j4S~Jc+M};T)odYu#He@!B7_YWpKndu+CWYpBLe>6vtH6!PXV=<0U}I zBSqYPFYG71uhGq4UcqGFD&>XuVlaANLnt-v5Nj;r>66e(OA#-f1hTP><3~!hIKFd| zmJt~_jz*%=4{qv@9LK+%1l8|!5iht;%T2Y7!$hnU*VzdlDh1q=xGf>!G%RjXG~Qfo z!A-??jN`lR(+ZQnqI9^Bxv_eX(6or^fZ#;#WH{udSf~z&)U(F%WB|dYj^m?Cwb9n) z$Varw%O+`Q28gpfTLg4O(fK&TFOR7aq<;*8`j6xIl>31SK)vC9Ah{15f$rDR?JWce z!s}bGpQK<{6Y2SrL7Ugd^4XIy6TchFH%Q zuR^qlVp>c{iq>EK1EuYNiv<@gD_aE2BaE6eWPaRbwRdj~8*UB~lfGr)n6 zfBOt@sG14<+6YG0ka_4R1`SF<=LJAnLQ@`5Uj(ezIwuyZ9!_cWaPsE74`VCy)_Ez6Bk*|GN z^JFq;Rigx`!MEZCydK1z<}qhS%6{L zM1E+NmT7-h)KysrRZ`cK#oL~p$nB44*9g|gN6}|IOCN>Q$0zRD{HT_WGumjRH|~dt zE#aqs4)v|PgwLK0;GQTUa__D~&Jd!HqF8S6PwlFIjXVl0#|rW(%92$}O8BAKTE2ak zNQVmofCx+TD1R&Aalb&_c-H>{12=CX51XUqroSoLSmWtvBdR{$+Et-?!&eM~L#S*U zS3P(z@zFkCI7ch6o;T{}&3h2n|Fb!uyH59V_84S(R6X}G&}*-I`Ju-!)_9MdtCd9F zc`tQmfQKAQX5Y)7oC_Sn2ju;^+HTi>|DVRL2fE7Q%D->s%lkesK>T~)5qJRtW?PC8 zQw$-H2T~3ytI@R@l8}VfZjntfR!U<~@`Rw#4UjD?7Xe9#C@G{h)xd*@5W7^Pq!=jz zhG-%pQp{><5g`QL{_f28-uJra>^aLhVdmbsbMKuy_uiTL{ynsftxWcCi8xOdgRb>l zm3T+M8kK5(d*73LAEF(PBTJy{cpS3c&Y=sB%Si)g&(){AzdS^f7V~AY9D07SoH%I% zvJKBCKbbWu;XW1dW)AM0q)hi*P%=Ex-;L&t5z`LJp>Gz;3Gtln8TR0g4M*us^!ozo zrP;rdi6RL}{8#dM-(v7$3SPs<4h^6tlKaDP$!H(A1V3(fM-GoezrPRMD@){rfuH6X z@i^KhL(V5l5ZBlxUtJ=1FwY&oMhV>?ECn9$l2Z8m;v8x&#gz5r&|Oc+yS{gyGuE+l znKy1%+V|oAw|>tTBpFwNR|@c0W9EHxY5x<*Oc5Nnvwjgca=92&*$2M7c+DzW2yzmiihpXu{0)OB91@H zk?HjjX;jh;g4@QVJfQ3aId?6^>GkA8bY!VK$MW|-DJPW=&4mvn1o6Zk_#pPC17^3@ zw^2O`=1VbIp82U+p5^#Pz5e7H_n8XXQS}dDo`YC1tmHUsg7KRt_`N>$X*RXt$4wJe zvK+QZWS%*;-_9}U@u%dStknLeduqhthSmiU)Enh}%}2lj#upZY+y zEGX~y)js7ux5V+n?cs20T2mgK3*x$?rXTJ3Fb^*~%W2d2W>+Gv(6!Pf6lbrEClR7cGaGu*Irdj$!{Uk4CRRE{P~zAln*4$;K3$QrQssr8g9DrEY=$n8u|KD}Lm zTd5I-k(Y{Y#RmjeB5~u*p;;^8@OZ0b^-Amm#Ui|cQ^^~{d32;wPRPig2agPH#rj`? zO!Rb00xfnABuX z09VciIeQw=y!M$H_g$)q+WUR(iqg=EaX$$4*)kwi8Pp!tj{x=1o z+%!;q`Kcy%*PpIXO^C1%EGykOR?FMsmGKnNQbkz~Cm$r~5a^je}F> zb4>8Z@kKJ)`Zi#|Xq)f?)*!%ly?}#Ae-Xx$67=*Jh3Z~_7@4%&Ts!^R8?UJknVt&# zm0a@DEt}>1TT-9pySBo^4i%Y*Cp$YI92 z)VCR?zNkwp@jY&nl=U*yc~8)ky>g^+h%#OTP17MoYqcNJG~w4k(MJ)k>99o)9HcyE(YkfmeXD);=~uPop@Y>j^tx_89beT~FN(w5_Nc-;Gw)d?jmi$ssvF*pjAv zE=P_Vz%t5%{o!z!h4H@>!{Zr&(vQEu5N$^KBlqA-ynV7;V!+MuYe(r zmCp}XJ(M*QU9DOZDPudPGTpCw2B{m4ZUq$tQ6Yp>62|?a93dK$s2QYI688KoFzZD; zpVFDE*|KGIRoQL9*r*7rVyvSS6g0*~@%X~8q{}Da6&hF41Qz3{W0&-M$LSv7&2pHu zZCEb7OrF^iH3 zF0S$xRp-F;-ohO*c=)kM)q|J&P+3|hM_B2Txz(>sV`V5x$III@@QvzspuiNxihahZ zDw6~?n(NlZDcsQ@o>$qDDQVOD=r`3>XTh{+-D=2kB%Xr(0xrIKI^&&rsGbpRurJQw z26$BWW+biRS=8JBd-UJwVA;<^)g0;rR*t_H7S+_kwA%`uS?exmte^b* zLHIOv>;d7^nlS4FIXup76)P|swQ_`AwStitQWB^B8&iU#)w8I)9ntr! z#%Fm=pLkZYv2MWE93sQADq{fAUKwR+cdCYPfVz($s8%^9xwwk^N~-w|TCa{$%fK2< zVCS!40%VKYljsKQ@EQcgx;2V4p;ivC6oKWTS`0#NSPP0S*qlpHTJ3AOzj7g;Sm$)_ zT}K(OV{!uj^6q2|t%1Nee z({m&DZP#+_6ZPB|5z7|0OLizu7#nB8qYCm+%?B{W&L|g=y;Du5*y)(;;LaHNX$?;F zHgaXF9D!fFap)dyWID_tvI)N7mR&||gtY8N>=oLqt)CLu$C!?bl>)g6*j1aVIWI_X$QU_

<3GU8A3M^6EIp@-A?zkN>f06IsA+X~b5l8mc_sK1&V#*(IHjG)8vmKwPvWD9 z%7v{xr*)SaEXvmBs_wX1@)?GlFt=M36q(frzKD*=Zu=spmst1LXp7hrQ}2w{2N>sE zl1#U5Ri0x;9<_X0Eedc(nervKgq<}wwTB`2$y=Dp9+y{J50$-%@J##)Q-2KW;#W+U zMgF~@``V@3@HLe+A|QLY8LQb57^_#WG~T~yT-L|1hOX5%(Bj)4fzU3Cg)H@J$!3ngI3yhQ${sQWKN6l|azk#p$Kr?a4iO%>w z$A?P#T=m!KddXi9jF*)}^6vxR%a~E#+4noE{T0=vaSzC@FqwzKJD~ejRac`LW?WS? z39rKQuIlB^2uCH!s;~}1Z>k4e z6TkLoAzgZrEh)DHqjqq}GK1;rW;_ft$8@R2l$hK<+!DLH+yhKxcUdtaN<2V}jMihwy9fmfeVpz0|GS#vm(?)A-!rQRwXx&L|Rg%VN3cGrY zQd7IC+>`7WD1U4$yRllXXc$M$A41m6no0z3Cg0nDQ(}k{Q%u^_f_X)$7qJxTz-CG= z9`7hsiwZAC^5F^2coOiujPm^B7*8rS9|6x>HBWWGx|KRwftnamZlWvCDxJuEorG3$ zn;v5rSyQBG?lS#{F1ZXiK=wiSP;5gm7T6OD9CZM-4F6C`)7vAf`gVr=6#g&hold?# zBT6SbC}ew);V4{^;c8%&W+)bvg)q0KIPBEY*rFhVvOY)OOt*_H%5)f2qmuVm7&n3l zOpS;@Wm7Yf$TZEp@Lll8g2k~|TIu&N5}BnA$vNl84CqWHOCQumva26rEZkk??6w@2 z#(HwD3rIWH5jZn9M!{?cYXx&-Xb(DA5uZmJ-$%O0qrQ{UZ{;x!Qgb&i4@vn9Nu`@? z%GcbjiwX-<;AmnM&tnqo`S_4Lk9;TK3kC2YoE^F3O{YBJR78IP`Q8CRp;nL6j#bG0 zEj>1QFw$}s+j?AoIRxUOn6cCsIW|T)(5dPpYy#Qb}KG(o(Dz)>5TYWGbJGVbvA`*himaI!t+O2%|c`OhIZh z_kfRn&6gwWHDe!&$nqN-v5YuyU&i`n`JW>R&7%5kz6 z6>bkZvqA}QHe_uYQd^?Y_DXIV@_$~2h<}DUj`3aGO7b0-(`5E@&b)7Xjyrm&5L+Ry zsyp#g{qIT`b?rg}p0J7#8CBGG9GUomReDf%=_+o7mH4n{C*gK{G%n@EHLm(Hu{s6_ z!~#Xt;KkcEly7Xulr8wr7}E6hm^K_r1xgjB)$83>d&7E1Am<#riX3GW6nKFlXA31W zH=+L**j{g@vJa3!Hph_4)-4Y6UZ-M})~I$BG;&)lG(%r+9V3U(fo25WOI$~`OX3vN zsvu`0*P{S~YPP_5+jJNILDXO7y0gJ6R)F+SQVjyP{uOsnR^oP-PUdgNT080q3@hAJ&ej54Y+hM^Rg1)q1qN) z7Px}t9A>kwFcOEzqV1TRu%d95kbn`#m-AKj7Yzn=e1?Q^)`-)=XNx$UR*T- zf&CMrZe|kqLb&iXo=6?uWSaSNTyCIz+N4#|~ zgCQJ-IK-#u3AATsDx|Yp3u;Jbfy_9y%6g|VMVPv9>XuE@V1PXcJTCu?G7Egp%b(J; zFXdb0zam?x{G6OCtFmIWZO}ldcaXWrpsW9lH>#%n4gaB*E8D<$=Q_OpiQ_ z%YRmr1K{l96ERdWFjIGFKPOW}{!H5Vt=w;Io~cD;otK3)?K(4wKDmJ7nf;?UdgG#; zYSsTJhIOw4sAEy$EX@uPo??u-1z_R>7clWnv+>Tj++yY5$s|LlrdRq|$Y5%_ zDCby56&hOtb%E{W+fD9tvES}qBymNdlgO(O0>_XjksE65B(_< z!YnP#NKij>bes7z>NCv(tMy+sn=XkM8~Sra3Mc11@ytgU!YJc;+;L{HXnjPds}qmJ z(aCS*RGF|4+Sq0Vb$ugi*+D1E*$egfs%`U8cB`V0e}Fm65XB4G)0T;&Cpa&M#Psv;4^RMbHoTDa4~FN1C@%e7spDD*z40HE`om$6G(c6x~pQ2nj=p?h@Cc zvOg9`drY^e)u8H<93(V?113ev>PT}JydvU+gG0sFnsY|TJx(Lsb^`4mYi7u_Uutft zJ`-!pE#`R3^Em5Xt`A1>OLTMlEoP-CUP8I4<`z+17V1N3$i`*5weeQ-UJ6gd@_2d~ ze4Qh`T(?yB$a_NvZZkg;a-WO3hxVVBgG2GRoAE*>2BW0+&@y}tIaD>-EH>mi2j4r; zObm^mf|C1HsA8oy=j$6TD zgy)tYm_GZo!eBY!1w@{xP~1b=vtUOmJtqU9(mTzwhB1TY-);H_wv`*6wsL%?cnCdz zw>ffR>l(w;iU&1oZ)f59pITc{os2)+(!+=JJf0HVsxEm4Z|v`<4)pW3t&H=ut;Fxs zo1?w$E4`lfl{9V+>fN~Y-Tf@x!*x%k*K_t+S~ABRC(k}B*UrE3MrxX4CU^mOx_98` Y=grZgbs~KQg1Fz}>cdjnx=CLDKQTDk4*&oF diff --git a/patch_v2/sdk/meow_ui.h b/patch_v2/sdk/meow_ui.h index c1df222..b150aef 100644 --- a/patch_v2/sdk/meow_ui.h +++ b/patch_v2/sdk/meow_ui.h @@ -567,6 +567,78 @@ typedef void (*meow_list_tap_fn)(int idx, void *ctx); void meow_list_set_on_tap(meow_widget *w, meow_list_tap_fn cb, void *ctx); /* 命中行→回调 */ int meow_list_tap_at(meow_widget *w, int x, int y); /* 命中行:置选中+回调,返回 idx/-1 */ +/* ============================================================ */ +/* §5.5 设计模板 A② 结构化列表(W_LISTVIEW):行=图标+标题+副标题+右侧操作 + 选中 + * ------------------------------------------------------------ + * 在既有「label-only」列表(meow_list_create/lazycolumn,行为不变)之上做**结构化扩展**: + * 行数据源回调逐行给出 meow_list_item(图标 / 标题 / 副标题 / 右侧操作 / 可选中),容器负责 + * 绘制/滚动/选中/命中;支持单选/多选/无选择。向后兼容:既有 meow_list_* 全部保留不动。 + * 颜色全部取 meow_theme_get() 语义色(日/夜/style 自动),不硬编码。 + * 命中:meow_listview_hit 返回行号(含滚动换算 + 禁用行不响应);行右 1/3 为右侧操作区 + * (meow_listview_hit_op 另判)。抬手用最新坐标(goodix 免疫,参照既有 W_LIST 习惯)。 */ +/* ============================================================ */ + +/* 选中模式:无(纯入口列表)/ 单选 / 多选。 */ +typedef enum { MEOW_LIST_SEL_NONE = 0, MEOW_LIST_SEL_SINGLE, MEOW_LIST_SEL_MULTI } meow_list_sel; + +/* 行图标:meow_img*(MEOW_LIST_ICON_IMG)或内置符号(FOLDER/FILE,无图 App 用)。 */ +typedef enum { + MEOW_LIST_ICON_NONE = 0, /* 无图标 */ + MEOW_LIST_ICON_IMG, /* 用 item->icon(meow_img*) */ + MEOW_LIST_ICON_FOLDER, /* 内置目录符号(填充矩形+页签) */ + MEOW_LIST_ICON_FILE, /* 内置文件符号(空心矩形+折角) */ +} meow_list_icon_kind; + +/* 行右侧操作类型:无 / 箭头 / 开关 / 复选 / 详情钮(⋯)。 */ +typedef enum { + MEOW_LIST_RIGHT_NONE = 0, /* 无右侧操作 */ + MEOW_LIST_RIGHT_ARROW, /* 箭头 › */ + MEOW_LIST_RIGHT_SWITCH, /* 开关(on/off = item->on) */ + MEOW_LIST_RIGHT_CHECK, /* 复选标记 */ + MEOW_LIST_RIGHT_MORE, /* ⋯ 详情钮 */ +} meow_list_right; + +/* 单行数据(回调填充到栈上,容器不长期持有)。title 必填;subtitle 可空。 */ +typedef struct meow_list_item { + const meow_img *icon; /* 可选(icon_kind==MEOW_LIST_ICON_IMG 时用) */ + int icon_kind; /* MEOW_LIST_ICON_*(NONE=无图标) */ + const char *title; /* 主文本(必填,NULL 视为空行) */ + const char *subtitle; /* 副文本,可空 */ + int right; /* MEOW_LIST_RIGHT_* 右侧操作类型 */ + int on; /* right==SWITCH 时开关态(0/1) */ + int enabled; /* 1=可选中/可交互;0=变淡不响应命中 */ +} meow_list_item; + +/* 行数据源回调:idx 有效时填充 out 并返回 1;越界返回 0。每行轻量填充(不做 IO,§5.5)。 */ +typedef int (*meow_list2_source)(int idx, meow_list_item *out, void *ctx); + +/* 创建:视口(x,y,w,h) + 行数 count + 行数据源 + 选中模式。行高默认 56(可用 set_item_h 改)。 */ +meow_widget *meow_listview_create(int x, int y, int w, int h, int count, + meow_list2_source src, void *ctx, meow_list_sel mode); +/* 行高(固定;越界/<=0 忽略)。 */ +int meow_listview_set_item_h(meow_widget *lv, int item); +/* 行数(搜索过滤/懒加载/目录切换时动态更新):截断 sel 到新范围 + clamp scroll。 */ +void meow_listview_set_count(meow_widget *lv, int count); +/* 滚动:set 越界 clamp 到 [0, max_scroll];by 相对滚动(App on_swipe/touch_move 用)。 */ +void meow_listview_set_scroll(meow_widget *lv, int offset); +void meow_listview_scroll_by(meow_widget *lv, int dy); +int meow_listview_scroll(meow_widget *lv); +int meow_listview_max_scroll(meow_widget *lv); /* max(0, count*item_h - viewport_h) */ +/* 选中集(mode 语义): + * NONE :忽略;SINGLE:set_sel(idx) 设/清(idx<0 清除);MULTI:set_sel(idx) 翻转 idx。 + * get_sel 把当前选中下标写入 out[0..max),返回写入数;sel_count 返回选中总数。 */ +void meow_listview_set_sel(meow_widget *lv, int idx); +int meow_listview_get_sel(meow_widget *lv, int *out, int max); +int meow_listview_sel_count(meow_widget *lv); +/* 命中:返回行号(含滚动换算;禁用行/越界返回 -1);行右 1/3 = 右侧操作区(另判)。 */ +int meow_listview_hit(meow_widget *lv, int x, int y); +int meow_listview_hit_op(meow_widget *lv, int x, int y); /* 1=点在行右 1/3 操作区 */ +/* 行点击回调(idx=行号;op:0=行体,1=右侧操作区)。 */ +typedef void (*meow_listview_tap_fn)(int idx, int op, void *ctx); +void meow_listview_set_on_tap(meow_widget *lv, meow_listview_tap_fn cb, void *ctx); +/* 命中行:置选中 + 回调(若设)+ 返回 idx;未命中返回 -1。 */ +int meow_listview_tap_at(meow_widget *lv, int x, int y); + /* ============================================================ */ /* §5.8.6 模态(App 层,非系统叠加):Dialog / BottomSheet * 复用 §5.6 B③ 弹窗 / §5.7 B④ 底部面板模板(与 launcher s_dd_modal 同构),控件化。 diff --git a/patch_v2/sdk/meow_ui_widget.c b/patch_v2/sdk/meow_ui_widget.c index 21b428b..b3aa381 100644 --- a/patch_v2/sdk/meow_ui_widget.c +++ b/patch_v2/sdk/meow_ui_widget.c @@ -14,7 +14,8 @@ enum { W_BTN = 0, W_SLIDER = 1, W_SWITCH = 2, W_LIST = 3, W_CUSTOM = 4, W_LAYOUT = 5, W_SPACER = 6, W_TEXTFIELD = 7, W_CARD = 8, W_DIVIDER = 9, W_BADGE = 10, W_CHECKBOX = 11, W_RADIO = 12, W_PROGRESS = 13, - W_TOPAPPBAR = 14, W_NAVBAR = 15, W_TABBAR = 16, W_FAB = 17 }; + W_TOPAPPBAR = 14, W_NAVBAR = 15, W_TABBAR = 16, W_FAB = 17, + W_LISTVIEW = 18 }; /* §5.5 结构化列表(行=图标+标题+副标题+右侧操作+选中) */ /* 布局子项数组上限(固定尺寸子项先做;超出静默拒收)。 */ #define MEOW_LAYOUT_MAX_CHILD 32 @@ -81,6 +82,14 @@ struct meow_widget { /* M2.71-bug8:W_LIST 行点击回调(可选)。 */ meow_list_tap_fn tap_cb; /* 命中行回调(可 NULL) */ void *tap_ctx; /* 回调 ctx */ + + /* §5.5 结构化列表(W_LISTVIEW):行=图标+标题+副标题+右侧操作+选中(calloc 归零,安全) */ + meow_list2_source src2; /* 行数据源(meow_list_item) */ + int sel_mode; /* MEOW_LIST_SEL_* */ + uint32_t *sel_bits; /* 多选位图(sel_bits_n 个字;SINGLE 不分配) */ + int sel_bits_n; /* 位图字数 */ + meow_listview_tap_fn lv_tap_cb; /* 行点击回调(idx, op) */ + void *lv_tap_ctx; /* 回调 ctx */ }; /* ---- §5.8 batch1 内部辅助:opts 取值(opts_used==0 时按控件内建默认)---- @@ -328,6 +337,7 @@ void meow_widget_free(meow_widget *w) if (!w) return; meow_draw_widget_unregister(w); /* §6.2:绘制物注册表自动注销(stale id 失效勿用) */ live_btn_unregister(w); + if (w->sel_bits) { free(w->sel_bits); w->sel_bits = NULL; } /* W_LISTVIEW 多选位图 */ free(w); } @@ -881,6 +891,271 @@ int meow_list_tap_at(meow_widget *w, int x, int y) return idx; } +/* ============================================================ */ +/* §5.5 结构化列表(W_LISTVIEW):行=图标+标题+副标题+右侧操作+选中 + * ------------------------------------------------------------ + * 行数据源(meow_list2_source)逐行填充 meow_list_item;容器只画可见行(虚拟化)+ 视口裁剪 + * (M2.73 纪律:只画视口内行/分隔线/文本,无标题栏/底部泄漏);局部 dirty;行高固定;首/末行 + * 钳制。颜色全部取 meow_theme_get() 语义色(日/夜/style 自动),禁止硬编码。 */ +/* ============================================================ */ +#define MEOW_LISTV_ICON 24 /* 图标盒尺寸(px) */ +#define MEOW_LISTV_PAD 16 /* 行内左右 padding(px) */ +#define MEOW_LISTV_SUB_GAP 2 /* 标题与副标题间隙(px) */ + +/* meow_ui_img_scaled 弱引用:W_LISTVIEW 的 MEOW_LIST_ICON_IMG 分支用它绘制图片图标。 + * 弱引用让「只用内置符号图标、不解码图片」的 App 不被牵连进 meow_ui_img.o/stb_image.o + * (静态库惰性链接:无强引用则不拉入 stb 解码器,避免所有 App 无谓膨胀 ~77KB)。 + * 宿主/设备需图片图标的 App 经 meow_ui_img_load_* 强引用 meow_ui_img.o → 此处自动解析。 */ +extern void meow_ui_img_scaled(int x, int y, int w, int h, meow_img *img) __attribute__((weak)); + +static int listv_item_h(const meow_widget *w) { return (w->item_h > 0) ? w->item_h : 56; } + +/* 文本截断:超出 maxw 加 "..."(复用 browser_text_trunc 的逐字符宽度累加)。 */ +static void listv_text_trunc(int x, int y, const char *s, int maxw, int size, uint32_t col) +{ + if (!s) return; + int full = meow_ui_text_width(s, size); + if (full <= maxw) { meow_ui_text(x, y, s, size, col); return; } + const char *dots = "..."; + int dw = meow_ui_text_width(dots, size); + char tmp[128]; + int i; + for (i = 0; s[i] && i < (int)sizeof tmp - 4; i++) { + tmp[i] = s[i]; + tmp[i + 1] = '\0'; + if (meow_ui_text_width(tmp, size) > maxw - dw) break; + } + memcpy(tmp + i, dots, 4); + meow_ui_text(x, y, tmp, size, col); +} + +/* 行图标绘制(内置符号 / meow_img)。col=图标前景(选中/未选中由调用方定)。 */ +static void listv_draw_icon(const meow_theme *th, int x, int y, int kind, + const meow_img *img, uint32_t col) +{ + (void)th; + int s = MEOW_LISTV_ICON; + if (kind == MEOW_LIST_ICON_IMG && img && meow_ui_img_scaled) { /* 弱符号非空才画(未链 stb 则跳过) */ + meow_ui_img_scaled(x, y, s, s, (meow_img *)img); /* img 为 opaque 句柄,const 丢弃 */ + return; + } + if (kind == MEOW_LIST_ICON_FOLDER) { + meow_ui_fill_rect(x, y + 6, s, s - 6, col); /* 主体 */ + meow_ui_fill_rect(x, y + 2, 12, 6, col); /* 页签 */ + } else if (kind == MEOW_LIST_ICON_FILE) { + meow_ui_draw_rect(x + 4, y + 2, s - 8, s - 4, col);/* 页体 */ + meow_ui_fill_rect(x + 4, y + 2, 7, 4, col); /* 文件名横条 */ + } +} + +/* 行右侧操作区绘制(箭头/开关/复选/⋯)。x=动作槽左缘;col=前景。 */ +static void listv_draw_right(const meow_theme *th, int x, int y, int row_h, + int right, int on, uint32_t col) +{ + switch (right) { + case MEOW_LIST_RIGHT_ARROW: { + int cx = x + 4, cy = y + row_h / 2; + meow_gfx_line(cx - 4, cy - 6, cx + 4, cy, 2, col); + meow_gfx_line(cx + 4, cy, cx - 4, cy + 6, 2, col); + break; + } + case MEOW_LIST_RIGHT_SWITCH: { + int sw = 36, sh = 20; + int sx = x, sy = y + (row_h - sh) / 2; + meow_gfx_fill_round(sx, sy, sw, sh, sh / 2, on ? th->primary : th->onSurfaceVariant); + int kr = sh / 2 - 3; + int kx = on ? sx + sw - kr * 2 - 3 : sx + 3; + meow_gfx_fill_round(kx, sy + 3, kr * 2, kr * 2, kr, on ? th->onPrimary : th->surface); + break; + } + case MEOW_LIST_RIGHT_CHECK: { + int cx = x + 2, cy = y + row_h / 2; + meow_gfx_line(cx - 6, cy + 2, cx - 1, cy + 7, 2, col); + meow_gfx_line(cx - 1, cy + 7, cx + 7, cy - 6, 2, col); + break; + } + case MEOW_LIST_RIGHT_MORE: { + int cx = x; + int cy0 = y + row_h / 2 - 8; + for (int d = 0; d < 3; d++) + meow_ui_fill_rect(cx, cy0 + d * 6, 4, 4, col); + break; + } + default: break; + } +} + +/* 多选位图扩容(MULTI 且 idx 超出当前容量时;SINGLE 不分配)。 */ +static void listv_bitmap_grow(meow_widget *w, int idx) +{ + int need = (idx + 1 + 31) / 32; + if (need <= w->sel_bits_n) return; + uint32_t *nb = (uint32_t *)calloc((size_t)need, sizeof(uint32_t)); + if (!nb) return; + if (w->sel_bits && w->sel_bits_n) + memcpy(nb, w->sel_bits, (size_t)w->sel_bits_n * sizeof(uint32_t)); + free(w->sel_bits); + w->sel_bits = nb; + w->sel_bits_n = need; +} + +meow_widget *meow_listview_create(int x, int y, int w, int h, int count, + meow_list2_source src, void *ctx, meow_list_sel mode) +{ + meow_widget *t = (meow_widget *)calloc(1, sizeof *t); + if (!t) return NULL; + t->type = W_LISTVIEW; t->x = x; t->y = y; t->w = w; t->h = h; + t->owner = meow_ui_activity_active(); + t->state = MEOW_WS_ENABLED; + t->count = count > 0 ? count : 0; t->src2 = src; t->ctx = ctx; + t->sel = -1; t->item_h = 56; t->scroll = 0; + t->sel_mode = (mode >= MEOW_LIST_SEL_NONE && mode <= MEOW_LIST_SEL_MULTI) ? mode : MEOW_LIST_SEL_NONE; + if (t->sel_mode == MEOW_LIST_SEL_MULTI && t->count > 0) { + t->sel_bits_n = (t->count + 31) / 32; + t->sel_bits = (uint32_t *)calloc((size_t)t->sel_bits_n, sizeof(uint32_t)); + } + meow_draw_widget_register(t); + return t; +} + +int meow_listview_set_item_h(meow_widget *w, int item) +{ + if (!w || w->type != W_LISTVIEW) return -1; + if (item > 0) { w->item_h = item; meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); } + return w->item_h; +} +void meow_listview_set_count(meow_widget *w, int count) +{ + if (!w || w->type != W_LISTVIEW) return; + if (count < 0) count = 0; + if (count == w->count) return; + w->count = count; + if (w->sel >= w->count) w->sel = -1; + if (w->sel_mode == MEOW_LIST_SEL_MULTI) { /* 重分配多选位图 */ + free(w->sel_bits); w->sel_bits = NULL; w->sel_bits_n = 0; + int need = (count + 31) / 32; + if (need > 0) { + w->sel_bits_n = need; + w->sel_bits = (uint32_t *)calloc((size_t)need, sizeof(uint32_t)); + } + } + int ms = meow_listview_max_scroll(w); /* 行数减少时 clamp scroll */ + if (w->scroll > ms) w->scroll = ms; + meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); +} + +int meow_listview_max_scroll(meow_widget *w) +{ + if (!w || w->type != W_LISTVIEW) return 0; + int ms = w->count * listv_item_h(w) - w->h; + return ms < 0 ? 0 : ms; +} + +void meow_listview_set_scroll(meow_widget *w, int offset) +{ + if (!w || w->type != W_LISTVIEW) return; + int ms = meow_listview_max_scroll(w); + if (offset < 0) offset = 0; + if (offset > ms) offset = ms; + if (offset == w->scroll) return; + w->scroll = offset; + meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); +} +void meow_listview_scroll_by(meow_widget *w, int dy) { if (w) meow_listview_set_scroll(w, w->scroll + dy); } +int meow_listview_scroll(meow_widget *w) { return (w && w->type == W_LISTVIEW) ? w->scroll : 0; } + +void meow_listview_set_sel(meow_widget *w, int idx) +{ + if (!w || w->type != W_LISTVIEW) return; + if (w->sel_mode == MEOW_LIST_SEL_NONE) return; + if (w->count <= 0) { w->sel = -1; return; } + if (idx >= w->count) idx = w->count - 1; /* 越界 clamp(§5.5 首/末行钳制) */ + if (w->sel_mode == MEOW_LIST_SEL_SINGLE) { + if (idx == w->sel) return; + w->sel = idx; /* idx<0 = 清除 */ + meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); + } else { /* MULTI:翻转 idx */ + if (idx < 0) { + if (w->sel_bits) memset(w->sel_bits, 0, (size_t)w->sel_bits_n * sizeof(uint32_t)); + meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); + return; + } + listv_bitmap_grow(w, idx); + if (!w->sel_bits) return; + w->sel_bits[idx >> 5] ^= (1u << (idx & 31)); + meow_gfx_mark_dirty(w->x, w->y, w->w, w->h); + } +} +int meow_listview_get_sel(meow_widget *w, int *out, int max) +{ + if (!w || w->type != W_LISTVIEW) return 0; + if (!out || max <= 0) return 0; + int n = 0; + if (w->sel_mode == MEOW_LIST_SEL_MULTI) { + for (int i = 0; i < w->count && n < max; i++) + if (w->sel_bits && (w->sel_bits[i >> 5] & (1u << (i & 31)))) out[n++] = i; + } else if (w->sel >= 0 && n < max) { + out[n++] = w->sel; + } + return n; +} +int meow_listview_sel_count(meow_widget *w) +{ + if (!w || w->type != W_LISTVIEW) return 0; + if (w->sel_mode == MEOW_LIST_SEL_MULTI) { + int n = 0; + for (int i = 0; i < w->count; i++) + if (w->sel_bits && (w->sel_bits[i >> 5] & (1u << (i & 31)))) n++; + return n; + } + return (w->sel >= 0) ? 1 : 0; +} + +/* 命中:返回行号(含滚动换算;禁用行/越界 -1)。抬手用最新坐标(goodix 免疫,调用方传抬手落点)。 */ +int meow_listview_hit(meow_widget *w, int x, int y) +{ + if (!w || w->type != W_LISTVIEW) return -1; + if (x < w->x || x >= w->x + w->w || y < w->y || y >= w->y + w->h) return -1; + int item = listv_item_h(w); + int idx = (y - w->y + w->scroll) / item; + if (idx < 0 || idx >= w->count) return -1; + if (w->src2) { /* 禁用行不响应(§5.5) */ + meow_list_item it; + memset(&it, 0, sizeof it); + if (!w->src2(idx, &it, w->ctx)) return -1; + if (!it.enabled) return -1; + } + return idx; +} +int meow_listview_hit_op(meow_widget *w, int x, int y) +{ + int idx = meow_listview_hit(w, x, y); + if (idx < 0) return 0; + int opx = w->x + (w->w * 2 / 3); /* 行右 1/3 = 操作区(§5.5) */ + if (x < opx) return 0; + if (w->src2) { + meow_list_item it; + memset(&it, 0, sizeof it); + if (!w->src2(idx, &it, w->ctx)) return 0; + if (it.right == MEOW_LIST_RIGHT_NONE) return 0; + } + return 1; +} +void meow_listview_set_on_tap(meow_widget *w, meow_listview_tap_fn cb, void *ctx) +{ + if (!w || w->type != W_LISTVIEW) return; + w->lv_tap_cb = cb; w->lv_tap_ctx = ctx; +} +int meow_listview_tap_at(meow_widget *w, int x, int y) +{ + int idx = meow_listview_hit(w, x, y); + if (idx < 0) return -1; + int op = meow_listview_hit_op(w, x, y); + meow_listview_set_sel(w, idx); + if (w->lv_tap_cb) w->lv_tap_cb(idx, op, w->lv_tap_ctx); + return idx; +} + static int hit(meow_widget *w, int x, int y) { if (!w) return 0; @@ -1071,6 +1346,84 @@ void meow_widget_draw(meow_widget *w) if (disabled) meow_ui_fill_rect_alpha(w->x, w->y, w->w, w->h, th->onSurface, 90); break; } + case W_LISTVIEW: { + /* §5.5 结构化列表(纵向 LazyColumn):只画可见行(虚拟化)+ 视口裁剪(M2.73 纪律)。 + * 行 = 图标(左) + 标题 + 副标题(次要色) + 右侧操作区;选中行 = primaryContainer / + * onPrimaryContainer(§5.8.3);禁用行变淡不响应(命中由 hit 层保证)。全语义色。 */ + int item = listv_item_h(w); + int vp = w->h; /* 纵向 */ + int off = w->scroll; + int maxs = w->count * item - vp; + if (maxs < 0) maxs = 0; + if (off < 0) off = 0; + if (off > maxs) off = maxs; + int first = (item > 0) ? off / item : 0; + int last = (item > 0) ? (off + vp) / item + 1 : 0; + if (first < 0) first = 0; + if (last > w->count) last = w->count; + int vx0 = w->x, vy0 = w->y, vy1 = w->y + w->h; + int thh = meow_ui_text_height(th->font_body); + int pad = MEOW_LISTV_PAD, isz = MEOW_LISTV_ICON; + int text_x = vx0 + pad + isz + pad; + int op_start = vx0 + (w->w * 2 / 3); /* 行右 1/3 = 操作区(§5.5 命中) */ + int text_maxw = op_start - pad - text_x; /* 标题/副标题可用宽(不压操作区) */ + if (text_maxw < 8) text_maxw = 8; + for (int i = first; i < last; i++) { + meow_list_item it; + memset(&it, 0, sizeof it); + if (!w->src2 || !w->src2(i, &it, w->ctx)) continue; + int ry = w->y + (i * item - off); + if (ry >= vy1) break; + if (ry + item <= vy0) continue; + int cl = ry > vy0 ? ry : vy0; /* 可见顶界(裁剪用) */ + int cr = (ry + item) < vy1 ? (ry + item) : vy1; /* 可见底界 */ + int sel = (i == w->sel); + uint32_t textcol = sel ? th->onPrimaryContainer : th->onSurface; + uint32_t subcol = sel ? th->onPrimaryContainer : th->onSurfaceVariant; + if (sel) meow_ui_fill_rect(vx0, cl, w->w, cr - cl, th->primaryContainer); + + /* 图标(左) */ + uint32_t iccol = sel ? th->onPrimaryContainer + : ((it.icon_kind == MEOW_LIST_ICON_FOLDER) ? th->primary + : th->onSurfaceVariant); + int icy = ry + (item - isz) / 2; + if (icy + isz >= vy0 && icy < vy1) /* 图标不越视口边界才画(防泄漏) */ + listv_draw_icon(th, vx0 + pad, icy, it.icon_kind, it.icon, iccol); + + /* 标题 + 副标题(两行居中;无副标题=单行居中;越界不画防泄漏) */ + int ty; + if (it.subtitle && it.subtitle[0]) { + ty = ry + (item - (2 * thh + MEOW_LISTV_SUB_GAP)) / 2; + if (it.title && ty >= vy0 && ty + thh <= vy1) + listv_text_trunc(text_x, ty, it.title, text_maxw, th->font_body, textcol); + int sy = ty + thh + MEOW_LISTV_SUB_GAP; + if (sy >= vy0 && sy + thh <= vy1) + listv_text_trunc(text_x, sy, it.subtitle, text_maxw, th->font_body, subcol); + } else { + ty = ry + (item - thh) / 2; + if (it.title && ty >= vy0 && ty + thh <= vy1) + listv_text_trunc(text_x, ty, it.title, text_maxw, th->font_body, textcol); + } + + /* 右侧操作区 */ + if (it.right != MEOW_LIST_RIGHT_NONE) { + int ax = w->x + w->w - pad - 24; /* 右缘动作槽(约 24px) */ + if (ax >= op_start) + listv_draw_right(th, ax, ry, item, it.right, it.on, subcol); + } + + /* 分隔线(仅落在可见带内才画) */ + int sy = ry + item - 1; + if (sy >= cl && sy < cr) + meow_ui_fill_rect(vx0, sy, w->w, 1, th->outlineVariant); + + /* 禁用行整体变淡(§5.5/§5.8.3 enabled=0 → 变暗) */ + if (!it.enabled) + meow_ui_fill_rect_alpha(vx0, cl, w->w, cr - cl, th->onSurface, 90); + } + if (disabled) meow_ui_fill_rect_alpha(w->x, w->y, w->w, w->h, th->onSurface, 90); + break; + } case W_CUSTOM: /* SDK 不替自定义画布画背景/状态层;App 在 render_cb 里自绘(th 供取色), * 可读 meow_widget_state(状态位)/ meow_widget_opts_get(通用修饰)自行叠。 */ diff --git a/patch_v2/sdk/test_ime_fix.c b/patch_v2/sdk/test_ime_fix.c index 74f5891..dd9593e 100644 --- a/patch_v2/sdk/test_ime_fix.c +++ b/patch_v2/sdk/test_ime_fix.c @@ -8,8 +8,9 @@ * gcc -Wall -Wextra -o test_ime_fix test_ime_fix.c test_host_stub.c \ * meow_ui_gfx.c meow_ui_sys.c meow_ui_theme.c meow_ui_vol.c meow_ui_log.c \ * meow_ui_widget.c meow_ui_input.c meow_ui_activity.c meow_ui_dialog.c meow_ui_ime.c \ - * meow_ui_draw.c meow_ui_view.c \ - * -I. -I../meow_launcherd -DMEOW_UI_HOST_TEST -pthread + * meow_ui_draw.c meow_ui_view.c meow_ui_img.c stb_image.c \ + * -I. -I../meow_launcherd -DMEOW_UI_HOST_TEST -pthread -lm + * (meow_ui_widget.c 新 W_LISTVIEW 引用 meow_ui_img_scaled → 需链 meow_ui_img.c+stb_image.c+-lm) */ #include "meow_ui.h" #include "meow_ui_internal.h" diff --git a/patch_v2/sdk/test_meow_ui_widgets.c b/patch_v2/sdk/test_meow_ui_widgets.c index 18d4c59..e111176 100644 --- a/patch_v2/sdk/test_meow_ui_widgets.c +++ b/patch_v2/sdk/test_meow_ui_widgets.c @@ -5,16 +5,74 @@ * gcc -o test_meow_ui_widgets test_meow_ui_widgets.c test_host_stub.c \ * meow_ui_gfx.c meow_ui_sys.c meow_ui_theme.c meow_ui_vol.c meow_ui_log.c \ * meow_ui_widget.c meow_ui_input.c meow_ui_activity.c meow_ui_dialog.c meow_ui_ime.c \ - * meow_ui_draw.c meow_ui_view.c \ - * -I. -I../meow_launcherd -DMEOW_UI_HOST_TEST -pthread + * meow_ui_draw.c meow_ui_view.c meow_ui_img.c stb_image.c \ + * -I. -I../meow_launcherd -DMEOW_UI_HOST_TEST -pthread -lm * 运行:MEOW_UI_DUMP=/tmp/b2.ppm ./test_meow_ui_widgets (可选,dump 屏幕) + * + * 注:W_LISTVIEW 的 MEOW_LIST_ICON_IMG 分支调用 meow_ui_img_scaled → 宿主链 meow_ui_img.c+stb_image.c+-lm。 + * 结构化列表断言用 back_buf 像素(region_has/px_near),画完即读,非目检。 */ #include "meow_ui.h" +#include "meow_ui_internal.h" /* meow_ui_back_buf/pitch/bpp:真实像素断言 */ #include #include #include #include +/* ---- back_buf 像素读取(断言真实渲染:画完读像素,不依赖目检) ---- */ +static void rd_px(int x, int y, int *r, int *g, int *b) +{ + unsigned char *bb = meow_ui_back_buf(); + int line = meow_ui_back_buf_pitch(), bpp = meow_ui_back_buf_bpp(); + if (!bb || x < 0 || y < 0) { *r = *g = *b = 0; return; } + if (bpp == 16) { + uint16_t px = *(uint16_t *)(bb + (size_t)y * line + (size_t)x * 2); + *r = (((px >> 11) & 0x1F) << 3) | ((px >> 11) & 0x1F) >> 2; + *g = (((px >> 5) & 0x3F) << 2) | ((px >> 5) & 0x3F) >> 4; + *b = ((px & 0x1F) << 3) | ((px & 0x1F) >> 2); + } else { + uint32_t px = *(uint32_t *)(bb + (size_t)y * line + (size_t)x * 4); + *r = (px >> 16) & 0xFF; *g = (px >> 8) & 0xFF; *b = px & 0xFF; + } +} +static int near2(int a, int b) { int d = a - b; if (d < 0) d = -d; return d <= 14; } +static int px_near(int x, int y, int r, int g, int b) +{ + int rr, gg, bb; rd_px(x, y, &rr, &gg, &bb); + return near2(rr, r) && near2(gg, g) && near2(bb, b); +} +/* 区域内含「接近 target 色」的像素数(>0 即该色被真实绘出)。 */ +static int region_has(int x, int y, int w, int h, int r, int g, int b) +{ + int cnt = 0; + for (int dy = 0; dy < h; dy++) + for (int dx = 0; dx < w; dx++) + if (px_near(x + dx, y + dy, r, g, b)) cnt++; + return cnt; +} +#define UNPK(c, rr, gg, bb) do { (rr) = ((c) >> 16) & 0xFF; (gg) = ((c) >> 8) & 0xFF; (bb) = (c) & 0xFF; } while (0) + +/* 结构化列表(W_LISTVIEW)测试数据源 */ +typedef struct { const char *title; const char *sub; int ik; int right; int enabled; } lvrow_t; +static lvrow_t g_lvrows[4] = { + { "Row A", "sub A", MEOW_LIST_ICON_FOLDER, MEOW_LIST_RIGHT_MORE, 1 }, + { "Row B", "sub B", MEOW_LIST_ICON_FILE, MEOW_LIST_RIGHT_NONE, 1 }, + { "Row C", "sub C", MEOW_LIST_ICON_NONE, MEOW_LIST_RIGHT_ARROW, 0 }, /* 禁用 */ + { "Row D", "sub D", MEOW_LIST_ICON_FOLDER, MEOW_LIST_RIGHT_CHECK, 1 }, +}; +static int lv_src(int idx, meow_list_item *out, void *ctx) +{ + (void)ctx; + if (idx < 0 || idx >= 4) return 0; + out->icon_kind = g_lvrows[idx].ik; + out->title = g_lvrows[idx].title; + out->subtitle = g_lvrows[idx].sub; + out->right = g_lvrows[idx].right; + out->on = 1; + out->enabled = g_lvrows[idx].enabled; + return 1; +} + /* 测试数据源(列表容器) */ static int list_src(int idx, char *label, int len, void *ctx) { @@ -158,6 +216,75 @@ int main(void) assert(meow_list_hit_index(lr, 40, 660) == ((40 - 20 + 200) / 60)); printf("PASS lazy list: scroll clamp/virtualize/hit_index/tap_at/select (col+row)\n"); + /* ---------- 结构化列表(W_LISTVIEW):行渲染像素 + 命中 + 滚动裁剪 ---------- + * lv 位于 (20,240,320,112)item_h=56 → 行0 y240..296、行1 296..352。 + * 断言全部「画完读 back_buf 像素」(region_has/px_near),非目检。 */ + meow_widget *lv = W(meow_listview_create(20, 240, 320, 112, 4, lv_src, NULL, MEOW_LIST_SEL_SINGLE)); + assert(meow_listview_set_item_h(lv, 56) == 56); + const meow_theme *lth = meow_theme_get(); + int lvx = 20, lvy = 240, lvw = 320, lvh = 112, itemh = 56; + int textx = lvx + 16 + 24 + 16; /* 文本起 x = 76 */ + int op_start = lvx + (lvw * 2 / 3); /* 行右 1/3 操作区起 = 20+213=233 */ + int sb_r, sb_g, sb_b, os_r, os_g, os_b, pc_r, pc_g, pc_b; + int ospv_r, ospv_g, ospv_b, prim_r, prim_g, prim_b; + UNPK(lth->bg, sb_r, sb_g, sb_b); + UNPK(lth->onSurface, os_r, os_g, os_b); + UNPK(lth->primaryContainer, pc_r, pc_g, pc_b); + UNPK(lth->onSurfaceVariant, ospv_r, ospv_g, ospv_b); + UNPK(lth->primary, prim_r, prim_g, prim_b); + int thh = meow_ui_text_height(lth->font_body); /* 20(宿主 5x7) */ + + /* 行 0 的标题/副标题 y(含 subtitle 的两行居中):ty=240+(56-42)/2=247 */ + int r0_ty = lvy + (itemh - (2 * thh + 2)) / 2; + int r0_sy = r0_ty + thh + 2; + + /* 1) 行内容渲染:清底 + 只画列表,断言图标/标题/副标题/右侧 ⋯ 真实像素 */ + meow_ui_clear(lth->bg); + meow_widget_draw(lv); + assert(region_has(lvx + 16, lvy + (itemh - 24) / 2, 24, 24, prim_r, prim_g, prim_b) > 100); + assert(region_has(textx, r0_ty, 80, thh, os_r, os_g, os_b) > 2); + assert(region_has(textx, r0_sy, 80, thh, ospv_r, ospv_g, ospv_b) > 2); + assert(region_has(lvx + lvw - 16 - 24, lvy + (itemh - 20) / 2, 8, 20, ospv_r, ospv_g, ospv_b) > 20); + printf("PASS listview: row render (icon/title/subtitle/right-more) pixels\n"); + + /* 2) 选中态:行 1 → primaryContainer 高亮;行 0 无高亮(bg) */ + meow_listview_set_sel(lv, 1); + meow_ui_clear(lth->bg); + meow_widget_draw(lv); + assert(px_near(28, lvy + itemh + 48, pc_r, pc_g, pc_b)); /* 行1带底部空白 = primaryContainer */ + assert(px_near(28, lvy + 48, sb_r, sb_g, sb_b)); /* 行0带空白 = bg(未选中无高亮) */ + int selout[4]; + assert(meow_listview_get_sel(lv, selout, 4) == 1 && selout[0] == 1); + assert(meow_listview_sel_count(lv) == 1); + printf("PASS listview: selected row highlight + get_sel/sel_count\n"); + + /* 3) 命中:行号 + 右侧操作区分 + 禁用行不命中 */ + assert(meow_listview_hit(lv, 28, lvy + 20) == 0); /* 行0 体 */ + assert(meow_listview_hit_op(lv, 28, lvy + 20) == 0); /* 体非操作区 */ + assert(meow_listview_hit_op(lv, op_start + 10, lvy + 20) == 1); /* 行0 右1/3=操作区 */ + meow_listview_set_sel(lv, -1); + /* 滚动到 3、4 行行内命中(scroll=112 → 行2 y240、行3 y296) */ + meow_listview_set_scroll(lv, 112); + assert(meow_listview_scroll(lv) == 112); + assert(meow_listview_max_scroll(lv) == 4 * 56 - 112); + assert(meow_listview_hit(lv, 28, lvy + 28) == -1); /* 行2 禁用 → 不命中 */ + assert(meow_listview_hit(lv, 28, lvy + itemh + 28) == 3); /* 行3 命中 */ + printf("PASS listview: hit row/hit_op/disabled-not-hit\n"); + + /* 4) 滚动视口裁剪:滚到 112 后画,视口外(上缘/下缘)无泄漏(保持 bg) */ + meow_ui_clear(lth->bg); + meow_widget_draw(lv); + assert(px_near(21, lvy - 1, sb_r, sb_g, sb_b)); /* 视口上缘外 = bg(无上漏) */ + assert(px_near(21, lvy + lvh, sb_r, sb_g, sb_b)); /* 视口下缘外 = bg(无下漏) */ + /* 视口内 行3 标题真实渲染(行3 y=296,标题 y=303) */ + assert(region_has(textx, lvy + itemh + (itemh - (2 * thh + 2)) / 2, + 80, thh, os_r, os_g, os_b) > 2); + /* 行 2 禁用行「变淡」:draw 后其左 padding 像素应被 dim 覆盖(偏离纯 bg) */ + assert(!px_near(28, lvy + 28, sb_r, sb_g, sb_b)); + printf("PASS listview: scroll clip no-leak + disabled-row dim\n"); + meow_listview_set_scroll(lv, 0); + meow_listview_set_sel(lv, -1); + /* ---------- Dialog / BottomSheet 纯逻辑(create/set/add;show 阻塞故不调) ---------- */ meow_dialog *dlg = meow_dialog_create(MEOW_DLG_SELECT, "Pick one"); const char *items[] = { "Alpha", "Beta", "Gamma" };