From 4ca794f7db1aad5fae0e2dbc5806c70241d092fe Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 18 Oct 2022 17:37:31 +0200 Subject: [PATCH] linear shaders modified --- src/nodes/QskGradientMaterial.cpp | 24 +++++++++++-------- src/nodes/shaders/boxshadow.frag.qsb | Bin 2633 -> 2659 bytes src/nodes/shaders/boxshadow.vert.qsb | Bin 1565 -> 1576 bytes src/nodes/shaders/gradientconic.frag.qsb | Bin 1794 -> 1782 bytes src/nodes/shaders/gradientconic.vert.qsb | Bin 1505 -> 1501 bytes src/nodes/shaders/gradientlinear-vulkan.frag | 2 +- src/nodes/shaders/gradientlinear-vulkan.vert | 8 +++---- src/nodes/shaders/gradientlinear.frag.qsb | Bin 1432 -> 1430 bytes src/nodes/shaders/gradientlinear.vert | 8 +++---- src/nodes/shaders/gradientlinear.vert.qsb | Bin 1595 -> 1615 bytes src/nodes/shaders/gradientradial.frag.qsb | Bin 1537 -> 1541 bytes src/nodes/shaders/gradientradial.vert.qsb | Bin 1478 -> 1488 bytes 12 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/nodes/QskGradientMaterial.cpp b/src/nodes/QskGradientMaterial.cpp index 8f423cc6..cd32b23c 100644 --- a/src/nodes/QskGradientMaterial.cpp +++ b/src/nodes/QskGradientMaterial.cpp @@ -347,15 +347,15 @@ namespace QTransform transform( rect.width(), 0, 0, rect.height(), rect.x(), rect.y()); #endif - const QVector4D gradientRect( + const QVector4D vector( rect.left() + gradient.start().x() * rect.width(), rect.top() + gradient.start().y() * rect.height(), gradient.finalStop().x() * rect.width(), gradient.finalStop().y() * rect.height() ); - if ( m_gradientRect != gradientRect ) + if ( m_gradientVector != vector ) { - m_gradientRect = gradientRect; + m_gradientVector = vector; changed = true; } @@ -372,7 +372,7 @@ namespace { const auto mat = static_cast< const LinearMaterial* >( other ); - if ( m_gradientRect != mat->m_gradientRect ) + if ( m_gradientVector != mat->m_gradientVector ) return QSGMaterial::compare( other ); else return GradientMaterial::compare( other ); @@ -380,7 +380,11 @@ namespace QSGMaterialShader* createShader() const override; - QVector4D m_gradientRect; + /* + xy: position + zw: relative to position ( sign matters ) + */ + QVector4D m_gradientVector; }; #ifdef SHADER_GL @@ -395,17 +399,17 @@ namespace void initialize() override { GradientShaderGL::initialize(); - m_rectId = program()->uniformLocation( "rect" ); + m_vectorId = program()->uniformLocation( "vector" ); } void updateUniformValues( const GradientMaterial* newMaterial ) override { auto material = static_cast< const LinearMaterial* >( newMaterial ); - program()->setUniformValue( m_rectId, material->m_gradientRect ); + program()->setUniformValue( m_vectorId, material->m_gradientVector ); } private: - int m_rectId = -1; + int m_vectorId = -1; }; #endif @@ -437,9 +441,9 @@ namespace changed = true; } - if ( matOld == nullptr || matNew->m_gradientRect != matOld->m_gradientRect ) + if ( matOld == nullptr || matNew->m_gradientVector != matOld->m_gradientVector ) { - memcpy( data + 64, &matNew->m_gradientRect, 16 ); + memcpy( data + 64, &matNew->m_gradientVector, 16 ); changed = true; } diff --git a/src/nodes/shaders/boxshadow.frag.qsb b/src/nodes/shaders/boxshadow.frag.qsb index 110de80036d7ec7d6d4645ea142b6dd377f41841..11aefa91a10e587f664482eee893ccdd1af54707 100644 GIT binary patch literal 2659 zcmV-p3Y_%-04+v%ob6hTb{o|ZzSyyyh_nz0kkS^GxXFpoF7sGF-Zsk z*WIk8U3o#$s=F&kPU;c}P-rRrp-uY;eTF_m`xJeM{+!d&nR~yhy;{k}aGH~}$IDr3 zXXcx^GxyG&*}FstF)W1GLH9#+XGB>9^j|0{L=Dg_zQ85AFGfEmJVH96D&|S2CiRr9 z&9sKavS^W}5IgBtKQ|2&d$e2B$#P5R?sbyejz_;9g;bePv>1{q^1)(b;3%NnZQ646~dk%3^K2K zq>u!~e1Qf^r=nCG)B3rzq9;8pOcvC2tTb7eJYJZbo|-NmJzhLMQJl1n(A2cE;n#O6&y9Fv*Y`~loO)I_){KTLI+f6raGd?6pjl{_t_Y6yc8$FfJn zh-?FV>oH!V`>x=AH7NNsfOv_Xo`?M*Ne^}CQT&>`5uy5><~;=5DT6lv-h#m!1n;`R z+X3E+!5adP+t@kM()P{~dX9eg!w*eAXV4tqGX{OvpdTkI0}?+dec|UP>4`g@MfX#L z9}&qLjYWTVBHj_mcR@Y?c?Pmw((aIa&tN(0vFr)LJPP}K9R|GzG~0L#HijV|mU`;i zOCvpL=sk`3*7OnhqUocU=P|O#Hc!BodG90a4946c=Vzy!W6jg?4C7`WXEBb#DS8e( zj`1X7)V`fWJ`6$s1z^n>Us55S)cEu8N6TMT@>5!V(U|uIjI|5?F#Q^MEWZrwh+%J$ z?!Wx`!mPIEW3CwgHt@R)d|eKIyW`)dhW+0`cLd`zeHXkbih4jKuVBpkJ8_19<=mJy zbb0;HrRY}-n(>zmn)B*v3jbD0UP;MUQ}p{O`XkVD2DHLvF^=4KxJ zKM{uW^E7yzUwyb#T@zeG)qGzye0Wo+e7pv|SHROg{{U;Y zn?`4P3AvJmjC1c}*!m&pCD?ikJZ;NHK4|(n)>r%D0CU~IEMxrlfGLCL82*+GybHWu z2d~dMRKeFaSD;sg9`BiVpywO&TLWLy4b1mvq{DOo-m7xHh9$3w`Pu>b0_pV`k9hlw7-`kMA2%KKK_b~2l#Jvih_WzDh zHA2%LAV2Ov|3hFtfd2d7Y5Y%x%Gq~8e+-_MeAF0leNDzY)Fl?{n}ur`g7D zVdry^)KKRAgX*2GduI)Qe=k%IVC-Gc{~|Ar(>;Yb=Q_j}zf&9|+)nAUdgdDc4cL7| zBz2tMbwoj@> z|0e!H$g_t1T%Xtvfv;mf44#fXZ^X{Bak`7JJ#N@8!1p7D?FsPN_c74ydmj2lL%#(5 zqlW$@_*#E5rJpyjQ^+HZeF}2Ui7$|^B00k_(H5O+Xgv9FR4iJ7~HVy&f7t#LMpXO(g9mlSJELz z-U&P}a^q}Sr@n$Jpo}GjEA_#tWKIDmO<++0vEtppDHEu0Nw%c1`J26Hy-CwhUL`K` z)MT94FKbV*w@hZq@@V?!Rg=*@>GHz)OIPjrFo+`ie52WlF|DQ<8uQATYx5T`UOHV+ zgY{9q*osry#&~4m@>Tna6IR_ACi=G+hW(TyNb5=KiPM-8pHkR zJiOp`SNp+&s`|km=i793Hz2#K0d26Fx&wKrFm}Hdgwf0Iro;(FktvG!=O2HtJrBi_(W|A-A;DN7HZgYnqFT zt%%-KYC*YS>dAiWH)?*vwQSpoDct2&?AmrV>(p*IYmu#lx!eXVGF}N?r$U1?q8P3o z)D5#&Ry??UVtb%ZY@B6veh2Jip?b>d+@fTmT+*dwX=zL?uhWqG=b)@|1W@nEGDUNp zuMFBE-?P@O_4K~tY9fhycr5JGlY0(^Jw4fP>T#>*M4*k6 zqMnUS4~uY~x=a$rh6hIjqF=M`#{tqvz7DbZAu>ocL)pKL%@wHb$L()O=0Cp9-8H_> z9ZSB>O+J8M=V-s1ALe-P$^p&O+xEx0|AW%M{jqNQV_lb-2k2v6zcW(mJ6-Bqo&Hy| R>R&PU9y@yE;y;b-4&=s^W=sG8 literal 2633 zcmV-P3byqC04+v%ob6f*cN5nUzVQKSg0{Rn*GEqZxi!X7B?u(@#6CO!Aq9RU`PEG15TbpT( zi51ZzO(AyBw|;IKQtZ(#Q76kWS@cDl=!d~OVaPqIAC%js11C(jdF_%Om&s~NL=axu zSlA(Y`027T9{A15nAQhr$a!p~3A6DQxI`zewi7s<<1yG61Ak2FscR3d^rWHp zH1e(K!|+AZN08?%S!A1Yuw~wRNp>D!D%kU7?vj%N%v`?!F0l$@d$fpLt-5u^6) zIO<^(`Y%A%jPWHE;&Cm14*qEVtBQX@^Dh{AU&2~D;SbZV0b~9p$c`KKuF?J1znovt z_I%`u<==+x@1Z-6^_jj4Y=)v95=l2;>>q@TLY8Y|*3jksKifmU zV$dvq(V)4muJp*i)x$6M@K<~2_j~A%KrfQFv#6UF$Yb8O7qQp8p9{#%N#K7b8LrP$ zz_`BtPBzXU_J5H)^G?%!26;Gb*#04GpEGQ~4E#fqVfs93_>L zwaqH@D$wJ1<{jwyMt*C+HQhkIKPMfg17NSpe2q!0iF}QKzXaKz2=yNFeFs>|Mk5I%IaCes6>KBINYmy@z#gBkomT+W$L3^$1OWfcm%t z{SP7Y0rcMorsY2ts%GB>{RuG5|5S9>^v{LrLA$8CG5rhpJq6uQA;W8Z1ipUXe~Fs= zOeF97=fJi7UkTOImM{l@4a~fGZRY(3Yv*8R4)Xfl_^s&ge_sISnr0ingPku#(nA^h zC-pns_s$sp{z0f2z_NEi|C_uxM)wSI&V7h4{!MX|=8o~L3i88+F8hvwO)eR#*XjoJEe5x6`C0|lizfx^lUM+Cq z`99ch5SWVMuvLn!m6n&fm9prnJMlDsgnoNo0;_Im+A0OLAT;REDf_Lc0~9PLYPzLZ z0dhfWrPc~hw_~@_g$7NhZ)?l|ISm3T9tm@aHHB+Zsk1x`) z7S!6gcA~%Dd2(x!y9M2~LAs$Ex57r^nc{RT_C+u~{dFRkp6+;Y^Ijt`bZ=}Hf%a@Y zwN5)5_+^U=IIXuxR~8xL$27Y;-`PAah#bmgvmJB`q@T|ft%I_La=mreS*huSPMu_> zlv%)#C@2YgieylE-7AH}DCF|AP;V(p#jMuP^eTGN!+bHXuA|e%eDPSmI6E_2IC89T zY^qSS4pVB{=`i~ha)#;9I<#P=Df)w!m+1+ltWsJ?lTdF~GS(!LtKM1CPfOV;$}sVq zl_)L4Ck92E$@GQ88&;=%WRJ_acGfEA)-uxb3@ul489sni{-RCB0dm3^nu2%^|8Sw204ZrR#5`9|H3 zB5G%o%`k|Ac&+J1`%~EW*RDw)()rBt z@&HZ0VJf2elTs^k!*neuHB3E6=DAVx8?I&BPE6shv|`t`(`l!6!&!@L#mrI71|>-FpDD&M3YPvH85CO3o#X8RO1)xrndF z->9sA95&j?{2QH24jqO3_CaF1*KZ#rAhCUr*gi;Xa*!CpUqIm+pDn3h9kP4PQO#F; z@-$4Z@9dhKI!1E$EPM37);}?Szl(F>4O%IS$#oQxU zGzAMv5If#2IAaPbxujZpWpg+CrS(hNE6TgXZC?NIH%|!jU7&H^NX{3Rmd;(gVxJ6y zD6-Ern%yT9ebAV*E}y=7^1_9Sr}ABg6I1y@D{gLlzL~QwU9m4aVa1JMV(_>zj$gk1 z*x4Xtq*GYgq&b8_49zb^20NP+T^#tp^4>7({))?x}qHTbcS9)z=>_eNLulUF0f(3nt4vTpDkM z0tPImR0ByUArt93kQiOucpJM7teZoXPbYVc)5+1~bW;2Vo=*Hm*TIDUW?WoSh;V9l|eJ2=bX~>j~@D8oYntg?mx@)@x^}uKEV#;H3?5T diff --git a/src/nodes/shaders/boxshadow.vert.qsb b/src/nodes/shaders/boxshadow.vert.qsb index 3c7c09cc86779b1b3e02952e607eeffe7858b56c..df541f2134155059cba52725229aca69a360f5ca 100644 GIT binary patch literal 1576 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 diff --git a/src/nodes/shaders/gradientconic.vert.qsb b/src/nodes/shaders/gradientconic.vert.qsb index 49a2402a5ebb806685591ebda53d684bae6a77ef..82ce7014da743049a18f37bf05485b35271950b3 100644 GIT binary patch literal 1501 zcmV<31tR(Y03Yvoob6fNPa8)NUudj+;2128Kojit*#W^f`oWL#jM6^lLsr^0w}VE* z@^tvnztuf!$8P(USJ*C2YcDk&9?#vcwrW4Sp5AD>HGiSApa%d3p6}TmklC%7zqpM? z+wu!$ak|8XICNeBP0Im|E3WI+W9S7HEx>KR=J|1$@uCNCx8@{p`$?P&2-`o1K^Fmd zSkg2N*7I$Xwx;his~c|H_HEZGMW*I;6YVd>@Ozf$Tb&g#1#@0t`ugU^<0sFmE1uhK zS06jOflrQ1%79T%zyEP%ef`O!qOhljiuJ&c=^$gG(#i_TE&#LnOxY8zvFF-#ZUuzU zb_z1iLT6dE&*&WJbBQ2|wbVt*dMjua6v0_FMbOonmfVugmrr<02N&;HRU60BHq~ck z6<|anAfdD|!RWEDP~dVxfK-kV-C86k5?JXqGqk|7{J?W!iyUfLxo8(va)&Aq#sfhf ztZw6SU(FZ0NdO+C?YA(h!kKcDCL}>TBqHm11w|N8DJo4BA(A0*?1t;Lc==<@Fh6SE zf$i+jB0_!5hsC!8-$HII@54Evzxv#-!i43?TswN28E;54j-keLPfx^N0UIv>-n9h4 z>fAohNF^W{>W=iJmh-k_HiNpQf7i17S`*q*y=iYRX(7LDx9a!tkMYwIxUr2Mb80OM zylq-Kmn!uLWw(c_;gnT<908>jabrcyzFv)^QVH7783?Ntif9kM})?SQ9-KHZCq29_tw@d*y{l4a1Y+);Rk^D#^P$HyA>ie;#<~V z9*Rx5N{QNzam1u^6HOqRcu`G}s&_@PV{#30qo~~L^cgGn;(58BK)I{^7s;7Z-GASs z*OPAiQ*omnx^eO3-H44qbs_YY57c+q6U@`+J7AvL4xk=`!2Ri0=f|MqItHmzk<|E~ z$D?pVVU$C_gOB?B^!B;_zK&a=6;YrPc&YJ2Kb5J60O$#+zs?T<$9@RtRm3Xl!C5#e z#AJ9i15PdIIAs5ghYUuC49ecj@99)NheM4GvHLV}3BLI7e;y+&%Rhfu+gvjst&N36 zu49a)r2;n2hWQxFf+~b_utcuIJB9Kvi@eWCKhmQLy$ZCvTpi@}V3*E!F(D5O=3~hl zAlyTRmm=P(!b=lxP2pvTx54d7cV*GW3HZFN*o^co#hz<49_eDzoG0a{Xpd;`W#Fc` ze45)KF3r>Y5?zP)6Tl-bOLIEVLu51ZOGFP75Ahn|GlU;u@`7C8M<@=+`xNMLn#*vz za(u7jq(7^?sOu8haglT(Jwd!lpf8i%sC$O!D@3FGBw=%WE#Vi9=02l6TqE5`Unic_ zb%T70_?x6_oaozxmHO^5dDSoUAw5MrwDn7}m63j=3#0?(r)iv3=I3b5uOZGU7G9?# z?iFw_Ps%1qC-l zbH9OJq-RNXMv*lX**RLzAnZTjp>MdCy5F++$UcQ$|6A=-cZmCTeMvPwWmT!xF#8N|%ZszFFdziNt*DBIC94z2@0}MLk91 DG7|I5 literal 1505 zcmV<71s?hU03Yvoob6f7Pa8)RAAf*hAt50lZJMN+#v!!>I4**wf`Wo*RU#pQLKIbs z&}vz)>9+Q+vmam*ajJUjrI+4&>z|lQ)xJ0L);qhlDX26pfwk72_vZIL=k3hwm@ziU z1iZMMo>_;{=aJ$Z!uNf%3A<4k9-Kt?AtYG5n_ccG62_G!#i^k
  • -~V2!88I*@H=1!1mEljKh8Bu!lN-OyHd0rvk}%T z{$*SLM59O$&Y7+2xMWwEUJ~T3kpiYMLK-p&9Un^&u%Zq%vo+)PGEVfuItqlKKBE|3lfZ$;i$9=Chg#0Q9Fz+HVxaU z>TVdQcEJQH=PzG|zU7q~uIW_E+uMq+IlkM_H(lQjY}Wx?i<$`P(r!D6p!lBU1y*~N zOc((KxDy6eN!mbhiHMz(tx}|p+h`Nw-L-()-kt`39UvW%!3R8qZven|9o$E?W%3}_ zi1!kIb0~uXsv=`v0_7FO!%F*r&j^i`uDqj^nujHclS9TIrZh;=Jcq1CQQlX<zgya9S;qvZ%rCkYxFH zWs67i6|^JY)SNA;fbMxi2~0A27?uiLK}e9wNljIWn&`qtSu?w4uB4Ge^&!LwtgTF7 zQ}F~g``=Gsdxm#_tFJnVbrzrh(_DsWtkG{Ojn#`Zo+ypcatiH?dG?l5U`lQJt3U^i z<-OBa0d3;NP zcl%s4sjx9RQotAU$i^_eq~AhW=t25p(v9?}LazZGonH(HdZ0rWJD8XU&Wd)#%Mk8~ z!pjnGP2uH;x32K=#M=~p~vt_vczG15P% z+^Fj+`EiAGAw5pK381f$->7?v=<7tI`~+bO!j{Z~MtvVq3^z$P(zl2g>AFohMEo7n zHAeJ3!lJ&{H2{9%z&g&#!5V@B8 z9|2Pkxs*DPzYG?KiHADwFj>dr6vGnb{Vwq%pE&vS3&?0p*3n(!qaKX0NO`$Uc8Y}i z13dmhZbYMJSUm%Sj_hw2XJDs(2G(mKR#A`7!%106My$wyQy1klWdB%aZ0)#uGvS$j zMUDH;>}!JhvYQ%^Gx)Om9t;R$@g5BZB>%IzM|(saC)=Y9i*~;~+9W%l`!vK)QjF;D z#lG#|*|#BmpGE(AN_|LA5)Xa-lze5RAL$b5K>0GY2bKOAvUwi&g{T8_@qqHU0u<)x zp@J_dxGC!U3G^a8O|nypY(u51c#4I^ZE#m#q%{4eFb`rr9nVfG1-o;BLoT zj#U-TS=Iw&1&EQ(gITr@DTiP_O5vev;2x*Js1Mj7AS-rAS#8+Nk2@;b z6&+)UrQjz)?fH1J7q!TZ;bHy<~0)ov`^ zX_}Q(hpC-mGdh1fdm>6ue+kYjnue;@&mabjkd}FhVdXi(K^gt7IrCQ>`5TbuXgsCm zsi9mO+KhBF%#^|EDrEQ2(M^zUL&vKQbr`!=%C$zh;_)6>O=!8QnZWS{7$L!2pOZTN z43Yi;$S2rn@6W;Y9mcc{Z7zaziss7&wen@aKMnU&gnx$gsB4jIx7{ZoPwPC*f$`51 z{sj47WM;pgAb*rEkq+lCGut(09_1^f`w(PKzLUB}hEJ=TCX9KCH%A!r#5d~R2l*rN zsZh=+-*9rgNn^yj3o$0xs8=x0UqLfP*vR8m;&YkSe~ofp0qd(Ie*qqt<8@|w8}*Ms zhp|4U{BAfHKIwlVzdHH)gnNl}zriZ*!FiYL>~jO_{5jZRULNHMlhI)ZJ)}IwSAf8QJV12noX~t$uQE=Uew*| z^G=)!)jFb%5>R@%$_An0yMvDR%HweKgj&K&79F&-Vqbfoeq?N?ZCQL zaWyS3O8zRG!rkPwJ7~&wZ~K9s zUg5*7RPd$UY-cw?%1V2YrW(f7cP$r8>@hnNN$bhPA=Qk0OBJjeXaNqo5~Q7-1(T3S zbWLyS-3SJ7?MTD;!m(=tJKHeEaNMdeno(<``tb2!^TTtQzk1yo(@0U$DEAVWH;(P6 zg%RBaW{>AM%9Aw)lz?t^DH$`!0=w>d0Y`ZDN=?;)jOLtwo&z8!sG kEdEzt82{VPIs3=N`MS`$Bmd6nUwi3^_(ogyCwg!J@R20e6951J literal 1432 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 diff --git a/src/nodes/shaders/gradientradial.frag.qsb b/src/nodes/shaders/gradientradial.frag.qsb index ccd2540194f95492c6682bc1a027fa5cbc3beeb4..14e004bdc178fe8a8a08fdf2c2544e31a5236237 100644 GIT binary patch literal 1541 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 literal 1478 zcmV;%1v&Zv03OhIob6fbPa8)NUu^R_NFXGnO-Y(<98#Ny<5FlUsG~$~RU$@u}+fR+ajP^{?rds-4-L^X=W)khBpkltcFI%>L%Nvk%scu^}d( z9DJ^_eP%I_1@PTrb>_mK#~RR6K**o;u;eqvboK&dbV8#B#s=Us+(!cYG-fLLb4Tb$ z^bp%&A!|Zw1m02mse(ce$61>h;EBg<@Sm|U>U*HzCZonxaKK`Y2-ZsknD45MCp?~KYr*|V}<$ucOio>W|12=9H_Y$~<*2W-t z`2PCw*5isFG%Cw0Rq0z^;IMCk+()n4hV5W`l#I=wEc77#A?ZeXT%p&2juJa4=)o>s z>|$abI4jx_Z-8(Q6kd*a>k2PVyiMUlzKcVDrr>=`@ek>b6x-LRJ=VqK1rOyf!*@>L z^TLLl40$m*IDFm%edzNL^>Ls_$RFgd5j{#g#A}2v5PpnBg)i}Alwah%5A+1}6+~W# zL~IkJKeCN_E|CwDqzCCK;!Oj6nS4gQ^F&`E8s(=6J1p$T9B9<{0r`K8bR#`Oyhzt| z${*rykgf@$ZxI&teFiztvAEKa|2uH7K5CSo3zUNm@CN<4NW2RqgFZh5iD@w&GR`X` zKP>Vr`9A<=SmaUaK>mHOI7&R!af8WvouU|Ol=GX!k9^|f)6XEIF|mc@a)c7%v|E8j zcU`ZM;Cn{H4t<5iT`*z?2W#44Yy(57>TVdQmOv@0mE?w$QPguGdE8B6=J>!#lw8mrA9&?kFQS zQ79SAv&RfyOLTRID~V5z7FE;M=A$Ri^t$KzzW&JBORh7?rC^mm{py?g#>SH`tBFNK zRk0BUd%f4Hgmj;EYL#z2Q(`)diVD5Z-@LN)V=Aj1wn~cNf;#wRQC-=PWMOBr#iQj5 z+L3Q+&T1+kyNoD-Nk$LDQh_T72~s(!l`Byb8Elj_GxmU%qok2Tt_kBgPdo#HejYsJSV!{rNH8_p`J8Sr;Oz8i0SUc z(^oxIES(=J`W`COv|*K6rz&l6->I!z^;8D~kpJ!cRCoNTPVGtz`aeAF_4=PL2HZQ- z$HBL+;*&Z(#$F_W%D|tNL#BEtKyvcGe<=9ZwkF2nD`?1DAyBWN?^4IxT|tkEcE2m= zS$6iXp%Fhz@t|+#*V6C)S{muwEc#VR>O*>#c