From 7e14d5616f8725e7bee32e5b6a9d953597702354 Mon Sep 17 00:00:00 2001 From: Mirco Miranda Date: Fri, 10 Jul 2026 11:20:36 +0200 Subject: [PATCH] IFF: support for ZIP compressed RGFX --- README.md | 2 +- autotests/read/iff/sv5_idx8z_rgx.iff | Bin 0 -> 15956 bytes autotests/read/iff/sv5_idx8z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgb16z_rgx.iff | Bin 0 -> 13872 bytes autotests/read/iff/sv5_rgb16z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgb32z_rgx.iff | Bin 0 -> 19166 bytes autotests/read/iff/sv5_rgb32z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgb8z_rgx.iff | Bin 0 -> 8866 bytes autotests/read/iff/sv5_rgb8z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgba16z_rgx.iff | Bin 0 -> 22480 bytes autotests/read/iff/sv5_rgba16z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgba32z_rgx.iff | Bin 0 -> 26320 bytes autotests/read/iff/sv5_rgba32z_rgx.iff.json | 5 +++++ autotests/read/iff/sv5_rgba8z_rgx.iff | Bin 0 -> 20332 bytes autotests/read/iff/sv5_rgba8z_rgx.iff.json | 5 +++++ src/imageformats/chunks.cpp | 12 ++++++++++++ src/imageformats/chunks_p.h | 3 +++ 17 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 autotests/read/iff/sv5_idx8z_rgx.iff create mode 100644 autotests/read/iff/sv5_idx8z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgb16z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb16z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgb32z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb32z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgb8z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgb8z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgba16z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba16z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgba32z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba32z_rgx.iff.json create mode 100644 autotests/read/iff/sv5_rgba8z_rgx.iff create mode 100644 autotests/read/iff/sv5_rgba8z_rgx.iff.json diff --git a/README.md b/README.md index 63586e9..be305a7 100644 --- a/README.md +++ b/README.md @@ -415,7 +415,7 @@ The plugin supports the following image data: with color map only. - FORM IMAG (Compact Disc-Interactive): It supports CLut4, CLut7, CLut8, Rle7 and DYuv formats. -- FORM RGFX: It supports uncompressed images only. +- FORM RGFX: It supports uncompressed and ZIP compressed images. - FORM DEEP: It supports uncompressed, RLE and TVDC images. - FOR4 CIMG (Maya Image File Format): It supports 24/48-bit RGB and 32/64-bit RGBA images. diff --git a/autotests/read/iff/sv5_idx8z_rgx.iff b/autotests/read/iff/sv5_idx8z_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..b970325e5cd3ef7ec2e720356886fe115e1ec02a GIT binary patch literal 15956 zcmeHOc{r5a`+uwrgGTY%HHJ1ZGj=A+U~FZ3XC!YZV>}pU%ruKc3uBZ@rM&f4TC{mp z(k7u2qeZlcR}w0%LZwCdweUMLnAEGw_xfGm>-U$(b>`g9eLnYnpYu8A+|T*r@C+dP zL69?^?By9k_VOk{5M&L?$de9)(FFnC#YL=>1x040kSXrK52OMLG&uZ_-2;3fNKT9w z;|4)dlvP%S_<@>5k6^;8iCC`eI52B9mXtgfzZXlSUWYz#qjQ3&HH%BGsC zmRf2K+G-BEC})g}s+p|1wXBAN+;1*&+9oC@I2_K##>UCXNnhRFaEcFFBfv=49itg! zq7^z*C(=|e9&5BO*;9v1 z)+Lb~yuBU6!%T=oqN}&NudlCn5Sc=uEMB}gCMJf#U~o8`l#~=pw7}MQgTwS~b7$r{ z&dPP3bpV1YUFZDmI_DS(TkM4^_rjOYv#9p7std5W6KLB=v2P7_cpNgfE7bX2xJ!T3 z%Cjptrxp{xMi2*}N@&FzuN7;&S7rJn36sc`2~gz@sIt;)d#ca2G~b=+zwcffyl=xF zdpCsc-xQNt5|dgQCn#H*c|K{=CFZBo ztA>77T|A%`(dFSPOcJIipDl?Kma*4WLX}mkx23K37i0yl&k6lY;Ja%rWy{W}-3NJj z8^a2AFe(9}Qsu)PpHF@BQ&Us3va+^r-I|-5yCJ=N>$-}xa|IhKPX1jaJbE(o)VVFC z7jq9DJb3KbvD2qdmzS4s-&mP*_{NDN^~FUE#l@B9&)(fvbMd0+z@fUTe|Y(-udD0x^S7_NK7;yW*XPgTT2l4(^?m63-23@`fA9N&fdQ~5$ezAl zU=N7*gXAHTd;)>Ck$mdmj^S^?l6bSq|>-)3Wd&OGvE*=8*PcTz+>?k zXJs@R?Z}CWCXh*OrLmZ}Bq|$c zfyLv-GK!)}ZPW^^1_w=3fQ|wEOu&HUsy_-#x$bx!ORZN!VkgVBzm-@lK?TMC70)s2pAvBc7#}N&~i46Bg0%4 zpF@K^5&?6@W0B3}k>T%);fHRF?Fzuhbi|`a|H6;B<(Hg`$2#^%q%4fpZ67v|W)0@c zoyCEr=3q_IB&&tXi^7dYNTN$tuahxUlkOD6q5*T#nQCY+hC*DjzHzY_z;cXWgwV-FGWABO!`w)|DR zVXr@i;_@TKxpyd*8#QKRh|c1?El%6ty$!P`PUGK|5>6#{;vtQA`!NQO&SSv;;b^28 z{-+R9)`pyo3Lsv_1P|~N40E_3Wjf<6tt=gJ|5E?kgw5jeIdBl22|HWh?5(6Wqx3%; zdHVC2kub;E(i)Gmz~hHaMzsGzGpO8HNeX9EIb2wrF`O_XDFfr|DCwgoodZWX2XXlD zh&PF1xRIYg6MqMsJ*fMrHA+2%lORUAEO{BR=kYm!w&Cz( zSn@j38SxM#pSYnf&ya~%AO%baoyP|;t*r5Q2^k{}MmPS<2x#-A4jWoqn_1ao?QQMx z{=>mWw~l4WN{AVXX@NJhvBBDaS@0NTDs3Lac6f34ken^CR#@=e{%-fZ>1R71N&tlo z!%<|=<%AgS&=MYsDf>StM_EWet^^-mylmgrdv=?PJ+W!%}LybNQ1asw7NJ$m^_FKorVu(S)Zupn4D z5G?G6doc?1lljn8JA*HcxVOV^KVtm+2qYGbFFq@Qon-kw8B zZ~_JATb%TOJ8I)f503wJ;rmej>#n5^Ct^sc7+09!YFvt>fC;XoRE#T3a5XMPQosaP zQYyw3Cb$}xA}L^kD=8J@3KLw7OOX^X!IhMXafJ!4#-&IKnBYoE#kj%*SL0G71x#=y zrD9xRf~#>Uk^&~Ul2S3QFu~Qh6iERSTuG@ISD4^xT#BTC39h76j4MoVH7-R`zyw!P zD#jHixEhxtDPV#tDHY=i6I_i;krXh&m6VEcg$b_4rAP|+f9Fd1`-N6G0bFEV25ziE z5V-T<5AMIJ{czz!tOYl2W$%d#gT~~_6CsG1z~hK-g@pXE2tDZ~xT&rNDMM&z29?HT z`%yfDfR|r9AMZ-;wL^{OVqd=i{YtGWzRU(L#-jnimd57rfE)s3-(@_uSUv<~4O%QU z3dp5EHsgQ}0{N*}A2}rVi{%)JEGxcwufYi-yMwWzfsBqBB}a~uX|Wt8zz_k(B#KKD z%OD118^ufjwd`&n6POG>=$qsb-`rP$6BbZFtqY1i#D&O^7vu&wiiG$O9b!OHkU6Lm z0GDIifqTcm&L3g{8yfg!L(3r!u!w!RumjI`p1ILh zmJ*eWiW>weJQy5&KOKT5ekxVZY$w|H`2u2&4~D0CQZx84NK2TkfFdKvW>p0k2>MlHCGG zV7gX9kh@aS?kl-Uf9iYaTuZT?DvrHFbW zSpV74enu*1p6xqyM{lQ`#Il$~XdbGDZEMK#|c*FGE zCQU87IWwDGX1^nKkT!~>%r0)1JxhitX_KYR^O7Mg=Mv2tMv^ldNuDqVq=@{O`3=26`4J0 z)_#vND|)kP?aQhAB0oR9R#tJ7uhZ;R_Ta{+{NLQT#eQ4k1yqE32thN)BTohEQS+_L zxvC|z(tW43phti_wy+uQw?XaxrWOqWsc*H-V7AJ-wDV$0AuGu1otKd-~{ z9xA*@RHc4>p0cIm)FS!Nv`6nerX>p^t$7xCex}n zr-8SkXGX-VYg6nMJ?vj75oX-7*)i|BQSWcFMZ0FQ4k7$|_MSDR2*2E-Q7C_LWS(c_ zq79TeH;VMz7d{|-D4V9n*OYmYv9C=Q!LgBTkLY%|q}zp+y|tI!o!@-IQD1 zma^1FQGkq5oZNu^;FG=k_m*a#{}fHE7a{u72k*DEdq!ZN-gOMFTt3sA7;!lybgjLB z>eg;Hb8W=w84hl*uc`gh6R1yw(^8ubr0exxwrg&TIE$erZ0 zRjH(HrF@6%!#b7RJRK(@3ag>=^?qa^D%vd|Jo}ZY{NZ|}{6mE@$SZDFow`2W_2nt# zdIiK8ohmb8s$FuItf$+Pn4SNKlNtg=Rf8e~adp9ZQbM8O^cXO`4vSdeZ&_M0HGsRw|-` zb{D>8X;P`j5UyHL;i{NNO8ZT|H$(o?uD^+_<;!kj0 zvGS;(SE@^07wU+Xe*1QK(R(+}%aHiRop0Wp2#T#!bJ^0^x?F~kTDO8uVkc)jTBFXG zR+Z)Dy(-W%Y!+Jff_?IdFvMm=OFen(pMvcM$Nhx2qP++%xr^(*)_P4=gkuvAA+{3( zALNAv>c{p)n6jD=#Vz&@@C(RLjaVx)uk&N|HN%u1H-xPDm(2$o3NDcCc0hT%{M$)9d*&Ndfw+UGv6e+ z;(xkJA3bUEtceb(Q-Nj7)zh}CRK2mBYSxhsugO-zke(~FFlCLZQ))OuGq0L8>MQP= zoiop&Vxz41Vc9+!9a`}_oeiG2l~f>Gd<%rBm&@=K(KZxw;o4>^W+BHY*QX|FYzC~>)XaHOG@*wS$W6{*oKp;px@cZ#TyI- zb=~OQ27J}&vQ4LDVl-y$M|{-#%PpmBQ2eA_?3|M3vJW(v>E zLNN-vA_w|b8KbBs*~q1c7KES`;i@R?4-0&yE!+}FNPHx+$C!Nx%e<{{9E~cj$tS6{pN4&{0GoPMS*wm+@liQt*BMmjdD__s{|FgA~r zcRs=Yx@o2RQ`w--OB_yFrLGx57@1aUTAi8wHnw&tBU@YDHYcT>-@KT6vuWWHe$%#x zU$1H|3`>4FU2DmQz7s3^<}4X_Y;jG0Sr zoIm4Zo?!W$^xE1B9%+FB-SY-n(t zUM4Xspirfkn6*}xT1!y(x*Pm8?}K_#6ruv@^}EoxDr2W8qaqbqVbGsV;~MeUOS1Ou za>IuGUZ>!KBCE=FxFwP7UF8$8#lh&J-_lC^4{SJ4hUZ4tXZY&7s%lvq^NOxBP>8*o zZe-w;v^LrIoQ%L83i-4^{w;RL27fkB}ZjRo>< z3xYE4UK6FCHZ`cq2t*%ZIJ!p@Wsa;Tp49L-r_uBXaYnzHzi#g9^~4LCSfx+1790!S zlX(Bg->Z85qy!g*lrUa4OrN=@IO&ekO#Q)4?vwYpupYFPai8~`dy}Qp_^BnP_UZK; z%8?3RRmJjiYO3Y3X%Ul(y4&q~@C&~Zlgil7b+S@1g&`FyT7aK@yvL6>qeWl;=e^p_ zFC`AF_BZBM`2i1OY7KK{{!N)ZJ2ah&o`FK8tW1Qe>g9~xKB}jtVG6@ete?Zn8yO*rI4#+i1=YOHJ&G~S#)Ui7JIOil;S%s|t5l-^Wd#X1XyTBJPpM|Le~64-Tr%HJ|L#8<9>tWO9i%8Do&? zU7m(yklOe&(WHbW5w?yO2KH~Wl!?PSuSRoI?32+=en$W&p6!L+0TS2Wr2anJN;df95^CT_>;xxIFnHL3n;c${NW zb@J-PNwW`3zF>D?*;0>(n^*P1Cp-wcuSMT7`sd!zCu+CYSYpEZSIMn>6B@SB_G>zu zTJ3+sd+zo;GIia_I+xS_`c+QfT2zT_FIB-j*x1+C&Jnk&FlQO{#j9A+!#GTktzfd< z*P?iA_8R$Z;r;XfNAKW#gkr9N-9JVJL5nZ*@E?lModmjXrMB(j+uBoZDO5+Cp~=bC zK6-^K6`HI~wfl3bfNyO2t0yz z8@PMNZ#fGlenG4-$$IX^x@qi|Q#W<-<>PjjPPT;V)LV$S0nDqm@BL21(o}K{?WVfb zFS+**#`W+!H$xX%s{!Uh*1mHafA_3+gqkS*>h4##)q9=^p3kzxFyhvw#&HcB?-UbM zgv?07^Y;gjPYE*J{NlYwYss~+^UpP!w5yiV^)@-pn-tP5&(q59(FlBIIR|;j(}8;C zbV%gkD}yv&Mo9c%-u?@&f0VR56I`w1-x87cR4$Fsi>yvmx_5nYm_^h*PYR+?sOjFX zRN~sUHx6kDSH${omE#(_^S#r;qm4Lg=MZ*UpGv63p?UBTD)uo;n^yNdL#3Mpne78^tzO#daF#=Mh z_aagRq)QP3d>3}t-RJq-f8KxJ_wt*2Pi9V=b7syNW(K9HtquU^g7 zSpI(QgTTLwAov?BM1O!^C|DqW6$Nb_Wsna*dGxPGTUqluh)WLE|G($|S>XSA3uvRR zqd_D5nh)AYwHx4X;$y?87^tDZ&y0$q#=1s@}FLx@i5 zk0+tsL*f%y1B8zsRj?dS%)h^601!=fB1TYHM3^WV3ebbCufP)h1bR|0DI^8N{0)nV z13>y;_(Fn$kn}$#9UTDx`~?)?0O@MLa{LGj3X4e#3P}q~z=cGm1x2JqL;(pKK`C=7 z2@63fF>_H%2`fnp2@4w=acdhXYY7{3aVxNQH*}RjVqR8=5kSOp0nG|_0@Q;QDglrm za}*R3mSBa-0u(}`f+8ZKmjwmI1r5}1fN_T;Pxgwpi@Bw}wL9Fx+SblVj*}B^XC=pZ zQ%qe@-9_0NW2fqiwbt>~(6#inx0JHtydr;E)?3=!(Z$i)-5l=i=-}ig?JdV?ZslxY zEe*oQ)dHOG6BKuQIZhoPH+O4CxUx0Y+|ka`4X&eO=jh^KZQ$qv7v>idE5caH5)(rGT}AwWGC@yBkO+^jkU?jI+D58^-xRME+|2Pr;zs z)zyE={;j@_j=vR+R8!Xc56Y9K-x8U7fS&!!3;#oyH8`nGlmsz;OX=pW;t5*(ceH;S z)=k&P#acky+RfPmYiX_G30e;EJ7c@KYg_*_82*PEzh?!a|CW)voy~vnId1t+n;-Y} z_dWS#h2N>I=HhNC3i?ag8EgHE92}FDC!@v9-Adr!7$?$CM&xhJ3G&glv&Fc({o?dn zJ77<61b$5haIDK7D=Do4zVxlJZs3HFKMq;40{_42f98hluW=}?rmTDe>uh7^U@h;a zjaGtNc-T2u@!2`a3j7x5UpzpKrIoSP=I+)=u*e@rAwEGNK4A%6A(21hnvtx)|3dm5 zxiePR+1Wwe5JOOONAut%j8UI~4OB$6~(YV9a+Mjrsl^j!zW&pJacr zlodD*M*j*<$C2;PN-*+)aaG_~Uf$nm;pdX zfiZvRxHwokx)Cb?fTNQ;_Sk6#hDLC*1u%iJ0940W!rao$MO_D_3&Q{LY!95IJD`{E znAd+G{Z}=W6&QWNdgrU5?=wAWUzGF$eP&q!NUAv7mw=Jab%c z@h7}{4BMW-P|9N%tE&xWI4B&1;kN&RE&c^tVz7=Njsl2t-pbAL7zSkk;#Q7M;1`+< z!qSco9-wX~&v8Phw06?d0l&;(VFla(Z2%1@0dT+q@Br)p2fzy81HVq7Eq_l3W>An$ z18@duEWx)6-~(Vm3R?gJxC6Xktp~`}8vNRT_155@1K@M)50DOg{;{*0jfn6`6@*d= z%*qo-N1GP_fb1y%97G=-?PnYv9b|$l|1kh)aQcVdIUN8bx4`=7f9lSs0RT-10F;0D zr_LfC04g2=0OPQWIoA9{4iWf<+JGygjT``=G6Vp+&j4`R_)i;xZO83E)*t}r`hl+N z0D#0K0JsR^)0q5+E&fk!$OZ~x1$02mxq&vb1{^_aDT7}uU=G4|pk2WcsI8=l1lMRi z0OX0dck*%ynSm~P^iBM79JQ8iF89^9LG+4{IJgCbp7-`D-?LYbNM0Jy>VC%6rW?G` zBKFJTA;%dgkem@Upw-eMCZ0{RjauDbuUa`QnQBZ*p05+WS@=P){d?l5ZKzb+z+m8& z_EZS{_g#NDJp1h`@-=(Vq&#eQnU2G8-x*D`yWEvZG*#go18wo8FLt`JLLD@D`1X#% z1PW|_0h3f@4yHT#a8zrxRQdOiC&MEePW6!gWO`8PiAxl?O7MnPi1ByjLkNe1mmnZt z)qNhd(L-B*p#IMiQ-3R31o*+oS0ZUg}p+;(b%kHY83vlmO&Y0Jy!&PlJQL1Yz3nTXBQI z#Z(Q!Cbz#5-5zCEm_fq7NJcY3WoMw8_Q5O^kYp`~&m_5g5W||Q5qV~LWFbEQmqptS zpfe64x#iVN)H6rlL(W;=MN*8SNTkHq5P2p+k^V;&3SUR!S&Ni{&kX{f#EANWUbw?o z`DpElttueGGDM@K5UTnx(R-rMoSR;v!C}2YwGu(;JPIcMcB9QjQO?9LhRxvcS%nWv z_D95=Hc*BS!K33rjHC+8ip+}01d8Z5z~mAU&Xh!h*d?H~%OV6r8~};DPP#ZjWOyr> z$_w~3c@4DqhI2?D`_!9r(X%9YHqv|UL32zG2#kuz4|+N`L}?iyRyGhaOW;UfK?kMC z%n`O1Au|2m2aY>7+)N6HEE5S^lSX<*G&A)CF|Gh{4O}nT|4BzTlC0h<$H~F zSQ@*=0@i8siQYZ6r+57|)0zZS-0(&s@YiQt3K3K6)Gd3mnLdkcnvobrJU1Z<%J8Zo zE?(iYi9%_>KwdSf%j^9)S&!58Cgl!WcWiA5+9RwS1&SNa_~6S8R1~+zxzo)9RS_h`dHae|NCcHBk>ohWn zMoslOr_Lwg^m^yK9>$hf&~;vXOVQ6o#-NI)NLnIMNFKBLgXNymY<>sIuUTrwM%QMM1535 zhjOUO;)+?)J2ip@lA9NATl)by{yn(Bau_n7l2pDVc(z<|gkSr6Q6LJj=jXJ%xSCKr zlVLj%<61CI^x4!;rLj+0{}z@-LY8HwG|2ZtmqUyK-MLmXmTMq~5Opgt`MR z%WaRzS*Lsjy>)P3Y^zsm#WYRYH`Lj@O**zDsOzqLlbQFDXakbB1@s_2 zofkOQL{eVCV)PRC>EeCZhny?T3ufq~li@ejuT;Z!cZ|k-kgDJ3Zlv{u&8pFCA6RvX z@kyUys4Z$HZJNz-t&+4I0Fwsz7wcNmnLKPz{B`~C<7Q`DJ#59_Yq&5mu!+-I*HiLP zhxG)l`%R7O%)pP$M-ZQ-yW^p)B``mU7dK5dHn)c-JwFKckb^(liVS?zzY`N-_B}Y*mr2naFsm!#CZvtL~~(Jx3h<-(I6Q zQgur&?WzlqB9{G3biTsOgkowZjXXI=GLoN|x|}F!Ba-8nNvm8}qqyZMSg9fBD+Hd- zCp`%YKLfZ1gIPw&L=;p{o>Q4@t(qHoy`>R{bC_yT3p#GXisrz$u)%Wt3U16Xa_npD z&|@2@M$U;g7C|dDh?1Id(bWyFRnxzC99z+~J0C^v6dcElQ@ z^{^#&qDw^(Lzb9n8k{Lt1U!P4p#w~1ufu@u?F%gHolp&sRwm!Dd z(_$JiiZ1_H@v(zdi{~cLGXchq=yHG8+Bm{3s*b8!as!WZv|EKfSmML_YY`OH=0W${ zEk0v`z`h8IcB`Rp++mOxDZ#r3M_N)ATTq4F^)^2i(<7}eu?sd(&?BICIl!10lMfNC z>2XJhpCO9LgSckF!Tv;RA~IuxB5WbkS9>E=dx-}~fWHXRQ29l`A5VefhRQ_JT}L|3 zi>e4!#7r-FeTsr7lY$AR3U(?oXh!SUx-G9^jgq#Mv`3Tl2=NC%^$zq2`b2IQiuE=T z3j@)Uhy=O${a8lm?pMduP0;Mgpy(G=hH2>IHP2krVEqCEgm@A9WEGkSN;yv!aAX~W zfPM(7d99$6I^FV^18NinQ1?&ZE!x_m) z)lxu=?|_8Gu5K!jA9_EZm%SG_zmH>iP`b4&bL!LnGa>iecSb5IYXRgEO(K9BNaFzJ zCikCBJ_Q#^bx|09sOuJu{I2{k(*spa`dyYcYPxIr0{4NB@|I=jI zB5TlBkIfm}goTpH(aVA>3RJWOft!qQqrj}w;A`1cp;TVT4Y{=Qh%}&&J3#kxcXuDr#S1iF>Z(X&sqv%?0JBjsOIhU} zpCg{|)75qNLL>|_qOh!_U~=UGI!O9|DL~9moT~wy-n%5FpZmY`#n@o#nu` z#`EJy^J{p6UE~jhx&hw55WyD&cVU0=8IHKDvIr zvqZvVY1c3H__1Z_J;8|nwsu0iY~ zycFTX0y@Z_(Q=L2dG$siRv(nYc%#Dv$B!p~a=FbZ&J^%1lAhLAU#kXU;pk)G6P0Z9i;p?0r zV;}X>{*7>6+5?p-*|T}0rehC+!gxR@3kMQ<-7Sp+wo4r6!`ijlG+U7(L; z#WRjA{g(8U(6X{|T`%p3Re{UC!AOFBuP^hd2<~hYCjzBi@v3}PHvXy#ijZ+5!&`0V z@jdw?Ph(>e64QM%w#&RT26-eub+5PJywfbtkV09UJ>N0R;Itis zfmxgrA;8ovY-Meqrj7S|`#g;vO6uOjaD!I+i11w<3|_pj+`i(x7hA{2LnWS_7n?yk zff=kqluTOVXeOraet9!Y$dMCIb;@UQx#wmdP{qUC=$SWji8o0)ZzsC@z5PxS*018M z#Uau%(>(@Qg)IHJ+vJ|L&W)CYBLdDacPAdAoRf{ujH~QV1hI}Zmv<$X_fVG}I+$r@ zl`$Xm?(^<`5%G@$Pb)~jL*$UraW^so8MkFR8+&iy5 zhgBJMJ%jQ#quX_E`dCEYC3@z9msGprGw*S_XM%Q*vRPsz$jMnDxcx^Rv51vZr<)V| zeJFTtL?)b<6x>suC4G-dlfm?tc8*pjhlP7^<_Om|o66|%+o7J0$m8u70 z+OsOu0T zve?hinPL>*N>`XfYIvPutl7eYVRs`z#U?TAapF_;f{?sypWZ8iiKuJQuyAS(`TifQ z_glUMyUUF4toSc%kGw3T=+3o!-mA`R);1vzVS4X?K{DtqT9@8wRYLu+J0fRtr7K9f zxE2-zTa;xJZhV}DXos0|qran2?Kv|dlv0-5=j?o1$cgS~U1M2uEX{`nKT=rHnnE+V zmXZ%KQ-Bp)C~mZD?k4J`$ClrFveG+MJl|liA>fQ5>&cBzK-8FP%wc`JuU=wJw^VJ zxr3;;1q8u7OHLPy*!CXJc)s+rn&!o-B8r<6aW#b#(^V$>-ObL{SZcV2Gdx|I1JR__ z4_fMMe$vRKBFcLqGF_WQZlqJoWs1K$Us-AzV0>?LnI@Z9`#7ihDNQ( z&yrgbt+1~ao!AYn$b_(M*gU76RPscv*T>@ObXHhc_z>e>av78&7;M#*0LH$xHf+esyo|dsG)r{U$0shegt_zq{Z^-&pN8cPru%qKbac;>_++ z=}|MZRAW!}W7PhG9WnIvOku6awH$fneVk&Wp3WO++UlN1{|khPm|~=NVQf))L*I05 zCPuiaI8CSB?&WnlZ2u3(WFCM}0lCsj&WTNh9=0l6W72X414CJ-$s6W^q)2ilR8hVO zzrpNR9U;><4t>g2A&^$sg4qr%)YSQL>UzgRs>`pY$3yk#(pL4KRR`T9q@`??eH?Qt zJoogOD|^*YYJDr8l2qoI9O7k!wxs|557`Z-WyC;(d}c*wA#r(0LD$(U z@fQZ}hRp`&G?0Ihx7f@)J;(NCHHpwIZy}u3idn%Un`}NP3>hv3uKTKK_8YHmGlnxp z-w$s==4DeG8EuP+X6ZAFXGbG^G5%soDrKz82sj$aO^-lyax<=<8-2k;PkvMVHr}q) ztvsTb##-D+j4w;}HYG}CDe?!beXE81l@)Hsf2xog-BWl5Kh- zsv5qrA6qi zS){)Ds$a*r+`R&;{rzX~^5TxtH!At>o?RPAwX7`{q+q=tE;+aKDSx5ZQtOfq4HN9s z(4>@&FXU@T49j;!h!p3i28Z20eDhb_cE;WLViDe@%`N2o%P;j~{EcG~?%neD9*2KZ zu;xI>z7o*0mtLl2c10y1&Tl0rBOH~RCwkZ6Hg0n62qS8 z8#~;`$LH8kp~wiXrR`}TJ0!zWSG)RJ64d zk_hA|ta+aIc5+UZWo>gp8#Q&=>nxG)QT^99-dQ^9EyyjJ3*>m|AftX7FMyTV1|22lWr6>1+t&fpHg#4Aq=?Z9yg@)iwWKJisY%A6 zaEDQ5J;FX&skeoubtu0{1n()|?X$ zloFpSJ_xQ7YQeoqdfS5QjnhP*p@?WHUV4ZP$yttw4>g?-7r4qRXDF_(;v56hBbi`h z=0^8X+f9Dp9Q1$lohlB9t~Q3@IbW04ZEi0{#` z_xH?VU@|c<$_PxSw=_j~y1Ei7Ry*+Po-pBzWd4~SH?C5pOdRLI4se&;Wy*yU-0mTC z1jUvpY_bT6pVC*id?+nBXsV2&RLRT!R7-c6J=}L>3Cu#z%+t{#e^@u%JJ$~p3ldcByZG2PCr z)y#fKpY2pzQLdh$PWpnR(9suJdc78TTP?VVM%K5zCRzfbQ&$ITG5tRV@~>5Yr5McA z(;1Z_O)0!%r(W?rx|hei5p9K6Ph;Bi>NE3p8j#D{_Et^aR?)i<-!AU)=FXj42Wfgw z%N|`+hYNaXuL5}&^>hleyRp_Ro)Y&TJO<@>+@-l#vSm6!zNZ*L-0AGjCOoalOjVF% z(6=xKWIwqF4O5}Xxbf}raj5Gipk5S^5!AuGFGYNuc|((Sx>N+?{31r_J7O{Us5(k8 z&t!Ue+&=mO9Ga_@{kGMZ{p!3*<()komRPt^u6M&{qLkwTrhi7NrCkXj(%S#B zI`uQI@R1fb8j~#GiapEx_LG%%Y1{|i(x^AeC|1-yjuJ7O@jE<#xx*+Jv)s?z@mqbvE#x$@h^7p^r&NCF@2NjV@oFw#1DEU-@{h0~ znb{0pl`ib-T9}YfC82pb%dC6QO%Y*>wtBz*AA{yogbUymbLaEEd`PQ(S<#%Hl zWM?>pEhHIZtV6e9j`edmZrfW!=yW|gmSx0Vl5p0wbN8eL9w+gSp<_o;6mH03bN$LR z>sm#_Z}-@Y_WTBUI1toi-X3zfmXV$VQJ-^9c@BiS{Rn5XKbIs<4;srFLVg1b3P(?2;F?Lg#5{=wjl~ZJm+a3gqjMv22)}Fy4C+jZy zf0nnPdNK1>qZ76r$G~dMC``U@Tp89P#57q&XTk8ZR%QgGRLr zr}hoFQ8#}}d^S*8a;_i-*0;SAAhac)v6|~TXn(JeG(YJ^WaT$(Tno&I@&cPMbQ$6B zLo^kR*n6!9N0jONGZPhrLc!m_DO`-3L$GcIBf>NiY`??dP74etF}@Tf)mVzz{VcEl8q-g2FNJX4i4NdK$I?{UJ3aU5 z@W^=A+AkQdd29Yc1R52KKx{uBIK2bw?6#vGlx|ijTk_D{twXowkF9!ZP+zCR{m~g_Sk6a%=8*6fy%{4G`|?@8B%OY?HKWAWukX0N<3^X7*9#5t zigJdse<*dh^)UQfK}@*kz^w;TP<{2RSGt|onsi9aO7BQ#rz@-uoP=OYJo>_IM=JO` z|4%6V_)qy&4Pe*SCqhJNgziJKyq(&XvD5jSgTvWR5%=vh(n_2YUX&GG>yVF6y6Gof z9hlpZ(~zGK+rzxW8xfnF`#e!o$Hw0zPD4>vY5>xSttK^xx1Xv`v@najMwtV9O}qe|NfiCmVXe z&#Q+Hh`w~~LgG%-km*mzssfj$HG1V~q+A>dJI}Jna}g`g_b=q|cU zA~M;_aO!R%V&U9R@o=P(;0|vVq9d~8v8k$mM|LlR){d~7ot~~l6IBv>nVdgMhXzM* zdFY-IM{rW1yo$8;rd699T4BU5Vztr8xt@An`r2q+Wum~(YL{^86{^^=dN!Z^m+fiO z(XOxZp|6gLqqp*|5+Bw+6Gy+Gx$d*UO@HKk|LE0x(s{JUgv`>;>J!bMSH^uGgQsk# z4eN7}Q^`tYwGqn>Ko$ZHhQNryOUA0B?pJol1;PUHaF)zX!OrVL?8XFumkeO%43#!U(+EMqv)N}^9Qg@ zFiji`03gJ}Sc8b6IbWJ&awiLWlK&+J=ZUElExS87B zZ8+ZqZp6B^?CD(qj}pT~rj;gpZ*6o)I2#YHUKQ??3B^CKLPY8XrWFOUpOV3+pvTI> zgk{{sKe>JUzII>zO4ROm9fmY!zG|#H7yHq6n=HQ{26L$`(_Mg|SF{!Kp2FDfPWG4h z;w2ib);+z0o=vwsxz|_tD!w?-cp2SHkh~!O6JKr|g`cIi8)cB#e2%pl7sNBgxL6fG zXRpQ!*Y4`~CB74>)pvdV1d*G|bNSY-z=`6G!Li#6&wI4FxX@^VHk_%@Sb928% zn(!YHp;DYK8`JwasS`Xk>n~pvt>#UJY3^CnUQx1WS-BJ$%JH*(@B3(Xs(PJF7A9*qx>m!kNc_qZrMmr!PLRR$|YICwi+T} zLi;pg08*9}{D#e*lfTwsruyoI&>AMi*o9kzWXsRp$NpF|=0jRUqX;z@p24_+Fka~a zl*hZ;YSceP?-_`x6cBIQ5e0lvQbim(qFABSx&T=UWY|CRF@Z(#?&^A1!+V;bNoEf4 z0Gt$YFZk8zsc$SnmAqXjTK^9jt|(E5i~zbDqnbF?eY0)ohD)Ftg4q`DWz!*;9zeZz zMTCP4+^_Fq13FC#O33gXcR%GYa>%*F4B&>UpWfs(Epz=^Z0)}<&Ku=9erU1%Jm3CP zT4r*09KwHIoN&j4Jg7H~__6}q+=nY&xGoNl*@cR=dDQ!MnI<*54~@@wUEPthYRw;q zCA5{I?uPe_S9ynS2NnhDT(!r?u>cx@xPDwImoKu#ssDT@d1g3cX&pW%P_aFQ@FKH5 zKR(LE_ozQ!3&hiqglq@~9==9Rbx}3q)a~Ox?ilO3tZHD3-={w1AVN{o&MSQlk3O1D zN&?6E%1n`upy=Ww*9`M#UE3r5_Tx{%gS(8_0o)&(%{17{>|O8TQwwVkT5^S)EnL^a=Nt zgzk1~?vPGIkQAp9MGXLdTEeQ9hzA;^q^B@8hG9dbvJtz?E!L(6RZ0o`42fK$Cd(8X z?iVNloSs3R*r#?uO~WCkOVACG({@XNs*oNuk>nPIC}g^%({+(9txfsv*;5(^jWK}G zV~V68UX*%r8El?Ha_bbsiU0|CJxZ4-LZ+n2OiZo1^+~z>I{m}adVf9{Dw8~bvk-En z{AO|C5fA;4D^pj)dz{e7h*S@7(~uM_M)^u$UxbkcNCq2Z_xx1pN-y0`69`m{68*Ff-dI=I5>MY1iOz>0x53j?5ooWQGsX`)ar W@ah$KRvm!iC`>sbyQ$=7@c#id)Q`LX literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb16z_rgx.iff.json b/autotests/read/iff/sv5_rgb16z_rgx.iff.json new file mode 100644 index 0000000..52e8b71 --- /dev/null +++ b/autotests/read/iff/sv5_rgb16z_rgx.iff.json @@ -0,0 +1,5 @@ +[ + { + "fileName" : "sv5_rgb16_rgx.png" + } +] diff --git a/autotests/read/iff/sv5_rgb32z_rgx.iff b/autotests/read/iff/sv5_rgb32z_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..9a64f72114fa10c29ed2946b35d0e8cc768ead48 GIT binary patch literal 19166 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 literal 0 HcmV?d00001 diff --git a/autotests/read/iff/sv5_rgb8z_rgx.iff.json b/autotests/read/iff/sv5_rgb8z_rgx.iff.json new file mode 100644 index 0000000..5424071 --- /dev/null +++ b/autotests/read/iff/sv5_rgb8z_rgx.iff.json @@ -0,0 +1,5 @@ +[ + { + "fileName" : "sv5_rgb8_rgx.png" + } +] diff --git a/autotests/read/iff/sv5_rgba16z_rgx.iff b/autotests/read/iff/sv5_rgba16z_rgx.iff new file mode 100644 index 0000000000000000000000000000000000000000..06bfcaf3271e140902c8356d6a3d28b4d0af46d1 GIT binary patch literal 22480 zcmeIacT`i$7e5*iL=B2u(V!sJD@91?orIzwDn&q13}AprCn2FjK*R_(Kt)kHih>O+ zlu#obX+Z=*Kw2m&(o294@=id}d%xc0Z@u+f@1N&kC1;;KyUcuMX3x%?S?HUX8G%5S zPt6SUPnsDVIsgKJ6oJq8D-0lh{>TE)+8_`+A8=;_KI>Q?fN{>uTo14V;$r@EndzAv z1%cLY1o(fhKM4H)9sx7`qXqy7YxBYEfT1by%+3Nv$Jp2exb3nyA#8`kpd9Q`crRfu zH1Or@j&ejp0g2-lhX4t#BL@x&o8mAoXnQY^guSFN!23&EURGX7_~#O19ixLl$z}_d z2|X0f0d(-Bp*}EKH4pkZp9O&o4W(8p!VcQKj$>sS!vS&rZ!{nXl32HXh0mJi&f)AU zv@t-lE>=ZYQ~&#Y3n=dVs+9?VoA`~M2Wat#RVxkv4T|PmX{@Zgg8ceuHV`k12bkG( zV^xM_G5Q7@XgzS3R|CFMzRAnU%C1ZKA;XrkS{s(``k(2vRT)4NB%H@zgA&;xAU6j)~kTF?KtfdBvw8;D(ijRUl44QTw%rsj{O_2GX;Tv>OKKBFA&fFbgBTGABgWi z2gpeyQ=o=Y1DXgwEXv*$?Imo7c69d85)~D8cF+>FR5Fq^!s?-&oDT)y(B=Wg7WM(I z_G%8I2>51AKXpHMtUKBZCG6+!=7CrD(-K8FVC>N90L@~f zG!EtNY>yW zjJFriGM1yY>s!^`v1^Vz@X(cJKthWBTC2J`Bs@jHFFMCCxzw|IT^qM*_Chb>73*O5C z_Orx__mvU(OE>{LX3maIUidXjzr+EzA_H5S48T~|1bRsQDB1%L*O8M~P}GF2J^z>t znhy5r_Bb@k3xk8N%tLdu=PKdm4F4(2Xu?>N3E-^~D^jqZbpL75;m0IgHKya{_1!9K zmaDs=JRG$|{bU@_XHnj6UZU{-idFyeyJCms_h%3P^t}qi|DoIe37r4s@0-{vpX6t2UAs8)A@=2ZzX+WZ+AO1 z4lb`K3j@~aZz|up|0C^&!aJ>ma4ZUkN3$Y^mgx78Aqv-AsiVF#4($N9zb8m)T zdHh}(Rufj1xYdgfRq@mXhJO5x26bcOA_o!uN{oINyQzm)mO25X&AH$u6h;Yaj=bO!BRs_g#AnC zSLzs?1qR~=KWeDIlJ)~Rmb@%fUS3$j(%HiS02#+68e|=YFER7m4;Q@Z%_Y}F)~s=fU);x#S`+w#)fyDPCH`Rb zTZq;K{$RBR#czo}Sp62FHGw}^twHfy;ty88g=kIS4_0eX{FeBG)o&qM6ZnJG8Wg`J z{$TZ6h}H!DV6_ItZ;3xx{T8A%fj?NSLGfGS4_3d0XieY`R%=lFmiU9!Zy{O}_=D9N z6u%|@VD(#w)&%}wwFbp+i9cBV7NRwQKUl3n@mt~#R=h5mdK;2d@Rtve%9>>jr`)=SP z0K$XJKn5UP03$n)H^>>}266z&0Cx`n%U|mOCyxO=V-N<=u?N1fAb$`J&~OAffxJM{ z0M{F^iU#gy0X`b|a|8La`UB7dt{*t#&nn2Tu-0+uf08AQ0zG5Qq`YWYSZa zOvXLn)OQyM^xETxJ|+bOQk@0((LZ>5lR+Tv3m{N#`4665EC`er4g&Fg0FIxbR{X37 zzS+(KC*r5lL7*+CK%nhSz_Iz$s~7@hta8x(HW0`n5a_xF5a@0k2(%B7=SKbq7XNQC z6a*XzfXo5p@Bn6LkUM~u9&pEjPyp==;0laDGhLGdK(|6bYs-A@>-cn^L2i1wZ@`n1 z>8z0Bme+QPjmql>8qrBDvs~)JT2)Zy-Q&SK%;8tY-*L+De3@lpgA(gu@q28k^SEK} zD9=H%XE)4I3h~~w#FfIAZc)u>$|USvys)X(q+WulMK|0Ta603Co{dz`fFC*S#IAwM z;Fn*`mefxR^n99EuZCPYTbSVb*muEeyr~;8+Tr?E+(!bT^dzCA8eytDQ9OEE$RYK) z&s{}Gnf0yUYDpXax`ibbxk1i{pItg~qBMK%58LNvI*cEQ=%;OY*&_dvwCzL$|F~L7 z^nQfot0O8gGd;%(=Om0hnIDGsZF;ti(%vC`ON_1k>voOI_NIlHqgLUgpzOKirM z0tr*K$dGH)g#F1b8TY-tYj0+9cNnA#C6t8fBn%(@wEhutgZi!KZT^flE*vGqP}{7L z8Xcpcx_3~9>&BGT219?fu(YD~3tiI`C6R4hn@ga3(%Z6jM#nI#g=vh>0eSK@3_?aY_OIg?9MCiA@rp7w-`q{LODpZI`cOpHWHg zo{dFjJz~$HF9_fm9vckR5_QHF9PgTb9+mpEc#I*l&d`5P*u7+fpu6QFlChg>7(p}s zm+%#L{g4xjF2mzWiIT}JTG_J)=`}MKFAj5f+3DxBq5HYHZkTzB1Q*_Wc|h9?ULzuT z*E+4}^@WR>*0F)XNNDuCVZsePVl_-r#6eJmHhYC*@1Ql8)Ge@$Ewzh7`Sqn9If>5! z>BZ`V$EhXcB%ba?3n>WHKANsoGb+kitF}*ZX|$kgIy?@nV@x}eW2<7K$Kbsz*8efw z_rjF(!$oALPX-y^JbNrqz9cZ}3ujNIMR7ad$*A)r?a3v~t^r)H;MN_%OmoA>tooQC zg=uqQpO(ApL}It+$w`pN$CuzmqA?+``-=+Ku2D7vpgkry1-W&Ku4731DusOt6fJ`P z1(8TLnfyu>z)fRYyEE&w$Q`6@GwQV=%{}4E!4;R9$IA7P{+RLg0*4C(U9+yz=1OEz z3>NlqUAEzVB&by{BH2nOF?y_A+Xj*0#Yf4M#IG86Z3mVs z9?S%o7HRuqFN2rsMQHT2W-3okK=89FunsMBx#V$3?@)Mo6>(_Vv65f6^~v3!Yt(AK zbTmxaaXPIt)MqeoPO~wYXaBRLkZs%mX8xfZ0=QwO-$>|CS5%_ja|GpQHl_K zPDqjQ0{XHTMIluf>c_Cj42q9Dc;cDA`7|n`DAVK0*Ss0(S6>B3tI?n%4uVUfz8vd0 zZ6MJxkh`Wc0crWN>iOEno@u+Y4g@VA*`d)0v6%6ue2XHtkL0w@w}&Pd7aRUMK&rS} zyKd^q2h6TT&XAY)!eS3%gLUvac#+HIaJy$qrXJaig5SVdTTdu+3%!qT2H(nRsm#)|pU zcT1S}{$|UHDh&hhtanI>@t_7`5Y#jfA?B;5w~Q)zN7g2A4X&S7jJO28TEILn>OKJ~he=v!Invjn-txuSy;iQslgBnv~M zDSfr(kI*MZ33e6JC`!_YCI9`#RzkI5Vpm;vjSchn6E+Dp1=u|px}*qEgxnZlQ){)g zLiE>naSWmK`Gh}dg8;d%YXNC@Kmk;VyRhX`?8I`*jDfUb@NU{$kY6keA6w+ zi8-;P?R6Dm0@GuSD(M@hQhO$a&cbA2j<%G&A0zjV`tH1{z^-=o%9&u%$=C6|EyyM$ z-zFsKs&!pS;`J$!<&D*N^-Ai+D1n|rUqRa%N1%cD{9u^|9c)p*!5Z*HNM%ZtPE3F(h-8Rm_fCBE15x4r1u*ONf% z^~gP>**C4;&z1x5t6;SD?{gp%FaM5o<+s@&gA+I?1~OY zN+soW)}0#4su#N^40ZFGYgMZ?9gp`aA8Pr~jGtj)~osqHFzc(;!lQy`R@ zZ)$|hut1cJK-4D7!h*I|FXDBw3X}Efhygu~jbD(-x8GYrktVHm#CI=g9m%x6rbPm^ zE@Vst9R`Gy^^ltJ!B?tt(*=-_NlA&A{`}zw zY!rmSp5!JL_}7rawlxs&Qw85#{};}DI>?hF^D*#QMuH-@6XJF+0}=tgs#WTUpW*j_ zc3@a4O~{&Y%Y^9C#dWXL=EP=(*%tIPKafJ_T=#b+zZn6~Kbb3eP(jSlT$RNVl#}aT zbPw$Ksy_Ge=r%}Alw8a7M0o>82U%_j{*>2s@0_)27wLAQy9?9__^aq+Ylsg%PsyXT zNi`Dx*7Y}kSI4&7MX+hPaV$7f2Odw!rG{lp$CZ(``4kH?!_PTVYvOCzz#~@{H$?(1|jca95}nDurT;~+i_+YVflp_a$})KbXLys;I}LQ>WQRT zIVT(QN5 zzddRMIh~$AAIY>Mq>`4OGms`h)geOAaydFTHBgcK&?2iv9WjVYEqbY6HDbWqxNQdK zcnLsL@v)Xo1f5|j*@M_(csI9hf^Nwru}pXxV<|c&Rc#5DC>p$Q%jFuRQ9(pAd=p0{ zct$c(DJFdKj9vKDmQ-5k7`~mbI^g)=tYBx#2YD_gco_I*J1|Mdauk-?L>+5LUd2B{ zAKIi@Q@4w^f|!@6!Ba*2JJk1TckI+|9V#~~BE*5;;6tm#i#!Q%h_YIVdF&K0_qPQI zl~swaf^`E}`WjS#p}*scxSzlF^zJYN!A}H7Rew|i2k=MyGF+Cd##_ZvudO?YTerVy zCoIM?h1R;#YZ<{%Q^Dvdu4SYj#S;bzrUc(0rY-60#1V++`g_POcgZQNP-+N`IejCM z-0MC(vWJH2bLX*0mQ2>}Da^*?MY5*50>tHSo0Pc%3+Wsh=ANGjIe1P3$n)aD4Ui{= zP9|Rho8U8M=qyty`OyN9nqj;|1b86bVLJc0WDNL~YT8Q4IWt#e%96b&w5yR9QuQFy z(KJK?;$*G7+Kdir*(evT4KtaQo^^R=p+NN3Clp|2kCeHtj&dQ0gmKDj;?l@xgGi>M zvJ}KA!3>y-I{4H%k~ZCtGH7b5^+1z)Tv`h9@NV?Vm}Wct%(KsI`wiUnbLYQ&)~|M) zBrFO`hAnZdt0afC%7>tWG?~D5PyRW z7w$`2d_pwpwj*|Jo=cg2Q{G6vrc-J>?GvW?HOLAf{V6C%NYh92+-3r4NM)~9NGUnV z!$)&oO%k)|v}0-qmAJmy^m+I#90kz@SWG8LXEX)nq)fvUQ+uZ$b#o>%iHeFdG*kv9 zL=SMAoD_DRLcXihM>cp?3C@O=cd~6>v^XsgRibzL(KPVeY3j;Q*+fECe(!ioFyiG7 zi^V;*kl^(R{nkwDRXBV|+M}`WeX}es1qv;{P8#YhLscF3(SWs*uje1b>$pGb3kmY`qMAMRu;I8LJrLRf8)f#|I%%@W zC|jj^e#~R%{kXr9XqI)Pr1Zqp>?u6TuTcofTF@A|wZmmrr{88B8O@symh~D?xjwAX zj5kM3pD41CgvJC|PqndI%;y)OGos!tD|!XpJ=aCGfPGdS1sfCJzfGYcC^}=FvrF-T zOLZFt1e2>pX!8hffYtBVOncNq?I!t|sSF6F`x{$CDhkt7TenM*YjnmYnKimZvO(A4 zA?mt8TqxYKWu&}#PzWU$TZNaBi?i@SZGtQtDFNyE+r~*iq!nmGM)-U@ z%{NdG63A@wESNs6o3BlAcZF7HWai5%Rx3g7S<`H`5}&or@KJ25-R)nGAfZk8&N%QS zV4ADJvw`T;_F(RG0vHmvfIJDAP>%&GHa_@=_5Kl^n9Ci~+6_RTxaQx`dEbuM^<>A9OxB2z$#X9O@WyW9nO;md6l}B2iggt!m;+1(VWmZYi&2hnT@ym#Y zdRo_$ypmx4I@+g4S)3G~S3&#h3JXU@%q1lY3%-n0pX&Z_%2FlQs5UaPpy2(9iLA`6 zJuqr#^;Kt=8#uSlJ95{qnJKHZwJIrIpd5MZBklo=`O|K=8wpJA3ab{*gfgMs?I*vk=v)BI%;_^Vq6B5=nH$vwAI8v4j z_DB-R@SBF@)DUmFL$3-&KzJdStHJx9`ixVEp6e%d;gF7w*F?4VWNrnEqHWi}&z>z$ zp06X?O_tHt_YDLV|+SU~{e|Dc$(HTDCWEnNApQDlkQ`9?Zke$2p3Zw`* zaRp+5xaU`djS;s|RTQ?_*nhq=Dq=URrPUd_x0=HxIlJ)*0+JDOF7DJ-u*#0;iaMeO z-`+tbuE#RagoHN~7<(mH2dVl#7ToQJLVm&8V}nzlZCN1h3L{}ncTeh`?hHMc-_&d- zO`bpqLP?XlczkehD5GHy#WF1n*IaY5Cd<79A#4$zUCS zjx3=&jl+jTAWm8mapK30ASZ_QloE4N7dY~SbXX4zDlu1?>6hv*Z1ehKN#)e~<^{$^ zY@gXp(zYbqb}`-HQhu0eFba#XqZj$J-p0;j;-s#G3@phX@j z04`k=f(^N`5w;By7w>x|+E%rtoJasqMb6G{Crp8Fa+0SWpaq~Ho`I8qzYfAM^gJqjV(?RNm%?J3?fx$%pEqT5(=3h;kePKp91teX4^qz{8Ug~38o&Dr{7h}qZH{}bx^u~(z#Uc8=7ZY@SRo6HsUJT%hL@n#rx{pw(xnX1oahx52AdPuo&H@*4$nQnLZf#9Qh1ShZVQ?d^+;EyPH$B zqc1(c5&JY`>XOY>{s->@=TdrnwHK*cevxSA%$U}l*lbKsb-+Z|mzWakzzN^3^zr0E zn5^85u8)M=!Q$eZ1#-!s&5JdBnZ74#O=f(&8J0UoeXBD=@`7kdd(@dSVLn9!aX%X6 zW2g5$=DUv{->wTD?b3R&zUa%BjsP~*9Q(Eln=-}|6GumT-{$Ul#5={eU8Cy3>%?c` z**T#q+xJ~{*CVvM=(>(HesrQWG(@OWJ&22Yee;F;wQHYzvvZXd&k4!M%+A(moattp z+G1qn?cJ-_JX&Cej5sayD5j2>;sbdv*t(R{R&hrz%rWxT7uOA>ZM+cTo~+x!6>oNO zzb4)Uld#&0dex;w%*mh$9E!*diBx{bh3&h057}NfR3@?&vQ@CROi%>b{(x>44xV2M zq!~l+f+IqFK6mF*Nt#f%?KK=Twz(q$JzJq(Cxbwc+|PU?*wmaINGA-&c^#xGZy2BI z9^;v6Mdtyl0lzR>qe$&tPav1;I2y}4w62+$E}1<;)~F&?-}HwHK}wWfb6keZnb@}_ zQm;}tusW4s+dUBw_&b%Jp|W&Nl59An3e1^~*tHvmY_KRwAw56hR5Vd8iqtOZ9W3iR zm>+$3R7=7Jo3G7^Ux}g>;9g)mt_dId-h4lN99vvYeDiV8bDfy`V|IdZE#7a~#DX7U z?6b%Ngr-n`Bwtq)2olLXP!%RE|DuAMqZ` zFYlb#)HIkryCVv+M2b$fZI=`t&*L6R?=Stcw8_5_I74rU+!=56yto}}E75$1w)QV`1uRqQWkq6?2;X35}Lvivp z0U$E=z4BimmIWWc)E9|eGhnX<_pN&+oGiCCf%TU>daIot%DY_?0wNc!rX81f) zb+At#W79pkEqSR7qlLUP)~9y$y9nFxCHQ`o_zN~aE2iJ6 zif%^EH{CA8L@;N&d1~`Uif-xXRdTd!j8T$zdBh8;l>z5>=y7(Bs}3niKhG%q;5lJe zvg4M!m%wC&`Ry$Hl33?34(pIKD0E137#>a@o-bq@Ij33Q!*ho=FKg?rG5mzRV=&U% zDZJC$LkV^HV^ohz8Jyr0GHRTJ3DOvnG0F~t6>2rBqNIraM^2j@dI0yxqj*007}!L? zxOO&pw%T-d?CTu$c8hn(d-m)OIp%Oq?qkoe+qd`Z8P6v7oVKzE^zaz_WSZIGZT{~4 z_86+#quaNu^fkHPc6GH!EF8tQBAlG~Iv)y5-`&m6zq@IfpMPXTF6&WhYKh= zf$2E)uYdJ?4wRQn_pYmz@$|>0w$?K1@7w(SRqf4TjVl5wPkEebcrnTMEvV z7QYSu-vyn)DZVt-kIyV`X2SAu2)Fm-y~X?Q&jNals)j+&0dmi)!10t~Zb z!6lc1=ysmq@?qdderEo*F@=SXT#O0V_6I`=Itbcu+2{P!J-!mHhEu>FDt*ZDk#TVHh1k1~NQsmUEDU5Nm7&(BbC?`!g zE{91cE!v0(4u28{c6-{85;K+k&XJRo`1<6*vx@?j$oAf%aSJ^HOuQjfxca2l3~Rv` z>Knd8K6?^2wbh4A@oeB2y?-6dD};OlRnDhO20^=Cx6t=}9J^moNHuIENTu^K<`~H0;TR?QUCu#%JV}pRTNK!9J z=+%6PgB+!>d9qA>A+=)B<$h~h?LoF_0n1CUhunv&X=w<9=8|KXd6tML7Dd=d|ALPu zC#83GFfQ5-1Sc@;g}L8r1mAgaPR}rJnpAR{a(HsDt?2s;Lp&1W&ksw#ptZ%7l5ff> z0h<<&>-Sf3xG-U-bG8>MB#cg^`Xyj5sWoU)f}WrC@13>3%DE5%{9`MXi&K5DCGihe zp3!M>^ZPBQRam<&k6FpX-vH9XlZ`5r`i9Me>xO|XZO2N{7cX6^_@xHP@_`@+yyQ^BV@YsI~pMwbqTPR?xkD`^l$Mu ziaPz`UBgk}1r2Ls#55k6LJ+096DQAvQOy^Fos+K9-$i^@xv-$Thxxoeb+}SN^ve=Q zhl;q<9z)iKkIMktvqC@qu(B%2Jk?;cA!%R}Y}fsZoHjkF(=snCilk3)OqIslrjSC% zUIF_cx=Ogvl4>Vw2Mhv8-yH{{ql$c6re2R|_-5^_yRePuZ`jZF(F7;eogA3hpPM#f z-kh0ldJ1~rnXk^Qax!PE+@QDjm!h;z`jp2@Qbf z#g=@zMzU?ojo<7Pq!skP_6p~moxKBl;J@wb>4AMCusl~23utst1yt^Z$A>HZr|9Ez z@(vbcrj3g9^YTf@d%5Zj6-{<-zMr65PN`hZglkiiU z8JFupg->M0$87$#;e|!yq#}jMk%<^PW{u_3>F3?$Ss(oO&0S}`9LQjYoH+Sb`u#NT z2{O&IFqqMtY5Ud>yURS28dmFP+2(4O?^m@Le_*h@^{e#u*)uQhRLf<3jarJzW$jT_ z^qsd-X&o%PRbOwkWw3N-HKoS7F*u2?YcX*RGZXF1n>Rmp?@XatZr0wO#fj=NQi_`hL8>& z^|mA)HPYk^y$Xe9%todK#pyW>o1%hClR2Ldrz8n&FY)zaO5A_V37t)U1+LH9B}BxP z(h1sBULca^?*rcGS&_6uFqgq&eWqB=&lHZvTP9zEPf72HnoR2qn+xhGge+X3&%Zpc zS#gA|%x@?tkZ~&O-K0`(S27G@%G$9>eThsVkJEFz7BD)qVMtF@ae3I0qe@$EAAXc9 zZq3Yr_&yark6RyjM4O*;aZ5JT=FU5K3I_Of+sbx1xTNh-%a;XLcNCK?V`kcR8?2o| zA&aIoQ_>lA${(Z{LE{D1Gc=h|f|FK^l`T`daOyr+Yt%_-f26@Sh(x#atlAbS&+6(M zaN9{GO`+`r+_;T&oR;%Azv-8ScSkq&&`sw@FlVFbG&6c)On{IR=9VdK2)bLW!~E)o9PP9SzCZ;aY|eKtOavM?U)qge8(WizP*EPTl4+L=&A$3<8Mdwr68ZC-wr>Z zn9#y(OtSVXk)y}6qohX1HM{8fE<$&0Y?*QAxbzyrt!s{Jowl9yFrIOy?O++HU$eIeAFL9HGkyDyC92Xbg>A zgAEPitP=pK)*6Qi#gC(^`2%NlSuYBnUjH&I@3Ww@v+S1XVH#mEWxg%_FWTb3WbM9c z+wETnP~}!eV%Iax&*Va%(ZTr_7jX{F$0m%f=+44PSKXj98YS;1$>710yEdU?JqikZ zM(jUY-R#Lm|qW8hNk<$_k{vrc3W6jg4?=7*3wQ`Z%1deBhFXa z7X$vec{;jc6amNKLwf+nvVDd|()+RACoyPW$TswLX;AjZE)^veb?G0USnM`80#BA6 z5{NKx#5zNaY)y^9V!dq?=;i`}n40dG?T9F3g^)009bkDrZvb~J__#$coGs4>wBQnSR$v~!-OWsmXFD#fqNt*zsG=gh z&Bo2k**gHY9Rm69QSURxI(lLPys_>O$a2Vy$hkgQ1Hm`H()NJfdUmc)&Vq*HMQ0&Z zQc+b|5HAe*6BM}so+Sx$Jc2&OCkW5->{L^QKyH2IS5{IIy7iq$_}1Kb1cO-cBYk&{ zN6?h?U15j}xCaY_3a$->5J=q(9f*X*3dqM95y7-*D=BL$t4S*>X{)Mft1CksHI&s= zccL9Nos^x_c50|-si?WAt2wJ^X=-YsF*}vO-0VMO0AyX35IO=`uwk=_1b`a!S3+0> zvSfZfC4|>O77J8Gpecec3kBLDA*=yeENE3pSy@d&7y*GQE2*lfE6XW?OG0=*1p0%L zNC^8v#Q#TiB!mMYYyWdXY|ZzB9_|=IAOn3I(e4;uX(x=Uo0smUP10`8x|?j&&6Ui3 z3@|6$_5@=w2ZJpRp@ZGgTF#r0dP@<3+JT-vo)}+8=|E2pFPwIu?j}cPZzqg4pasS7 zP13V0zV5o44hG?TF`m)}7%=^AXq@!HgKnNa9vE9sAD}cx1TQuc9NedZhT!YR%ULlN!m2@iDifh#L2!GBiC z89iUe#}Df<+cjr29OHrU#CZAQKt1K3*7G^x?dy#@;r$;?&OiRoh5_v6=JRd;w7;I7 zKW*C3)WGsTYR*3TX(dNLFtcB0;UA4*fa#g-B;fdIO`NZhKS2Cvb-w|NI~3%Dfm>m4 z-hNm##>gKaC;Kz7alTfV@5=CxZv0#nVE?HgUpJTkkRy2VpO_2A`ty;@qwuqCoBH^o z)xdlicw;g1)qzf;XSD_A>kR*qW485Kjr=K`K#rB0>j_`nyriGvfSu)m&o2g`>j*GI z+GZFpoZfC_6;(9^eE$3Q#ei@|YooCkM_+HO-t0O&h&eS!c)02PU}g|-!D0esbHpqc z{D->#l<53@5zYzQ?cw`Ps$i9CdpLTz>TU{DaK^Ye`g!WX2^TT2e zxp`vrl;N7H^L2hG|92&03qMaM3|3D?O$iS6>91A3mHrR6ha>L9tO@sV#Nsdli=n&e zo5|RuhnVf7u^SfStak|OhxsOLw&3eSKQFXkAJ8*)^uWzCd@G#evBEeT1!2s+oiYF5 z`k{D^Z-U>7O^;>5ILzvy-=60UBDkl36f(dc+^#g6Hs(~$C z0LC`~KR*07BH)>sJ(GOMU zAOEE8SLHA@)KgJZRRsI?_j=zS{kxv&LCb?a7>u(O=(3k9Zcc@Nv@WwM@Dr;tJF)++ z{cq_uC)|87`i{VkpfU64|D*7S8uOd0wyA*uaJyaHz>>mQndnP9`MG&GE4XfUTfg`OT z@T3)fbfss7{j=IXMb7PxU~aJPz!rR6>+`$jxAL!b<}Bk6PNHCW&J_X=6!^FBc?b80 zg*)#!{$D4)59R;5=y`#^+n9&qm&9+ZehJY$!*8tSq4*{78>?SJG|%uGt9dAXN&Lp@ zmk`Y}{Kje?ieD1HvHB%M^9;YSnup?-#BZ#A3DG>mZ>;8__$Bcht6xGi&+r?oc_@BK z{Ko2+5Y03E#%dmlUlPBu`Xxm348O6OhvJvSZ>)X^(LBR%tmdKkCGi`pUqUp`@Efan zD1J%&#_E?4%`^PQY95MT62GzfB}DTKzp|K`sc$$!!;WJkXxFg}WdSPcL7rATPw$?ufML zXOK0#0CGvnlqq0{(IS9X&`I<3e zJa;FvnCfdiW?SxDC#bA1KK?}YwewBq2A71_kCfkL@~^!;5fgOekfD*tLZgL-h6@iZ z9E_AdUlJL)Y1_cx;qvD;jkkX|-z{-Y^{P0Xf% zz4xphTJ@wSRy1?u_OB!uA9eKlfG?y%+Zl;)~) zHX?zA5vTVKWbC1v*a@y;NkyB-8PCVflXvzE*JWfs?>zeKr26A2Hq2gL3%U9&&&Hzn zxk3e@j~5*N_@33V6^y8pUl`Q=x2amg&nAR;V~J0MXk3eMF~SLaTc%xM&JJ&FZcGK2 zRaZt|{SdKT4qULy^)LTEKAv0X`&lI^q%@8n)Wd?*(x*k@h3g01ck*lL+cObOs2yX}q?E$$!QGtb`m0A> zi^rEsXx8==#05$YQEz8vW_D+d&x{4Q44;-Yu}d$PXZme|a`}qrk|O!5)9l-U*%zXZ zMosW*ED>%Zyv}hg>;C5Bgwv}TvS`IZ;X8e2M0&&CILJNa_nur`K#2L6SMkLm)40jT z3r^$*xZ6J!CU}gmwsx$6H*IU0#L41pXzHCzX?FrNnp5rpU|pP-mS2Rgw-Y+NkK=nP0qTCJJaX8w=}2;Ti2t zYZ^s;x@-a?n~$l!UfNZR7fSI9*&MajcukRewVB+PXvK}5BE8S}cGhm=NHWzsfGBO( z+n3#|(e)^Gq7VC_!`h(=ky}~L@1jZ-2=nXjx<9FCoQ58dClPPQ>_bu>E?H$4)TRN3 z`Q)V;0>Y#>)2 zWx?JjKj=0Tcz!&tHW$J9_$o;_2JJIx6U1RGnWUx!aPMYjrfdwUT`&|YI=Hd+37q#F z<37&XmW7JvQqxMYrK@dOLPJVU5qEm|_q3k~B;Oo?{bh2|q;`tkvAxYM;$9kqv3fAG zGBwR5F&c%)dyny+><*e_nAx=Q2@Nlm>z?Z!w6^w2sSgxIa?+Xd-dxu5tGe*g+P&qL z4kdTxxsfr=N!&bCImuq`X-u^H3@x{Xo{g93VTi2bZ%>nAa!iqL8>aeuu#f8{tKnkT zciz0}$ISrxsnbGbg4LYQ8n_v7nCCWd*qU*yb0$4A&S#nY(-4G%7O!h^0+T^TarONv zvHfDGoz*+WL+{;KN4OCB=ZcUG8s(#tB{BSf0o@zNkvrr9R1WG@!n+X{Lxr$(*{zrA zTl-0ecU;|JBjdV$M0w1L0su+#(88*WJ^KD`|;GfE|E(h;CMVDsSi z+vVAbsCZ7B!qEks4|&a$L^vU_7sFwjGVS+UhIxOKWt8WSp)tdoa!5%5-Vyw9>B42K zVTwjHqqA z@hfA;6vfmiJrCStk8{DiJj=zZUY{yUo9gthLw~A2n&Wg&BZMYVH+Y`b%|F`73&#`a z{m@LQ3e81OP62L_ZA42}+!t!etqeMi#dZu;=DELF z8-gAL>TMs){JC)C>3?Pxn*38 z5N%@IgC4kgFiq;xm9GQ6g?};pfFY9U81Zbc7EdTGpax!qH+zZv!t?(eux0dAGl7oP z@?ziW?vPlE3V%b8=0*%bxqW>))B0nucv&G_oLSiFSBJ8BlzT~XTYX78DIc8UE4Mj{nz^ngd*vP>+`A$#=G4XDf@~7|A~JqF-6DxAX3=xM zyF-3()pnkAoz$Lk)~Nf5p2FUNCBwlbCoFCI?~ci&OT_^Lh*C_Tywf^m_q2>|?&3Y( zE?3dJ3T#gGDY($o^gZ`=jw+y?@LW@7iC1hl)BMOI^@m1-ED71g(+<%g~65& zGE%DWyAx4Wtf!T{)O?~PHFLLHFhauWZWY4Ku}7#){(L{u6{XuO8a0Vnv6U9DhVf zcv62QdjWOv8-F}-$gZG(30OI}TCGq#%&Ha|N$kV3H>x2&_4Ev9e{McKH)Mg#2XPpL z+KBxvOUO)M>rhDu^*Z-qYIgNBwDvWrdf&ix6OZA^(~CkbZ?*jBUSXxUriEo@%8hVH zK3X+od4(sf(tF?=fbZddzJyB?F7iDB1Ny?masuj~3~g)();`DDVA0MvS%JLOQ_;OL zvy8&r;5Fo4Y1NeImbI)};;DTL!M~4Rg%_f4&@v3v-7+mF9q^9VGptMFEdD<7{fmjx zT_JT>FFaEUcH3)(l=_rwYEC~V7+6>{oW(1Z0oy$9{# zL!C7`vTMhj#+98PXgmoiBOCHQ0?(?L*}zzzbLH}>AdNiU+OZ4xE=4M=dIowYlwV7g zeOeY{vP;4&g?aTIycW1_vb_n1m)jGM-No+~G*nLun1QasK9s_gq7Si~D9g4;CUlBa z)hE-UIz=+`E(ZC}gr?Ph8r*dhGjwqst~jJLw9&SX(tebPU+}C^oKK~hZqQ^h8 z%pr9vxq5^5?U}V^ybtfG>YoG8e4Elgv4~B%M4_4IEyP_xzG5X4w7O{chL$(qt3rC}J1xPEuQkD3H3~a3r_T-@yexdW0!KfNCWVtK*X4h# zley0q3StU;<)KB(xSe3Q{o5 z5bYZ@Ciez}1(sK5`lHXU>lhpOXzg|-8tn4B-F2Ptn`z30?It=Fo3`^9Y;{G#z#RQNC}&WH*%ZPrkfHU1muDgS@;6g}d8@;PB; zP0O9I3pjk~n!gXgI`7^|RB)x}I;_4aXM%XX?Gz!Qff#{kl=pediHtQ77(cLm6-!Q1 zhF(Qcpc8tM;=?dJrNK&0Y3e}UAF1%h*SosUi1#h9e%n6QMmDPpdL0?PH<)-S?ec2D z^7v-xZsBEOE{wpOIl==QY)zYCIGv3nAr(8;w;XwAN+#pWO`IZ->W;S$x070DEv`U4 z!K5iEJ_oMV5?k{5)$~xyY5MTf=%OVg?oIL%Id?^yM&&$SsaMzl`vUWlywa3kUZr04 z+|rzD_{^!d+(<<41KzY|jQ_)3_=pkt)Kb6X!?L7k|3ncUXSv3a*1WQB3r#TAmDNv1 zVDVcML=q>^DO4ozF|ts%0{6IR8?+ z=X7>+G12l_@Qw>)aXC-p)bYAg?rnA-`G$Hi4Tsf;@p*N4Er;RC`%gw_+U_(K9eLqQ zIs8jS#OXb?LN`R{6CvxBN0vr#`J`s&O2)<+YWpO!y0@Nps_gT$>Zd-5cHSgE8G7f~ zmm9i4O8h3?X7>>e0YR`F$#&Z*MRdG#SZK7So2#FyzwzqFK*Qr&3-54NV2|Wh=%l@E z2JcP4eRknTvRlrXO=O7YkkPgqU%ZS)Ro2}@tht!{p3tfigBP(@C((AqvHM23P+ozx zL&J4v09O}LdNNAm?U34|$p`x``vlnrq}^{dO)mUPQ7jh$7Oy~GG&8?VqURv&FDd`7 z3G12A^1o3JrmyS0#AF$4z<7UthdEcj-~-7i;wIuj zx;6#htRQAevNX&QD9Va?+u6kud96ZB=Y%K_rT?l~Rb(-7vHpHj&PnH{(+K<6w&B2! z`Sr8=@@$or{iR)FrNCJaVMm?L==E4lqp!uk7}*72IO?waB;#g2qBaoNTeqZtjU|=> zRgv6Zty)Ea5`r;L>W^j6s;^q2{GJt_Y(2T=CVAjhTwdihEFyPm8v!hTt$OZf!#N=I zBe?oabv^K*Fy6CHDhT-a7av;cCAW@}u$dH%Ja{3bYHMxiX>Y`Y@8gpjn*)w1-ayqp z*L%;4g3OIEy#g;Y#_pTsLUY5oJlVJ-5k~yTO!xv0eImPLd_vXfZn9WhVa^oSsF4i) zD2e}glq#8DcN-yCNBvK~tt#Ib@WOMEE%o#f@IfNWM4)RvOhdPN_pBkYPi*)MTk+iO z(cv}2v-@eZVCgUR>7DTF1@BIIoX8l0SwCzCJ1(uC6*U!cIpYv*o$|ZA(_A{e=|ke&9x(Ty2H=FeIC#ICdm=XkB7k1>^LP zB;HXFJi#206qs8dTY;T{kb3M%jiWH_dU!2!Wm>UI!r?t(c9$*N8IS4(L9$n!dS^ly zB3fy=9Y61@aOajaj6QGT%N=*iGhgQ-Kb9H5W1fXArhkEwr?a7Q7p7))^QAz)7iyAe z+TP%`$`1eWI7uvDSc>;1^l>~ZcMH2szCyG|t(83)86~exympNFcA)0T*O`4hj)Gdt zrsN}r$_QldE_<|ijiY?u3tbDeqAnr{f2;m$2y$qwCPv}6c zvDrjCGR`FqXXZUw-$8spM)$?FSRzlit{F~mrSr$GKF(agyyKUC=*k+mE~*RFuZ??pq~H;1n=w~leDrldd-^y|W&b2I#17ZOjT};ItqpE9 zk`qG)O>KWp0})WK0X{u$tgM7wUeo2$^rT~)+;tS_*iqoA2vjm%Q!ro`>iG0346>8TO7ii*g7}^ix1#lOEI9#>|K^#{h5VJFFZ2;yq^9BFa zaP7?fgps4?25vK>T+*_KfS*wKh=ezK&{_xwk=WCmxMjLh7*CKX?Til@s>P_Ht}@wDkb z9&6X3!-s=g?~OjpDG&oj$Pq-LGaqf<7*`vJ*fcfUTY&fPLl2mqXRrdM0g?i1s_M7?IBha?QPJ6*kt=XoxSzxmdn*=R;irR9V=D$I6 z+XtFV_e=O$mW6;tzVK@!v&z;;<qAwT2-G_O>37TrghvaM-}Lr#ct&_vW_j%t1CVJ~_Pw0%fuD znpJ^)p0l?bB)P7>zwj@-TTZe>lM2XMIddc| zM4+cfPO>d#^=A`**ChU<3BIgi?;yvSy@To(8rHqvdvgEPJop@ z5Cjnh_(7Z{136oyqRAoWYOV!J^xd&4R-3UK-atq0LUg}J@q_5PRWSQNaplrU5X(7D z-#n=rwul>65so{DB)q&hP0wrAi)MgnKHBTqFP%)N^(LLWnD!uadMc+X1^LQ5r|NiAzE1peINh2D4QVbLX6PUQDP5kr1}RZp(GIp33tk+cQzLmx->$o(n@%XocIBO zIB)*s*sy}_)2HtF1P)JYB^z^*!R_HyB=7XprgW7w!`g1PBT7>FAuvvY8>(OK>;dB! zJipJC>Y-2Bfx5)lTg2q4fsJ`5)ww<0s1%zd0)F`INFawQy|YcK#@r(-qp&7Ez3M(9 zm`ARP_9q}?Pctee$u)Sk1K)+GPBZZ6P5M&ifG6y>Gbn4t#AbLn6_hmaN*d^X*SVV; zlkTR(NA=Z~;tgZlH0pyC**)e^87ALL;HI>rCHu$Wuk>>N|#*YC60FT>TPjMm%VP`KA_4)epL?vJoL4*qQOsx&h zso5BCB#NsWi)sfiwTgpVS9GPkKlN9f4J~>P{|;V;&5JUwmdzr2^;wOflxD)5`ISlJ zVvT%37Y}fu2L{DY@Hb4LK-6l61}_>E2i*>)Lc57d4i&{YEZ6`mDxPvSpDn;4f6-&q zo;G+bttA`zq*4!64?jy;aMaa$!!-1M)A`LorF=EY4!JLE#q};%je%#ivWK{G4RK{5 zK_&}z?Zjk&E?(vlLCE7n+|r9E2#yokw<4MqRqhhzHx2J6mnQCAfRE_p8xO+lLn-%e z;AJuiLWJzqL}_j$pKi;Awr;6{YjUAg@8H*{a_nKniZZ6iU_d@0{go|O|2cklb;j*p zhgpyP?7HlguL>+Mt*e@)w232fzCV5jc=8G0%ZC{}8c{-HX2%ZQHx}NwZH4`s$oY>#yZS6SWECqaXZ-GhI6N1$Onb(uROB`R#dX6DC*w#n?HTWNxO9Z|+B?TxBj__-ORROf z_5oM^YzW8HF4JZ&{>4S_>8@9`43RdtM4|sifu5b+KwPQO`*veoILe0&>xZ4ZXfnMs z&59*5nM_T4{2;LAd9`eAiqzXZrGvL82eaMrhNdwl{p4}j8{+;)x{?R-2)hS2b|v2f z?+bYO&fpJtF6MAE<&LC-dTyDHyGJN%lVEqAys#}>r*k{x@8?(2V8pWYf`l~JzO5^hX@BTNbXv3|Ellf|@o%Irufpr- zdp>+!6Gc1E_~dG{(lRA*^|L44_6)s<-bQo2Xs7B)_r_4iD&1MvFo&XOJ`Q|R=;#nfk8aaA#&l|m|fx2r_ z9+QUlRTl3*>iOa544zYUIWT&JBwjN)F&c9DcnNpOz?wJ4*8ZchNfkNi6C)fm&4Q_V zo?dFmWRMfT{mtLOmbx=)IRyDYI-S9l;%=m~`hqejQuvS}yGEzKB%fl|)x?9c z^*1!|ma=!S?ay=nq($w#J{FMQHw3$g+`%r74+}NJTIk(;NcsJ6K=1Nt#MoCm`LB8P0(7{Qb z9V;qx%p@JS^4&B=H}K zAtHzYpu;=h#{zngwMavzNK3gPD=G(_y(_uvCHxw@FCJAbmBITdDEm4`9GJ+{euzySfeTsFf_RFKWCT5wnC1MMR@z~v zwe4~N9lW%U6AlnpHp6cT%;6_gIPyUopm(!GI*1Ux>S=HG#GkCEXr@RZ;e~fw@HG6E z{B?@f6!gU7yC@~@sY_hw7brv5jbEACLs?ZIka1$eWf~muG33EXV9nUD+nmUC&2F{u z3aM-Cw|59K4e+zPsQpBTYJ)%M@TbWA#QkR0v+XN7MO+@zsnYe~2=}6=rlI~8$&ZWZ z2di<0!)ddYv_ID5J=h>78{yMCfh7(8Nlz!|Z?QhgDd3|z?3PhmtorJU{M=zDXa zZq@Kx6Q|g)iY;yHm?9144~AjRe0^QKqj>;gbL?i&)hVOb48ceOv%r2FgIY|5KC1?n z*+ZpIDgYtO+g&4jB&ikto(3fsJDgp;c4n>IM`j4V?7&|{>Fb^QOE2WC*Xq03{K@t3 zata6z-Dbn~+w3J)jOE=^mONm|kG!7k$c?m%dm=+zxfP$DN;!Lk0_7EN9z_8)09M#G z|5J`FCDx0t?+x}B`1DxnzSZl<+Xi8Qh=Kk|ZuIPisUq0b(t8;qszm)7*`-b3b(1a9 zk*3&1)FfR9*ct6+@m2~Ie0?(r;9MUu<5p*j+MTdT==IKDF8}3dvtG@kM|hcB!tPiT zAA~^}Ud97ac@cHuE&;R$c4HMmuNH$H^g^JC7V`Eb!8X%Pd~>1{txJI(pvw9*jl($P ztj}QLf%45%>39KT+TeyW@G}gN_xna+ODjiVk-+}DJ}3c!Q@ST<*)9A5*$zF}&Cf-b zd%Zu44RH?6KraIHvma{XU);3Z&eeYc=4W6dhOe(cTEdO~sJnyWpbO3%{W9uyEqnxZ6;M#HRe~KriMZbqXpvy%Zd!KOgH7=h?2CQ1 z@SPrqSGq)GDI=kNdKq}F-cwLx$d&OY|)W~ zwqcG@1ELQ$v5-~QKy~SOFZw>~bWk~*x};}9R{6u0;m|#(WZh^+^Vo+~=#2sS+!UQF z>%vYrl(toh^>;uB%+!!`T4{f*MIR}c9s zPce#~CkHu0JZ)aS`J~ivXr)2G(9zqW3msPVnN4i%v}r-@W-fkHek1f^;!WDs_90Yd z`P;vrPbdtlDlwCu!kq%jg*sgebr<2vWlM>tduTx)VmTKRduZ$1&ah>#HRhR31o+jk zR<kZMJEA= z&qdx#p9-fRD;@j7-qCwpnSQ2?c!>Ds0LT?M_Lub%qgGcpTs1yoDqp(b+@Sc1B7c=< zekp0&&Y>!p|-SWHlHo9W)Yf39ujMEC+61?WrhRx#rBaz}o!Jz3=YTdvH#(q6!jNA|QEU@3u#J z`;rgRpw~o)J^OgiJ;`jdwB4x@q!1%d;PY1CG|h04DS>aTwg)Qc+}vKh?$nrkKIOo$ zOdVVTG2`M*8K{{!(sykv`dYB0r4{jw^^fRv0?XancY`k7ELFpr>1EAqs8xNRS2hMy z%IMLuKZ1G@gi^d3*=A9^vnyyuzM=T?u*_uW-l|6|dQooMtC#0;Vue0DcOqthn8ZE& z?&3X}f1H2R{BGn7em70(kdoMXT$*|LM?>buOBo$ny`YCru3T0ol`h%l#uJ%FOSkpy z)-d0!H(t>7kobCtAFX2KYE006Zboi@> z9R@fSb~y1Ylh_nGHC{)y8Tx(`6ZW7tTB@J9{A>ujLH+UrRC?@$yGrvzwOq{I8y4&b z63%s>BiYsZD{g{gS6o|Pe`Bg{4eP+Ps$)~;cBwDoy|U$nL!rG!WYn(SyMr1YhW3WT zE1ZX3X@j^zO0#%S<_YtQuMs0{#fKdCtdEl(+!(L1 zvd{CwzDx@9CO5`oCg}r68sZWpicVI?&Mlnz306~zA5{F&X z-^~r^Dw;^f;?}vZ?l0f(h3}TTa_KHFy?J__B$j+5wCpMfa%DVQmcrQploASpwLmjP zsL<)j=s=@9J;{;YgU7wA@2p~;u6vSq?0(9p(w(tH;$4A6urWCC{+dJ`p>9>qUV}Mh zNk!bc`8Uic_QA;&g5!CNpnt=le^u%-NK23;&~M1=2Z?x#84HHs#wm*smDx5~dpq&l zUF-9=G=f*tyOd20rz>IWO@$R5U$X?g)QyCyI0jv_c5E{Dk$Irr zd-ygGBvRa=(FJ$dXuF0nXcLn+z}3)Bo4V3gAj)|WvraW<=Oy}7eYSM0f?LSl?jvTn zrj?|~;%8?=c6*>ZnJ{O2%UOL|(VmsSCPLza;GjC)5jE-out z*2gGOhrc#bY*O%e<&z@NnYY^l8!(e&kPd>vykgaxD z?{FVZlfAFAd|RPL3v1wu*xHhCLIod$tNMqw*Y@qg`BVUB#SD{`7NmE3ZMh&TGQ<)= z`AhjjtKs-xY*JBQG`3loIFTY`-8h#ZsYzx%Y_a1;=GNCsW@pHIZ+7hSKkZ+ZG!2>T`6MPR&lMWc8PHvc ze#;ASJlH9Q!N`g=FLaXJKXR#giJzYp$VOT45}vMAS*svaeWR~kiX~HFD~bl0V8Lkc zCM-Be0i(rU;s{Uub=%xHMr$n*T?(Vt74a%17Gx3MO^XH+akgwRpy`+@W$Cn4Q)keV zBB>Yixi3@ky5Vb&XNkoVr`_{N?V%V(l8E5c0z}BQEQw#<*4G?~xQA*-*X|#xzV~eH z3sVlHsnPL9+gTQNu-c{!g#Be#68Z@R9W%sS>>rA8Qpj{HNF!a{(DJHCg4O+wCf3kR zBn@rdYOJ_-P2g6(7CHiiC}2Pzz3!vpXGB>`Y#p=+GF}{gg=$uF7P5k4TtiSR(X+8` zO4yFv#*!>Tu0Z>FvBjiP-Xm*)vrM*jm=1Ybv6k#05VR8rvS@*ihrM1br-a>}S8>0Y z==98&x*_DWf8Aly-=lQBHTQj#ciH?qj9RT+GZ8- zfanXf(uBuCb1SaNRxV}h%|KrXj17qAgqC9nFTk;sZB(n&0laK1>Or@5J*F-@#@2AC zhB9_1Q;^DM?IfmrQ6eqeul+3?9G&;SuyY6%eJq*Sg>JO8ZYRA(RSJ`iBmK2OXS0T3 zL)4J&PCsjh>wE<-u1v=awDx5`Yr)XlfRWP&_>ZZ~%(0`GVgCV@<{alRpP_Aamap|= z|Iq6F5|x}`cke~CS+bW1Z>H`rz(FSWMh<^l;ybQu34yVC&Dx1SNUUZ%A}DLL;Q1E1+$voxeUo^-Z#d@7t_ zkVN4P_%L@o~k)8L&iRu0O57mQq`6j(dtElGCQh z-kQ&{59`**UiAy<_zaG5z)N23ltMi*rSGr7%eM!XypsnmiqEwX!%e(5+s0Vtc6M4i z_XE)yX?Y-1DQE2RHsVS;Tgml|NFvn$?Ej7;_}Re!3#$7G{*zvNQW;?ex|=B7rW!wN zlSl@sg!y&P5fUXVt)%U)PgIe&In>R~hhhVL#pT9WdqF~bk(t)!9+rJ6>J8}~4SIl6 z-C|KFTu<9QI-A&hXN2%9IOHas*VO}#5MN_?;VIr{^+MKYPH?uKs(T4uAhf;&yzSdF zHls}u3u;3O@`>w@-!VZMQX5^kt?InPmhEl>5uZ|6`kLKW+VU0lXUJ(K*_aL~Yg|bJG&F8#pOY{y{TTdRl z&l#_c_8fYFDq=bkwF2yK>AmDUx?Py0Qa(P0n*_b5n?8)YSXQ~TloSQCix>{ZoAx1F z^!SbN`yPxXX6^`GelcpJB0hf1~hI=G~OY*OxPjnveF* zfb_^*?2++wF_>~|rr2?9?TWRQe(So7at?J*T+Y4HkP-K+&dy;7>KgGe-L}7v_~rKM zwZ-nX4%bop_EtB)9z3Tl#bjE>l)T$9&gPeTm91XOG_ZB(NUf({Cc#Mtbf8zZLK9mT-JY+pOf&4j mg6i#DMYBjCXXKcolxEP!d^)X2zCv>?8)+no*W9GnN>`%-ChACQ2kFQj&y7Whp89 zQkHBHN<~Sj$XfR0J)@HE_gk0W^$sFaTiP06tm4n}vC+1HfuiGcC{$uwj15WvXRt2mq_r zg8G$fg@OO?88Fo~)B{OaoDZhj`X=D}Y9=unMn=ZqW1G1p%$`cY6A5@49Y!aCKh9*l zBS{KGSeWkv5gQD&bzmk`$`KNQ4u}(W!$93;b!nuu9BgTckp@NwELm^PbfJZ(5&<2o zzAiXfRdjru9RNUIUt*yms{uY1wuNbo2I2faWe^C6v#eUsGpD(8=;{U82$Y!@vm(r? z|Le&C#2@?NWeC(J{FEm^SuE^_7a}MFQS1wiMM}#^uZm&?xS2Z8&AR9x7^cUlXjWhq z_>@C|Ki7WZQAi}qwci-lYd>nkv|Y7SzVQPCS^}^etiX2g$<1`iy!amgKyAD-AYil+ zc=w%+NthB6rG%1&p^!>4vPxh;{9crtj64CaV2`qwmES9^C@t$CCrgx8R8UYLkmQjd zYbNGeps(`+ELOlOeo;LEkQ`QEwE!y{ux^oQ0oHB6T4pCQ`;hsvn%R#6tb2jA%&15d zN>+eX1%RNCGO}{0JxK5pU^M|COS(^hl@4(Ir&9%3eE{CS4iGHH1gxP%kBXX)JD%V| zqQmS-j?QkXA|fznqN>P2ISdlxu0?Wk-seXpnfV!+6Z~8VibN4L^m-K^B_FaonMB9K ze8{eDG$kKZ5j>G%Pf`M9rWzpvTY%7AR7K2uX><}9rbVLS$<72C%*@Q0?Cwg!lHFm_ zQYfSpQUtvo27{?ki4IDp+PXhIf^VuKPIS7v5(44v?JeakBSoP)B2bEoiU_1MLRwl9 zL`c$n-RO89NjKV#A5MPx(I(LdRA+a(GsO+Y^ozHrc+$a^F#|1LKdVl5Ukv0%lUito z6oEoU_~6|UC@Cc3Pew$-qK&&J)pen2L;`~3N+Ofo=rqs{^+!8*CkmZHbE5nu3bA|MW=wJqdp}({QE#^2(g$O0IY}M^zCYNg~Ms@99bxLH}*7`d8cq zKg_sGBm6V=4~5um221^R#E~tv_OE;vIiA5&dgP|LyH3d(7qiw{n5g z1v_SwetG+647xMjmGnPs&EmfDuMmr@{cyG<0CN~C>3~0$Bq|MDGSSQpR|WAO^?yy= zDKt+i$=sPtLZc80GK)4#^#3-}HS#3elc;EEStJ77r+=FK(*6hSil;d(EaC2WDviWk zF;qosaX)sRA0~PxW?+Xn(>=kMGP2;7 z&LrcPgQbQ4W&|uV#Q!vum4(YFNGZrGAdP+oTUz=jONyK0kC-SVTux3(4(tV;C8mqT zf3W>IIP|sA(o!-~;J*Fa?sw6@?exuz&D=>OqA6HqH%Ho!A-r^TSr`I;SXCA}_TSe3 z_I}XGnNHHggX;)^w8;KHluIlYH&-QnEiEu1c5nu#6wOpm6K3z}>`Ih$c2hz85wpYx zbDvPc;9W>)16?qkA$e1%E-HxM+W$boA?1oT&}XLPx)drIPpAEYFO)37gDbp}7IO_I zX@fVKnfXZ~QIaTG^I!RX9; zy~N8;?7!TA1KZib_g5|CnYECXH%G}RNy{tA$o;Iv641ZQe{?k(+-aD#{rUD!3iUaE39y}EJcfe6|NSk zSXNl!YFUaF0V`ZBQn9SC!qu`AEdo}!TBKrGVTG$@DOv=qaJ5Lqvcd{i%TlxmSmA1s zie-fru9l@}5wOD5A{EODD_kv0(IQ}lt3@i76;`-fmZC+#3RjC%EGw*VwJb%8fEBJ5 zsaRH6;c8im76B_5@_ z)%xEDT1jr;K~`_@#432=gLxF0%N!J7%=_p05AcL8coqaally{syAsH>)#?C1cB507 z=R&YJD;WD{@YL`|U_Af>cHs#$cZ`{?Iq2yx*H|0#j4=STNHTr>1@t#H2lF@^c)%G3 z0^|wqR5~bQLD|ro?#`5NfHF712@f8PX2}O-I2EiQDEBb+_CI9i5o&J71$p8BTyRs( zO~Dh$tT0dyb6g_ZFOdmOR5FNB2QfQ|Gy+p*9>10+lHI^3>lIK|BD;Embz8WYE!;qI zvoHgneBdnr&;V0F56}cTvIjf?XTTL80+Qg<4dn9AcHqfl(9Q^;fHnm1*B$T$sGx-- z-~`YCIH>gmy^_GE1E?o~e_R1yW`BTo;PsnlnuCn=f{JB>CIGN?&d-mE0s#AY0GN%M zpPx>epP#)Bp89?b0Htof?J3s)K;b*6kNU0KnFs)zP5?k&#c!Q`EC4(R1pwZc;PEs3 zLY!6LFRKH1B7P(d061^}u%!t+Hh<^`hhQ1A97t{l0CRt^>*@jEQak|c0`Z#;|AmYH zTMmW5Kmvdn$Q%vij0BKDwzR+}6~KeCGsr7A0!=lIwZX&exd6+CojzB-Cam+}*6FCC zC2nbOKh4TNO1{5%q>*EsP#+v99zaeONnwv{rCHJX9of^+Wygt&yv# zEFqjCCuFvB!qf-GZv{1eyOG-b=F-mdhMONRLP#>hXUX$=eL2u^oe0{$0LdCbJ-B0T4$tndmJVhrO9-YZ}Dtlqw;DoAl z@hj7*k*A2qkKlVCI+dm@+rIASYuTR~8FS50NK|#Y=e%)4f&aKvzki;UswF4Ho|WG_ z&IrjiF**6NATuNR2r8n!zP?C6P%xoN+t=4&%e6Qu+hW6fBTR2YLQA2reqUhq>1mlb z%}X;clL(^XRT-Igo?euMaBSF6SfyPURoO_Cv?;_Y1kVOg(!Y`DM2nMO)yp}yMOL^54<0J3r8#kq#z_f;t+m!qRK#f+|) z)K}D9lKK3uB6P+vHcmIYgtQNXx$phZa_d8B4#R!>6e?=(sNc@?g_?|?J9jQxp4_3W zp`p<{i6T6?*%kveFtM`Ylf>m{4-5FL+q5aICC%8Nv4U165ckYZqYaY^OHGZrmbvHF zmBy>8%3-Z8<#$Ww_Mc&^f24UjJUm&|f2`^B);&%mJvE{keK}dcyN7ybh2(^dFG({j z?;PHJREVG7fPb%>IYGm6&C~Mr$n3ybKmXXHq-Zt&lItI+rUd+0|I21&UOqmF)(`m} z@Aq4`=Q)J%j6D8waKyPOwN%%s=N+`ga4gfWU-?ymP=9(FmcQ^^jLt?|T@^^ys7w2u z7~U6!zPXdL2p8*EF-XW^{*W2BmpMB2-D!z|IZh8ws2nEp)pcx(otW_PZ#U4XmD#oH zV+jNb&rdOrv||ZG_q%FqpXjN0`RLA`(`<7x6NwY(i9kC|(M{8FHm~oy#1{446!~WF z=QmZB7&M2=-f%z{kH=TuIoHuOlHuZ?1#@Z5uxKvYCo%U`Fm>>y^QMpfFA9ol4Ya(4 z3f*H*eKQYu6evU6wCC2vD*L+~1)Z+xx_X4WZWC42UHVW8&)ee_(Eba+h>>(IO=8rQRf4Z{LM@KTm6 z6Gn-h5yAPR6tdQClC|$vmW=DS9@i|0D&ZDTSM4>vmUMnRF2-w`g(GpR!!XWcx0qNO zZwe|ULt;m-P)bhU^Y6jCEzA_t6(5URn5Fmgk>5D%w`iRs^kQ*eFRm84lR}C=Tc2ng zzPP?OH zxG{b`ZS5Z2jqy~wcBej$dS5f)fT0kbhnP5Ih})Y-q^qVAFI;27K zCHAdvb$$H@TyXiN4eL(nNyH!T9lIJ)vsv-eLni_20{=ttVyPdue1>0$U|ahke3C19 zmp6|u)~2kOnA}vEPZMEx+OzSB8fJd9zLFJuO?TfpI9YJjaF;aWNA5gzIP_& zI`##O3fw;R8sPz(j#PqtXe{s7No+1&rFJ^+9gEpzf>>V6UUsd$+QL%hWnodm&UIs+ zP;e|TMjTl@OT6CuSk1KrX$x(R{(6TpLb5p(#^Rx(xLrNS?MBPJP`?JU7k5-14oW%TBUI>hafHFCRmr{55;E6Tms5YygS zJlp=guiX=xNz}L{Fo{ly4(wFHS@rIDy;odB%{|)5&u1 zu&{Hu8}BW9w62BP$V_DL9>;> z5?DU+;pwD*ZroMJL4OZ{=k^kth1d1H?vX1~f>?yJb*9p+@NAHoCh24`Yx2t2gulm);Dxcuy7$~e#d@J_F?b31+)FxVQ!~L)=*TFX9N_ls7^U>fp_GEF2 zePk(K(-qW&yEz5Frndc+-xkP2!?Ww)ueXfC#>D8*3^auE35Oyy>LgXbE)!*3x2pSk zAKY9G%84+xd$+c#9ERF7wAKA~gXVVv3mO)%CX%5n0C|z9-x1DMjux=0fxd?*LE5rS z4okeBICi)fXDAK%9H3ZXTv~7o8fyIjV)07qnoagNTmP|imF&H*%+?%dffG-`uc-K% z%54IB?lRk2k8wrlwe7p0R2^s@rRz?vNdzud9cw=9lfd{=!RpHTQQ3nuRa%yRm%;^YN_&pGSq!&JknQ%Mk=7@A z6mNzc@!$CwZoUcXP#>>@LZJdK*#|lFk75c>zp82hn}9~6p_@ldUQb2}DqB4#tE&SX zLMksZi;qrQT^W2+@Zj;}cCC|5?Y2SWwk&+b4TZaf6QfZ+LeqM~f46NA%quLi_z}&S*#nOt^=SzVP2?_<_WOjAfZt@YtQ0Ke;EMxnt1SF^S&0XA9(J z7yBlmp|jEB&WPxHV*#x=@i&vTm8@TQM&I1lxAL9%-h=;wRx_~>mTbqFDA}Un^!5vU zkSI;lE1xoALT@C5I`yR`o8KR`HKRkh8)6|4Tgo#K5Y~8RnsMR4&QyBFY-@d-n1#42kQ`^wchJ*ECn(M?;t;D(KD;t|T-4|aRF>RgnA-+Ti}xp5;dQ8X=Dh@i?5$z`i4FvbyU`cFbtdzBcV9E4ALGy4nq3Xu_D&e5RN^25H_2)aXUBfTSlO+TRb?ef> zw4xbRyV|*@`dsrck8J>cj^FBo_}6VF8z4Rxn~Qj-_Zt~~>=P`pV3){7`j7Qf$vf!K zOhQs&N0@NnMA_jryGSzM58C7BW+s&&t#NEBTWGxbenHjGHBYf!NB{>t3IF{|YjnO} z$)H_bKyfu|;Hx&~*m4CE!z=CdYS}7DJt9j9862OsP?Hi?h?yZ=g&U`yXyBMMl>@6g zesTr_ugrh=5SQit{t3r=4vv^H$E_p|$o}yf%`QvFG9~D}+5@M*<2FFz!bLhm{T^eh zz?}Sp%14y%Ss_)vOTxyQd8$u_@e@o#VwBi0dDDty-@iW8vUc3^+wEz{H^c)+=diw(Z|QyKWvg4yqUmI# zqle?03#2fgBzvDcf0nYnXy9<7jn_zurIF_+T$)yAnM~RTzba`=WufY>F=v{gdj6hxJh9U@V$N}zCRDu1Zd%5sYlM)1K6N8QWvJq-? z{hVDH2V6xjv0!Tsvh;Dartu{<#~l!I!Zt_)11{_REooQeMK~`JDj;!^G2*mC-tDz` zE8@Y)0g0+(Ju*Y^>N%as?4g6T-$Sf<%`2r2%e%vUDx~7DLtpgYb-uY|ZDLn;JQp&c z^R>M9iZyR(zozXeM%8D@*eB0xD$Ab=KqRjmF_DR6JZcSNQ=EfVX-1W5##ghthBeRZ zy4=AQF5gXHD`={6a`t6SFut~uUGKaG+_w9k|V~i32`q~OQ%+o2KJrv)stkfzu4XGDo1fI~s z^S`rU!>OyIXGyd#nb>)}u8IB3olTYZXm6v-5WM&D6$d^BqQhiT!=IQ^ed?Y4W zt^~Kk?Q(!>cfn{?=Izp+gKAr$tTQt+H?nt~Ia^&WGf8m4zP-!C2psNG;xSQAJIwbS z6~4x+?uKz^p_cFi?P9ZwaYLGyq=V@zHB4$-{gdW!Oi7xW+AzhhxJK>s zr6=zH5s5#Ol; zn6qNlZ`NJ-_aN_vgvs;v*w^)?0P(y%bhz-2)V1AEtH#^YbJ2!IN?Yw zC&BAfRi4w1xsLSUno7;kX+!T%$$LpqsmnN@5dO=Cr}faQTd_lzA7kS* z$?>}{gSx)d9r8e9$d&X6 zpC*%=*zr%srNu9z86_wvs}eM4XdO1#+9@aj9gsi>dCBO^f*|xv8{6!*zjoz$R1E82 zu+>Q+p)=YALosZSpbSKAQ$;kJ7JrS@K6oj3t5{Y_>{{9T$b##CEJD z6%4t)Z`=k++)qAXTQv9lN_LYuu`G>a@)#Q;*&2XkkWXl}+Oq^EHnA(XJf7oon6 z?H=EtXmbm2i|PSI{OKPn{6DB*}qL9o0?FyS5He2E>N z=Pjbp{u@u{hyG(3gJFRu7}gVeb0PEQV>~^9+VvZsmsTD_V3E_27)k6<&n!ctS@&84 zXP-vCx0Q)Wl$=2I`pt{$>?rArDeimhSm|RBh;o;uTnI`(Pv7vQrYPNLAwNB1)YsN*@b_E(JOa5p#1`K zdMzg9V?=@JZ2Z@oHuZTuhmN-Ew061K=sPE6R? z@`2FV^JT}sbG*h07VO=L@V0DpD>lr$W9=f-y3?CSm`Xz-v&Twbp07E6_{y7_$2AdG z5)NNF9CxLrz5Sq>kJwX@I>|j!&K^in_t0j^Zc2395k@pQp9;TI=arP1?)9~!r>Dm} zofK{kEpYECWg8w3du3SPe%IEP4;r5{?RLtyx;9^Lx(W{Fua$6k+&10IZF=GGx=r^2 z&zg$XR}NkY5Q-ibObMUfvGBLJ19}M4w+{~aLfw#Z_9R;<^o!`uorilyfuMJ9Z=`S+ z_}yyI6eZ$cr7Bn{>^UrOT*#)p_;~!9(f1rVgFarP=ngr028gi7k94;ufc)Gv2 zIr!hUVYfcSBztVTeirE3E;k^+m?7M2&}7RAo-*EVn4Del;FLW6N!=;`+ViV$vtu*< zx{=it1C&&=+ILO~jP=Cr13g>gWsek8YlxrUj{dk`Ckw#5`R@5_j_C82b^q(sVjEk> zvOIX*)q4kf-tIDMkr{56IK8U+`;q7AlKTl5E*Z;bCpq}((AslsnWxOd-e0VL?p7Yw zwI_NN&ht*yl?Y2d+tLn!z{nd7$G&1qU+Yxjw@h7_G-M$ZL$cY~bNEscjP_gb*#?u< zuX;jVt5`cxbvl;3w!A3n3#dO8)_3aix*A0lNOhV31v^&)eVJ*URt#l(9sfyPlYPh4d8|IDnd8y8890b&kY_43k!>y zf)tk6naZ01?<+bz5Aki2+Nlk9{B8>y36^K=%gXXHyP`FIGl!F#d*|bVsP{P#_-o>k z2Tq3({_W1V?-orxn}ovP)q^Zk+}J^}LEDj=*};Pxhq8P}9U#gz*_^e{Wj}x0?%$q# z`}wZ17j3IAF-ChE4N#iIcf20L!}AaxDHUn>+iCkCo--xGA6QV(9NtwjSmCH%LbMae#E`;A0Q8_z{ zc`X%S8{>l9lv3C$Y`*3@iCoEcJ8(5N_>K8AW|jUeHOscq7omFJ2tL~{O4;AcNYL9L zP>JSJt3qo|*ibX=8U83WuF>XN7qltKyaN1^o%yEP+@8hb>NBr7@EI_!ML_IL6 zQyeqq@NOj76OJvhyXD(wVLgj|S(Tm*gLoJm*t8G)E1T&Xo~JhOYl&y(fT@#Vs(0@< ziWxju717sG`{-)AQZ4u;%9+!}*f>4AwEaU*&3Wg+&Z6kXBF{d{&u=Omx7M&;4ejlo ztY$}7IUboirjJcN{k}D_RbcX13x4*qq+Cb-Chp~3q7X5D;g1W?di?lSjj_q$3Cy=zEG># zeO6~X-cUGu0Ac+|8;8SPxO!FUYeKMx(J?E zq1v`w?IDVlMhE@TPokdbX3g)g;p--DM@QfH@SrH-Tm>iM8TBISBL$3V~TV#?4X=xg2Qd|FhT(7 ze*U9JwYFzb9HeqxqcFatEnd() && d->pos() < nextPos && planes.size() < readSize;) { if (header->compression() == RGHDChunk::Compression::Uncompressed) { planes = d->read(readSize); + } else if (header->compression() == RGHDChunk::Compression::Zip) { + if (_readBuffer.isEmpty()) { + auto size = nextPos - d->pos(); + if (size < kMaxQVectorSize) { + // I have no control over qUncompress() so, I have to decompress the whole chunk + _readBuffer = qUncompress(deviceRead(d, size)); + // Reset the position to avoid falling into the `d->pos() < nextPos` check + seek(d, 0); + } + } + planes = _readBuffer.mid(y * readSize, readSize); } else { qCDebug(LOG_IFFPLUGIN) << "RBODChunk::strideRead(): unknown compression" << header->compression(); } @@ -3514,6 +3525,7 @@ QByteArray RBODChunk::strideRead(QIODevice *d, qint32 y, const RGHDChunk *header bool RBODChunk::resetStrideRead(QIODevice *d) const { + _readBuffer.clear(); return seek(d); } diff --git a/src/imageformats/chunks_p.h b/src/imageformats/chunks_p.h index 0a7ba46..9efc4d9 100644 --- a/src/imageformats/chunks_p.h +++ b/src/imageformats/chunks_p.h @@ -1964,6 +1964,9 @@ private: QByteArray deinterleave(const QByteArray &planes, qint32 y, const RGHDChunk *header, const RSCMChunk *rcsm = nullptr, const RCOLChunk *rcol = nullptr) const; quint32 strideSize(const RGHDChunk *header) const; + +private: + mutable QByteArray _readBuffer; };