From 9192b13bc88df9c0635d162c543f89efac66b188 Mon Sep 17 00:00:00 2001 From: Dario Binacchi Date: Sun, 20 Aug 2023 18:24:45 +0200 Subject: [PATCH] board: stm32f746-disco: refactor the display of the ST logo The patch removes the legacy mode of displaying the ST logo and adopts the approach introduced by the commit 284b08fb51b6 ("board: stm32mp1: add splash screen with stmicroelectronics logo"). It was necessary to use a specific logo for the stm32f746-disco board. Furthermore, the previous version didn't properly center the logo, hiding its upper part. Signed-off-by: Dario Binacchi Reviewed-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- board/st/stm32f746-disco/stm32f746-disco.c | 6 ------ configs/stm32f746-disco_defconfig | 2 +- configs/stm32f746-disco_spl_defconfig | 2 +- include/configs/stm32f746-disco.h | 7 ++++++- tools/logos/stm32f746-disco.bmp | Bin 0 -> 18052 bytes 5 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 tools/logos/stm32f746-disco.bmp diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c index 4cfb29ef42..0f96660084 100644 --- a/board/st/stm32f746-disco/stm32f746-disco.c +++ b/board/st/stm32f746-disco/stm32f746-disco.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -134,10 +133,5 @@ int board_init(void) } #endif -#if defined(CONFIG_CMD_BMP) - bmp_display((ulong)stmicroelectronics_uboot_logo_8bit_rle, - BMP_ALIGN_CENTER, BMP_ALIGN_CENTER); -#endif /* CONFIG_CMD_BMP */ - return 0; } diff --git a/configs/stm32f746-disco_defconfig b/configs/stm32f746-disco_defconfig index 057cb7e896..3c3a0d25d4 100644 --- a/configs/stm32f746-disco_defconfig +++ b/configs/stm32f746-disco_defconfig @@ -56,13 +56,13 @@ CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_STM32_QSPI=y CONFIG_VIDEO=y +CONFIG_VIDEO_LOGO=y CONFIG_BACKLIGHT_GPIO=y CONFIG_VIDEO_STM32=y CONFIG_VIDEO_STM32_MAX_XRES=480 CONFIG_VIDEO_STM32_MAX_YRES=272 CONFIG_SPLASH_SCREEN=y CONFIG_SPLASH_SCREEN_ALIGN=y -CONFIG_VIDEO_BMP_RLE8=y CONFIG_BMP_16BPP=y CONFIG_BMP_24BPP=y CONFIG_BMP_32BPP=y diff --git a/configs/stm32f746-disco_spl_defconfig b/configs/stm32f746-disco_spl_defconfig index 0534d62d00..1b8b5a17b7 100644 --- a/configs/stm32f746-disco_spl_defconfig +++ b/configs/stm32f746-disco_spl_defconfig @@ -82,13 +82,13 @@ CONFIG_DM_SPI=y CONFIG_STM32_QSPI=y CONFIG_SPL_TIMER=y CONFIG_VIDEO=y +CONFIG_VIDEO_LOGO=y CONFIG_BACKLIGHT_GPIO=y CONFIG_VIDEO_STM32=y CONFIG_VIDEO_STM32_MAX_XRES=480 CONFIG_VIDEO_STM32_MAX_YRES=272 CONFIG_SPLASH_SCREEN=y CONFIG_SPLASH_SCREEN_ALIGN=y -CONFIG_VIDEO_BMP_RLE8=y CONFIG_BMP_16BPP=y CONFIG_BMP_24BPP=y CONFIG_BMP_32BPP=y diff --git a/include/configs/stm32f746-disco.h b/include/configs/stm32f746-disco.h index 9bf01cac47..00ec9efba5 100644 --- a/include/configs/stm32f746-disco.h +++ b/include/configs/stm32f746-disco.h @@ -23,6 +23,10 @@ #define BOOT_TARGET_DEVICES(func) \ func(MMC, mmc, 0) +#define STM32F746_BOARD_EXTRA_ENV \ + "splashimage=0xC0448000\0" \ + "splashpos=m,m\0" + #include #define CFG_EXTRA_ENV_SETTINGS \ "kernel_addr_r=0xC0008000\0" \ @@ -31,7 +35,8 @@ "scriptaddr=0xC0418000\0" \ "pxefile_addr_r=0xC0428000\0" \ "ramdisk_addr_r=0xC0438000\0" \ - BOOTENV + BOOTENV \ + STM32F746_BOARD_EXTRA_ENV #define CFG_SYS_UBOOT_BASE (CFG_SYS_FLASH_BASE + \ CONFIG_SPL_PAD_TO) diff --git a/tools/logos/stm32f746-disco.bmp b/tools/logos/stm32f746-disco.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c1ef4fb035c0833ea22aaa7d8aef1f0f4129d7fa GIT binary patch literal 18052 zcmchf2Y8iL*6;T^5poi8NK8n81VT+AV1$GgNFV_r0)~)KrH0;nZ_;~}-g_6RN*9q{ zRg^AB2SLR$ws8vgxAr+O=yhg3yw7)i29kI0wbowyzv|xa%T!4lUESFKCca?I5PrKM z#su(3jFUgc{F-9SybA6=c0dQs<0t>K4^>h#drv#~V|2!@@Zj(XqhK=(;wkXC6NI z!u;^V4`#)}dFJ!0pPA1tUox#~rkF=xe{FiUXk@1_HD6@ahF4LuPrdc*`j%iUX(fs`L&t_=1j^@jU56!@iZOoPp>&yr5?K6!MW6jrJ zerdjW^vJZUlWP9{_rIBsPoFZY7cVqt&z$D@@8;{TzA}quPB$ly9x*pQzh-)6H8yQ( zS2JfnJYzPjTy8qlOEX!imCUh22f^SMvuWKL)B3fl=GteUnWiaaSo!(Jow@ZGk3~FGo)(=vv21P)2V*Cd2iQFbLG-Svu)!B^Amgf?%Qw8 zq4)QjPe1<1Oc*-Q4C~p&{0JuBefO<7bMl1QyW?GR`Qin0^xy|(K>Jo^)uIKaaiuu0 zy=rdXx@qp-xor*~*l$i9J8GI$Esy@6o7t1bn>)8|nT0c^neV^<&YV7R+;nbO$9x4g zKmGWl88fi288^7Ud82!0)2DSa^Tqvp=KkHgX8YT3nFsgpo9@jTfcIsy=bi0l>Zsx7 z&h1-f?XtyY#e%u!$Oi|^^7(Vv+kLZc*%I^Nsgvg7`E%wgFn)LQCbN3UB6IHS$7WQ& zUgp+~>*m6zpP0d&+nIMZzirm9SZ3BNU1Y`&8DLI;^^fSXjWwr_9ck{}y<=|QykQ<; zixWo5sgv-Tt7hq(S!ThTQ_bn) z$IOl`o6O?bGr;T}Z1sWJuxh!PF@Cf;uy>D{KYfZhxPPD7ynZcsy>GU@wcbp8V-WhE zF!%1RdjPbg7%6LhqRZeP{+z`IqG9%q%2|=-V!1w zq><9hQyOO}`?om!3b*U9cg4{m2Bk#!j(n4O4w`7J?U>!fk-SX?N5>>c|>t#(t(_qbBmQd?Ta8LCtky;~7YK32FXt`m@Im zpGbW{_gqZ!u#;EOH4r;gfbuOQwUCYMx*6!t$6ii(O615+Dd8sx{JIgeW99zALqtjb$mD;-9^rUfD@}+lM+0YW>jZN zLsNiNST(yryB@M%)=4^1;wx{+ENnN>;t|C9CGp%ic3nsuAQUJSL2I-;%&wkv4jig6 z775p2q9a-Sz-p+h1#zWFAR>=}_;z$Dz*vm6kSi3%Pc~wfuS}^X(4#vu4kPBo7e(a!?RF!ljl>m$4NKRth#rP#8 z^aDQ^T;cf15uT4rK5=0gCy2i%O_ADKvRJ{vE|0RO2NDYwp>hc8bVpBzwQ3N0ia%^(hh%mfw;Yn*G=p%U0NJo8yY36! z0ph@go=$xFkm`vBvGTc0WYt_mVHd_q5FNRo50i0{m*>WKd^junOF=wKvuAH!Ryaa&>968BY9fCC`5ZwsmAL z<5guY<9X!_-j<)JbfU#e&`d_#K1d2ho2htbE3$*4aTuQ~4gR~y4ZVoIJ@`~jBn)Q7 zc{YE&f`tb|m5Dd|VTmJ>zxALWQS71w zNUL>rAj@0kN^@|_1Klt(i~4e;ESHD2nzcoeN-U4$t#)S-VDX|jpvpyTtF5bJbGN;U zVr_41i0wW0+J@AnQV5@$hkfdS)Jb+x9+^{!mNpW~d=wcf9~2eH1x>sJM7q!@jUFeh4qSUtlOP9tit~N$r(k+ z13B2gucXRiX12&Q_Td1>LgZ0J@j6<3NSz2Ke-y&Xb+Bnas=7D!-zBTD;uI{JE|n#V z-%m?bcp~trj@Y3Bxvr43$4~2$aVLlmF;^NdEe0AIHxHpLK+bOs!YY3tm1sM$9S2=y zjW6_fB1ch+Aj-bPUxqk>@brB03KZ3?7IDnJj#s+lt+!c|d z_~30ePU{%v_CR}zJrx6^0OY*K@6FkpFBrazzq~307(RQR@gDMtjn9Vcvps9QEg@vx z>eQcjV#&eU`JoNLi@vZ?nMB4rAeuR!*e3>`ugNNL{G7?YDuPHK=B-_b9S0*9cs?U* zSvwNjgrf2D+M$x|n>0Ik*_haEwT=bDkLp>^TERiD9nq-3*w@LZ{YM*hU$k!O&`^46zA ziNv0^cZg(UFci;)HnEgu`{D?yAa$3OlE~Lv?aGPN9|siA4BEAa>@D zNA9*>euMm@@$;3<(Ff@E++9EgGQ2NXJd3xN?M%wU-;P?Qc-Q9lPN1T`-Hdg#Uv12I z96g-&+w<|tMP!aV%w-Xo8?i%U;%h2aO=HXpE!4l4$QJtGK}4fUed60|r5jHr>1G4T z^k3UNr+%#&q$lyH_46SyAS2l?OF@Ityk}468 zmmH=`T8~{0+rBTHe5m=aBt20uloik+gy$#N&OnoM)FJH&>)PmcBby?1nHh`S!rCZZT z)Lr$x=fkrCeS~HMGH$3!Orhc>*<2e#{Ap%gfG;?auQ3zLvqg}IDI~A4_BM1#0mIW$ zil@rhLUXX%`4eheAbcOmE}otj!^3ps8W|TPC?|S3T;k7~&+CuL)|;Dfu1X=B1&Tjj z=%hb9heo}T>jcN+tn+-B6{O00*fhRX=E9G;3uOTk*5be_qVa+EsJX%Vw7zetD>ss~kPi zY0RJUyZvM%?L|l9T`FrLIcFl)jz*e4F|0j)Jt@u(9qjjcF&twvT_`A4ml3YKbfjJQ za{!<72f=*Yql6+g3F$G!srD&u{DP!2$V{a|DSoSE{8Rky$zpyV9bn|zpTKS}g>?Xh_$l|FKDP9%{F3ftZr52l8v<7+Eq6-~FOy z`N7m^#i<9__@H+=2?VKV`Y|8!!?Q@0qH|EBf~6IFZcpoByYKhWp~Ig*YLxhdc$2&R z{{%Ll$_RKrr4~BbK_Wh|Nsgk&qUXks{463fWR-yy{r4ts>t z4d}VRp1A4w^pyOxKc|wew_cRM-=&eY0GWgBscSzqR{bcI>OWViq3N#Y#;%I!T|!3yYN!EAA-yeC^G2(1;te$~?k7Iqgiu|rJ$FCA~{%sYK`@%LvewSrJo|%2G0s)m>-={VgKT}+L?7mYFQ1Ln-=o+?&v>9Xo({uX zG9(!swy=5|y`^DitErl?AohtALa*$$7tyZk*=$x4ga^VGgQw{phHFLo1N=JKlX4T} zI5>fqh0>SKN-JkwS;3lXthHTq!JC+SKKwF4WjI_B*f5@saGbsMC@;<+t$=-Pg-N9o ziv)>#WK!+m|1*N_-ncn>4JIR`!FNT<^7MNI^RnVl5IkWcbSJ+BN-}ik7!PE3!FZ^4 zk2%pv?`yMu=gsc3b_D!G!0-$Ddd)_2B^QzVdk?HAUnBXr6h)gXvVp#9I6_yXh#t0g zbd_Z-b3>^J>NC%Wp@TETHn@E8!uj;vRft_ZIX;l0-2Mm41=fy|%j_YDd!uxFX83Oy zs-H|F`t>X_oD-3rJ{)-RCx393OXohQBHeeeY-V2~y9{IYGYO^_d(zK^uuc(H>11NUl;YMTNF1!0MkQ%t?UKmbiUwfn zWL>>&T+9tfCZ6L(=Qo$V|4&e*XC^1Ov)MR%r|YB#EGH3vfNTgAq$qa-ne00^^Sk+} zH{A{p)HgP@#gBe64Q{>R>_axFC@G+yMpvMbnOi=5(lNum!&<4L%wpyS-KyUD53%>M zzR1(tNz7gN73UUDU3X+*>g93s&|(Cp-{|n^VWwf4@Ec@D~0qw#(0_MRzgq7 z%{`~&9B>u0y@)UO);q~ndM8;7Yn-#P6R6v(bL-kWkb9kb5PhG}fU`}_7ybtr;|G3N z#s{tK?J2x#WfFHBzsUedZXu1>b3Qu0hR9t(&GSbOCn)TNH$htAe|hKwwJYpOG^9Ws z#=aNWQ)DeNZO}95Hl<4rf+CnxbWM1s^F~YGt~rSXcUA8#%a~81gVx*OKKPX0NrrR6 zyw39h?OIshMYPr8xh7e;3iD3#(Mk0C1ALJd32Ik(XSUZyb#2xQBi6oT?2PS&`mnE; z$@|CDmyuo&U(s90F4Tw5nOTn(%gIb-EnbV!IVF!F&h<>p+;akhiX%JbV1L#k%88gb>693*dIk}g;!p(LJwd-pr z^&LmLWJ6LMcI?IbrYhL$G(K@s`Y^g&8nJhO;(ZBE5!iGVo_iE8u0V&g6l*kQJdstS zLBZx6FfCx;Ary6tWN-WEh4j9(-|;0erqSvP!jC}fW#06>f>h0FVN|}h za1=nJTdZ7$h?qt+oB}niIO*I=hhd{2b`r&Nb^Q81Recmzt3dtUNw%L0%6dnxw>*Dr z;XHV86tcP@AwPQzB7dZk@ggi|0Gv%hrv?($djfe=xPvah2mc;SZ;)s^Mqi>Rzii=j zABguYwr}%F(5KyDKeO=8oKP3G8M_NQXJNG<_O9=)hJ+xhCO@HIFcw|CCzX#6I*M}4ueu8m)AmE1ff zkZbPQ+_a3yKW<|oj#{=DZ5KlGkafG@@pM_%l65S$_3XQuvUCr;H<7Z?TqP&BWG5{( zzVNiBl4>h`AFvy2FUq&1orkh zm1`k+urbfsKycWtu}XZT49{q7O8OOS?M zq3~p&@d|vmeSYQp3@_*=A=%XzL(p^>xv3%)s>4!yuMosO^t@A9?S$2WcvGYIU5khn zt)&gvTVp6xh7U7(A2rn8bydZCpWO8=fFmc_p@hAMcdx};9{jy0SrCok4kZc)&==|Z z*doMMO?35PJcO)PmQ`ceO*r~#XBUNsy^h3KJMV+GpV}@x8btN<6AG7}XMNbS?q!~R z>yeA7-L2j$0r180a}#lw#I781`U}1lJ@ZUvH889C$O8s>mQJbB|i zM)umSw;R%0(8Ub`WBqEug~#+{tyvEJf?y$-<{|(2i32M*i1|@uimg(edNQ0|{}p0c zk)DM=?;$SqjZGRH@3U41m59cEU{sFhO3-OVaIl9_! zWAMsAYI758*NpB!--)%w+cb;5M=p=1DrmNA!22%Vt|4VO5t)oG+NTAwP7l!CD><22 zK;&G*!}ulxt0dtY&3Logggh}5?!}fn13zoUuG7$NDD`JNtCYjqBe2T~@^%aMlb`)X zN{Y=fLHG-A$&emG2AfV!<4Y6zE&U3lJ@rc859(X%vPAYZYKr#L|K_d(o&0PrALE!t zN8Az({Lz05W1Vg0Z3-gO$n`N2$O;4b%47@@3$jj15k0#c#UIu{JB2^JxyjBaUKYJZ zU_6r>O6^+w`8fvZZW(U*AAzF24QY>cDoK6ETjb*p=;vZ21^#7Fk0ib_`Q3p<%TTkb zAg36*%wWA(0C3-4SKWY(cbIDU_9vK5H zBCm+b(617nR%)~wjf`f<7-Y|?lcgFm{E3IrwzhR6M`T$kW9)ZfJ0%Dig+XJntn$1M z|Cr8Wv11Y=H{~lN)g^jzl95(%QW}X@=OO$Yn%W5FaQ4YmxbpQ5tqbA`H|nkiyC4#-sMMzPm`o|XvcgE zw+NRVGa_Cj0*kWqFi9z(Tot97V}|QRqO}tg(T+mIjUTd7mcw^WDe6-heCV?hBXUw_ zYm&|0k%QrC-68Zs4J9#WPAZ6gbyyNVTtdDakMH%Auw`xu4!nI3qjANw!^=-b3CyR} zp{|tX1~dYnYlHO`kymFx8NLXv3z{DqA!mXlMk~!MiH1kt9}N$4-x|y!T1L{dB+ZBZ zvR38gk`8U6^o7zz#+i^$^M&T-wq%W!5;)IInL-cG+Ys@M@@8*AP=`y60_x3CczZcG z{pUdWnd;b@{w6(A-%=Ez?(LKkg|zc7j2>sjH47^IXd-({jnF=~JTymTdQt5?)=I9K z%=6`CGYAB$z~v8y{$o%thJC~dNPK8$FK01aR8NJfH# ztUDVEmqvHjBxvsFsd}_TAZ3=cgd$M(FyD|~w!ddS1*6h7pVWTcmn!#exW(0!{dva#!2=$220ix1j&W1WGc z-4vJQ2o#BU;Xo*~2W|>QEczVvP~?-(S)raZVm^)9bQKMJBw1%$>V6AJ`_^94Ug8UB z9_KR)D6srLOqbqx;oT@!L1$gz2p#kxFYR`yQz!IR!jYoghB14r)sGC;2YDR zc43F=NWUaAJoNE$3i=3HWo1E4UI~%xJf+}sd!Y@HTT0u?&^vLXfek|GA7Y?rK)o$M zj(Nf6-!NH@CKvU_>kT*kG;&`C^j)aWY0yWK$2AxBlljTWipA=o{f4c*RJvWGp#tfMmiSh;0Jc zLrv-Fp-&>;)@-Txs(&vgBL~9OQ&OY!d{Ea~y%BjzH4CMO9XQmzP6}VXe9}sJs^YKy zRL7!ZqgwQV6^m3^{mv|paMLbiLq|() zYp(g_6!&0(1@(R9E~rDvPKBTkm)TI~2S3MPH^)T!8J}jFwcZi0!YUyftG{dOP%Ej& zjt?>B^iUU~ck9+vBl3|fD`L1`P#^Y@Jz!c*Dnp&l$;+kG?etc3QuoHOAmDrC!56AHQP|HknJK;4nQ%1PC_er9k2{xwWjD0G|0Vz-VeUf zP-D3?8K4~V~KGRIc`l!p#QCQ-Zj0MrfqvjMa>!o|s0y z)ts3jA1ZYR!)Y<9zJB%dl4L^LfIJfmbuGP*gg)3t&3XwQ=%(&2h3hG1Ys5d&P{(eF z57Y@Dnh$CxD33+@CHc@pA0)jp)jkX4%_yx0pOsXPijZTLy1z_@+E+Fxbw|Y@N_^AR zz8Cr34~{9)HqM(4MypbwG-2ocu&%Sen|?L*CZe{|SEgPjp^<}=(C&D>Gx`{tz3RzA zZOI9K9-eq=TiG<#d9u`r*7|=%65)uzGc}U9VU$o1O+{vm@^sQ%^58YaxRk6cX0Th$ zGTubC;**B;64*l@>F%LTQVder6_J*~IXa*Cvr2Z^TUO({wG@MEroIb-tGvYYbFbiF zzg25!zT7Cqp?8Sho(I6A|Mp`DJXzH9vFH`R3BRavb+(ASsua9OK(7Ys8|C%+H1sZN z&pFoUCR3EUi}oUXgI!HMu$QGTgQhtvc=M#SEKnwaZVm8o^l{T4#A9P$QLS@GH1hd2 zLZT{a#wZH5oo#+xLi7ZB=!^*ghB0)9IpIs-o^F+g&%w<_SNIwe_b&E6 zinj>~=$caw!x4|v1?(kMzES$_`tJz3u+QD(zA)Bs(bYYWhG3E4iKBMXkG*^*(Y@UC zJ){Q6XW-3qtbb&&ryJNNmd;5##T^#iBhuPKpC!E$6xq!(3T@(9XKZzioNh7*eH^k@ z3ZqX3S;5hh6?*7-EwP+tr^>`j3OWU%Qwa&cU&?76Cqt#kdURT$7VqKaiN^a<@$H7> z&{eF{k`CffP5t6vjyPCnKJlp;u?yN}d3dxpo?BW`e^)+&ry@5Gd24AUDQB(Hh@aiy ziDQ1I^7PbOq0K~GEF&>+tY){NL?mC}u|~LzlSKC7BU?Pw4)SoxQo6!IDP!puN=c$V zifD3o@Hf~;EAi@%^j>=Z@Ge;qND-zezE~=N^v4~ zc6HN_A)|C-Y?ypt?NEffv{FxD13xHEi2hF`jBWnwI!oO*lfyyIYi_ zuV%*D)ctIDgM+%_Ko+^3dO22BvWDKszJXqYl)4{Z$55et=|-l@N~m3&Vy{xQ8={+@ zHPWOMwB_(EM<+M^L^74q?-LhQF`6hVOJ5K`-RKKOd^Ze6^u$l;{m?j;jxB&w%u7X7 zpNi!Du~`}+z2MklD^V)@2-Fq&>p8JH^a<>6BJ}Oat+m9Leuyu&Ev|m@DLO5|dmSC! z90Q4(oJABB&I@z|`h|63Yt0HXY**c!OsDy&B)bjr@Z_Q%FM+23zT}{v(eDSFwAJTw z))rOp`3QJ2@R^ayGeG;L!f>>eVCc2p-IkDcnkThN_|bW51&)*ENssYU0QNl~!%`h}{Zeuk>LgA)1&~ih@X&|J zYtS#j0xob&ks>mnlV+w=nE}0%6UR;H17x|<57HZc`W)^F^pvb;^e{A9Apu?Vl&2k{ zOKySdHtgeU=jN!wooxghuWOBmVj4El_guc6Rgc!J+CjYsl;$Ec%)^xl>LcKqs_(MM zc223(U3b0EX0jgGQ*DtGk87zMgY{nI0QB}tB!cQr z2>%!Lt1bfqK^-DDxw@i zEE3PqC(F5>s=uC^bJ0(6a63L2Y!UIhZRL8 z6yXm!_#HYti@`AU=B`M{pbibySn9@YB&TvmF{i`PhJ6gz{&NHrjiu#dQ^h?({$(VQ zZpQK0q`1di@+M>H^c}(Ou@PE-IjiK={wu$neL7kZUruGzhmN@D)6p>AA?c0W8u!RZ zt=5-#t|1>iHp#3pO8-Sq-cY?4YULh*#z8!kg6gLDJvNoyR4MW)Bg4Ta{IRLT*l4X+ z*Cm8C6F8$+cslw8*(m{uA!rSMlAAUj>(oR79lU#NjOM;!*pgo9u}OrA5l(E@V)eMy z&U|btx<>=q#SwUY!K=Bh&;MbB8LN8MhChT@Wyd-;PXAqw`bQ|<$5?`UjBl6oYbSk? zHw>=Frkr~;6E6&5ydhRPt>a}GAFsDqr6qvz1U&JSj+b$d2V>!q#Bp1y{z!2?Hu3Ip z7oFU&f;JQJ4FdNlk4-6NCTInGx3K!r390BFn`o#jxf!cTJ?luuihpckp=F%&Bvqj% zQMQvlWe8n4a$?+bPFc#?xG6}@!5g^`rvt{59-E@fPvRU*j`oRAd}?u`Z;V&Apb`|N z-o`woiKN%*Lu5CltKG(_n}2o8N}cJ$=18Z*+41JSWNc@Bx5Om6fdzC@d1ct)Y~WFq zb8x)QP1ap4mI%&H0TOc9hrfM!hh4!l=cIp?U)49c%d6+6*MCubM?(IpmO3Lnbabko z$OeedFRF8#yzLot5uXj=en*DZg=(61AR8nd&H-TM$aIf6={s*S)&)DbbZokMLUUQi z*f5FKkvBDywU*(?FG+V^EQ7HbHWSJ4pS6zek|8=aQzP}14F5@Y6D8esY?gMBOYIjE zzCY*}zys?rI$OPU4ag?^sM>VWu{oM^`hq6A_={H7W;!}oWmez>RtxTn5|+-`d_4=) z2gTIy_2gb$T>4I8q5fNhjrd2#w`!LY(o#nk>4|I$u@}c^bs42&i#5+SB2$i*36HcR z8zlDMRxj1FP#Lg3K^`hCi4PUe(K03to|Ssr^9t2S|D}$;z4mcnt6Q2OPDoD=g_E@! zKz9%sUvpRVy4(PV(3_fb=7^tCt<(B-m~%i;Mg~!LI?DKK?tdv?UmB=(kN>~?e=GdC HRgC-}TzMV3 literal 0 HcmV?d00001