From cfde1343a42a535a574988276c7f4a59e3aa8308 Mon Sep 17 00:00:00 2001 From: yaya Date: Fri, 9 Oct 2026 14:31:24 +0100 Subject: [PATCH] feat(ui): add private phone setup goal and shared hardware listings --- .../assets/img/phone-mockups/pixel-10.webp | Bin 0 -> 10530 bytes .../assets/img/phone-mockups/pixel-9.webp | Bin 0 -> 9370 bytes .../assets/img/phone-mockups/pixel-9a.webp | Bin 0 -> 9022 bytes .../assets/img/router-mockups/beryl-ax.webp | Bin 0 -> 8916 bytes .../assets/img/router-mockups/flint-2.webp | Bin 0 -> 13314 bytes .../assets/img/router-mockups/nanopi-r5s.webp | Bin 0 -> 30134 bytes neode-ui/src/components/DeviceModel.vue | 2 +- neode-ui/src/components/EasyHome.vue | 1 + .../src/components/HardwareMarketplace.vue | 233 ++++++++++++++++++ neode-ui/src/components/RouterMarketplace.vue | 214 ---------------- neode-ui/src/data/goals.ts | 7 + neode-ui/src/graphics/deviceModels.ts | 38 ++- neode-ui/src/router/index.ts | 5 + neode-ui/src/views/Server.vue | 23 +- .../src/views/goals/NonSurveillancePhone.vue | 48 ++++ neode-ui/src/views/server/OpenWrtGateway.vue | 8 +- 16 files changed, 352 insertions(+), 227 deletions(-) create mode 100644 neode-ui/public/assets/img/phone-mockups/pixel-10.webp create mode 100644 neode-ui/public/assets/img/phone-mockups/pixel-9.webp create mode 100644 neode-ui/public/assets/img/phone-mockups/pixel-9a.webp create mode 100644 neode-ui/public/assets/img/router-mockups/beryl-ax.webp create mode 100644 neode-ui/public/assets/img/router-mockups/flint-2.webp create mode 100644 neode-ui/public/assets/img/router-mockups/nanopi-r5s.webp create mode 100644 neode-ui/src/components/HardwareMarketplace.vue delete mode 100644 neode-ui/src/components/RouterMarketplace.vue create mode 100644 neode-ui/src/views/goals/NonSurveillancePhone.vue diff --git a/neode-ui/public/assets/img/phone-mockups/pixel-10.webp b/neode-ui/public/assets/img/phone-mockups/pixel-10.webp new file mode 100644 index 0000000000000000000000000000000000000000..0f3ba1ffe67a2b4e07e0c6685ba9cc37e4300956 GIT binary patch literal 10530 zcmV+-Dc#mmNk&E*DF6UhMM6+kP&gnCDF6U4HUXUhDue@A0zP3dl}IEasi&aO`0+3d z32AQfVA1W*fERoT^XaDCry%;WV_S-UY|w6)R^!m`Yj2TnOJ660o1qwg6dK5b?YJw< z2ki%|r=$JnPe2bYUu6#}ty(z)ZY7OBtLu85Z|-~_`9Y{f%)7<*U-&+Pp74GD(W~r# z;`$~1xA@=q9(SChR0jTe{p$!~&)lD8zt_+I z;e%KfzaT2IQc+kIuX0YupB-!R0;&B3VgwlL0@vgdkqGb~#w19JwbM)EXFCkw)WqhS}q$5rrD3*e=K!%1x+=P{D70D{E7RiKnE-RNYnNT`#j68Leq~`_+By^(jTArfn{mz0kp9LaC zyd+-LeWP|vrF-M49VaX$03Lx}1ey$Oq7^*5hvhm>n1h{gcF05U@2L@`BO;9kcjaBN ze1y>asZy*qVlDyhPh+DbX9UC|)0|mhE}$yj)NW7%{1wKWlmw9kQeT*UhPCApO5zg# zD3e63P187pE>K>|+{uT<{Qer8^{juG^*|3_@kh=l<&fiy;qP$Eln0GM($tn`Bn*iq?%1P7Ya@6I3&t0fP8{03ov|aC=?TQA$W<` z7x6nXvMJ*P$GS^sqr}AEQ9k?UH~$qtfKXAGUI!05bObW&Zh}Zs+HoiLZUnJ1J?B#) zo1UylhQ#JjiERvJy-OrUz#CxuTY+hv1w+ori(icn6Tg}3;~eD=uF|z8kJnTE*)gWK zrs*3D=0#^Q0w_CRO`<9zAXpOPQzSKT%xl?`oSG8+hknQ7nh=>{$aQ$11{w9?R=d0E z@Jperg3NJjI45BLhv)TP+#sP#MVgkZFY~NK<{V&MUccNlTCF0fvygbTE4OO@d4JQR z`sykdXgbjVIzSAJiaPxg4BT2}D1|&Gw(OS!oUkn2dhdQ>WvW9Y!VU!mU;Q0XrQZ*z zjzUu*{x_1p2Q�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 literal 0 HcmV?d00001 diff --git a/neode-ui/public/assets/img/phone-mockups/pixel-9.webp b/neode-ui/public/assets/img/phone-mockups/pixel-9.webp new file mode 100644 index 0000000000000000000000000000000000000000..7689d967ebdecfa92ae0924249071c16ea634231 GIT binary patch literal 9370 zcmV;LBxT!DNk&GJBme+cMM6+kP&golBme-AIRTvkDue@A0zP3dl}IEasjs1N81e87 z32AQ6LUGs6fEWx1^X2k?=89HH|DwGUu=DNj+2=Rz-A%@RIzPY2Rh#G~wBzbOz5VaF zPxkU4gBBtL)usTU;ciGzOw(<>7VO+ z?6=XI_JlcBslm862H@OvQnYel5pT+XEv)!s;J~mJ0>D@c0GgA_4x_B|R=gW>ES}d_ zY7=e}j9Uc@e2E={+&}jU76SO{d}j5+MGmr}X!2s)lj=*Co;2rn*;RRo z#`(#^l4GUe1J+J5V-V%$9GfW3*TkV^e^in`WE9&ZF_GDH*iqe*Yb(l~h!1m|{w81d zD@|X0nh(yfJ)-+E=oz2@!kVd!!f^MK*)VGHsF};5N%Zi&9%B|pZZR}AuyQ1_2BS-~ zuHyDmEj#{iB?pb0GWyL31x$N>4q?50MlD%GA9h@N5MX zJhON^oXQ$8kMNSfHRh4#V)&J;<>GElz#J&^K${E!a!y6$znOdx!>pgpCvB@>ybfEJ z8Jt$_NI>G4(&#mvuRy`}-t*G#QU=6DKcaBiI0bF)Kjr`ae{Gm_lwvU_S`I-;s9(}D zyKf1$;v41pmNZZ<8{Q%qrqByAm4?JSxU5V;))s`d1>^!KkBZP;Fd?hHF}+)d4PGOV z#<;R!eNkfhmGmp#1X|bWzH{xGjCqj4~RPtt>@yCjVR!mx)|PpXURJ9rKPv z8XyWV%3LfYMd_v<>cLIG<^Z7<+5O=b8O_;a%gIqI-_=$5iYxLWm|#34XE;a<>iq_n zkbP1PIIDcz5S8wZu81pinClo47ToorUlc95-r}XaMU`h1EU5 z_UH*fe^^f?wRE))@r-VXZz6BIqa_60ZLDq6h+o;!e+V2RQP%Y#1ohW~-KQBAJ^P}L z@N8RCJ(^vDOU=v`D2V;gExAt4H=QfI-Wk*}+HFW<`Asa|>C?Y8FBgq*cU`b4PB$g! z`%_+o3mAz_*c`p4uAgha#uRdQSr>_A+||>RjgAzMor79FC|(@)iPi_o1I7=i)x|;I z+_MxIv!ImbNdl;Gp{4nDdMfKjN=CvZd++hW3l66gHG|~=;|NXwQU8i2DAA1Vwgg8K zaR^g1Hc8mo5!?{AJBL?cU&k3W9DGLjmuiT>uunLmF2=21_3wWQTA%rO{k}lftu+8z z5s=pm@w#9K9JX%nY|sYOPk+3Ly0LX8a1OJ|sTu7W$&>ShH4bvweXw8m199QtOO`2; z+49pr>u+6(7g&G*G~6lK7k=h(#t!ju(vL?L_LRkzbwx#i1E>+14% zh&F%y&!?aSW?d#(V+V@mVMA^rMk~2f#tWZb`15bcLcMK1wTI$*=gG|nSCiy$I*{r2 zaH`MwD;7-OT?S)nQm^zRb?+Lhg(r%q!9~x<5B!6WZqIFKk%{{Qjw#O5if;F@FAYPZ z8L@s*fK9h4Y>4kz&pFRceZ7e`4yG4!WGl`3Hk!%3?pDK~=d^8+&K&i)>%oXf(}IM3 zGXO`6Y>ws+!$35Af*{)A`v0wL z^h6Ft4wEk|oa-4t@9bP$F+JVQZ&05W;?_~57rboR49NXqWf=cHJTu3DcoKka{Iqe> z=Fb}P)P#jEn@vQb{0>6&X4E}QbT0EO1Iz2;Tqz|4c_vr3xC_}5hQ2CgBU z7(S2H_WN#S-RhsfB~DC}L4Fhq9RRV~zqS9 zQe9HDI%HP2|K%@~0skt<@|nj;rMxW)EeIc7>WzStK-P?d3c^0ua^ppgbXGX2rYt!4i2%PExB z?GzjBbU&r+vcy|`ZKaB(G5iJ*8HSDc5txmRtzWLOiZs^>bu|YuYfq?v`~D&b4YEsP zS?Bq?&rxQyHlR={+Z1W%7rB00mA8;0MkPRQzD^0Jh#u)4J#=b<$DAc*fOC++(yXX* z(Pk=Kv#f{=)F$TnToe3yU6Gj_yx4QNWXL|@Uh!$xnNsZ6Bn&QgQQX`*-lWf$!?EO& z0n~dt-U)tXX@;xxWt;>g59VBPlv!`G0f1Sg3*$R?m#H<7Vk~; z5Bq(!<+?vLzj2`q{m?#%gW$|OB?mmwn7CcKF-;uOB5BB%`Ml?=ckk4MU#;%2jOA(v zfjTvAm8my}2Y>t>42@;+eGUznkHV{Ewrm8BCL}}TWr#izFqAU=b1jZLK3A3E_~RST z8mRV>Bh@MLm9iIPE;@taC&Y*PABLa%gI2fk>NeE(_p5(rS>L#N%9&9oOpcFYv^m9^D1e z%8WjKE{6j~Qx&pf-8PSzwM&($)i??~;^xa`qPa_c>Nh+7EzXX7ILhaY-{qq2Z>VE= zain~;ZtlXK8@4F{B!l@>b>+0r(hZJs))Ziu)U_jaC|6{cghR%HSf^4ire_?l+R@^$ z{+X^Tlw=9T8-q3P;&8AaOU|tkISHgA7q_~6PY#WwePaZfwm|#hAzdJ*)mzC<;O_bh3)LBgF~tw#VK7-;rv@T(H@y(+gTwUFY% zKAs3c3x^y;O3D~`E1oxwlUDiB!==nH(#{0wd@;aDf!EWX)W|~>#B0s&$YV8UNPd>R$b&>!VHGW+0?Av7M zY#?%|34V1QUk5=ecLg-kC+cDQS$Kc6qSak-LKZjQA^09VgqrIyccxGRwA+Veita<~ zVkbCMl-?*^O}d$Fvltix771`0Qp75@m@{Nrs-9?z0{9Sg7f`9Vh+HMcT;AN%h?BZL zgH*2PTX#6jC%$8cUKR&RX6BUk7cZep_c`CZZ7i|iBB3{$nhE|kY3!9MX)DfalAc2e z@?)3nLRXrKd*?+*(8)sR#m_nG%6^i2S3-m}W8o6mTiz)ZSs0@&{@19nLddYz4V$KOsC1yL`% zWOY>Uk}cY2i5!d#-lt=F6=2zNZm3{ljQW6Bk(i#_TCqU^0`7bW!9$}VC?fmU*IRiu zZ^9F6Q`p>yEDEbY$@#p@_mz3k-MUG$V8|_)^IF@9WLMUa5FYcv|FxTpLV$Ovz7m_NCrQ;u z>-IV?`4leYSw+%i*>&qV_scdaCe2xLVLAG&-xqGd>HIRQbdo^Ied%Dio;qw$-gI#OQ@UuPSA0V-%GslPb6zgo|x?^t;5rQQ#?M@v4HaoE~2?gkn&3?Wy8 za7KJ06ja!j+X;I>*K8kwZ2K=duFf57#WxCn7`V+LQS;+owIO86?^?i&8G7WXfR<;? zQ=O4y`;A?Kz2Z+?qj3j|Kgy`AJhZYSTxw)g5BFB|s%q4~pi#z@7XC|16Z_|(%pB*b zKT()9so{^U|%QAQ~-&>o`;vToqjR9DI$tK-k@G!_Y=o zG^}9N3@R)5Y{bmCG>^_Y0`-mz7TIv$Um77QO)1u`?rE2v^_OEGdjF*G3-1-E5R(`K z4g1nIuXcaaig1%Zqc~K=t`FQmN-3aF4-tsSNF=0uH}|&{;#-WH1vlCEtq$>WF3y_X zEmt97AyI-kgG(q?Z*{{1$F_a6tP+d z3RRXXT#;^M=wwb#p%#-S_{4o9=hjo&3w&Z+565e2A&RiWCcIUXn1PA#+FP<1QTQqH za0UAfS5*!snB(vb)&T9^OLK*85+;PMHtUo+>rOrJ%_CVNf?VdxS5yi7RQ$M{xH*{Dn%@GW7DFaG}z>Y<@wYKzU(F|2LTcFtv2sjGx6u0pQeVsJ!V!&dg z=+nM=7?N4YRPKW(s3~jcYkFJgoKvO`P&dN7RCUu zOTi?wipda6pmr*lReMgvtKQU4+Pv0!+lqsE76NpCC7l~Bl$611ye)o=`3(HQhPCgNMPp&3i3a*qj*lIu!@E>lhDl=b3Y6We-Ymojxhmh&_}D`*?aq z&~CHn$WD!z^zgjo*EGZMc4@iHtv3jhf=QiXzE%Sn(v1e?TQY|-jPeeqe`65&Q_xwL z<6E#GldE^;pKet^W1X9}7X03p zcbl`tN8CT^kNB@jLT4A>sf+*>>_L;z&De+YAFkS7Hx{x|iOJzoj z#Tp%<%S^kHt;?5V{6^N_*{kxZNmhvF=&6iClJXsZ&fMsZ#Jlv=X5x#DlHk#`uBAU> z@#!3*XhI!4#XP^`9nJ)%xE(jA-7Wmyu_7wXHzU0snBowF0w<=r9#U!6_8YZ!kg`~6 zgPg8*;ArA}p3-r*s@q=8}?sNmBwPAU=QL&+Fde_y}l zK9L#TqH5;QO$CF>^aZQ*0MAK>Kf#a#?ju3O z8><%Hyn3jAcqUz+Qh|y|^?UzbTkn8J2WwhLxo2QoD+Wc%*a1vLp@-F?{h**L1iaEp z(ebKPhe8B+^QV`Ei_1QPvNt=o%0s5RtCbE8eOrSJ5R%0iB_4|rE~$MjKAXoE%II7; zp6q@d%O|~;jWLYfZ^ZTD@(Cm-if>_qONn=GCBn|8yRp9o#F3Vl?_MOPhC;5wru4~t zne+%2tYSgS#$|W* z1|wRhH6EHBr517=T>^PXTrsb&y>((BA!RJgFryT5d|u{$K-A2&@_=Zg(j)N||4@iCUw_``g2FWT2m zz6)HZZZv6QH8A4cFN)r!2b^F33o4-` z@APXE?|&efaAM;6s4+AZsYS&q4`7JI78gX43w8NrW1ks(p3!>%8& z5fPjfvGrD4SZg2zR@@OZWmi96;abnq0AmK8bv-H27Wu*FQVLiIT^XfxzA2%f(@C}X zWP}BL53Ga`-PxWH!X^L*(!veGdlP*8Q^0+V#am01`^aR|o=Ht2Wzj(B(!t8S4)qlu ztlN4y)LSt#D2Gvxvf?<|&7=2=@(auAb4b2ITxBNg=lcp9lLM7Qh+Q0;G}KF1^kD2) zn&$d25atyw{_dYcFOyarXqDi7*vK~}Z$o1FyZhUUWq)1?pw@O4N3gN9Opj~Ko)TrUAj4^1n`8Pj{ zG_iRk0Mc@vmLon|RV8@%p0$F38@}Nl4xz%c$_)7}t05%@Hf#JGm*H#&VUeb#d-O+X zSEa8HydOHW&gx=bRJ1}&?J(ti>g0XSr3ZWI$HRb-?}cp?9@9uAkKkB^B9Yl|lV#hUmyg z%@?-3y@CZVeBdmoHfAohIp>nP4iDMp7+H|g8-ymgf%Kvz?FFr|i_$xtRP|HMOAlHn z%qA3lNS3>G#~l9G`F&RZJ%Cl#lg8mDtL};YL!;wTcaueFRtHWTlpbmbBWr<7o|S5@ zCyW1=WBSkXFDk4ZYX9$K_E-$7YwE6Z%yx+rcS_ha^!{sChG7n!rr|c#{fwfB007EV z4I)zphaXq`M!kXYF)H!mbP)VpO-co*Z1E_m=^sS`Ppuss62}&kcw_3AZ}&};1zt_8I?@i5czqs0!rP zHV;4}0>H`eN+Q4T?B_Ay7mA|^!O__}ahjGpq4i9-EJSc$ZOKMaYIKgM(Y7$zF84zoxk6OI1+bK=axY|<#Ylo{H8}?2xb|LRJ*B$1p+&(&+0J^6r65qeURAfF>^uU8W$&4;S zUND!yEp(X*G(vs9eZ1Ge{Er6)!iF#hs9|kX_&`fB;1D7n(lM}!tWI}mAQ7>`P;H8p zL|H2)1U5ds4R?B&A<~%GWdMt)@h=1OE;Hn@8y}9_)n)*qu7!99M*$fr{Ed~U3(p)K zy-M<15i%{h zlIi_6rZ&j|p)GQ9tTgE%#M;2}Wzu^St_Q1&M;AY5@9;a3`!C#;g?LdQlj^nX75B}i zPzfub00qtZ*nrsmaGrm?UUJq%t5LwUwT4lJjKFGalWEtw(R0~tE zyxMA%=`Tnc7Z+2sJAac+CCR;rEiOFMpGdGjnlq!oR0bDDiiJ#Agk?qI8dyeaqZr?U zTV1nN=vx+kC&jeIc#)S1GTq>DS7u}Ll+k`+^e5ZQ1N(87y#%{1%U8#kX@9TIoXS-t z_HHbf_e!5{odb=Q&FSj0YW9%35Eu@b&nxG|=4Y3ebGu_cidT7cA^^V<&qQ~g%n%uA zNVPXNB|ijzoNylw9RY!hz-Nx+f!7J^7*-S?XUKN(>z8(rfXFr<9r8*YkK& zO+~(9*`Ia?6BFv4z~RA7tSryT7yX3rKMeK_3}LCE9l*){qPXM+#JW_TQ*d8WUU2K= zL*Rz~&je9SVm$~$!t{yKMg(IJ>}^gW2qS^xWUfX2a%3Wz>H!>Q<83dgZkCk&qChSO}N&o;Kd~bfolaW zuYz~q>6{!!*vIu8QG`>-?ur@wIaN-K&3@r+)%dCIbC4j7I5BS-MeIAIt4n-R!k0VVZMY6wKqAI z0cFz_vXxubNjJ3GRx(LUp5I1JXv{7G6%rtx%o5EH@5r+SJ>0XW9-#60^Xz9VTKvNm z7pt2nzQxDVUQMsVcaZ?qJdyq-pWOFEVtpe2%{IEsDEUX6KM}bXfTS~m8P+vcc1W=1 z^CpmzIy4-`)xbo|r~7yg!sS1#iKMORP1^KC>0*iegJc}oC6@;-!`qcgX(6=&eVT$% zd-eT`5aq|v&iFTYdG|G`(%*aY3O>uV!nJK-cmHnLJYJb*Uj%dMgIMT4OHPPBjkp;qNF|P+=-%iy`)Q&7Rcfx(D5#zm4=fbvydd ze{y^a*0!Kd6B9l+@Cty?|Gy7w`)QJ!l`Ta-Fogvr&Rdzvvvdp7jW|Rnt(fHz?Gl)8 zd9oKFr7A#pB{Z?}L*yJUw(cMV{S2f5DoEvLhM3#}Q{$S5uaG-sfVURf*TD0df3_(t zi`94lvq|b5D1Q)0sr!v!q;nG59cJ6fdQ~M+jeuU!)La{-amh^-+!J-FcY$KDW6oV5 z=nn3MIOVDY=+E-#9HfCG#EglWk{@abZnU zsdzxz675<#iM|iBlqpYJCALmRT!`=4Hf5@!)d1OE)TS(UapwE6kqu>D)ehjUg4G%z zD1dvy!~;{;T%xEhd55PdK+duiEn3vQLr!d?Yb47uVR~t*3iT#^ch%(l1OJ_#HaSq>ZTWsKT!BsDuFt?&21WRvC6t2t{ZcbtQ6czgNOPVN21klkfs$ zVqhws$}hmh)a?+(XU-Yg0z(A#fz>343D;X(MWcMKxdOPav$4*6E~ zbQ7s@XXMb8=v-6A_qvD~;~H=p4;3RplvFwbh2>2!JJ5XHB@`vN-iWX$WIc>8O6Nksp!`@X((2Eh$$WG5zE8!_m!y8-2m(y6RCW@?c#@jX zAkdCMv(6s$Z>7WP1-H*h`~6$;D)VvCcW|4#rjdvFbfRARz*#-4jc{*ZZtwpzfArS# zktEQdpM&>bNBM`+PMcdxwg;l)1W6aP3WOc)qTg_R)(KJfB(7Vf3}kz=26yX z=R0&)p^>eFc}ntk=nXI(ul?`*4^gjp{@edI*Y0QEq%q$>5754`-{JXb`m5Mq`TtN~ zM^D;t>A4wjJ>{z|3A}b%Cdt^&KRqUt+kx*bT1$u-j4_4->*1)0g$gXVkEl-Db};F$ zHqrC-ns@C!J_NxxP`LdM5EWhH0e|jgc+@YWMMP?utnHAUP+a(S@yW=V=hD`L82k8| zCcgwJ2!M^H`H44&RzaUzW2aZ9#v{__`zHWe%7|k~u>A6VFgd4{3qC4VbmG;D#+*T? zUz9PcDF<@E1c{qi)nBCHtOQ8cRh$hT-=qKaHx6ULE@=*;D44$2+WP zY$!ecWOGqZX6LZe=+WmDhhHFUW_&S9DFR-9Z6bvVNZrY;DlZdyJx+vtwhuP-UaQB{3l)W5t@0^)Z0p3~!`E#&tS zjLxqv{1cSSAHL%k_Nqzy%DNxX+cNwpakGLi_no|h;E6l-w8;wYmYr)sXPjZExR+Qn zr$<{bO;^{VhN1?-KGM0u{Xk@vi!~8Nlp29OE;Vo+c44CR2rZSE!8NekoVu-bp>%yi zf#s7KbzLu443Hcn$!0iUs%eiuY!Vc#)+I|~oeLHGvqXtP;e&#-#676j*_v`+^Gg<4V0(MyMxANXJz zi5uh4@JWdja{q&<4OvX9T%kCJnBSAzlQ6gNpD5iQ#%Bk=r?D_?*JD2m<}Fp4h~8@! z@fv@S?dG*ghKdzI@AQ=zdt*C2wiEjw-LAHj+n`m(u_?XYQ5n$pG|CQ%D2m})?NA^M z#Z8m3$Qq#h)|l3aqCAxLj+W=rDFOp5Qd%mYB!Dbdb?W{?iJ0U#zvf;-#h&_4g-{%h{AdpgOf(^Cvfl@%9G+Xn zb$$Ma+SR!;6yZyNN#b`2LFs8qucS>f%UCm-rJe>=UH9>emm*c)`I3duFhI?@#98@> zL-_x!9TPNvL=*BYqJzFr;$-fAG_r8F@d-mm7cu;?_xreGtgM0I6NEZwXiz+=Ce)0b z=I#CIFK$Z=8A^c;(@aNgFfBE@voG5F`Pj(}{zD~LVZggxan&jj>rp^=xjjaXl;DjH zl`$>FhhJl7o*CN+(*uB5LHIjNxtCG<*eJk!z#7raRuqBC7ChIq+K6YZIW`kSkvku->OAum`?u~YCy>KaZ=0llUNtE9ruGBs^!UDvRTRhx1OEyT zkNb4-sZj#} zqop1+G2c<-O;T>C@QY8ncT*C_I^{MB8lS2JaTLXrg3{^mp3@;g@oT(yUt9>kp8M#fb*SK6=(VF6)A-72qi)kzj*fPYy zuDy|_N>b#fMER(gFcT{%eMF%4 zHkUX1xR5aJ_9=$~kpf3~C_m}>a2n7m^&%99kS_(Mg2_AR^~g00I-Oxz2ffgfBDvHo z=UEy6T}znuLpsnaA~)lkuBu$5Z|aafpA%V8Xg(7i#*jRMtRt2|F8Sr5#6vxx=bj#c z;Iv~eOlc|Ng+6dBQNG0QQ~Hr}rF+Dj2yO01gF`_Ibk94QvFHHVAE^;_`pckQUr@<6gZezQ4s{+f+436TtCdK6JcGpMlT7w4Q-v7^$+!@fe7nGg%cI}oKR zF*DPWV$EL>Rb{=?H7y&q#L<&FJ_@w3tdT`&T_N3@NX5Uoe}ZtmdX9k0Ar`AbKaG4V zXd?gs{`670t-^h@k7rp?MbBlPFE1WFx}fg@7)P+240_>x zV&Hh+tKnme7aA`cpwwfn&XeC5Pzl~(lpuq-Zg&2g3txp)54e4DTfj!mhacn!sezCU zsBE1)fUY}e?Po*%+*9{+5+A`y{U_!>fjVko!Mr)q;{1SUPQcQditytF=Q zCi(l#3}6gD_^@KPF;w=#DP}3)f~QN;6!7mP3RD=33wWzHj86^x;utvfNbok0))xHB zG!>;bmXx-GD^~ILR#DT;s~kz3U7<>9DQh}Jjjtt=RfqR`wu%zo zi!cv96VAS37liBy9?-#kHh=tBLT;$qoYi}#I6T?q_(F=Lde3d-4ebi{u1FjTWTO{! zUe>{cKwys|Kv-NV)bALnSz4NoG;K% z%dnX^)vxU(aUas9^LFDi^nEMWSq;pnnF3ws!h>jfgO^_>Vt9G~XnE_z^gw!HG-k7! zb${H`I*oYO$P!aDY`_(FJwAP-csNv{4_b$;N_sPN3c|;+SYp+eY47hlQxIekExwr# zO>n;9-I|Qtk0=~BGbr6|{AB(Tw?R@sy|iRxi+ylMZ{JYu4I|K8w+64nq<)7mV;ZJz za9quQT)4lqmD77&zFPJDNag=(y~}nGcgr{UvJo+PnR|xCk4JsDT*~`{hk_{bJW@O= z$GN1upb7#nzsMlh3KJl&Gh(_N);&9=!s!8%8Yd^Sk;QkMFC4HQ@G?MPph-aE0sI~3iZ{H%F0{Lm0W z8(?Ahp*)|k-!bJz3uNFDUBh3Zwde~_hcQa~fSi%8YRgCB51vj<*8BA?f75GTj9;nL z5$}*29nz++0RU!6xft+}i(=~f-|XZqOBz0L>S*E7_g$EL;+Pk31mTug!DRyQ@qQTs zN@j~-)gK}DNt+0A_5;1)sn=u3v^=YjL8XFa0X=!MtA+U8F>qr+oo zJ9Np|llY!+iDHCZ-KxMuthIq15d{d^7xdjnLzGwVJJpd{k&14G=X_GA=Q0s^z1z|Q z?rLd+TtI%GY!jrOq|n0lDzA19lJ;quOncP8Rk$H1JKp7P8;$~v_1sQ~(XckoZ^%H- z_|Cz~2(Ck^I2r`y)O;)I>P9XSanZ(xqv?+NX{vv`!5Y}-)hHF@%pjw~GIgNya5MM& zDlF!|8-E#k@Z(zypU58^YN-Ikb@fc^Gt^+cj@jS?NNB}abQ}g}N6HI6zxDXmLapI_ zuECHz>c5k^w6_1Iq9Xr@-L81PqaeP`gIxYZOYNPD7L-i%FxhVv(R)05NJa?Miq$N7 zn#TZM-d(TQqpE&}Gsf4hso<|Z`Zm8gEB%LO;l>mv76Zl>fj0lAFelpJq*;R%^Dg&& zcB&V2b>z6&H4Cf#JUfXtZe|>G#xq9A1how&q@Cc%KI#%{45|x!7{yFYD{LPe+>==nG;hNpRPKqV>r0G~_UG;t;2H=@GKa7Mm+c zmif2C79~MQAe)MvSXFNjUbUq=JXoEk2NG^t>%)zHQ{yIPqfS==8hHV^rm&Z&Nbyxu zeT`z0)iZJBRe*8N6ht^Brs+wLS5=70I8V7;U^n#&h>SqOYU(W9Ko+k-zd2W10Q(wO ziOUW;Ieg$J^2|;yeL_mI6hfRa=@-07=-*crcVSBUicCC3dtK}1+^C2*4ou`coK)+? zMm$~>HuY6P(v#=#`6Kr`U2?AX*_$@#GU$&BlwPKBM;`Q76@je zLOdBk&K4ZxG6Y$M(8RX~{BL0(l5}#{TA!-vZniZ76+1M@SS|VAF`^|nh{szZh)$=_ z!8-JFJmfz+HEFpF^zDDKu%JFEgVr?_x7Gckz<8~~hZ z5ZF*T@kgFMN;z*1O3UTd6?UG+X}nbf{g*?KCWb+kzp~q{sZft|CA>2g%yu+GXyQJ&V*iE>T1?Gj#*k2 z@uoD@UHk`nZo)mPK!T{{%a{oL;9RObnzHz`>!1$`+30o)IC}Mx?#=~8mP`>|VS@HL zjA?#wlbd0Ca?WOaVI11~fz#8j+yg2h(#qi`zv=jAr;fCh<|XI=mynSSorIhUxpoqc z*fsw5^f}}eC(4~}U#$3Y5LRb9P*{J1*LS>?t~+Yxf|=Lm43e79cOE~3pNb!>0pK*X z`bB}5O={;h$V_jLrqSVZEr!SuZBnC6u-v{%d!m3jwhqpm#!@4VU@NHJEQQ^}fZ(#| ze{75u7uK!Zx;P>k-`KJ+nyXh=ZxLG)UOn`7xuB!b;o`BnCkBqoARV%Jn=9IEE9UuY zM9(-yCa^67AdOa>S_H?Udpdt6PnUZFyt97Cti7?7E#V2cW@LyNa(y_L7NyXx-?6!K zt%b|4z^@lBB+KU?#mw}=3O8KE)Wjew9@wyueAleIZRJ@2l<-HHJOO{0%jnX9BR{^_ zKtN9QdksU%W-%=sJ`1EMBXJzYdK|1VsuKsIx7yabz&Z;pZu)b_Vi}PPbs19dm9DE& ztQ`-c;na&WB+hv(7|rtwv(Q?x{Mq{+wLv9@(ouv{rfUPN9)c!HAUtvaoubfRH6z;l#upRPvP3sAuaO7s|1&QD{0u zYDR3KfX>}xs>^HPUx#AwWoGo7uyo`WrC&}r42^`M(NK=+-U)#JTzUNjYnxI$Uq1Z@v6QK%`Wu(E5qS0_H)Z0W zgsb~?Hgyu~!bAc&JS)Msd-EVGApr@tUPzJcEGn|Q1g9r?3 zdHfnWMggo@@2WdwLLvF*i6To?azrQa5MjJTA?_+P@D&R{BNS>o+mg|TDfFB>2R%Jr z>?|G?Sv$O!rze9{u{=->2#TN^+c*%4m913_Y)qje2%BvOX}JZ?YISaZ6il<$66{y- zqd)rO`WpfNR-(``)U%^As_=>IgYqs;p9~TAzvkPeR=}6k@u@qoWG61B=w4tza?R9_ z2mh^wNr;*&I0fNz=w#dC&1tLp%O+nfH{pb%_V-C6vVc|YjMv<27CwiGOLO{X4d8FW zih7E6fW^hQ@Ky}X=CW4C9mX4b`e|TeMJx%IKTVNlavH(ufG@UM9E22rYDhwapJ$3I z3bYeQk_1gFc~fTnW5dO9*DS7lpaneQmnhB13RR&Agb?65}1;1nq*~s@16@HUThcpQMgVKZ#;63I_1k6pJL4S}wnFeRo z_pD!m2_|IOG>AdEd6AX>qd}YP(O`}LxF^yUPDK|ue2aX;w+gH|hCEJ3%8;zp$Dqq&HknKRKk+wrfgqT4>Oco;Vo0rg3bu|-CSyR+XwGI8F0Qv zo-#*)hu)9$=~bALEEidxMXqZ~4TbZ%ZLDaygHM=3UY;ywIpum%@k**|RKzykxRhR`0N!;Tt{)I>&iq6PB*?JkFJ)WXw}n zL&<*=(oSW6g?CAX&d_&Y;Prkz;5gqc2mbo)5y?vNG#ej-arc2`fh}YTXQ*Xy^b#qR zFJK0PKw;jn0N&t)-VRe}-qjABv!q1G>A3%X^uXrV+4_skZE8EFzy#xwt zX4YT0N3Uh7zNDPFfbszyEIvwoDhyq8;V4v9ABN)vMee117cCxM5Uu%;I5C-(1O8M9 zRJDeA!g*$ZV1ngNuVFpxA1eXVVNY(P>}F9&GU_9qFJ<_WKWg0)(zZNEvJebU2Zp^$ zc)h-uK?B$NcaV?F^v0SLn3uA0gof=Xp)*wG*Zf2xDult*lD8tM&yousiqTI*J_DgQ zMM(z!XNYxU5x;%>^WFF`0o1P8bxW?CV2oP>US?c3nR>=1x)%#2$w2pre0$JzlY~GH z6vM~z-cb!zEl<@E1alK~kz%*(ene~4{}nIvfgLSV7Y*Vzly{iQyUiHt;$zKo;_CXK zblQ#UfZ7gEt0qE(vK14NofD1_t(sp^?(CH2s#AFL)hRQ#Kp93XIls#R34fUaw8aY^ zv#v7$p1L6hZ#2(E_R&hNw0gS})ufUD6`aqYR`+1}?o(jmZ&AQ{lphhwxIRQAFvuVh zhQ;Ht3SiAB5835WLm=+$@$jedxa?{iiJVstqq^V*J}E)DDQx{&?AfR|f^@P~cFmhp z1<9km2d>If$Z?P8`9#;oy;i#g=8C31G8KlMNthsO)!e=$fPCW16kXiEOoUgff(If@ zXQ0`1P3^o=27<;v^R{zE}LO8YQ_^`1!iFfTf0FL4f>Ysl(?BYkFy>iXU-4{zPyu@QWJYIik=^wY3ZmzLkwpaZjB8q zmM^>^=PZ)8H%9I}bx!7RZpStt*E9A%*5}5eIg5O4&fUi$wM3ygG#2I9#f{~Y4-p7B z7IdWCWJf5N{7j1jzUa-jr=atg;3bpxAZ6KqMRIJzOe-A_iF@UdBEa~h@P@R?(0@+vQ1B4rCgdNA3$l!g;PU}r#` zzx{Qv0{L5RP8jy2aEu`iNacZroP~*xvFHs=;9BiEF~k6VX@GXCy?pn&CPX$C2}0i5 z%sdwTI#+iiEPJ9X^IXeB2jIvv!;8%}xfX1GB?{ud4}fr;cSO-*s#*LuxKH@ukAKgG zisiiL287rJ&pF^lPQbAPnXE_v zuhL@$xAarxtCk}o#sJk@w)Cx;vVqnTzM>NP4}_(%>hF>4eI; zN~7bz^64qm|8pANU9$|&mfTm^$0AQ1{8v=IliVejWpGGLP)iGgkKHH7g4yvFUDv( zmXRe!5;-WYNUy+rhs1&m@c{Wnd!h$^5XSSTusaY_2Du`s`reee<^O2HZO5nC9+BH3 z8BB9QVU`!z@4SIu@o9QZkoKFd8)TF1GUYNvRWR^+VWL{v+DK4ltgY1$jA#|Ruy=|7 zeyNdMAr)q3e&sdn9{cY zL{2j(EH6pgoi_K}q~izun(oqLMh{H zfdVpgfWnyWj8@bZE`=d49zZ^u?@}ka*hA2-5l@K0cmr}+J^5;w{n4+@+VBIlb-49k z+wor)(H&IPc|&%;cagDwsmq#`S@bK?m%2iIWOX;XMU5Rf)dYoP0&BW(xUMJ^guuOB zBX9p+IXDR>>4*QZWd#})t@6+}@O+zn!Sn4>hrMqIUo@KFHuLlt*!*b-V7lea;+8}JM|ce&+)F6Y)d zGFtOgkM_+iArPtw^#0*RSk@al6)I{=<&P37y&?H8ze0o%2sr{quKA75N=#9Ru}L+Yjd!fg18X{`&q{%n4k2C=vQu2QfYo@@CGveK#7}u!@W*l!GQF*UEvKzyh!G z0>jjeA4^W?tftKC%5|(Gvc~2~aGq5pk}Gj%PbYK=(v~v)_g?wl;mNn6eKY($$>s+E zNyg5#Itdxn00HraKRyiI+|bfXt=aWVd~fVgRbPC5vElEY?O?N~FK|nh<+}mSmjf&g zgmlP6GDJp7Z`wcB_@H#UKN}QqK?qI?%qzF#OX;WSBZOZrU31z|E}ji{l#)0>t*01F zQ!)GDNx`M-D*qglxLcrG;E_%;4)XOEw~^?=`Xe!#zlA!Ed!Z0nLzioLNIV3WF zk=yBcVpA=jpeE8|o%N zCBv4B{cKdK_CQ7-m4U9{C+A+UjrP8Cbp=OWL|U5@$ZWPQBQ;o>=1_MVX;3RIDcc{kM9|?w&VV<>A$#lxBqkWl9~7E%)*|J!wc{|8o`N33aAh7 z4sB`%6~ZAG{gCnX^M`BHoYm)glbCP&AJ6+D5m**tf(@FZy8I4Ef}=neW|sD?JDt@` z0wZ<8+0MDV2I}ht4$ZA_XTXY7En6|G#QO^6c^E3x80@cFEG;aYC`cESxtLQ)z->9J z`v&u_)sc$$`=*^rz^JM0kM6`FppesAN__m02hxO~SH=*{F@ zV6QDacQ8hwuRoefLS-qvz=D;V4S8Nw@fvLU!xISqQVKQFnym-Eu$FyE{B^OQ42D}< zfSfO{Eug_ePp`$KV>?f)JmLZN#k8LV9tf1l!OA&?$&AfRt||SbYYAA0lQ5V}KhT=f zqMWBKs@i_R^0G%7%FB*9TJ9tc{(J2BM*n}G5a#jdYF+9-SbJFbyoiFqq z^(Zne!JSxI|DBH&4V?jewC+ojEm*On~p;|tu!G4bbKu4wS z^pC*ZuWZS`N8enaGXhT}QPr~R(a-cy>9OTrNh=;z z;9{g55y6(T`IUB-urC-y6)7R->3YO~x*Y8TO18zIw$7~RR5>Pm<<5BC(M<&h5(Q&X zBCw)FhUK;S6gZ)Liog^N5b5ciS%Qw0WT%*4?1hodfhJW0FoX~fgoovw&M#!J7Y`TZ zAdK}{k-A~dFNb96*Yw0^!FR7s*Wwf%QR0({v{Qy!$tK1Vlz3pJ0_uSeHT8%z1%8C7ME(eN6zetLlX1UsL}dbvm;Je+Zab zj;K!nxU}0_#TZlylb)Q$Gj9@G^~y+*-}P(y4R{fq2(~^uVH2P6YF&2k+mQFBa;WaM zGE^b-N_qVk8%n!JR*bCrDC|18A<7}~!&6EKnkyWKIsDjOFTM((;-JrpN;_{xrrDDY-u&C$KpsB&O~1WlU>|(F9KnErJ{y3hA(Eu}#39i0jZ3oonn-Bb=ZY2CKTrMc82W!x!;PxAIbM zx6%v#09nMHPUi>_$&kd{$0oYD2D*|6BNZO<5`xgq`X5rN;)6NaJSNgLQUXtv3u3(PaM?V;a+=xv{43ULuptQfqCv|c+Xc!8th)= z=4wITp^B|2jLLkrqi!i&CYM~QR4Wnkih9m-yH_9>wEvf+R?}GZ2sJHA`mHfEl+oTO zE4u}-%vAF%(G&gz4Z4~7(P>Kc1dH;!hY@zqK&pEJ*o2Qbt1T*tj%!&Orz;zF+z4%cI6>^NESEJ8I!1@I|BCVbOQH_;+XZQit_ zP<$1}(|S0ey52Wd5Fr7$Sorj3X4}@tsJ~eWw#F*W>%h3k`aCx-x9n7i8z^@;+)he8 zj9DC7_?_$grDT z^wHV<BkTW${)c0SpV82P1SY_WeALNr(VpL*8nVFL(-lSf< z&N}@ITO-4hR-@IgGD(Zp?1zfB3>;jex5oSw0Wp#K+?rMIssnixc)oZyQM{dFm`_FM zQY1H8`7g=@cT`Wcd(FR%H)g~Q=>wW88wP8!_;WvQIC|_;mPQfDck2b=&dskoo`V_Y zW!*p6;&rnvu57lK|E@P01Pl|l*fu?7G2GYOhyyEUXPS=))-k3MDoowY4*}@mr`USf z%04Ht6${S-&@F$TQ+fk2@}{cgh#9dh$~+4*LVwQx6)WAY%|2LzMjR6Fy&-MjKNHVw*w93g|HQ+GM5(h4d#UtS6H*T%>*P`Q~rq1blL}nDBuj z)=;>xqF8N`_`rxwmqRuQ0)kPb$)EuK@Jn5lR9o9!$ywz?m%q; z%r0GSYWTanGkWR?U=UscSzqa5ZKMLy*s;+J`w}$5So%S`BdO^NoQADRT{w%nMRsXi)V%KC=!KJC(RfbdUyby0oW4# ziVwSky#AaZDPTGEtCP|@b$>yc^JCtx(4~NRCy?z4OI@@hyFjSs@ z&@2?gQY<(Y7~#aJJ=aCwmPa&PTg}-g)|5rrE}KL=;2zUGHx61Te|_C5*|*YMbfe*5 zO~!gQqC(uHGN2F%JoDA?Pi|p*BKhkjOW|z0_{2vyRjD7QS;(&8m1H3U)mtwFkjYvs zJigDAp;3m6FDB&t-=7Te_d>4y#4)r;*iWWtXgU~GoXD*~8XiE%X>MxTZO7tw>#N1v zOS;P%f}>*V6&SL5x6CH#TOChq=ZOBWWZO;Sw_&t z%fzToxePgRc35MfIbkW81w+%Vn0;YgEMa$=ln-c1lV6E%x{bTTK|-+fJ@z;qau`y~ zPCpT+11?v^YBRWxBSM`{0TM*oq;wH|vGj!M4bdAw1;GNsaLagAQmMnufIWs6KPg+NqZf15Zdp5#Eu*5P?iypHC!gZR!2{IiVi9Ov4AOz z;Wz|ZLuf4K?*C`jFj{IS#qgn5UmouUh6hyvOr}oNr_sMStE{YWh$#y2-w6L+QvohU zKS;y?ArmM=M^!^uj|=cVOFDIFzh*b1YG%Y-JIhh5}Fur z448tj6*c5BP4j5PQzJoYDz`8Q>Cfpp-~R+X4>dnyxEYm1Tp~pvh{)5pP<#-oa#%WFtEIBk-4l!-hT3>Jia{$9&shR1lAe+UA}ovY z#rSiq_4T4nl!R)i4`xN2|Al|9#i0i3bm{if#%XD>JmV?ThY ziCXR^v|phPfig+cViw4?tLA}Dt{3!eM#jOHuBJuI;{-R1^b?VcS9Gf%^ADtZ4Rno> ztdf3^XE}hX;N?0X6}=oJH=)gSNP(>Al3{t`o#djGz1_~dv;QcK+yI6_8&uf&pAa=2 z1vq(kUj$B7Jv7@IH}&UfF54F8=UpMfUNzx*>9La& zo4@Q2-vK!prD)l%bT{H(k$DOG-qi~2xf%36?K!6L8x2<28r4ylbx`=2kHWu={VbZ? z6$}C!nr;-|zd-hh`s0^a_7NB8ZER+HHl-khV&POAQL%hityGKFF7^+o%YLKUIayEB zCe-|@FU{Y&D~DgdER_4o0DCq`t>(yO{0JX8={2(+c&T0h8X?eM(A3H?O%x zJ%H{s`A|Z3MGrrK2Y#o-Y*ufrsCXm*RqUai*j{slD1=FE!28Py-Uw>bB^kkUdNZ8x zYk1gj(wh$ zQg9WG*#Ql}!lkwUs6r%rVIH*d^0eh>j8HbZvHDgU_JAksf*;MtV6+F%e56KxsX6z_ z%I`&?!UuC=^r|xQV121_cjk_My6Sody|l??ht&X%ZS6}tg!v)!Y;NlK#56r6Mjq^C z5X;S&$Fg?kNDwkQ76B?iylS-Wu{T~SbI+4+*ab4z(Geeqkw`Di=jufRo|oOu*)*IZ zAsO}`31 z;WsNrFdT+mgXqfeAh;9FfMK=Tu9w7ftL5O!CdY+qS*Qk~mK`!k*ee61+(T0NQ112| zLTd-$yeko_yDRtX!SAm%JqHfRwjqEh zkF?4Z>0N_RfgwJ&`7u4YtaNeY2*R+_*Y$>qp`iny1+ev@1s{n@SR5l1&@Z)hX|!b| zDzh2{eNK5R;7UMqL!EKyk;j#A1`i6k#EKgPj@%y?R)n?+_lVFKivT!}8@O z5lNUNs>227a7kO*hOpjZih133OMUn@X&u)4uF7}>9~@-p?A~`}NEmyhEGhRk?yZcj zq3C6VK@2gqbQNyXnXhRuS=NH$mF*`|i7}piix$yUf$hwTCNu;uAp_FTwBaetl|c-s`eNFIT!wcPmzx2bqn$I7--%h?K- z_|T~%;d|B~6KB^2=uaPymI^F`9)>?FE_NYXp;Rff8%du%09bz~wv1*=Yy7ulyd&sU zJ#nWxO!JF2ciPnwmYcCz0$2e#qDg|6BP>VXdyx^vtIz+18^6qRldbZ$S#Y|``;>y8 zOd1nmZZ1n`aBEhZ^iUSrdc$WR%raJ6K19M)(E~XK z)e;lON&g98N`^Kb3LEC|of`eD@@3bcE*JXt@b^A)>V`?Fx|~&;s6j02`9Q{C`2+H7 zJ!{AWz)mrYeDR-$F;}MRNu*fBPdHp1=E`!F#~k{T8kDSM>bu0k=9|J$o)tap42}7x zauRr0HG5)b^*`-Ldl7jbcP(_dMbHWH_1`tC??z57RRN6Xf_=xkZ?avjc^EL~5+Rmt z6<9T-&hkV5;1A8v4NSEA3)Y63Q(?$~lZ-$7<#nI=nk0Fb0dF3#8s_f5dibq`n4{DA z934o)OTm7;tkuKjSE;pn1_+WiW8q=V)`RBK^W_mh?&EEIVXdsyuq5N1Hkyjmb~}F= zoQ#WYh!-GXfGuM)nfJ{Y2YdFuVtvaJ;L{Z>inRY7HUx|Kxm~hrDH3kknfR4|t8R8f zx134?cewQNQ%0H_F`-vvvNb0_%mnBQ=PSAir>Jy znsk9{q}Cd{i~r`qYo99R|Gk6<58U|6{7CmWC`?u8?`BXW$#uAvS4q4X**i*HyB*eyXLG#V410Cp2uFQOM z6Cv%?W&DC=hS)OeksL*b<>2q!`S$F;a+Asw6 z@-6bzlrluppWLs%7S+*oVqj12g!83M)AyIC*!;iReorMvopXTLBrO;nU@+EZilg=k z<uq==^Wfv6SUigtqAtpAtQ#l_051f= zcM|aTy3&}~UPl)lR2;4l$KE-+iTHU4Qpbr|+8h9S7GEsb4-B$~_#t9cQv0-T7DOcm z)ald~FFH`a^j&_{NT2TQzhgm?m3S+z@kIusNu}u+6@oIz$Aqdta8=2~O_Ueyl>q;G*sWa7SuAIYH1@l$udR9Q^gmGX z46EXZgrwP-cSvHHUNbv0G=-cogwE&S2RbbHMf@d^v`c`7(XRTL-9EG1FFp61DwCla^QW@>f%+{F{<+nUm(f;9H30jyMWjP ziWt8gWg9jb&fVe12mrLSPJVa?_y4*@)$^HeeF`5X@(-MJT2Wpij zQDSE^rdsWJVDH`*@jw{-AB1aD0Tk4jEG*9vab7J=jL;+%iu?y^oTGIoGzh4{;Z?@D z786ZU9pKHkIw7=}u|oXfnu(u5E5WNDO$V_$TR3ir$eJ^PMNvg42Xyxk+N9#%>L1o;rrFE=^6HCD22(3!ncOtpfo zgcm;ZD<9p?9%l_wt44y)9qX>(7B%yI%AcWRI6ozuz3XJZ=SNqID_T=-G z)^p}_6f$1sE#~Y*|0ETuW5>nzwip+>uY$U5RZD{$9hFKWD`o7Z$Xhs41qP?04u?I7 z4_qYQUgK*J1T3}j09E^>3l~BSA3yRKH1U5Nen-FQI+Sy41`F+5y8UUiL?1A-OXM8k zTQ+eD!HjKJ_#Fa!yFPnO7+Ao2O!lO_GAdp$(Xsk^VL~>wtQ@*=Nr8nH06I9z(RA`( za-e*C++@W32R!(MNz3ZmnK&JmQ!nv2WH3*d$b_{DU!^|bNN$q;8kV=tbwwj|*)m6c z(q+HX{($V&+j3&`q13{NoRGaWzr!Gf&VTE;&W}bv^lKWLFL42RH~51>f9Jl0DV_Vx zqAiGL8)1mo{0*A`{~5vWrZvJEC!N*Sd*uz$wf9e4bJUuPshvS@UiXJzl9<3{m5Y6O zFel)H$$#y)kl(6Eqoz{;crcm@Q^x+YGWTq2N!T9BA8`NZH98a(L{+yHLfh1!pdhh* z@;ch~vYrKfvlXopf#|!wbUlBzv2Bz2k@fo+(RwOg7-JY^p}*mHV8)O0L&K^hl8i7 zNoTjucy-*NBcWKkDNYIEyRjWDq**98Hp9+0)=SNUhZ78ExpOJP^R2WGVx|Q0e}yoi z8#W}%K5COl8qi^}wEYzIN=BtGFnpidO?JKvSs5$!c~l6t>?-?ta>(Vr1ydqAwy452{y^Ad*97*iDq>cci*5H)8YUZiPl2YY@k~@)!G7SS! zwaJv`_f9WXahi`Flvnd6!4v_=DCL7L<5ft0X|hK^c)YYvV_Av_>C~8bEna=ahF_pw z-s2X4{zv?Tm?ZW}(y#DrPp`=5M1w4I3=!~`h4x{Q=$Ywht1?LudaV>|P?gPE#xS9> zXE*#jkb4mTG;iQqWHy3i_1%5UA_1eEinMzBbtez}is(d*MP=6!*%PrU?~BexT>LlM zZfNS_uvxf7>p!-(^=`Q+a<1t#Y+qATYN6uc;P)b1^VQd8;(riPb8(_QyuO$!A&`7G zDC5`OVQrZzZXTwZbAae%DmDF$Oh(Kz5z`e?Cg24p7yG3^8`?J*rM}(B;)Tyyogt;k z=P%u?&zl90>7nwxO8CIdhK6T*~-Wl zu##(DJ2QusVkL)L2S8i6?>fB9D2%kk6oKKJGQ!Z?Ge*szbQN;zgt+iHT46UHjAny@Cs2Jl}c6t^T zR?SnM)16q7W>E?6sKx>eb7xJ?wO}2UN`0^!O;#2 zDS9@C%)q8GLq!ZzE9j;S;j%baH-ezAT_ff-9jJ*%v`bKafzpeq+k67lq*QrvEL;?6VW$rP|`&zk2 zl+|qk9-4_+&;Z>c-slk9I;!6ktK~Mb4x+UMpV0O)0ugaSZTfhb(3hW?o`tcA+y}#m z5{D59eh;$;`xuD(FPqK^UivM!7Ape44O7)7$)$7TZ|E6VL2Mg8@%@y zLVBKecwyzg+IyUz0EJ888y0-)eWP9PQfx~$Ryz!7S?!F2!lSH%kB-%d(O0LKyeCP$ zlhdXYgbSXR$mm-dVW3M{+H4>qI5PX8b;?Jx2nJ)D1FN?js#O~JHvjkj8B^E%e0jf5 zpy4!}<)#8m@wUo6K*)R?Za~jw>wb$Pv7|CDT)#I&*uo;Y=WwGta4qzS;mwd8^zv_M zl9{05E@SmIn^e6iz_fGPf$6m%q984@sUwJGfvml(h5)_Exy;yZH93$d?BM7X7jg)h zELNXH6?rbt#!^T^(~`0sHTc0M&OH4a?<^G;C87{us5cciKLAz^OJidZ$h_gg`dE52 zm71lmy(OHqr+>=y@yY;ki)yhkta0=NBjc70TbM!rP5S0()joFSX>phlG~($_r&1KB z3;0l<*@TroIbs}LGZLSpYQk?vE1zylCG(!|&R!?!CTWgDGXBS$O57D}?oe-bv2!74 z(Lqgf8_e^I6=?`IO+Q=Ul5*@`MM^1>0R;jnF*71r)ATDue@A0zP3dlt?5Zrm3K^`5`b2 z32AQ6XPi&|{J_8e^wnN}>ue~0U((ya|LpnzdUx{epZqPV`;L*j>b5Q^WG|o#M-huq zFaPe7U+tvFxs;yk^ab;d#{Aa%uWAfE{AYsyYV*VWH~s(fK1cr5`?u^Lu#e;)$A7?o zXYxVYL#zM3|H1xq*gMxBqJPi+*X%VlKkYRE|FP*$hxge!B|qBp3H8^opYxyaeRRDn zLx&rg;g`BlxOqPez0!rlr#jQg>2gn(%Gv;^IVb6;Ug=5V5PFWuKp$ZcB&#sy_pmb1 zz1c`yo-+qtf z9iotp2csc>N`Ng92c|j0qeq7zaA(6Reja5hLHh6Dr!QX^W1rijO)vxkv4RKlI-8)lU0pHRQvU&GBss zVFKwnhY+}gJra8CG0q{Y^9s4>wTs^v*m;au5$<>8`Cc-dLpxK+%sMs-9B^#wAAc(pFhVAQc-yAt%V^jYz4KslSjsXtoqE$%8)-|hMk zqhuY_yP#kZgE3F!RD+NopK*8Jb@{Y{1`OUMj`G{t61mr9Cgu?}<5_$V zgIBm&^9(VfZkz{ifFUp78t(899Q)P@XRTax;&intGW zr+mP-A6PY|r{$b)33W(~3G#I)dQK5^IxlZu1@hpj_$e^}nKckw$)0`n6$_r->q7UC zn^?Dvf65eHQz&KnvSJG}7x{BHsBZGmPS(yk$Kx^2<_IxBa*sNB#lm9=jer7+N-XY!!<8bAMB$zl&b!?6|f2w8V@bzlD9 zHRni-Jk*4I3N~{S!LUqEulURBj$^OqqY{(X(egi=M3>V4Pgls2$Gm_4_@1!a|No|9 z^m!-_rYRHxa6eSX*~AGN_tdS9{C+UUFbywHfpoR=M6LJKB8^&ob=ZeM6{Ghvx40)s zr}<=;wSV#gkw3=xR_0KiCsqf^!_+Q`?i!9Sh$tqn;WT03j-sf2Ix?F!|LYfvQh(@e zoPm^Rh^B$z(1^_>#wKI%4#a)Rw_>!NhJlQ5dC+~5DSzFrk)QwEe26ol|Ktgcp7Zau zf)+w|@BF4NN(rC;{POTERsXmDpJ@Jw|Ij#Yc|@)M|M%qc_Ckn1I2%INfBtM`_Qm_t z>9t&TOGUA7rs=1DRks+>0J^CywpO2LVrhkO)K`_mK~OCwgv10FmHwj$RH>Kc0cxcu z%q$`fB&5QSE%*Iln_@f?PBJ?29OX+SseBxPv%7IlM5+d5<_Q;H$PW;z|9YBeUX08% zT2vhg2!66|bM^-}y>D9U-|jO(@9bzG^v~?rxBse!sjhh>4!{kG6wG6Mm}6(hzwlQM zyqGs$?qgDPj`lDA>~mVB|Nh54As*9!6Wel>**b0lj2zCnLln#S?Q`)^-|{G#7oyQL z{SjmDAJ+;7y+{bypEW)db0m${(zD5b%PIU~dHu@X<#Q_mO4@*{v;qP+exDq?PHvb1h&(NrWj|+PjmB_1WRmir6*IsDcXz9j*6bjG^;A!U*nglM z;LZeTq}O(sVqJol17r+lh#{++eI`j{u9jI;QZ=W-OoZUlq0Kjs_EM~mSUo+H|y){G1 zOIiv4myl$3(?M(4+;S=zlT&%aKm`MHN76N@f&KPbKEhLFToL}t6~nO^8<%sh3kn^L zkT@EZ8r=di0v{Wo+Q!4p*yJr&*;S(t4s?@i%xMZde_d$Oe%wl0!V8N&wx_ynG-??X zA5d$p4rtIa`*fF>W($PzYcygrWV{kz!JoS`v^d`FnHPJX5C}sDRNK2g*lw?wqF6u- z=fL|Wco)nfCS2&zZq#;sd(Kaev!zK;ej*sw!MI}ofv0A_Zyi_k2RFibGp{S*g3xOg z^&#e~Bz}4qr#Sph-GUDAj}y048ZCB&O6x^JFJF-^?jjWi@x$l+@QKSkY2aJAg68+m z4*v$SaR`7M8Rg}G*PmQS>fUO;MP1(UsnT8nca*IYLiv4~pAGgYT4{gjF~*#EHo_$k z?@wRBqa|O$iRv?PBioQN7p!?5k%p7&>CP=O|dZIOuBfiqM!E&H5N1p8_yLaQTRmUk$uwUO-bfW*W z4TlnM5h9!JmMZtPhl|_;lfZy+yvO^&oS9fpUW;&C=6N<$+?C8DH zYLjF2(d&*TJh=&{0Ie$rS!LxNI0uyR~79j57TKd7mEkrpu}>SS@TATe5rI zYxc6WEr2W=@80%8GxPpb)R%njkjA=Tbg|m(YJv%w2B@+;R@U|ex87y+^{8SrVuTl0 zD^*Wk21Fx3p%QIEe!k-kO0vax{Z1w!J%V4gKL zvA7VpO@G?@)oFil;BEvs-_!soPz510s?Y6_7SsgPf)FDFU>_%><#gHFD|+6muhn@X zIjqcxX%W-d&1%^^v7XpWq{McquR6d0{?MA@WAwq(mrb0Vnk<$1&r0369o0If1LAX{ z?hYxAl%7EC4*!|0D4;14#TBR8$q`>4Ia3Dzbs88cX#+DE*&iQaR7C+ND>FHzI70-u z$`QqB+_qM0+_{a5H^(GWoGM`i&e~(_;wv`N2IQQ^=nm(JNT$CTqLBt^597%+=Zqrd1%>kdmY&;)tk;&eGXN@m5(pI&t?GE zZCTwEYZ*JQdcnufqe?0~LqYK!t+g5Ys_xQc(jj;lfy+o>cJ9PaFV*5gb`J@ocz7K9 zcu$2n^^=hY9aO!Xrp9ToxD7K{MzXa ztKZYjNqN@1RryG4rYmL+@8+y?{2H>|!ZAi?8^NYg-Ag|%)VT3*oO2iE#(&~6`ncvh z=;_rXh5}@*W?zwVP)q8ILNesZX96_uU)z2TEO;~G**P?a4VHrQZXQd;78esRbc!*? zB4X*)^#jju!TE;O=H*o}2mk%Azcn?K`tDgIE)Ye%*K}H_!6|d%0g(v#FI58EnD|PG zE5gZe-X9*ECoh1Oz}!>EbjJxpa0j|AsyND}6qX&KAO3F7zUcK)W|2=#zCS+=Vt{v} zlSoMZxp>(q*}#M=cihHqeme=G_!)_e10N|DlQxdixNs}s-;s`ucpOlIJ0 zR6VuGht_!4HuWKn=&^X}5R z)h)GheTh<7?*c#tmsGV*3>YA-9UdEQnvYOT2|EURhC$72AL8XBjbxWEC;FP85g_*Kwq?l)jjPLwqBq)d>%yrSB>V9>bxt* zPk@nqv=ou5!bv(qm#-!b73be_u^Jm|KVJrDwiI8fMWJ+9cWku|&@xWkG+i9f^FzFi zf{0!=5SApqq$TEiY7cLgO-Me?YI#-eSSmp@ou6w%o7zg5hT z(uuE$K5QdKsn=_WnE>KWZB#C7fg&X)P{ZZzZTowm{An(eQpSo(OQ6QJR9V~X@H!eq znR#`8;UZI!T`?ai?$|B%RCDNU>n%STEr&!DTCpX;%eUK)4O)0 z87f1vHy5+yUZ8n1L6+N%a*Kf;#dzJml*NtenI4GqHgd7RrpVc56RZ|jHIg2je{Afk z1hkwCe_Ut5fSVVv*#)cv6r!79 zKn@Cz)eLMx+?{;CYe0HVsPR9vqDKbj?QQY%@zW1Hl6{kac7XIU0wcw1TXl7cVaw;H z{VsO0Jf1@nB@7E$E0%tY1$5(Z*;kLGFjhP=$C9sjs`FMOEjmn~xhg?9+Iq_q$hR0e zr0yW5IN}~^nkZI1dDFMwp>27mG=-YT*XhFSHjaja`Oier-1aW=$#4gCa>Gk1$*jQ7 ztPatF#O|gk##vKC5pUiJ=fe@x#E=zL-8umU5JI*kP1a?+HR^Nw*Ss=;NaHjw&c+r} zsHn$o4{JsEyx8->s)lj2(OVTOzi!@OISM(1=JmO(~8=q24bV!QNz@Vi=`n9fv1-^8;t zz0aFi!nKfHQ~{g1esS8Eea zYX=~POe_~c|GU)k#8@}R@%7Mrk}NSHW!gACv2WfQ{ zJ`+fMkdxeen?Nb^oGHR0@{20Yb-{^}cS|F_usU`3XXS8OeNZ8l**$h&jmOBvt`7D? z(baz6t1*Rgtq~OH0+th(M2j_YIia7iC*+nUuH*?`b*#*D(b6@G9ad9JPsEe1Vn4?{ zZcf;y=;V>k$BTtLsa?|LKqxPgQ*>!?Y>-FLELLiguj2q?fK|KAL_;! zJ3GwUlW!qVGfdDBADq|_KJG7}kXWz|Y0^Ql0%rNsiVaY`SPTk3QBa;@%&Cb199vnv z!oe-i-?zQoN=UCd%;al;QeV9vAAr=6U_ob{EjxG~{3SoWDE)VW8~&1rk(Q{q8%E3V zL+&&1%NNgo7{idug1)@pmW^_NsZhCy8M?`TeN#bh{wJ`+yzq)C3<$*00j1w$TKUW% zPd4DdM4d37bxsQmt~W2cIx*#<^ddZ*v1oKi^nAJd`UN+hIZ?VJX*CIRJv-qGzs>qa z`W1o>a4&vq_v7E(AWSX?n0Wkwjwi-PxH{f~3D_O#cGMzzb!9b(GWVWYY07T2X1C zGqLr?N8ViJG=`)^`SXP#V76iUcpxJ6bA=K4h#$d05LL_o6d@IC7?s~W&g6B#_deXT z_DJZlTUxrem^ei1{p^J+frPtkOU=U%WEe!L_QHy70><^p8qp{3HHG)V8;P2DSWE$N zBBPzy2OXD_CVe%y0SkAuIRDXY)QvE4Nf=&Y_Bp1(5!4FTyME#Z>rVrY7mK05b0q_Z-W9q!vqB$^HmG!W=ysj=1(jBTdOS$ub^rFwm-nC_<_W8F$g4|~7W zinP;(8o60J-+bPQYH7&8IMn_|;oZ6fsSriSz_ATdsu#e|Ceg%kBV(s&UQcbzB1>9YFg1qp?RW zTBzX^zhEZDjy9|6FT$}SBA4w*qplCXhWq#DumbucVGSQd8@ItCa5R}1g``PqXW!~a zLqfVQ(X2F-?`F{jXx4DdTR+r<{3 z)mWo&T`muH2uY^;o6^ox)Jzs_==5FACq|_;O+JI+$w>V%8@i*0QWnK7a-TJLo9}v%a@6ED6d@^AM2%(fF4K?J#J54~@Pl0uS@H5B(#nRzq zJB*=c$2jN4qS0pExIA!*-iB71W5Ty{lx3bY(-^MuWK#^ou+ERk zA>9`-yVRZWBR1aqWhEKZY{X`@AE5}L6-i;y^~8)d-7IvBW_rdbB#?nli+@O}Iv)kD zPYO`Re4#V$cRf}o(SzxDb4LV@vSeb~2Ljcai{3uBb@jT{w3s6FSWsz+X+;wUj~$L6 zu2244`yk_i*&kd|i>VKoqdn$O?SNAjmtEaXrzA?FolS=6lIlSG0YtU(%~sgLTn*2SwSLr zX9lnwjt^oOFyxWgbk7#04#hGdi^4 zKzU#X@5E)sONs&JpMX1WTeCt=ze^R_>M=pYw?LO0xO8L^5q&o`M?cU;6Ep0&s4y|B z1QYNBtL=3rWB@A4+p1>wCOMAair~y0I3rwxp}(~zpZ&GEqgOtNTEbi1tI>`@%@l}v z7?~ME9;>yebqLK``41Ir-Vn zncH8d4fAPym1gZioaWg|wcue%x4VBfknsRJ8w#8_b0ZvjsgM~Nv@#3`>f?0ob_pkX z$8Xfy`cU3+n+4kFMaSs`@ppnc@-nk-NeKpWup{JJg1gz?ua#%HA57tvsy+Q7T2 zV_%_5RdbwwiHeladi;}|Pqa`YKp>L-ciT&M8=UBIahebUu^uaxOByw&%-17q-FnChMxFX|I-*Wm!K#+tf& zl~o=uRo$v#(9_zN*v_0V&`aLIm`>}Dz;|cR3Qbd;Kqoja%q4}%+AO~l2c9L=A=)EH z3r;c#IvJI0ibG|>++$PklrA2Y72A)!B$;J>X`45&#=Nqid;j3QB9F zO#|&@i}rI?i#iY7ShnQ()?f}a9@_%UKPqIc0-*Cgk|u2LYtKjh5KU(o09%QDOTnKO zCsy~-{PB#^Y(q0~p_=(}t)Ib3sp!w7D7socAtnQQYJnz*t97b4*%J-7Mqg_sW*IB&u27mUn>S zSXs8cpKl=2nX;kBtE<=P6C-lG5?&|~?*-ZlQfoP8^VvWW_?uJVUK*PX^{hT?6=%j2 zy3(el)>eF->*}g?G+8+@#9N~CI$;^|Hjcug+c@o9yo_i~&MvNc*i26*u%Xcq2hRGv zRm{}(r2c2d_1&c24P+mE*D6Y81)VXesN7sQnCNw61lbRyOh5OfL}jlW+he>kt;ADK zK`I|YI`$epht_vR878?-;>{Jc;ME8;F^k_0=?WjNvUL&6{~HJ~aqLgR2~Lhl_)v;+Enk z(mlTqM^JRl#(+ROTsYj@I$ddLVd1`ekduYnPD$GhIShh(jbfA=SY>~mY=Ev(QEXfoa^bez!L<6jffi_hx=n-2)_m&sq36UD5IYBjgG zsXaEX7N9p&4)5!KE^*!Szi7eBP)lSO@}-+?l|S@mpnaWtt6T1OlQ*U;>d6V1vqya9e%u!U6;K3^cq;1-dR??gA zBh!Kul8Hl;ums*KIgHRlRv!c%ph6YuA6dVYTOT||s1E<2iy5GFWPn-^{V+1s9nI=y zqC5dSvA%ivEV0O1bLVuVf3vJI28huhCcj}eXm8;@EC-zWVK7vcc#)hxF{w-o5v~a$n>g#B(3IXS*3Ze-QsfLuz z%yFZl3;6bJE^`?(pl~rZ?p5fhP5uA+blAYTK~g-__*(+o#<^`h z^>d)BJQbQCyuZ7nYO`ZYjOR*|aa=qytNjpM0C)UEKcDWVTEy@hD#zn~!-*IhsySN% z6hg0eI1dz(7oqN_rDaGXN? zk?$8uKYCLmmGO0V$k|m~hF}oD;z;m0Bx`L%Ct)PZ5_NkT-+L8(^D8oOM4csHbSFP7(gmjc>o-M?je77yUB;IiTB0P93(*2_Z5t-Sr1+n4{zu;+=B(5QW zz#mVL3x{`knZZHljd7A2WTyP@28>!WH+OCiRIG<$pkS9A8d|(g3eyBD`Z0nz_RdQ# zBuE7R3A2r!qRt3zjx*)I;@xj!bXpyKavKb>Orv*q8R?v9s;I1bjxHCwa!YiyWNC7$@dMR5CuQZym8_Sa6&zX;u2E4P5|bkG z+3lIE$z1+^%pOH%bC?6lUI5?bf=6cbzfKwgZEV2rr)DuqO=+oBqQmRe^G+Nw8vY8h zlXn^tG}@%bos5a4hTlOVc=oPzwLe9a&_QW1E4NH&vqnz}=n5qcoDDkYR;ua$8*W%Q z;Aa8W+_Wv`sL!5Zf2h`M0h8R#UgVE^POyK;u~Ri-Yc2k@4a3D#Xm!5m^u;01C;LdX_Dy5>TRb8+jJaB;ggA1D(x6oGv|N#U!Ku z;#@)acHG%%Y02{y%Ll}Jm?mp%GC@&wT5;>Ow3tHI4dKHRSi>jshtg#7O)k{ejlx!;&-ah9%Ed*FC9yr{2cLL zuMz_N|HpRqk|A2L$PuBEJ{Qef8?9#z*J8BE7`y8vof zpp5!Am?7xFJYq$RkA2+5lZ*iN1}VIchWxy%0?=MIt5~@#eU@CCA^)s`}QHQ z9#z1lv+V~y?Va=g55g5K63Rgj)2fi{RZG}}67*D=s@Yo%<~&t8LLaj-(F6gfkM2m0^!bw}#hp^rh3#og} zm4TZLOjMCV#jPv)i`p0SPsY+RCLAH;!k@U}a0DPS9Sm8B>B+Y-G8 z#wFg8`bH18Zq{=Ag;fi1UJe!jS6c+MGO_a->QKWsEy2y|=?6(9I4mA5vR5ikGnys) zPy~VwjMk4djgT_N!#9+m!Rl7m9~db zSn&>!W!gh4RD7*E)QIKH_vb~IvL@EkT0nmTckOLmDdGe75_=6}4j&2k!LG#uV}NH12fegZ_5Q%~{NYYs8j~ zg9BM+V7iw$gr$bN2AXE3(EhNWVXQGS(>L~QS1YXLZhL~I3`g!J7<;$g01@op7h_j5 zv4|ZL4sA5c*r8@)543=Ex({)z+Y{>S8pW)MyjRvNN;8Dwu5vE@ERu*vX6Ir8lV9S( zvqO>(CU7vded zJV?*UVVY0#)d_R0tKT)j(@yXws0M(?AYbYE`uDb1QYi)Mf3)VaOtB%lX?!cdo=Tpw zmGv8XfY)E;FjHkq*bajYM*!WvW^on~yFCbNycjIUaD!DlWMY_f>sGyqiyi=x|3a2K zP#WQw#H!i?V`DuL%ODMzqfA8dX+zTymiArvnHL6gjQ{gnSINEQ`f>=`mc6&Sb8Fs5 zLqq5g3iR!s(#)6g)$eyNYy+GYXI=O>_=)Zd#PR$;1VBUt&fRJ8$A`9!Y*6Y}zPb2x zlRoL-kxYJV*TmDFm@lpZRT^6g9SF{*p{d6s3&dJh*3FM7kt%=Mhgowj8(qWPsX8n{ z;C|Mej%CWXBxo0-+`FOmD5q^54PJiZ#?z|}zw3LYKQd(#nEEKbfK!~(Wp@%_%e;v~$16d)sKzm5|mx2vY)WwF5o|59IbZs4nfiknA{Xa1TnJy-aJfZfZ7gLs9H{ zsbM;W&pP<9Ju8mmd9`d}!F$xZCmRV+AY!Rc*iz3qKS=cI!RG;6G6^OvFs6$IxXX8g zWz3>hmg9!FsT2N2oDr`THnjFi`={ z!qQK(>)?@|xuODg;cG)%9LJ$&na`#gXfZY#zg&c;Z)#&GY+(R6figF_zh49%6M8yA zW4sWF%fy(gi>EwalDe?yKI4Yz12gu4xTz5U8M|z`Tbtf3qHo|t?{A+R$|}UbK)uz7 zwd=5_fUl74UelM{+cR$-CYxzIJ9)DXZb8+tQbJT5jiLOzkPxB)Zn041o}^?~)`Sl9 z2&y0j-5!@?r^+zHvViWPZAJ^d!H;NwVaBN^H}u^x)* zvujiH=N$anIKINbgvXr7gX+OmKoye`mfe+4>S#*nf?`b?ko&b2KPb@LYRnUc*KEdz z`pH`9DTgf4jGHY8`?8_X$H@<;p7K?R`*B#TuWC&>#lzidzU6JGUg_7GimPchwH?Y#K{@K4 z^&|xYNJEpk7cX9LA~zA(wADqSy|Zk4d^SXt!0nHM3Fq?3_Z?W?+KS8~k}l-;bPd7f zPFOYmPv&zrJz^HhpIQ7*b8H#|8j(nP+y%n3&hD*U31J{)!24B}SlgwZJ4v}`*I9|J zKqI^V=vs5Vq81lXVW*e9Kaf7>gBYxXTIGQeA0J?=-<=xx314c|Dufc1W$Zs2dB?fok!-w)EIspoLbp<>Kbsy_}*Asoz)ev*dPb1U} zzu|VOoZkdi=H|Mnuh^E_aYoJ4f2Z+!2Nkx+@;Q?d%E#Z%d*-=FC%sjcE|KqfxrsJl zzYe14uCW%9o!WbG*Y7qTbv*ED1}a&&(a8N;S9<+sp;;a4i{SPKvXe%4sC3X^(N;L_ z1r}+5i9m literal 0 HcmV?d00001 diff --git a/neode-ui/public/assets/img/router-mockups/nanopi-r5s.webp b/neode-ui/public/assets/img/router-mockups/nanopi-r5s.webp new file mode 100644 index 0000000000000000000000000000000000000000..f747c25840e8471555ff0a9a88d8fa272d5eca7b GIT binary patch literal 30134 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 { .device-model__caption { position: absolute; inset: auto 0 0; display: flex; justify-content: center; align-items: center; gap: 14px; color: rgba(255,255,255,.4); font-size: 11px; } .device-model__caption button { padding: 4px 9px; color: rgba(255,255,255,.65); border: 1px solid rgba(255,255,255,.12); border-radius: 20px; background: transparent; cursor: pointer; } .device-model__counter { color: rgba(255,255,255,.3); font-variant-numeric: tabular-nums; } -.device-model--viewport { height: 330px; } +.device-model--viewport { height: 290px; } @media (min-width: 1024px) { .device-model--viewport { height: var(--device-height); min-height: 260px; } } diff --git a/neode-ui/src/components/EasyHome.vue b/neode-ui/src/components/EasyHome.vue index 3fad4a04..739c3cb4 100644 --- a/neode-ui/src/components/EasyHome.vue +++ b/neode-ui/src/components/EasyHome.vue @@ -94,6 +94,7 @@ function goalIcon(icon: string): string { lightning: '⚡', identity: '🔑', backup: '💾', + phone: '📱', } return icons[icon] || '📦' } diff --git a/neode-ui/src/components/HardwareMarketplace.vue b/neode-ui/src/components/HardwareMarketplace.vue new file mode 100644 index 00000000..78365ac7 --- /dev/null +++ b/neode-ui/src/components/HardwareMarketplace.vue @@ -0,0 +1,233 @@ + + + + + diff --git a/neode-ui/src/components/RouterMarketplace.vue b/neode-ui/src/components/RouterMarketplace.vue deleted file mode 100644 index 495a92ba..00000000 --- a/neode-ui/src/components/RouterMarketplace.vue +++ /dev/null @@ -1,214 +0,0 @@ - - - - - diff --git a/neode-ui/src/data/goals.ts b/neode-ui/src/data/goals.ts index 77ece715..5f87698f 100644 --- a/neode-ui/src/data/goals.ts +++ b/neode-ui/src/data/goals.ts @@ -67,6 +67,13 @@ export const GOALS: GoalDefinition[] = [ route: '/dashboard/setup/external-access', estimatedTime: 'Guided setup', difficulty: 'beginner', steps: [{ id: 'external-access', title: 'Configure access', description: 'Choose and verify each connection.', action: 'configure', isAutomatic: false }], }, + { + id: 'non-surveillance-phone', title: 'Get a non surveillance phone', + subtitle: 'Choose an unlockable Pixel and take control with GrapheneOS', + icon: 'phone', category: 'identity', requiredApps: [], + route: '/dashboard/setup/non-surveillance-phone', estimatedTime: 'Browse phones', difficulty: 'beginner', + steps: [{ id: 'choose-private-phone', title: 'Choose a compatible Pixel', description: 'Check that the bootloader can be unlocked, then install GrapheneOS and lock it again for verified boot.', action: 'info', isAutomatic: false }], + }, { id: 'publish-website', title: 'Publish a website', subtitle: 'Create a website on your node and choose where to publish it', diff --git a/neode-ui/src/graphics/deviceModels.ts b/neode-ui/src/graphics/deviceModels.ts index efd2978f..e90087ca 100644 --- a/neode-ui/src/graphics/deviceModels.ts +++ b/neode-ui/src/graphics/deviceModels.ts @@ -4,7 +4,7 @@ import { RoundedBoxGeometry } from 'three/addons/geometries/RoundedBoxGeometry.j // Original, procedural display models. Dimensions/layouts follow the existing // device illustrations and manufacturer references listed in device-models.md. // These are recognition aids, not mechanical CAD or revision-specific pinouts. -type Kind = 'board' | 'echo' | 'deck' | 'card' | 'case' | 'router' +type Kind = 'board' | 'echo' | 'deck' | 'card' | 'case' | 'router' | 'phone' interface DeviceSpec { kind: Kind; name: string; w: number; h: number; d: number; color: number screen?: 'oled' | 'paper'; antenna?: boolean; battery?: boolean; pins?: number @@ -36,6 +36,7 @@ export const deviceSpecs: Record = { 'rak4631_case': { kind: 'case', name: 'RAK WisBlock', w: 1.4, h: 2.3, d: .55, color: 0xd5dad5, screen: 'oled', antenna: true }, 'unknown-new': { kind: 'case', name: 'LoRa mesh radio', w: 1.8, h: 2.6, d: .5, color: 0x182623, screen: 'oled' }, 'beryl-ax': { kind: 'router', name: 'Beryl AX · GL-MT3000', w: 3, h: .8, d: 2.05, color: 0x171b20 }, + 'pixel-graphene': { kind: 'phone', name: 'Pixel · GrapheneOS', w: 1.82, h: 3.7, d: .26, color: 0x24282c }, } export function createDeviceModel(id: string) { @@ -157,6 +158,41 @@ export function createDeviceModel(id: string) { box(.02, .05, .05, -1.51, .14, -.77, dark) const underside = label('GL-MT3000 / BERYL AX', 1.25, .15, 0, -.413, 0) underside.rotation.x = Math.PI / 2 + } else if (spec.kind === 'phone') { + // Pixel-inspired handset: metal edge, side keys, rear camera bar and a + // conceptual GrapheneOS verified-boot display. This is not device CAD. + box(w + .035, h + .035, d + .025, 0, 0, 0, silver, .22) + box(w, h, d, 0, 0, 0, body, .21) + box(w - .08, h - .09, .025, 0, 0, d / 2 + .018, black, .19) + box(w - .15, h - .18, .008, 0, 0, d / 2 + .036, glass, .15) + const bootCanvas = document.createElement('canvas') + bootCanvas.width = 512; bootCanvas.height = 1024 + const boot = bootCanvas.getContext('2d')! + const glow = boot.createLinearGradient(0, 0, 512, 1024) + glow.addColorStop(0, '#080d11'); glow.addColorStop(1, '#121c1d') + boot.fillStyle = glow; boot.fillRect(0, 0, 512, 1024) + boot.strokeStyle = '#e6c775'; boot.lineWidth = 12 + boot.beginPath(); boot.moveTo(256, 288); boot.lineTo(326, 314); boot.lineTo(315, 395) + boot.quadraticCurveTo(294, 433, 256, 451); boot.quadraticCurveTo(218, 433, 197, 395) + boot.lineTo(186, 314); boot.closePath(); boot.stroke() + boot.fillStyle = '#e8ede9'; boot.textAlign = 'center' + boot.font = '500 57px sans-serif'; boot.fillText('GrapheneOS', 256, 590) + boot.fillStyle = '#d4bc78'; boot.font = '30px sans-serif'; boot.fillText('Verified boot', 256, 644) + boot.fillStyle = '#859699'; boot.font = '23px sans-serif'; boot.fillText('Bootloader locked', 256, 684) + const bootTexture = new THREE.CanvasTexture(bootCanvas); bootTexture.colorSpace = THREE.SRGBColorSpace; textures.push(bootTexture) + const bootMaterial = new THREE.MeshBasicMaterial({ map: bootTexture, toneMapped: false }); materials.push(bootMaterial) + const bootScreen = new THREE.Mesh(geometry('pixel-boot-screen', () => new THREE.PlaneGeometry(w - .19, h - .23)), bootMaterial) + bootScreen.position.z = d / 2 + .043; root.add(bootScreen) + disk(.035, 0, h / 2 - .13, d / 2 + .05, dark) + box(.045, .31, .07, w / 2 + .019, .57, 0, silver, .018) + box(.045, .17, .07, w / 2 + .019, .15, 0, silver, .018) + box(w * .82, .42, .07, 0, h * .29, -d / 2 - .04, black, .18) + for (const x of [-.43, .03, .47]) { + disk(.135, x, h * .29, -d / 2 - .085, silver) + disk(.095, x, h * .29, -d / 2 - .098, dark) + disk(.04, x, h * .29, -d / 2 - .11, glass) + } + box(.13, .045, .025, 0, -h / 2 - .014, 0, dark, .014) } else if (spec.kind === 'board') { box(w, h, d, 0, 0, 0, body, .06) // Plated through holes, copper traces, solder joints and populated reverse. diff --git a/neode-ui/src/router/index.ts b/neode-ui/src/router/index.ts index c21c63fe..aa3edf57 100644 --- a/neode-ui/src/router/index.ts +++ b/neode-ui/src/router/index.ts @@ -255,6 +255,11 @@ const router = createRouter({ name: 'publish-website', component: () => import('@/views/publishing/PublishingSetup.vue'), }, + { + path: 'setup/non-surveillance-phone', + name: 'non-surveillance-phone', + component: () => import('@/views/goals/NonSurveillancePhone.vue'), + }, { path: 'goals/:goalId', name: 'goal-detail', diff --git a/neode-ui/src/views/Server.vue b/neode-ui/src/views/Server.vue index ea582ebb..27debe9e 100644 --- a/neode-ui/src/views/Server.vue +++ b/neode-ui/src/views/Server.vue @@ -163,13 +163,22 @@ - - Firewalls & tunnels - - +
+ + Firewalls & tunnels + + + + OpenWrt Gateway + + +
diff --git a/neode-ui/src/views/goals/NonSurveillancePhone.vue b/neode-ui/src/views/goals/NonSurveillancePhone.vue new file mode 100644 index 00000000..7ff0c04b --- /dev/null +++ b/neode-ui/src/views/goals/NonSurveillancePhone.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/neode-ui/src/views/server/OpenWrtGateway.vue b/neode-ui/src/views/server/OpenWrtGateway.vue index 7b47104b..6488d0d3 100644 --- a/neode-ui/src/views/server/OpenWrtGateway.vue +++ b/neode-ui/src/views/server/OpenWrtGateway.vue @@ -5,7 +5,7 @@ import { rpcClient } from '@/api/rpc-client' import { useCachedResource } from '@/composables/useCachedResource' import BackButton from '@/components/BackButton.vue' import DeviceModel from '@/components/DeviceModel.vue' -import RouterMarketplace from '@/components/RouterMarketplace.vue' +import HardwareMarketplace from '@/components/HardwareMarketplace.vue' const router = useRouter() function goBack() { @@ -549,7 +549,7 @@ onMounted(() => {
- +
@@ -1038,10 +1038,10 @@ onMounted(() => { .router-model-card { margin: 24px 0 48px; } -.router-model-card > .grid { height: 100%; } +.router-model-card > .grid { height: 100%; min-height: 0; grid-template-rows: minmax(0, 1fr); } @media (min-width: 1024px) { - .router-model-card > .grid > .router-marketplace { + .router-model-card > .grid > :deep(.router-marketplace) { align-self: end; margin-top: 0; }